shell basic variable, 变量

shell basic variable, 变量 注意,等号两侧不能有空格, 有空格变量会不生效. # 定义变量 foo="bar" # 使用变量 echo ${foo} ## 变量的默认值 ${xmx-600M} 默认情况下,Bash shell 是一种无类型的脚本语言, 除非用declare特别声明,否则它不会区分一个变量是整数变量、浮点数变量还是字符串变量。 在Bash shell中所有的变量都被看成是字符串,使用时也不需要进行声明。 变量的命名 bash shell中变量的命名规则和C语言相同,必须是由英文字母、数字及下划线组成,第一个字符必须是字母或下划线,变量的长度没有限制,但英文字母区分大小写。虽然,bash shell中使用变量时不需要声明,但还是提倡对一些重要的变量进行声明、添加注释,以便阅读和维护。声明或创建一个变量之后,它的作用域是当前shell,子shell无法获取父shell中定义的变量,除非该变量时环境变量。 设定变量 在bash shell中要设置某个变量的值是很容易的,只需要按照: 变量名称=值 的方式即可改变某个变量的值,需要注意的是等号的两边是不能有空格的,若值中含有空格的话,需要用引号括起来。 获取变量值 要获取某个变量的值只需要在该变量的名称前面加上$或用${}将变量括起来即可。 echo $PATH echo ${PATH} 取消与清空变量 当你不再需要某个变量时,你可能想取消该变量,即将该变量从当前名字空间中删除并释放该变量所占用的内存。在bash shell中可以用unset命令来取消某个变量。用法如下: unset -f 仅删除函数 -v 仅删除变量 unset 变量名称 或 unset -v 变量名称 -v 表示取消变量,unset除了可以用来取消变量外,还可以用来取消函数,用unset来取消函数时,用法如下: unset -f 函数名称 使用 unset 以后,变量就不复存在了,这可能并不是你想要的,你可能只是想将清除该变量中的值,使其为null,即清空变量,清空变量的操作如下: 变量名称= 环境变量 只有当一个变量成为环境变量时,它才能为子 shell 所用, 为了使一个变量成为环境变量, 需要使用 export 命令, 具体如下: 变量名称=“xxxx” export 变量名称 ...

2016-03-03 · 1 min · 165 words · -

JUnit Assert

JUnit Assert junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类。 1.assertTrue/False([String message,]boolean condition); 判断一个条件是true还是false。感觉这个最好用了,不用记下来那么多的方法名。 2.fail([String message,]); 失败,可以有消息,也可以没有消息。 3.assertEquals([String message,]Object expected,Object actual); 判断是否相等,可以指定输出错误信息。 第一个参数是期望值,第二个参数是实际的值。 这个方法对各个变量有多种实现。在JDK1.5中基本一样。 但是需要主意的是float和double最后面多一个delta的值。 4.assertNotNull/Null([String message,]Object obj); 判读一个对象是否非空(非空)。 5.assertSame/NotSame([String message,]Object expected,Object actual); 判断两个对象是否指向同一个对象。看内存地址。 7.failNotSame/failNotEquals(String message, Object expected, Object actual) 当不指向同一个内存地址或者不相等的时候,输出错误信息。 注意信息是必须的,而且这个输出是格式化过的。

2016-03-03 · 1 min · 35 words · -

中划线 下划线, hyphens "-", underscores "_"

中划线 下划线, hyphens “-”, underscores “_” 中划线 无法双击全部选中。 中横线是: hyphen 比如说 red-headed 中的这个 “-” 而其他同志们回答的 dash 是指中文里面的破折号 —, 比hyphen要长一些. 复合词可以使用中划线。 story-book get-together get-together 是一个英文单词,读音是英[ɡet tə'ɡeðə(r)]、美[ˈɡɛttəˌɡɛðɚ],意思是聚会、联欢会。 story-book 英 [ˈstɔːri bʊk] 美 [ˈstɔːri bʊk] 故事书;故事書;故事乢;故事级 下横线, underscore, _ 示例: Steven_Chen 我们通常认为的 underline 是在一个词语或是句子下面表示强调的, 和这个下横线不同的. ———————————————— 版权声明:本文为CSDN博主「小崔Bro」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/jsloveyou/article/details/117282922 hyphen和dash区别 连字符: non-smoker 中是 hyphen 波折号: 1928-2008 中是 dash https://www.jianshu.com/p/1368059e296b SEO Google 搜索引擎会将 _ 连接的单词作为一个单词。比如搜索 web_site 实际上只会找关键词 website。 只有 web-site 会分为 web 和 site 来查找。即: ...

2016-03-03 · 1 min · 106 words · -

TCP慢启动, TCP slow start

TCP慢启动, TCP slow start TCP连接会随着时间进行自我调谐,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调谐被称为TCP慢启动,用于防止因特网的突然过载和拥塞。 TCP慢启动限制了一个TCP端点在任意时刻可以传输的分组数。简单来说,每成功接收一个分组,发送端就有了发送另外两个分组的权限。当一个HTTP事务由大量数据要发送的时候,是不能一次性将所有分组都发送出去的,必须先发送一个分组,等待确认,然后可以发送两个分组,每个分组都必须被确认,这样就可以发送4个分组了,一次类推。这种方法被称为"打开拥塞窗口"。 http://blog.csdn.net/csh624366188/article/details/8597056

2016-02-29 · 1 min · 7 words · -

java unix socket

java unix socket

2016-02-29 · 1 min · 3 words · -

UUID

UUID 36位 UUID: a5f225b0-192a-4191-aedd-46e3f18ccbf5 UUID是什么? UUID (Universally Unique Identifier) 全局唯一标识符, 是指在一台机器上生成的数字, 它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合: 当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号 (如果有网卡, 从网卡获得, 没有网卡以其他方式获得), UUID的唯一缺陷在于生成的结果串会比较长。 A universally unique identifier (UUID) is an identifier standard used in software construction, standardized by the Open Software Foundation (OSF) as part of the Distributed Computing Environment (DCE). The intent of UUIDs is to enable distributed systems to uniquely identify information without significant central coordination. In this context the word unique should be taken to mean “practically unique” rather than “guaranteed unique”. Since the identifiers have a finite size it is possible for two differing items to share the same identifier. The identifier size and generation process need to be selected so as to make this sufficiently improbable in practice. Anyone can create a UUID and use it to identify something with reasonable confidence that the same identifier will never be unintentionally created by anyone to identify something else. Information labeled with UUIDs can therefore be later combined into a single database without needing to resolve name conflicts. ...

2016-02-29 · 3 min · 638 words · -

BigDecimal

BigDecimal package com.wiloon.javax; import java.math.BigDecimal; public class BigDecimalTest { public static void main(String[] args) { BigDecimal a = new BigDecimal(1234567890123456.1234); System.out.println("a values is:" + a); BigDecimal b = new BigDecimal(123456789012345.1234); System.out.println("b values is:" + b); BigDecimal c = new BigDecimal(12345678901234.1234); System.out.println("c values is:" + c); BigDecimal d = new BigDecimal(1234567890123.1234); System.out.println("d values is:" + d); BigDecimal e = new BigDecimal(123456789012.1234); System.out.println("e values is:" + e); // 创建一个BigDecimal对象 BigDecimal bigDecimal = new BigDecimal("1234567890123456.1234"); // 输出 System.out.println("处理的浮点数为: " + bigDecimal); System.out.println(bigDecimal.add(new BigDecimal(1))); System.out.println(bigDecimal.add(new BigDecimal(0.0001))); } } a values is:1234567890123456 b values is:123456789012345.125 c values is:12345678901234.123046875 d values is:1234567890123.123291015625 e values is:123456789012.1233978271484375 处理的浮点数为: 1234567890123456.1234 1234567890123457.1234 1234567890123456.123500000000000000004792173602385929598312941379845142364501953125 Java 在 java.math 包中提供的 API 类 BigDecimal, 用来对超过 16 位有效位的数进行精确的运算。双精度浮点型变量 double 可以处理 16 位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。 float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。 ...

2016-02-29 · 2 min · 258 words · -

sway

sway virtualbox 里的 sway virtualbox 窗口在不同分辨率的显示器之间切换时花屏, 剪贴板不好用, 窗口不能自动缩放 2024-01-08T08:17:03+08:00 fedora sway download Fedora Sway Spin iso virtualbox 配置显存128, 3D加速 用 iso 启动后 win + enter 打开 terminal 用 text mode 安装 liveinst –text fedora disable firewall sudo systemctl stop firewalld # replace dnf mirror with 163 dnf upgrade --refresh dnf install kernel-headers – archlinux + sway virtualbox guest addition failed to start sudo pacman -S sway sudo pacman -S swaylock swayidle swaybg sudo pacman -S dmenu # install yay yay -S wmenu sudo pacman -S foot sudo pacman -S polkit virtualbox 虚拟机要打开 3D 加速 ...

2016-02-26 · 1 min · 104 words · -

mocking a singleton class

mocking a singleton class http://stackoverflow.com/questions/2302179/mocking-a-singleton-class

2016-02-25 · 1 min · 5 words · -

Maven类包冲突终极三大解决技巧 mvn dependency,tree

Maven类包冲突终极三大解决技巧 mvn dependency,tree http://ian.wang/106.htm Maven对于新手来说是《步步惊心》,因为它包罗万象,博大精深,因为当你初来乍到时,你就像一个进入森林的陌生访客一样迷茫。 Maven对于老手来说是《真爱配方》,因为它无所不能,利如刀锋,使用Maven做开发,如饮美酒如悦美人。 Maven对于新手来说,最痛苦的一件事莫过于包之间的冲突,由于Maven的依赖传递性,当你引入一个依赖类时,其身后的依赖类也一起如过江之鲫纷至沓来了。 举例 A依赖于B及C,而B又依赖于X、Y,而C依赖于X、M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包 (一般情况下了,Maven可通过等若干种方式控制传递依赖) 。 这里有一个需要特别注意的,即B和C同时依赖于X,假设B依赖于X的1.0版本,而C依赖于X的2.0版本,A究竟依赖于X的1.0还是2.0版本呢? 这就看Classloader的加载顺序了,假设Classloader先加载X_1.0,而它就不会再加载X_2.0了,如果A恰恰希望使用X_2.0呢,血案就这样不期而遇了。 三大技巧 第一板斧:找到传递依赖的鬼出在哪里? dependency:tree是把照妖照,pom.xml用它照照,所有传递性依赖都将无处遁形,并且会以层级树方式展现,非常直观。 以下就是执行dependency:tree后的一个输出: 引用 [INFO] - maven-dependency-plugin:2.1:tree (default-cli) @ euler-foundation - [INFO] com.hsit:euler-foundation:jar:0.9.0.1-SNAPSHOT [INFO] +- com.rop:rop:jar:1.0.1:compile [INFO] | +- org.slf4j:slf4j-api:jar:1.7.5:compile [INFO] | +- org.slf4j:slf4j-log4j12:jar:1.7.5:compile [INFO] | +- log4j:log4j:jar:1.2.16:compile [INFO] | +- commons-lang:commons-lang:jar:2.6:compile [INFO] | +- commons-codec:commons-codec:jar:1.6:compile [INFO] | +- javax.validation:validation-api:jar:1.0.0.GA:compile [INFO] | +- org.hibernate:hibernate-validator:jar:4.2.0.Final:compile [INFO] | +- org.codehaus.jackson:jackson-core-asl:jar:1.9.5:compile [INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.5:compile [INFO] | +- org.codehaus.jackson:jackson-jaxrs:jar:1.9.5:compile ...

2016-02-17 · 2 min · 341 words · -

disruptor

disruptor http://www.cnblogs.com/haiq/p/4112689.html 已经不记得最早接触到 Disruptor 是什么时候了,只记得发现它的时候它是以具有闪电般的速度被介绍的。于是在脑子里, Disruptor 和"闪电"一词关联了起来,然而却一直没有时间去探究一下。 最近正在进行一项对性能有很高要求的产品项目的研究,自然想起了闪电般的 Disruptor ,这必有它的用武之地,于是进行了一番探查,将成果和体会记录在案。 一、什么是 Disruptor 从功能上来看,Disruptor 是实现了"队列"的功能,而且是一个有界队列。那么它的应用场景自然就是"生产者-消费者"模型的应用场合了。 可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是什么。 我们知道 BlockingQueue 是一个 FIFO 队列,生产者(Producer)往队列里发布(publish)一项事件(或称之为"消息"也可以)时,消费者(Consumer)能获得通知;如果没有事件时,消费者被堵塞,直到生产者发布了新的事件。 这些都是 Disruptor 能做到的,与之不同的是,Disruptor 能做更多: 同一个"事件"可以有多个消费者,消费者之间既可以并行处理,也可以相互依赖形成处理的先后次序(形成一个依赖图); 预分配用于存储事件内容的内存空间; 针对极高的性能目标而实现的极度优化和无锁的设计; 以上的描述虽然简单地指出了 Disruptor 是什么,但对于它"能做什么"还不是那么直截了当。一般性地来说,当你需要在两个独立的处理过程(两个线程)之间交换数据时,就可以使用 Disruptor 。当然使用队列 (如上面提到的 BlockingQueue) 也可以,只不过 Disruptor 做得更好。 拿队列来作比较的做法弱化了对 Disruptor 有多强大的认识,如果想要对此有更多的了解,可以仔细看看 Disruptor 在其东家 LMAX 交易平台(也是实现者) 是如何作为核心架构来使用的,这方面就不做详述了,问度娘或谷哥都能找到。 二、Disruptor 的核心概念 先从了解 Disruptor 的核心概念开始,来了解它是如何运作的。下面介绍的概念模型,既是领域对象,也是映射到代码实现上的核心对象。 Ring Buffer 如其名,环形的缓冲区。曾经 RingBuffer 是 Disruptor 中的最主要的对象,但从3.0版本开始, 其职责被简化为仅仅负责对通过 Disruptor 进行交换的数据 (事件) 进行存储和更新。在一些更高级的应用场景中,Ring Buffer 可以由用户的自定义实现来完全替代。 ...

2016-02-15 · 1 min · 145 words · -

伪共享 False Sharing

伪共享 False Sharing 原文地址: http://ifeve.com/false-sharing/ 作者: Martin Thompson 译者: 丁一 缓存系统中是以缓存行 (cache line) 为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。缓存行上的写竞争是运行在SMP系统中并行线程实现可伸缩性最重要的限制因素。有人将伪共享描述成无声的性能杀手,因为从代码中很难看清楚是否会出现伪共享。 为了让可伸缩性与线程数呈线性关系,就必须确保不会有两个线程往同一个变量或缓存行中写。两个线程写同一个变量可以在代码中发现。为了确定互相独立的变量是否共享了同一个缓存行,就需要了解内存布局,或找个工具告诉我们。Intel VTune就是这样一个分析工具。本文中我将解释Java对象的内存布局以及我们该如何填充缓存行以避免伪共享。 图 1. 图1说明了伪共享的问题。在核心1上运行的线程想更新变量X,同时核心2上的线程想要更新变量Y。不幸的是,这两个变量在同一个缓存行中。每个线程都要去竞争缓存行的所有权来更新变量。如果核心1获得了所有权,缓存子系统将会使核心2中对应的缓存行失效。当核心2获得了所有权然后执行更新操作,核心1就要使自己对应的缓存行失效。这会来来回回的经过L3缓存,大大影响了性能。如果互相竞争的核心位于不同的插槽,就要额外横跨插槽连接,问题可能更加严重。

2016-02-15 · 1 min · 19 words · -

LMAX Disruptor

LMAX Disruptor LMAX Disruptor 一个高性能、低延迟且简单的框架 原文地址: LMAX Disruptor – High Performance, Low Latency and Simple Too 翻译: 杨帆 校对: 丁一 Disruptor 是一个用于在线程间通信的高效低延时的消息组件,它像个增强的队列,并且它是让LMAX Exchange 跑的如此之快的一个关键创新。关于什么是Disruptor、为何它很重要以及它的工作原理方面的信息都呈爆炸性增长 —— 这些文章很适合开始学习Disruptor,还可跟着LMAX BLOG深入学习。这里还有一份更详细的白皮书。 虽然disruptor模式使用起来很简单,但是建立多个消费者以及它们之间的依赖关系需要的样板代码太多了。为了能快速又简单适用于99%的场景,我为Disruptor模式准备了一个简单的领域特定语言。例如,为建立一个消费者的"四边形模式": (从Trisha Gee’s excellent series explaining the disruptor pattern偷来的图片) 在这种情况下,只要生产者 (P1) 将元素放到ring buffer上,消费者C1和C2就可以并行处理这些元素。但是消费者C3必须一直等到C1和C2处理完之后,才可以处理。在现实世界中的对应的案例就像: 在处理实际的业务逻辑 (C3) 之前,需要校验数据 (C1) ,以及将数据写入磁盘 (C2) 。 用原生的Disruptor语法来创建这些消费者的话代码如下: Executor executor = Executors.newCachedThreadPool(); BatchHandler handler1 = new MyBatchHandler1(); BatchHandler handler2 = new MyBatchHandler2(); BatchHandler handler3 = new MyBatchHandler3() RingBuffer ringBuffer = new RingBuffer(ENTRY_FACTORY, RING_BUFFER_SIZE); ...

2016-02-15 · 1 min · 156 words · -

MySQL日期函数

MySQL日期函数 MySQL日期函数,时间函数使用的总结,以及时间加减运算(转) 博客分类: MySQL MySQL数据库 select timediff(‘23:40:00’, ’ 18:30:00’); - 两时间相减 SELECT substring( timediff(‘23:40:00’, ’ 18:30:00’),1,5) –“05: 10"相减返回小时: 分钟 select datediff(‘2008-08-08’, ‘2008-08-01’); - 7 –两日期相减 select TO_DAYS(‘2008-09-08’)-TO_DAYS(‘2008-08-08’) –两日期相减 SELECT substring( ‘2009-06-17 10:00:00’, 1, 10 ) –从datetime中提取"日期” (********* 时间戳是从1970年1月1日开始到目标时间所经过的秒数. 可以进行两个datetime时间间隔的运算**********) 一、MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间 (date + time) 函数: now() MySQL> select now(); +——-+ | now() | +——-+ | 2008-08-08 22:20:46 | +——-+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_timestamp ,localtime() ,localtime ,localtimestamp - (v4.0.6) ...

2016-02-14 · 7 min · 1376 words · -

nordfx server

nordfx server 全部服务器均提供新版IP地址,如果您的连接仍有问题,不妨在MT4登录窗口服务器一栏输入以下地址重新尝试登录: Real1 78.140.165.83:443 78.140.166.245:443 78.140.132.78:443 Real2 78.140.166.246:443 88.85.85.27:443 Real3 78.140.166.244:443 Real4 78.140.165.89:443 78.140.166.243:443 Real5服务器的IP (任选一组) - 78.140.172.90:443 或 78.140.172.91:443 NordGroupInv-Demo Demo 1 78.140.130.82:443 Demo 2 98.158.109.150:443 Demo 3 117.18.73.62:443 尝试一下在登录MT4时,服务器地址的位置输入 https://nordfx-chinese.com/faq_trade_platforms.html

2016-02-02 · 1 min · 33 words · -

archlinux kvm windows

archlinux kvm windows 创建虚拟磁盘 安装windows虚拟机 配置网络 check if cpu suport kvm egrep --color=auto 'vmx|svm|0xc0f' /proc/cpuinfo zgrep CONFIG_KVM /proc/config.gz zgrep VIRTIO /proc/config.gz lsmod | grep kvm lsmod | grep virtio install qemu sudo pacman -Sy sudo pacman -S qemu libvirt # 可选项 sudo pacman -S samba ### 安装virtio yay -S virtio-win 创建磁盘文件 qemu-img create -f raw win10.raw 30G # 如果磁盘文件所在分区为 btrfs 文件系统, 在创建磁盘文件之前先在外层目录禁用 COW。 chattr +C /path/to/qemu-img/ 安装 win10 qemu-system-x86_64 \ -enable-kvm \ -cpu host \ -m 2048 \ -boot d \ -drive file=/home/wiloon/vm/win10.raw,format=raw,if=virtio,index=1 \ -drive file=/home/wiloon/vm/Win10_1511_English_x64.iso,format=raw,index=2,media=cdrom \ -fda /usr/share/virtio/virtio-win_x86_64.vfd 如果遇到 -fda read-only 的问题, 去修改一下权限 qemu-system-x86_64: Initialization of device isa-fdc failed: Could not reopen file: Permission denied qemu-system-x86_64: Initialization of device isa-fdc failed: Block node is read-only ...

2016-02-01 · 2 min · 244 words · -

MySQL 聚集函数

MySQL 聚集函数 聚集函数 聚集函数是运行在行组上,计算和返回单个值的函数。 SQL聚集函数 函数 说明 AVG() 返回某列的平均值 COUNT() 返回某列的行数 MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某个列之和 (1) 、AVG()函数 可以返回所有列的平均值,也可以返回特定列的平均值。 sql print? SELECT AVG(prd_price) AS avg_price FROM products Where vend_id=1003; 将过滤出vend_id=1003的产品,avg是这些产品的平均值. (2) 、COUNT()函数 COUNT(*)对表中行的数目进行计数,不管表列中包含的是空 (NULL) 还是非空值; COUNT(column)对特定列中有值的行进行计算,忽略NULL值。 (3) 、MAX()函数 MAX()返回指定列的最大值,要求指定列名,忽略NULL值。 在MySQL中,MAX()函数可以对非数据列使用,在用于文本数据时,如果数据按相应的列排序,MAX()返回最后一行。 (4) 、MIN()函数 MIN()返回指定列的最小值,要求指定列名,忽略NULL值。 在MySQL中,MIN()函数可以对非数据列使用,在用于文本数据时,如果数据按相应的列排序,MIN()返回最前面的一行。 (5) 、SUM()函数 用来返回指定列的和 (总计) ,忽略NULL值的行。 sql print? SELECT SUM(num) AS prod_sum-返回指定订单号中的商品数量 FROM products Where order_id=123456; SUM()也可以合计计算值。 sql print? SELECT SUM(item_price*num) AS totol_price FROM order_items-返回订单中所有商品价格和。 Where order_id=123456; ...

2016-01-28 · 1 min · 104 words · -

BeforeClass、AfterClass、Before与After示例

BeforeClass、AfterClass、Before与After示例 http://www.cnblogs.com/xhzi/archive/2011/05/29/2061825.html 【测试目的】 测试加载顺序 【代码片段】 public class TestIt { private TestJUnit tju = null; @BeforeClass public static void enter() { System.out.println(“进来了!”); } @Before public void init() { System.out.println(“正在初始化。。”); tju = new TestJUnit(); System.out.println(“初始化完毕!”); } @Test public void testit() { tju.run(); } @After public void destroy() { System.out.println(“销毁对象。。。”); tju = null; System.out.println(“销毁完毕!”); } @AfterClass public static void leave() { System.out.println(“离开了!”); } } 【运行结果】 进来了! 正在初始化。。 初始化完毕! Hello,JUnit 销毁对象。。。 销毁完毕! 离开了! 【小小总结】 注意加载和执行顺序

2016-01-27 · 1 min · 71 words · -

JUnit中按照顺序执行测试

JUnit中按照顺序执行测试 @FixMethodOrder(MethodSorters.NAME_ASCENDING) MethodSorters.NAME_ASCENDING (推荐) 按方法名称的进行排序,由于是按字符的字典顺序,所以以这种方式指定执行顺序会始终保持一致; 不过这种方式需要对测试方法有一定的命名规则,如 测试方法均以testNNN开头 (NNN表示测试方法序列号 001-999) JUnit中按照顺序执行测试方式 很多情况下,写了一堆的test case,希望某一些test case必须在某个test case之后执行。比如,测试某一个Dao代码,希望添加的case在最前面,然后是修改或者查询,最后才是删除,以前的做法把所有的方法都集中到某一个方法去执行,一个个罗列好,比较麻烦。比较幸福的事情就是JUnit4.11之后提供了MethodSorters,可以有三种方式对test执行顺序进行指定,如下: /** Sorts the test methods by the method name, in lexicographic order, with {@link Method#toString()} used as a tiebreaker */ NAME_ASCENDING(MethodSorter.NAME_ASCENDING), /** Leaves the test methods in the order returned by the JVM. Note that the order from the JVM may vary from run to run */ JVM(null), /** Sorts the test methods in a deterministic, but not predictable, order */ ...

2016-01-27 · 2 min · 242 words · -

MySQL select binary

MySQL select binary BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写 如下: MySQL> select binary ‘ABCD’=‘abcd’ COM1, ‘ABCD’=‘abcd’ COM2; +—+—-+ | COM1 | COM2 | +—+—-+ | 0 | 1 | +—+—-+ 1 row in set (0.00 sec) (仅仅有些而已!4.*以前) 因为有的MySQL特别是4.*以前的对于中文检索会有不准确的问题,可以在检索的时候加上binary。 建表: create TABLE usertest ( id int(9) unsigned NOT NULL auto_increment, username varchar(30) NOT NULL default “, primary key (id) ) 插入数据: insert into usertest (username) VALUES(‘美文’); insert into usertest (username) VALUES(‘美国项目’); insert into usertest (username) VALUES(‘李文’); insert into usertest (username) VALUES(‘老唐’); ...

2016-01-27 · 1 min · 158 words · -