1. https://www.cnblogs.com/xinheng/p/16438084.html
2. https://blog.csdn.net/jieyucx/article/details/127997208