from:http://blog.csdn.net/donglinlucky/article/details/2845777
http://www.ibm.com/developerworks/cn/java/j-jtp11225/