http://www.cnblogs.com/tonyqus/archive/2006/10/24/522618.html
http://blog.csdn.net/nihongyuan/archive/2009/04/30/4139928.aspx