自己重新写了一次 ，，希望能找到更简单的方法