http://www.cnblogs.com/efzju/archive/2012/08/30/2663004.html
http://blog.csdn.net/hudaiqian/article/details/6216366