http://www.cppblog.com/javenstudio/articles/23424.html
http://blog.chinaunix.net/u/8780/showart.php?id=1009649