Node.js Buffer 클래스:
Buffer
는 일반 배열과 비슷하게 작동하지만, 크기가 고정되어 있고, 바이너리 데이터를 효율적으로 처리할 수 있도록 최적화되어 있습니다.생성 및 사용:
// 10바이트의 버퍼 생성
const buf = Buffer.alloc(10);
// 문자열을 버퍼에 쓰기
buf.write("Hello");
console.log(buf.toString()); // "Hello"가 출력됨
Buffer.alloc(size)
, Buffer.from(data)
등을 사용하여 버퍼를 생성할 수 있습니다.내부 동작:
Stream의 종류:
Node.js에서 Stream은 크게 읽기(Read Stream), 쓰기(Write Stream), 듀플렉스(Duplex Stream), 트랜스폼(Transform Stream) 네 가지 유형으로 분류됩니다.
스트림의 특징:
data
, end
, error
, finish
등)를 통해 데이터 흐름을 관리합니다.pipe()
메서드를 제공합니다. 예를 들어, 파일 읽기 스트림을 압축 스트림에 연결한 후, 다시 파일 쓰기 스트림에 파이프하여 효율적인 데이터 처리가 가능합니다.예시 코드: 파일 읽기와 쓰기 스트림
const fs = require('fs');
// 파일 읽기 스트림 생성
const readStream = fs.createReadStream('input.txt', { encoding: 'utf8' });
// 파일 쓰기 스트림 생성
const writeStream = fs.createWriteStream('output.txt');
// readStream의 데이터를 writeStream으로 파이프합니다.
readStream.pipe(writeStream);
// 이벤트를 통해 스트림 상태 확인
readStream.on('error', (err) => console.error('읽기 에러:', err));
writeStream.on('finish', () => console.log('쓰기 완료'));
내부 동작 및 최적화: