DEV Community

Kashyap Patel
Kashyap Patel

Posted on

2

Node Fundamentals: Buffer

This is a series of posts that will illustrate the what, why and how of Node. I'll be sharing my learnings from a course on Advanced NodeJS by Samer Buna offered on PluralSight. Any code samples tagged or attached will be available at the following repo.

GitHub logo jscomplete / advanced-nodejs

For help, ask in #questions at slack.jscomplete.com

Buffer

Buffer is heavily used in Node to work with binary streams of data. It is a low-level object to represent a sequence of binary data.

A buffer is essentially a chunk of memory allocated outside v8 heap and we can put some data in memory, which can be interpreted in many ways based on the length of each character. That's why there is always a corresponding character-encoding associated with that buffer.

Whatever we place inside a buffer, doesn't have any character encoding, so to read it we need to specify an encoding.

Unlike arrays, once the buffer is allocated, it can't be resized. We can create a buffer in 1 of 3 major ways.

  1. Buffer.alloc(n) - Allocates a 0-filed buffer of n bytes in memory.
  2. Buffer.allocUnsafe(n) - Allocates a buffer of n byte in memory. This can cause a vulnerability as it can contain sensitive information.
  3. Buffer.from() - Allocates a buffer with a value passed in argument.
const string = "touché";
const buffer = Buffer.from("touché");
console.log(string.length) // 6
console.log(buffer.length) // 7

Buffers are useful when we want to read an image file from a TCP stream or a compressed file or any other form of binary data.

Just like arrays and string, we can use operations like includes, slice, indexOf.

In the case of slice, unlike arrays, a sliced copy will use the same memory space.

String Decoder

When converting streams of binary data, use String Decoder module as it handles multi-byte characters much better. It gracefully handles incomplete characters, while calling toString method on buffer doesn't do that.

SurveyJS custom survey software

Build Your Own Forms without Manual Coding

SurveyJS UI libraries let you build a JSON-based form management system that integrates with any backend, giving you full control over your data with no user limits. Includes support for custom question types, skip logic, an integrated CSS editor, PDF export, real-time analytics, and more.

Learn more

Top comments (0)

SurveyJS custom survey software

Build Your Own Forms without Manual Coding

SurveyJS UI libraries let you build a JSON-based form management system that integrates with any backend, giving you full control over your data with no user limits. Includes support for custom question types, skip logic, an integrated CSS editor, PDF export, real-time analytics, and more.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay