http://www.cnblogs.com/zoupeiyang/archive/2009/04/09/1432317.html http://www.cnblogs.com/c2303191/articles/1065675.html