参考:http://blog.csdn.net/zhifeiyu2008/article/details/8829637
http://blog.csdn.net/technerd/article/details/8945587