http://blog.csdn.net/pi9nc/article/details/9281829
http://www.cnblogs.com/sunzn/archive/2013/05/10/3064129.html
http://www.cnblogs.com/linjzong/p/4191891.html