http://www.cnblogs.com/yangyh/archive/2011/07/15/2107824.html
http://www.blogjava.net/chunkyo/archive/2007/01/16/94266.html