http://www.cnblogs.com/JemBai/archive/2009/08/20/1550683.html
https://my.oschina.net/u/1189340/blog/266338