http://blog.csdn.net/adandelion/articles/466648.aspxhttp://blog.csdn.net/adandelion/articles/464574.aspxhttp://blog.csdn.net/adandelion/articles/464573.aspxhttp://blog.csdn.net/adandelion/articles/464570.aspx