Buffer和Cache:Buffer为缓冲,Cache为缓存。缓冲是把要处理的数据收集起来到达一定数量之后一起处理,比如Java中的BufferedWriter,我们想要向文件中写入某些字符数据,如果没有缓冲区,一个一个字符写入,由于磁盘IO开销很大,肯定会导致效率很低,还浪费资源。而使用BufferedWriter将要写入的字符保存在内存缓冲区中,调用flush(),或者到达一定数量之后再写入磁盘,这样就提高了效率。缓存是把处理结果放在容易取到的地方,以便增加下次访问的速度。比如CPU的高速缓存,就是根据特定的算法将CPU可能会用到的数据放在缓存中,而不必从内存中取数据,缓存没有命中再从内存中取,很大程度上提高了效率。Buffer中的数据不能丢失,Cache中的数据可以丢失。Buffer中的数据是还未处理的数据,比如BufferedWriter中的数据如果丢失,那写入文件中的肯定是不完整的数据。而高速Cache中的数据如果丢失,还能从内存中取到。
总的来说Buffer和Cache都是为了提高效率的手段,Buffer是为了方便处理数据,Cache是为了提高访问速度。