http://www.cnblogs.com/chyong168/archive/2011/12/19/2293482.html,http://blog.csdn.net/shendl/article/details/1790933