ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Cache和buffer的区别

2022-02-03 23:02:07  阅读:142  来源: 互联网

标签:视频 4KB 区别 buffer Cache 速率 缓冲区 数据 资源


Cache 是把最常用的工具放在手边,Buffer 是你家的垃圾桶,你平时的垃圾先扔在垃圾桶里,等垃圾桶满了再扔垃圾。

Cache 的存在原因是对资源调用的空间局部性,你现在在看一本数学书,那么极有可能你一会儿还要再去图书馆的数学书架上找同类型的书,所以你在图书馆找了一个离数学区很近的位置坐下,你微信和一些人聊天,聊的最多的那个往往在微信消息列表靠顶部的位置,因为聊的最多,很有可能你一会还要和她聊,你上午访问知乎,很有可能最近几天你都要访问,所以浏览器就把知乎网站的静态资源先缓存下来,下次访问无需再次下载,这是 Cache。

Buffer 的存在原因是生产者和消费者对资源的生产/效率速率不一致。比如你看视频,视频控件会先预加载几秒的视频资源到缓冲区,看视频的你是资源消费者,你消费视频的速率就是视频资源按照其时间速率正常播放,但是你下载视频的速率可能时快时慢。如果刚开始先预加载几秒资源缓冲区,就算有一两秒网络拥塞了,视频还能顺畅播放,如果网速给力,则会有更多的资源被下载进来,这时资源会越积越多,这时可能缓冲区满了,就暂时停止加载,等你的资源消费的缓冲区空出一部分了,再继续开始加载,这样虽然视频的下载速度是波动的,但是你看的视频是稳定等速率播放的。当你有资源要写入硬盘时,硬盘的最小写入大小往往是一个 block,一般是 4KB,但是你准备写入数据的时候,有可能是一大堆字符,所以这时,你要把数据写到内存里,就要先准备好 4KB 的数据,然后写 4KB,再准备 4KB 数据,而不是每次准备好了一个 byte 的数据,就要写到磁盘里,这时,你是生产者,磁盘是消费者,磁盘是每次 4KB 的速率消费数据,而你生产数据是字节流方式生产,这时就需要一个缓冲区,暂时存放那些还没攒够 4KB 的数据。网络连接过程中,内核中保持的 TCP 连接,因为网速和对面生产者的原因,可能会有大量数据写入 TCP 的缓冲区,一方面因为数据可能seq对不上,需要等待,另一方面是因为对应该 socket 的应用程序并不一定能及时地把这些数据取走(消费)

标签:视频,4KB,区别,buffer,Cache,速率,缓冲区,数据,资源
来源: https://blog.csdn.net/weixin_46363726/article/details/122779697

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有