bug: 修复一些空指针的问题
change: 完善算法