http://www.cnblogs.com/doit8791/archive/2012/05/28/2522556.html
http://blog.csdn.net/ppiao1970hank/article/details/6289647