http://www.cnblogs.com/devinzhang/archive/2012/01/20/2327863.html
http://jingyan.baidu.com/article/359911f579020c57ff030678.html