http://www.cnblogs.com/dartagnan/archive/2011/08/29/2158247.html
http://doc.okbase.net/cc_again/archive/71796.html