http://www.cnblogs.com/tornadomeet/archive/2012/03/28/2420936.html http://www.cnblogs.com/wengzilin/p/3845271.html