http://www.cnblogs.com/walker01/archive/2010/01/23/1654880.html https://blog.csdn.net/acdreamers/article/details/8050018