1. 把不同的算法放到了不同的类中
2. 对基于辅助缓冲区的方法做了想尽的comment和优化