csdn一篇解释的很好的博文
https://blog.csdn.net/briblue/article/details/73824058?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
这个博主讲解的好清楚,而且举例丰富,值得关注