42

正如您可以在Buffer 类的 Node.js 文档中阅读的那样,缓冲区

类似于整数数组,但对应于 V8 堆外的原始内存分配。

到现在为止还挺好。

现在让我困惑的是从技术上讲缓冲区是什么的问题。它是一个只有一些附加函数的数组,用于使用特定编码创建和转换为字符串?

还是有“更多”?

4

3 回答 3

35

缓冲区是一块内存,就像在 C/C++ 中一样。您可以将此内存解释为各种长度的整数或浮点数数组,或二进制字符串。与数组等高级数据结构不同,缓冲区不可调整大小。

它大致对应于:

  • char*char[]在 C/C++ 中
  • byte[]在爪哇
  • Python中的可变bytes或不可调整大小bytearray
  • php中的字符串,如果它们是可变的
于 2013-01-27T19:04:33.070 回答
17

BUFFER是数据从一个地方移动到另一个地方的临时存放点。

为了理解 Buffer 是什么,我们需要知道计算机将如何处理事物。请参见下面的图表。

这个概念就像如果您正在观看 Youtube 视频,您可以开始观看视频而无需下载整个视频。如果您的网速太慢,您会看到“缓冲”,这意味着计算机正在尝试收集数据以便您继续观看该视频。

于 2016-09-10T20:23:31.700 回答
6

来自http://nodejitsu.com/的解释...

缓冲区是节点中 Buffer 类的实例,旨在处理原始二进制数据。每个缓冲区对应于在 V8 之外分配的一些原始内存。缓冲区的行为有点像整数数组,但不可调整大小并且有一大堆专门用于二进制数据的方法。此外,缓冲区中的“整数”每个都代表一个字节,因此仅限于 0 到 255 (2^8 - 1) 之间的值,包括 0 到 255 (2^8 - 1)。

阅读更多:Node.js 中的缓冲区

于 2013-01-27T19:05:23.007 回答