http://www.cppblog.com/colys/archive/2009/08/18/25785.html
http://blog.csdn.net/sunyonggao/article/details/1598790
http://www.cnblogs.com/qswang/archive/2012/07/06/2579816.html