http://www.cnblogs.com/CareySon/category/332146.html
http://www.cnblogs.com/haogj/archive/2011/09/05/2167659.html