http://www.cnblogs.com/zfc2201/archive/2011/08/17/2143473.html
http://blog.csdn.net/z69183787/article/category/2175163