http://www.cnblogs.com/flamepenguin/articles/2101141.html http://www.cnblogs.com/dawen/archive/2010/10/03/1841784.html