http://blog.csdn.net/laizi19870929/article/details/3500127 http://blog.csdn.net/frankrade/article/details/2917408