http://www.cnblogs.com/wqj0405/archive/2010/10/13/1850089.html http://blog.csdn.net/cs_victor/article/details/5739393