http://www.cnblogs.com/Rlemon/archive/2013/11/11/3418448.html http://www.cnblogs.com/yefeng1627/archive/2013/05/17/3083543.html