http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html
http://os.51cto.com/art/201006/203217.htm