推荐参考:http://www.cnblogs.com/java-class/p/4845962.html
https://blog.csdn.net/yihaoawang/article/details/50638199