第二次写，好像理解的好多了