CSDN上看到的,感觉写得很好
http://blog.csdn.net/EmilMatthew/archive/2006/10/17/1338808.aspx