参考:http://blog.csdn.net/isea533/article/details/22437511
http://www.cnblogs.com/xdouby/p/6502925.html