http://www.cnblogs.com/jv9/archive/2011/06/14/2080223.html http://www.cnblogs.com/jv9/archive/2011/06/15/2081104.html