http://www.cnblogs.com/goodcandle/archive/2007/01/05/613065.html http://www.cnblogs.com/goodcandle/archive/2007/01/07/613836.html