
Junit 是Java开发领域中非常普遍的单元测试框架,不过,大部分的使用者仅仅只是使用它一部分的功能。
先整理一部分相对不常用,但是个人觉得非常有用的功能(其他的慢慢补充),希望对大家有所帮助。
“In me the tiger sniffes the rose.” -- Siegfried Sasson

Junit 是Java开发领域中非常普遍的单元测试框架,不过,大部分的使用者仅仅只是使用它一部分的功能。
先整理一部分相对不常用,但是个人觉得非常有用的功能(其他的慢慢补充),希望对大家有所帮助。

Stream是 Java 8新增加的类,用来补充集合类。
Stream代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的。
Stream和其它集合类的区别在于:其它集合类主要关注与有限数量的数据的访问和有效管理(增删改),而Stream并没有提供访问和管理元素的方式,而是通过声明数据源的方式,利用可计算的操作在数据源上执行,当然BaseStream.iterator() 和 BaseStream.spliterator()操作提供了遍历元素的方法。
Java Stream提供了提供了串行和并行两种类型的流,保持一致的接口,提供函数式编程方式,以管道方式提供中间操作和最终执行操作,为Java语言的集合提供了现代语言提供的类似的高阶函数操作,简化和提高了Java集合的功能。
本文首先介绍Java Stream的特点,然后按照功能分类逐个介绍流的中间操作和终点操作,最后会介绍第三方为Java Stream做的扩展。

使用Git的同学都知道.gitignore 配置文件用于配置不需要加入版本管理的文件,对版本管理带来很大的便利。今天有个需求就是忽略版本库下除少数几个文件和文件夹之外的所有文件,首先想到的方式是使用gitignore树的概念,即在需要的文件夹下都添加 .gitignore 文件,并在其中设定相应的规则。但是,这种方式比较麻烦。

之前同事有一个项目给过来,由于他之前的开发环境是Windows的,文件编码都是GBK的,看起挺不爽的,不符合我们现在的规范。需要将里面的文件全部转换成UTF8的文件编码。
那我们应该怎么来做呢?
很简单,写一个shell,利用 iconv转换一下就好了,于是花了5分钟左右写了一个脚本来搞定这个事情。

之前我们分享过ETCD应用场景,所有的应用场景都需要etcd提供的api来做支撑,所以这次我们就来看看ectd提供的REST API如何来使用。
etcd 2.0之后,规范了端口号的使用,并且写入了IANA组织的标准端口记录。etcd将提供给外部客户端的端口变为2379,而etcd服务间通信的端口变为2380(不过现在依然还是兼容原来4001和7001端口)。

工程师是一个比较有有意思的群体,比如像我这样有些强迫症的工程师,开始工作之前必须要先选择一个对工程师友好的字体。
国外有人在2009年就写了一篇文章讲关于程序员的字体。top 10 programming forts,上面列了不少优秀的字体。
知乎上也有不少人在讨论程序员用什么字体比较爽,比如【哪些字体适合程序员用来维护代码?】 , 【程序员编程看起来最舒服的字体(英文的和中文的)、字号、颜色和背景色是什么?】。
不过,经过我自己的测试,还是觉得“Bitstream Vera Mono”,和“DejaVu Sans Mono”最好用,给大家推荐一下。
贴一下在终端的效果。


我们在开发一些项目的时候需要知道当前的版本状态,比如传递版本客户端信息到服务端等等。
那我们有些什么办法能够获取当前项目版本呢?
比较简单的办法就是在我们的程序中写一个常量来记录版本号,每次升级了就更新这个常量。但是这个方案还需要我们每次升级的时候都要记得这个事情,这个对于我这种记性不太好的人来说,简直就是灾难。
那还有什么更好的办法吗?

“哎!今天糟透了,开了一天的会却什么问题也没有解决。我的忍耐力已经到了极限了,这个该死的会议不仅不不能解决问题,而且还在破坏我的团队。我的工作已经不得不因为会议再次延迟了,我不明白会议到底是要解决问题而是要巩固某些人在公司的政治地位。他们到底何时才能明白,当一条大船即将沉没的时候,船员需要的发号施令的船长,而不是一天又一天的开会!”
上面的话,是曾经我的一个同事兼好友在很久之前的某一天在聊天时向我吐槽他们公司无效的会议给他带来的困扰。这段话我印象非常深刻,因为我有时候也有同样地想法。不知道大家看到上面的一段话,是否也于心有戚戚耶。