http://blog.csdn.net/aomandeshangxiao/article/category/841452
http://www.cppblog.com/life02/category/18316.html