http://www.blogjava.net/conans/articles/379546.html http://blog.csdn.net/jiushuai/article/details/8087961