1 http://www.phpbloger.com/article/50.html

2 https://www.cnblogs.com/coder2012/p/4827757.html

3 https://www.jianshu.com/p/951b742fd137

4 https://segmentfault.com/a/1190000004672312