node.js의 Buffer 객체란 무엇입니까? 사용 시나리오는 무엇입니까?
이 글에서는 node.js의 Buffer 객체를 소개하고, 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 개선은 그다지 높지 않지만, 여전히 약간의 개선이 있는 경우 코드를 복사하여 실행하면 결과를 확인할 수 있습니다.
var http = require('http'); var str = ""; for (var i = 0; i < 1024 * 10; i++) { str += "a"; } str = new Buffer.from(str,'utf-8'); 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 NodeJS V8 엔진의 메모리 및 가비지 수집기(GC)에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다.

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

Node용 Docker 이미지를 선택하는 것은 사소한 문제처럼 보일 수 있지만 이미지의 크기와 잠재적인 취약점은 CI/CD 프로세스와 보안에 상당한 영향을 미칠 수 있습니다. 그렇다면 최고의 Node.js Docker 이미지를 어떻게 선택합니까?

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

Node 19가 정식 출시되었습니다. 이 글에서는 Node.js 19의 6가지 주요 기능에 대해 자세히 설명하겠습니다. 도움이 되셨으면 좋겠습니다!

Node.js는 GC(가비지 수집)를 어떻게 수행하나요? 다음 기사에서는 이에 대해 설명합니다.

이벤트 루프는 Node.js의 기본 부분이며 메인 스레드가 차단되지 않도록 하여 비동기 프로그래밍을 가능하게 합니다. 이벤트 루프를 이해하는 것은 효율적인 애플리케이션을 구축하는 데 중요합니다. 다음 기사는 Node.js의 이벤트 루프에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다!

노드가 npm 명령을 사용할 수 없는 이유는 환경 변수가 올바르게 구성되지 않았기 때문입니다. 해결 방법은 다음과 같습니다. 1. "시스템 속성"을 엽니다. 2. "환경 변수" -> "시스템 변수"를 찾은 다음 환경을 편집합니다. 3. nodejs 폴더의 위치를 찾습니다. 4. "확인"을 클릭합니다.
