(1) https://www.cnblogs.com/pinpin/p/10040771.html (2) https://blog.csdn.net/JNingWei/article/details/78299150