代码解析参见:https://handsome-man.blog.csdn.net/article/details/102546634
1