http://www.cnblogs.com/fnng/archive/2011/08/25/2153807.html http://www.cnblogs.com/fnng/archive/2012/01/07/2315685.html