自己做的base库，大量参考。。。