http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html http://blog.csdn.net/guolin_blog/article/details/11952435