https://blog.csdn.net/liujiahan629629/article/details/23716357 java
https://www.cnblogs.com/bdqczhl/p/8777180.html c#