http://www.cnblogs.com/bluestorm/archive/2012/05/10/2493592.htmlhttp://blog.csdn.net/feilong1105/article/details/7305896