有一些现成的方案:
https://www.cnblogs.com/guohongwei/p/10848698.html
https://www.cnblogs.com/yongcode/p/4864474.html