http://blog.csdn.net/bryantd/article/details/1100019
http://www.cnblogs.com/devinzhang/archive/2012/01/05/2313406.html
http://wenku.baidu.com/view/003449f3f61fb7360b4c65fc.html