JUnit:使用ExpectedException进行异常测试

Junit中有好几种测试异常的方法。就像我在前面几篇文章中写道的那样,我比较喜欢使用org.junit.rules.ExpectedException规则。一般来说,ExpectedException规则是org.junit.Before, org.junit.After, org.junit.BeforeClass,或者org.junit.AfterClass注解的一种替代方式 ,但是它们的功能更为强大,也更容易在多个工程间或者不同类中进行共享。本文中我会介绍下org.junit.rules.ExpectedException规则的一些高级用法。

Published: 29 Mar 2014

JVM的几点性能优化

HotSpot,家喻户晓的JVM,我们的Java和Scala程序就运行在它上面。年复一年,一次又一次的迭代,经过无数工程师的不断优化,现在它的代码执行的速度和效率已经逼近本地编译的代码了。

Published: 28 Mar 2014

Java函数式编程(九)MapReduce

译注:map(映射)和reduce(归约,化简)是数学上两个很基础的概念,它们很早就出现在各类的函数编程语言里了,直到2003年Google将其发扬光大,运用到分布式系统中进行并行计算后,这个组合的名字才开始在计算机界大放异彩(那些函数式粉可能并不这么认为)。本文我们会看到Java 8在摇身一变支持函数式编程后,map和reduce组合的首次亮相(这里只是初步介绍,后续还会有针对它们的专题)。

Published: 27 Mar 2014

自己动手写GC

有时候事情多得我喘不过气来的时候,我会出现一种异常反应,好像找点别的事做,就能摆脱烦恼了。通常的话我会自己写一些独立的小程序。

Published: 26 Mar 2014

Java异常的性能分析

在Java中抛异常的性能是非常差的。通常来说,抛一个异常大概会消耗100到1000个时钟节拍。

Published: 25 Mar 2014

Java字符串之性能优化

基础类型转化成String

Published: 24 Mar 2014

Java函数式编程(八)Optional

Published: 24 Mar 2014

Java函数式编程(七)闭包

使用词法作用域和闭包

Published: 23 Mar 2014

如何在Java中分配超过-Xmx限制的内存

本文主要介绍Java中几种分配内存的方法。我们会看到如何使用sun.misc.Unsafe来统一操作任意类型的内存。以前用C语言开发的同学通常都希望能在Java中通过较底层的接口来操作内存,他们一定会对本文中要讲的内容感兴趣。

Published: 21 Mar 2014

那些看不见的死锁

相信大家都对Java线程死锁的概念并不陌生。本质上就是有两个线程在互相等待。这通常都是flat锁(synchronized)或者 ReentrantLock的锁排列引起的问题。

Published: 20 Mar 2014