Node.js - 버퍼



개요



이 기사는 Node.js 학습을 단순화하는 데 도움이 되는 기사 시리즈Working With NodeJS의 6부입니다. 이 기사에서는 버퍼에 대해 다룰 것입니다.

소개



서버 측 프로그래밍에서 바이너리 데이터를 처리하는 것은 필수적입니다. 이진 데이터는 일반 텍스트보다 메모리 저장 및 처리 측면에서 훨씬 빠르고 효율적입니다. Node.js에서 바이너리 데이터는 버퍼로 처리됩니다. 버퍼는 정수 배열처럼 작동하지만 크기를 조정할 수 없으며 특히 이진 데이터를 위한 많은 메서드가 있습니다.

버퍼 인스턴스



Buffer 생성자는 전역 개체이므로 사용하기 위해 핵심 모듈이 필요하지 않습니다. 버퍼를 생성하는 몇 가지 방법이 있습니다.


인스턴스 1



const buffer = Buffer.alloc(10);


위의 경우 10바이트의 버퍼를 할당합니다. 기본적으로 Buffer.alloc 함수는 0으로 채워진 버퍼를 생성합니다. Buffer.alloc를 사용하는 것이 버퍼를 할당하는 안전한 방법입니다.


인스턴스 2



const buffer = Buffer.allocUnsafe(10);

allocUnsafe 방법은 잠재적인 보안 위험이 있지만 장점이 있습니다. 할당되지 않은 메모리는 연결 해제만 되고 지워지지 않습니다. 이는 버퍼를 덮어쓰지 않는 한(예: 0으로 채워짐) 할당된 버퍼에 이전에 삭제된 데이터 조각이 포함될 수 있음을 의미합니다. 그러나 해당 방법alloc보다 훨씬 빠릅니다. 버퍼에 메모리를 할당해야 하는 경우 Buffer.alloc 대신 Buffer.allocUnsafe 를 사용하는 것이 좋습니다.


인스턴스 3



const buffer = Buffer.from([1, 2, 3]);


이것은 배열에서 버퍼를 초기화합니다.


인스턴스 4



const buffer = Buffer.from("I'm a string!", "utf-8");


이것은 버퍼from를 이 경우 utf-8의 두 번째 인수로 지정된 인코딩을 사용하여 문자열로 초기화합니다.

버퍼 작업



버퍼 작업은 매우 간단합니다. alloc 메서드를 사용하여 버퍼를 만들면 alloc 메서드에 전달된 바이트 수로 버퍼를 0으로 채웁니다.

const buffer = Buffer.alloc(10);
console.log(buffer);
// <Buffer 00 00 00 00 00 00 00 00 00 00>


위의 코드 조각에서 버퍼는 버퍼에 사용할 수 있는 10바이트의 고정 길이로 0으로 채워집니다. 버퍼에 데이터를 쓰기 위해 write 방법을 사용할 수 있습니다.

const buffer = Buffer.alloc(10);
buffer.write("Some data");
console.log(buffer);
// <Buffer 53 6f 6d 65 20 64 61 74 61 00>


이제 버퍼는 바이트 형식의 일부 데이터로 채워집니다. 버퍼의 각 바이트는 Some data 문자열의 문자를 나타냅니다. 바이트 시퀀스의 끝에 있는 00에 주목하십시오. 공백을 포함하여 일부 데이터의 문자 수를 세면 9개입니다. 00는 버퍼에 할당된 미사용 메모리를 나타냅니다. 일부 데이터 문자열에 추가 문자를 추가하면 버퍼가 할당된 메모리를 채웁니다.

const buffer = Buffer.alloc(10);
buffer.write("Some data2");
console.log(buffer);
// <Buffer 53 6f 6d 65 20 64 61 74 61 32>


버퍼에 기록된 바이트 수는 write 메서드에서 반환된 값입니다. 문자열에 할당된 문자보다 더 많은 문자를 추가하려고 하면 데이터가 버퍼에 포함되지 않습니다.

'use strict';

const buffer = Buffer.alloc(10);
const byteCount = buffer.write("Some data2 Adding more data");
console.log(byteCount); // 10


버퍼를 읽으려면 버퍼 개체에서 toString 메서드를 호출할 수 있습니다.

'use strict';

const buffer = Buffer.alloc(10);
const byteCount = buffer.write("Some data2");
console.log(buffer.toString()); // Some data2


이 기사를 끝내기 전에 버퍼 개체에 대한 몇 가지 보안 문제가 있음을 알아야 합니다. 그러나 이 문서에 표시된 예제는 Node.js Official Docs 에서 강조 표시된 보안 문제를 방지합니다.

Buffer 클래스와 일부 메서드에 대해 자세히 알아보려면 Node.js Official Documentation을 참조하십시오. 이 기사가 도움이 되었다면 더 많은 콘텐츠가 제공될 예정이므로 시리즈를 구독해 주시기 바랍니다. 잘 지내세요.

좋은 웹페이지 즐겨찾기