我到处都能看到“BUFFER”这个词,但我不明白它到底是什么。
有人能用通俗的语言解释一下什么是缓冲区吗? 什么时候使用? 它是如何使用的?
我到处都能看到“BUFFER”这个词,但我不明白它到底是什么。
有人能用通俗的语言解释一下什么是缓冲区吗? 什么时候使用? 它是如何使用的?
当前回答
缓冲区是内存(ram/磁盘)中的临时占位符(许多编程语言中的变量),可以在其上转储数据,然后进行处理。
缓冲有很多优点,比如它允许事情并行发生,提高IO性能等。
如果使用不当,它也有很多缺点,如缓冲区溢出、缓冲区下溢等。
字符缓冲区示例。
char *buffer1 = calloc(5, sizeof(char));
char *buffer2 = calloc(15, sizeof(char));
其他回答
想象一下,你正在吃碗里的糖果。你定期吃一片。为了防止碗里的糖用光,有人可能会在碗里的糖变空之前把它装满,这样当你想再吃一块的时候,碗里就有糖了。
碗在你和糖果袋之间起到缓冲作用。
如果你在网上看电影,网络服务会不断地将接下来的5分钟左右下载到缓冲区,这样你的电脑就不必在你看电影的时候下载电影(这会导致挂机)。
缓冲区是内存(ram/磁盘)中的临时占位符(许多编程语言中的变量),可以在其上转储数据,然后进行处理。
缓冲有很多优点,比如它允许事情并行发生,提高IO性能等。
如果使用不当,它也有很多缺点,如缓冲区溢出、缓冲区下溢等。
字符缓冲区示例。
char *buffer1 = calloc(5, sizeof(char));
char *buffer2 = calloc(15, sizeof(char));
术语“缓冲区”是一个非常通用的术语,并不是特定于IT或CS的。它是一个临时存储东西的地方,以减轻输入速度和输出速度之间的差异。当生产者比消费者快时,生产者可以继续在缓冲区中存储输出。当使用者找到它时,它可以从缓冲区中读取。缓冲器在中间,用来弥补缺口。
如果你把http://en.wiktionary.org/wiki/buffer上的定义平均一下,我想你就会明白了。
为了证明我们真的“每天必须冒着雪走10英里去上学”,请参阅top -10监视器调用手册第1卷第11.9节,“使用缓冲I/O”,在书签11-24。如果你经常做噩梦,就不要阅读。
缓冲区是“一个临时存储东西的地方,以减轻输入速度和输出速度之间的差异”是准确的,这是一种更“外行”的理解方式。
“缓冲”这个动词已经进入了日常词汇。例如,当网络连接很慢,Netflix的视频被打断时,我们甚至会听到父母说:“给它一点缓冲时间。”
他们说的是,“点击暂停;为更多的视频下载到内存留出时间;然后我们就可以不停地看了。”
根据生产者/消费者的类比,Netflix正在制作视频。观众正在消费它(观看它)。在您的计算机上,临时存储额外下载的视频数据的空间是缓冲区。
视频进度条可能是最好的例子:
那个视频是5:05。它的总播放时间由条的白色部分表示(如果你还没有开始观看它,它将是纯白色的)。
正如紫色所表示的,我实际上已经花费(观看)了10秒的视频。
条形图的灰色部分是缓冲区。这是当前下载到内存缓冲区中的视频数据,你可以在本地使用。换句话说,即使你的互联网连接被中断,你仍然可以观看你缓冲的区域。
缓冲区是由硬件设备或程序进程共享的数据区域,这些硬件设备或程序进程以不同的速度或不同的优先级集运行。缓冲区允许每个设备或进程在不受其他设备或进程影响的情况下运行。为了使缓冲区有效,缓冲区的大小以及将数据移入和移出缓冲区的算法。
缓冲区是一个“中点保持位置”,它的存在与其说是为了加速一个活动的速度,不如说是为了支持不同活动的协调。
这个术语在编程和硬件中都有使用。在编程中,缓冲有时意味着需要从其最终预期位置筛选数据,以便在将其移动到常规文件或数据库之前可以对其进行编辑或其他处理。