我到处都看到“缓冲”这个词,但是我无法理解它的确切含义。
- 有人能解释一下外行语言的缓冲是什么吗?
- 什么时候使用?
- 如何使用?
我到处都看到“缓冲”这个词,但是我无法理解它的确切含义。
Answers:
想象一下,您正在从一碗里吃糖果。您定期吃一块。为了防止碗快用完,有人可能会在碗变空之前重新装满它,这样当您想再拿一块时,碗中就会有糖果。
碗在您和糖果袋之间起缓冲作用。
如果您正在在线观看电影,则Web服务将在接下来的5分钟左右的时间内将其连续下载到缓冲区中,这样您的计算机就不必在观看电影时下载电影(这会导致挂起)。
术语“缓冲区”是一个非常通用的术语,并不特定于IT或CS。在这里,可以暂时存储一些东西,以减轻输入速度和输出速度之间的差异。当生产者比消费者快时,生产者可以继续将输出存储在缓冲区中。当使用者加速时,它可以从缓冲区读取。缓冲区位于中间以弥合间隙。
如果您在http://en.wiktionary.org/wiki/buffer上平均定义,我想您会明白的。
要证明我们确实确实“每天都要下雪才能上学去走10英里”,请参阅书签11-24中的TOPS-10监控器呼叫手册第1卷,第11.9节“使用缓冲的I / O”。如果您梦night以求,请不要阅读。
缓冲区只是用于存储数据的一块内存。从最一般的意义上讲,它通常是在一个操作中加载一个单一的内存块,然后在一个或多个Perchik的“糖果碗”示例中将其清空。例如,在C程序中,您可能具有:
#define BUFSIZE 1024
char buffer[BUFSIZE];
size_t len = ;
// ... later
while((len=read(STDIN, &buffer, BUFSIZE)) > 0)
write(STDOUT, buffer, len);
...这是cp(1)的最低版本。这里,缓冲区数组用于存储read(2)读取的数据,直到写入为止;然后重新使用该缓冲区。
使用了更复杂的缓冲区方案,例如循环缓冲区,其中使用了一定数量的缓冲区,一个接一个,另一个接一个;一旦缓冲区已满,索引将“环绕”,以便第一个重新使用。
缓冲区是内存(内存/内存)中的临时占位符(许多编程语言中的变量),可以在其上转储数据然后进行处理。
缓冲具有许多优点,例如它允许事物并行发生,提高IO性能等。
如果使用不当,如缓冲区溢出,缓冲区下溢等,它也有很多缺点。
C字符缓冲区示例。
char * buffer1 = calloc(5,sizeof(char));
char * buffer2 = calloc(15,sizeof(char));
缓冲区是由硬件设备或程序进程共享的数据区域,这些硬件设备或程序进程以不同的速度或不同的优先级进行操作。缓冲区允许每个设备或进程在不被其他设备或进程阻碍的情况下运行。为了使缓冲区有效,缓冲区的大小以及将数据移入和移出缓冲区的算法。
缓冲区是“中点保留地”,但它的存在并不是为了加快活动的速度,而是为了支持单独活动的协调。
该术语在编程和硬件中都使用。在编程中,缓冲有时意味着需要从最终目标位置筛选数据,以便可以在将数据移到常规文件或数据库之前对其进行编辑或其他处理。
缓冲区是内存(内存/内存)中的临时占位符(许多编程语言中的变量),可以在其上转储数据然后进行处理。
术语“缓冲区”是一个非常通用的术语,并不特定于IT或CS。在这里,可以暂时存储一些东西,以减轻输入速度和输出速度之间的差异。当生产者比消费者快时,生产者可以继续将输出存储在缓冲区中。当使用者加速时,它可以从缓冲区读取。缓冲区位于中间以弥合间隙。