http://blog.csdn.net/liangxiaozhang/article/details/19543261 http://www.cnblogs.com/kobe8/p/3990297.html