详见: https://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html https://www.cnblogs.com/tureno/articles/6677942.html