参考:
https://www.cnblogs.com/x_wukong/p/7909895.html
https://www.cnblogs.com/diyingyun/archive/2011/11/25/2263164.html
https://www.zhihu.com/question/24116967
https://www.cnblogs.com/wzheng/p/3753730.html
https://www.cnblogs.com/secondtonone1/p/5580203.html
https://blog.csdn.net/JISHUQIANJIA/article/details/80966620
http://www.360doc.com/content/10/1008/23/3700464_59462698.shtml