본문 바로가기
Research/Node.js

35.node.js Buffer?

by RIEM 2023. 9. 20.

Buffer

  • 바이너리 데이터 스트림을 읽거나 다루기 위한 클래스
  • TCP 또는 fs 제어 작업 등에서 octet 스트림을 제어하기 위해 소개됨

Binary Data

  • 0 또는 1로 만든 수 체계
  • 컴퓨터는 이미지, 문자, 숫자 등을 이진 수로 변환하여 주고 받는다

Character Sets

  • 각 문자에 숫자를 매핑한 체계
  • Unicode, ASCII 등
  • ex) Unicode : L -> 76

Character Encoding

  • 숫자를 바이너리로 변환하는 규칙
  • UTF-8
  • ex) 76 -> 01001100

Stream

  • 데이터 주고 받을 때의 데이터 시퀀스
  • 대량의 데이터를 잘게 쪼개서 주고 받을 때 사용

다시 Buffer

  • Buffer는 데이터를 주고 받을 때, 데이터가 대기하는 공간을 말함
  • RAM에 주로 저장되었다가(기다렸다가) 스트리밍으로 빠져나감

Buffer 다루기

  • Node.js에서 주로 zlib.js 라이브러리 사용한다
// Create an empty buffer of size 10. 
// A buffer that only can accommodate 10 bytes.

const buf1 = Buffer.alloc(10);

// Create a buffer with content
const buf2 = Buffer.from('Hello buffer..');

// Examine the structure of a buffer
buf1.toJSON();
/** 
{
  type: 'Buffer',
  data: [
    0, 0, 0, 0, 0,
    0, 0, 0, 0, 0
  ]
}
*/
// numbers are unicode of characters
buf2.toJSON();
/**
{
  type: 'Buffer',
  data: [
     72, 101, 108, 108, 111,
     32,  98, 117, 102, 102,
    101, 114,  46,  46
  ]
}
*/

// Examine the size of a buffer

buf1.length // 10
buf2.length // 12

// Write to a bufferbuf1.write('Buffer really rocks!')

buf1.write("Buffer really rocks!") 

// Decode a buffer
console.log(buf1.toString()) // Buffer rea
// It can contain only 10 bytes..

console.log(buf2.toString()); // Hello buffer..

출처

댓글