http://www.cnblogs.com/cy568searchx/p/3645388.html http://blog.csdn.net/markely/article/details/7881203