http://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html
http://www.cnblogs.com/artech/archive/2008/07/08/1237902.html