http://www.cnblogs.com/yjf512/archive/2012/03/30/2424726.html http://www.cnblogs.com/yjf512/category/380058.html