参考文档:
http://blog.csdn.net/bitfan/article/details/17260775
http://www.cnblogs.com/Mainz/archive/2012/03/06/2382653.html#!comments
http://www.cnblogs.com/wediscuss/p/3486062.html