http://www.cnblogs.com/qixue/p/3611562.html http://www.cnblogs.com/kissdodog/archive/2013/06/12/3132380.html