好题
重写一遍，详解见evernote