Node.js中的缓冲区是什么?

Gol*_*den 40 buffer node.js

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

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

到现在为止还挺好.

现在让我感到困惑的是技术上讲缓冲区的问题.它是一个只有一些额外函数的数组,用于使用特定编码创建和转换为字符串吗?

或者还有"更多"吗?

phi*_*hag 34

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

它大致对应于:

  • char*或者char[]在C/C++中
  • byte[] 在Java中
  • Python中的可变bytes或不可调整大小bytearray
  • php中的字符串,如果它们是可变的

  • @SachinBhandari node.js 的 `Buffer` 早于 `ArrayBuffer`。当时还没有 ArrayBuffer,这就是为什么在 Node.js 中创建了 Buffer 类。浏览器供应商不喜欢“Buffer”接口,并创建了自己的“ArrayBuffer”。TypedArray 系列类提供了对“ArrayBuffer”内存区域的不同解释。如今,“Buffer”只是一个“Uint8Array”(它本身就是 TypedArray 实现之一)。 (2认同)

Way*_*hiu 13

BUFFER 是数据从一个地方移动到另一个地方的临时控制点.

为了理解什么是Buffer,我们需要知道计算机如何处理事物.见下图.

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


Gor*_*man 6

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

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

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

  • 是的,我也在文档中读到了这一点,但这实际上意味着什么?我可以像使用固定大小的数组一样使用缓冲区,并限制它只接受 0 到 255 之间的整数作为值吗? (2认同)