>  기사  >  웹 프론트엔드  >  node.js의 Buffer 객체란 무엇입니까? 사용 시나리오는 무엇입니까?

node.js의 Buffer 객체란 무엇입니까? 사용 시나리오는 무엇입니까?

青灯夜游
青灯夜游앞으로
2021-07-28 18:41:371930검색

이 글에서는 node.js의 Buffer 객체를 소개하고, Buffer 객체의 사용 시나리오와 장점이 무엇인지 살펴보겠습니다.

node.js의 Buffer 객체란 무엇입니까? 사용 시나리오는 무엇입니까?

Buffer 객체는 Node의 핵심 모듈이기도 합니다. 면접 시 자주 묻는 테스트 질문이기도 합니다. 깊게 파고들지 않으면 저처럼 그냥 확장해서 사용해도 됩니다. 그리고 몇 가지 질문을 합니다. 더 이상은 아닙니다. 어쨌든 당시에는 이렇게 대답할 수 있었습니다. Buffer 모듈은 현재 관련된 비즈니스에서 거의 사용되지 않지만 Buffer 개체는 문자열 전송으로는 만족할 수 없는 일부 비즈니스 기능과 성능을 효과적으로 최적화할 수 있습니다. [추천학습: "nodejs tutorial"]

그럼 오늘은 Buffer 객체에 대해 알아볼까요?

Buffer 개체

Buffer 개체는 고정 길이 바이트 시퀀스를 나타내는 데 사용됩니다.

// 创建一个长度为 10、以零填充的 Buffer。
const buf1 = Buffer.alloc(10);

// 创建一个长度为 10 的 Buffer,
// 其中全部填充了值为 `1` 的字节。
const buf2 = Buffer.alloc(10, 1);

var str="hello Jasen"; 
var buf = new Buffer.from(str,'utf-8');
console.log(buf);

//输出:<Buffer 68 65 6c 6c 6f 20 4a 61 73 65 6e>

출력 결과를 관찰하세요. Buffer 개체는 배열과 유사합니다.

Buffer 객체의 각 요소는 두 자리 16진수(즉, 0부터 255까지의 값)입니다.

Buffer의 요소에 할당된 값이 0보다 작으면 256이 차례로 추가됩니다. 0~255의 값이 나올 때까지 범위의 값이 255보다 크면 0~255의 값이 나올 때까지 256을 하나씩 뺍니다. 소수이면 반올림됩니다. 곧장.

사용 시나리오

  • 대량의 바이너리 데이터를 처리하는 데 사용할 수 있습니다.
  • 사진 처리, 파일 수신 및 업로드, 네트워크 프로토콜 등

장점

전송 , 성능이 향상됩니다

대부분의 네트워크 전송은 문자열을 사용하므로 데이터를 바이너리로 전송하려면 필연적으로 버퍼로 변환해야 합니다. 전송하기 전에 직접 Buffer로 변환하면 전송 과정에서 추가적인 변환을 할 필요가 없고 손실도 방지되어 성능이 향상됩니다.

다음은 ab를 통한 성능 테스트이며, 200개의 동시 클라이언트 요청을 시작한 결과 QPS 개선은 그다지 높지 않지만, 여전히 약간의 개선이 있는 경우 코드를 복사하여 실행하면 결과를 확인할 수 있습니다.

node.js의 Buffer 객체란 무엇입니까? 사용 시나리오는 무엇입니까?

node.js의 Buffer 객체란 무엇입니까? 사용 시나리오는 무엇입니까?

var http = require(&#39;http&#39;);
var str = "";

for (var i = 0; i < 1024 * 10; i++) {
    str += "a";
}

str = new Buffer.from(str,&#39;utf-8&#39;);

http.createServer(function (req, res) {
    res.writeHead(200);
    res.end(bufstr);
}).listen(8002);

Buffer 및 Stream

Stream도 Node의 핵심 모듈입니다. Stream은 흐르는 물과 같습니다. 시작점과 끝점을 갖는 정렬된 바이트 데이터 전송을 의미합니다.

Node.js에는 네 가지 기본 스트림 유형이 있습니다.

  • Writable - 데이터를 쓸 수 있는 스트림(예: fs.createWriteStream())
  • Readable - 데이터를 읽을 수 있는 스트림(예: fs.createReadStream( ) ).
  • Duplex - 읽고 쓸 수 있는 스트림(예: net.Socket).
  • Transform - Duplex 읽기 및 쓰기 프로세스 중에 데이터를 수정하거나 변환할 수 있는 스트림

시나리오:

파일 업로드 및 다운로드를 조각으로 나누어서 다운로드합니다. 예를 들어 영화를 다운로드할 때 다운로드하는 동안 시청할 수 있습니다. 프로세스.

원본 주소: https://juejin.cn/post/6955490895131066382

더 많은 프로그래밍 관련 지식을 원하시면 프로그래밍 입문을 방문해 주세요! !

위 내용은 node.js의 Buffer 객체란 무엇입니까? 사용 시나리오는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제