http://www.cnblogs.com/h3clikejava/articles/1999274.html http://www.cnblogs.com/bausch/archive/2011/10/18/2212432.htm l