http://www.cnblogs.com/espie/archive/2011/05/01/2034135.html
http://www.cnblogs.com/cyrix/articles/1868164.html
http://www.cnblogs.com/espie/archive/2011/05/04/2037086.html#2195828