http://www.cnblogs.com/dhcn/p/7117425.html https://blog.csdn.net/screaming/article/details/51442392 https://www.cnblogs.com/fuhuixiang/p/4174896.html