gradle cmd 乱码

gradle cmd 乱码 编码GBK的不可映射字符 [compileJava, compileTestJava].options.encoding = ‘UTF-8’

2016-03-07 · 1 min · 8 words · -

负数 十六进制表示

负数 十六进制表示 负数用十六进制表示,通常用的是补码的方式表示. 十六进制 (英文名称: Hexadecimal) ,是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是: 0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。 正数的补是它本身;负数的补码是它本身的值每位求反,最后再加一。 例如:求-3的十六进制 3的十六进制为0003,3求反之后是C,再加1,成D,所以-3的十六进制就是: FFFD

2016-03-07 · 1 min · 12 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 · -

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 · -

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 · -

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 · -

MySQLslap

MySQLslap MySQLslap -uuser0 -ppassword0 -concurrency=1 -iterations=1 -engine=innodb -number-of-queries=20000 -debug-info -query=“INSERT INTO xxxxxx” MySQL数据库基准压力测试工具之MySQLSlap使用实例 2013-05-20 19:04:09 分类: MySQL/postgreSQL http://www.2cto.com/database/201303/195303.html MySQL数据库基准压力测试工具之MySQLSlap使用实例 一、MySQLslap介绍 MySQLslap是MySQL5.1之后自带的benchmark基准测试工具,类似Apache Bench负载产生工具,生成schema,装载数据,执行benckmark和查询数据,语法简单,灵活,容易使用。该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。MySQLslap为MySQL性能优化前后提供了直观的验证依据,笔者建议系统运维人员应该掌握一些常见的压力测试工具,这样才能较为准确的掌握线上系统能够支撑的用户流量上限及其抗压性等问题。 <www.2cto.com> 二、使用方法介绍 可以使用MySQLslap -help来显示使用方法: -concurrency代表并发数量,多个可以用逗号隔开,例如: concurrency=10,50,100, 并发连接线程数分别是10、50、100个并发。 -engines代表要测试的引擎,可以有多个,用分隔符隔开。 -iterations代表要运行这些测试多少次。 -auto-generate-sql 代表用系统自己生成的SQL脚本来测试。 -auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的 (read,write,update,mixed) -number-of-queries 代表总共要运行多少次查询。每个客户端运行的查询数量可以用查询总数/并发数来计算。 -debug-info 代表要额外输出CPU以及内存的相关信息。 -number-int-cols : 创建测试表的 int 型字段数量 -auto-generate-sql-add-autoincrement : 代表对生成的表自动添加auto_increment列,从5.1.18版本开始 -number-char-cols 创建测试表的 char 型字段数量。 -create-schema 测试的schema,MySQL中schema也就是database。 -query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。 -only-print 如果只想打印看看SQL语句是什么,可以用这个选项。 三、Demo实例 下面我们使用几个demo实例来进行测试 Demo1: [root@localhost ~]# MySQLslap -uroot -p123abc -concurrency=100 -iterations=1 -auto-generate-sql -auto-generate-sql-load-type=mixed -auto-generate-sql-add-autoincrement -engine=myisam -number-of-queries=10 -debug-info ...

2016-01-21 · 3 min · 511 words · -

gradle 多项目

gradle 多项目 创建项目 首先创建项目,名称为 test: mkdir test && cd test gradle init 这时候的项目结构如下: ➜ test tree . ├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle 2 directories, 6 files 然后,创建多个模块,这里以 core 和 web 模块为例,先创建两个目录: mkdir core && mkdir web cd core && gradle init -type java-library cd web && gradle init -type java-library 修改配置 接下来修改根目录下的 settings.gradle 文件,引入子模块: include ‘core’,‘web’ ...

2016-01-20 · 3 min · 574 words · -

linux kvm nat nftables

linux kvm nat nftables nft command https://blog.wiloon.com/nft ip forward https://blog.wiloon.com/?p=13701 配置 TAP http://blog.wiloon.com/?p=13281 # nftables nat sudo nft add table ip nat sudo nft add chain ip nat post \{ type nat hook postrouting priority 0 \; \} sudo nft add chain ip nat pre \{ type nat hook prerouting priority 0 \; \} # 注意修改网段, 网卡 sudo nft add rule nat post ip saddr 192.168.60.0/24 oif wlp3s0 masquerade # 注意修改网段, 网卡 sudo nft add rule nat pre iif wlp3s0 tcp dport \{ 3389,9999 \} dnat 192.168.60.2 #sudo nft add rule nat post ip saddr 192.168.3.0/24 oif wlp3s0 snat 192.168.x.xxx save your ruleset to /etc/nftables.conf which is loaded by nftables.service sudo -s nft list ruleset > /etc/nftables.conf http://wiki.nftables.org/wiki-nftables/index.php/Performing_Network_Address_Translation_(NAT ...

2016-01-19 · 3 min · 537 words · -