http://www.blogjava.net/zongbao/archive/2012/07/24/383884.html
http://www.codingyun.com/article/47.html