http://www.cnblogs.com/codelove/archive/2011/06/12/2079232.html http://www.cnblogs.com/codelove/archive/2011/06/03/2071267.html