http://www.cnblogs.com/duanhuajian/archive/2013/01/04/2844151.html
http://www.cnblogs.com/yexiaochai/p/3213712.html