我看到"BUFFER"这个词无处不在,但我无法掌握它的确切含义。
- 请用通俗易懂的语言解释一下什么是缓冲区?
- 什么时候会使用它?
- 如何使用它?
我看到"BUFFER"这个词无处不在,但我无法掌握它的确切含义。
想象一下你正在从一个碗里吃糖果。你每次拿一颗。为了防止碗里的糖果被吃光,有人可能会在碗快空时加满它,这样当你想再拿一颗糖果时,碗里面还有。
碗就像是你和糖果袋之间的缓冲器。
如果你在线观看电影,网络服务会不断地将接下来的大约5分钟内容下载到缓冲区,这样你的电脑就不必在你观看时下载整个电影(这会导致卡顿)。
“缓存”是一个非常通用的术语,不仅限于信息技术或计算机科学。它是一个临时存储的地方,以缓解输入速度和输出速度之间的差异。当生产者比消费者更快时,生产者可以继续将输出存储在缓存中。当消费者准备好时,它可以从缓存中读取。缓冲区在中间起到了连接两者之间差距的作用。
缓冲区(Buffer)就是一块用于存储数据的内存块。一般而言,它通常是一个内存块,在一次操作中被加载,并在一个或多个操作中被清空,就像Perchik所说的“糖果碗”示例。例如,在C程序中,你可能会有以下代码:
#define BUFSIZE 1024
char buffer[BUFSIZE];
size_t len = 0;
// ... later
while((len=read(STDIN, &buffer, BUFSIZE)) > 0)
write(STDOUT, buffer, len);
这是 cp(1) 的极简版本。使用缓冲数组存储被 read(2) 读取的数据,直到写入完成; 然后重新使用该缓冲区。
还有一些更复杂的缓冲方案,例如使用环形缓冲区,其中使用有限数量的缓冲区,一个接一个地使用;一旦所有缓冲区都已满,索引“回绕”,以便重新使用第一个缓冲区。
缓冲区意味着“临时存储”。在计算机中,缓冲区非常重要,因为互联的设备和系统很少与彼此“同步”,所以当信息从一个系统发送到另一个系统时,它需要等待接收方系统准备好。
实际上,这取决于每种情况的上下文,因为没有一个确切的定义。但是通常来讲,缓冲区是一个暂时存放东西的地方。我能想到的最好的现实世界类比就是等候区。在计算机中,一个简单的例子是当缓冲区指的是用于临时存储数据的RAM的一部分。
缓存是指在内存(RAM/磁盘)中,临时存储可以进行处理的数据的临时变量(许多编程语言都有)。
“缓冲区”是一个非常普通的术语,并不特定于IT或CS。它是一个临时存储某些东西的地方,以减轻输入速度和输出速度之间的差异。当生产者比消费者更快时,生产者可以继续将输出存储在缓冲区中。当消费者加快时,它可以从缓冲区中读取。缓存是在中间的桥梁,以缩小差距。
缓冲区是内存(RAM/磁盘)中的临时占位符(许多编程语言中的变量),可以在其中转储数据,然后进行处理。
缓冲的许多优点,如允许并行操作,提高IO性能等。
如果不正确使用,它也有许多缺点,例如缓冲区溢出,缓冲区下溢等。
C语言字符缓冲区示例。
char *buffer1 = calloc(5, sizeof(char));
char *buffer2 = calloc(15, sizeof(char));