http://www.cnblogs.com/quanyongan/archive/2013/04/26/3044618.html
http://www.cnblogs.com/quanyongan/archive/2013/05/28/3103243.html