有测试代码和注释。可以参考,代码并不完美,很多地方可以修改,还望高手指点。