完整版,分析的源码有点旧了,还是有一定的参考意义