参考:
http://www.cnblogs.com/xiaoQLu/archive/2013/03/06/2946507.html
http://blog.csdn.net/xu_fu/article/details/8269865