http://www.cnblogs.com/Olive116/archive/2012/11/13/2767549.html http://www.cnblogs.com/sijin/articles/1638800.html