https://blog.csdn.net/hustyangju/article/details/17784007
http://www.cppblog.com/biao/archive/2011/12/02/161309.html