在源代码基础上进行修改和添加注释,具体说明请看https://www.jianshu.com/p/569edcef0aa7