Buffer和Cache:Buffer為緩沖,Cache為緩存。緩沖是把要處理的數據收集起來到達一定數量之后一起處理,比如Java中的BufferedWriter,我們想要向文件中寫入某些字符數據,如果沒有緩沖區,一個一個字符寫入,由于磁盤IO開銷很大,肯定會導致效率很低,還浪費資源。而使用BufferedWriter將要寫入的字符保存在內存緩沖區中,調用flush(),或者到達一定數量之后再寫入磁盤,這樣就提高了效率。緩存是把處理結果放在容易取到的地方,以便增加下次訪問的速度。比如CPU的高速緩存,就是根據特定的算法將CPU可能會用到的數據放在緩存中,而不必從內存中取數據,緩存沒有命中再從內存中取,很大程度上提高了效率。Buffer中的數據不能丟失,Cache中的數據可以丟失。Buffer中的數據是還未處理的數據,比如BufferedWriter中的數據如果丟失,那寫入文件中的肯定是不完整的數據。而高速Cache中的數據如果丟失,還能從內存中取到。
總的來說Buffer和Cache都是為了提高效率的手段,Buffer是為了方便處理數據,Cache是為了提高訪問速度。