https://blog.csdn.net/adusts/article/details/80882649 这位写的很清楚明白 https://blog.csdn.net/weizhengbo/article/details/77618963 (转:三种方法) https://www.cnblogs.com/developerY/p/3163997.html (代码实现)