1.http://blog.csdn.net/wuliowen/article/details/71541561
2.https://segmentfault.com/a/1190000006233585