http://blog.csdn.net/gggkg/archive/2006/06/05/774849.aspx
http://blog.csdn.net/long123654/archive/2009/09/05/4521316.aspx
http://blog.csdn.net/gouki04/archive/2010/06/04/5646199.aspx