http://www.cnblogs.com/CodeGuy/archive/2012/02/13/2349970.html http://www.cnblogs.com/shenliang123/archive/2011/10/27/2226892.html