https://blog.csdn.net/HK_5788/article/details/48897299 http://www.cnblogs.com/neuhawk/archive/2006/09/28/517507.html