http://c.biancheng.net/cpp/html/3031.html
https://www.cnblogs.com/jx66/p/5665757.html
https://www.bilibili.com/video/BV1A4411s7pC?from=search&seid=5271235276926442930