목차
Node.js Buffer 的方法
Node.js 버퍼 방식
结论
웹 프론트엔드 JS 튜토리얼 Node.js 버퍼 모듈의 몇 가지 중요한 메소드에 대해 이야기해 보겠습니다.

Node.js 버퍼 모듈의 몇 가지 중요한 메소드에 대해 이야기해 보겠습니다.

Jan 05, 2022 pm 07:03 PM
buffer node.js 완충기

이 기사는 Node.js 버퍼에 대한 전체 가이드를 공유하고 Node 버퍼(Buffer) 모듈의 몇 가지 중요한 방법에 대해 이야기합니다. 모든 사람에게 도움이 되기를 바랍니다.

Node.js 버퍼 모듈의 몇 가지 중요한 메소드에 대해 이야기해 보겠습니다.

바이너리 스트림은 바이너리 데이터의 대규모 컬렉션입니다. 일반적으로 바이너리 스트림의 크기가 상당히 크기 때문에 바이너리 스트림은 일반적으로 함께 배송되지 않고 배송 전에 작은 덩어리로 나누어 하나씩 전송됩니다.

데이터 처리 장치가 다른 데이터 스트림 수신을 일시적으로 중단하면 데이터 처리 장치가 더 많은 데이터를 수신할 준비가 될 때까지 나머지 데이터는 캐시에 보관됩니다.

Node.js 서버는 일반적으로 파일 시스템에서 읽고 써야 하며 파일은 실제로 저장소 수준에서 바이너리 스트림입니다. 또한 Node.js를 TCP 스트림과 함께 사용할 수도 있으므로 TCP 스트림이 신뢰할 수 있는 엔드투엔드 바이트 스트림을 제공하여 신뢰할 수 없는 인터넷 네트워크를 통한 통신을 보장할 수 있습니다.

수신기로 전송된 데이터 스트림은 수신기가 처리할 추가 데이터를 수신할 준비가 될 때까지 버퍼링됩니다. 이것이 Node.js의 임시 데이터 부분이 하는 일입니다. V8 엔진 외부에서 바이너리 데이터를 관리하고 저장하는 것입니다.

버퍼(Buffer)의 다양한 용도에 대해 자세히 알아보고 Node.js 프로그램에서 사용하는 방법을 알아보세요. Buffer)的各种使用方法,了解更多有关它们的信息以及一起学习如何在 Node.js 程序中使用它们吧。

Node.js 버퍼 모듈의 몇 가지 중요한 메소드에 대해 이야기해 보겠습니다.

Node.js Buffer 的方法

Node.js 缓冲模块的最大优势,其实就是它是内置于 Node.js 中的,因此我们可以在任何我们想要使用它的地方使用它。

让我们一起浏览一些重要的 Node.js 缓冲模块的方法吧。

Buffer.alloc()

此方法将创建一个新的缓冲区,但是分配的大小不是固定的。当我们调用此方法时,可以自行分配大小(以字节为单位)。

const buf = Buffer.alloc(6)  // 这会创建一个 6 字节的缓冲区

console.log(buf) // <Buffer 00 00 00 00 00 00>
로그인 후 복사

Buffer.byteLength()

如果我们想要获取缓冲区的长度,我们只需调用 Buffer.byteLength() 就行了。

var buf = Buffer.alloc(10)
var buffLen = Buffer.byteLength(buf) // 检查缓冲区长度

console.log(buffLen) // 10
로그인 후 복사

Buffer.compare()

通过使用 Buffer.compare() 我们可以比较两个缓冲区,此方法的返回值是 -101 中的一个。

译者注:buf.compare(otherBuffer); 这一句调用会返回一个数字 -101,分别对应 bufotherBuffer 之前,之后或相同。

var buf1 = Buffer.from(&#39;Harsh&#39;)
var buf2 = Buffer.from(&#39;Harsg&#39;)
var a = Buffer.compare(buf1, buf2)
console.log(a) // 这会打印 0

var buf1 = Buffer.from(&#39;a&#39;)
var buf2 = Buffer.from(&#39;b&#39;)
var a = Buffer.compare(buf1, buf2)
console.log(a) // 这会打印 -1


var buf1 = Buffer.from(&#39;b&#39;)
var buf2 = Buffer.from(&#39;a&#39;)
var a = Buffer.compare(buf1, buf2)
console.log(a) // 这会打印 1
로그인 후 복사

Buffer.concat()

顾名思义,我们可以使用此函数连接两个缓冲区。当然,就像字符串一样,我们也可以连接两个以上的缓冲区。

var buffer1 = Buffer.from(&#39;x&#39;)
var buffer2 = Buffer.from(&#39;y&#39;)
var buffer3 = Buffer.from(&#39;z&#39;)
var arr = [buffer1, buffer2, buffer3]

console.log(arr)
/* buffer, !concat [ <Buffer 78>, <Buffer 79>, <Buffer 7a> ] */

// 通过 Buffer.concat 方法连接两个缓冲区
var buf = Buffer.concat(arr)

console.log(buf)
// <Buffer 78 79 7a> concat successful
로그인 후 복사

Buffer.entries()

Buffer.entries() 会用这一缓冲区的内容创建并返回一个 [index, byte] 形式的迭代器。

var buf = Buffer.from(&#39;xyz&#39;)

for (a of buf.entries()) {
    console.log(a)
    /* 这个会在控制台输出一个有缓冲区位置与内容的字节的数组 [ 0, 120 ][ 1, 121 ][ 2, 122 ] */
}
로그인 후 복사

Buffer.fill()

我们可以使用 Buffer.fill() 这个函数将数据插入或填充到缓冲区中。更多信息请参见下文。

const b = Buffer.alloc(10).fill(&#39;a&#39;)

console.log(b.toString())
// aaaaaaaaaa
로그인 후 복사

Buffer.includes()

像字符串一样,它将确认缓冲区是否具有该值。我们可以使用 Buffer.includes() 方法来实现这一点,给定方法根据搜索返回一个布尔值,即 truefalse

const buf = Buffer.from(&#39;this is a buffer&#39;)
console.log(buf.includes(&#39;this&#39;))
// true

console.log(buf.includes(Buffer.from(&#39;a buffer example&#39;)))
// false
로그인 후 복사

Buffer.isEncoding()

我们可能知道二进制文件必须进行编码,那么如果我们要检查数据类型是否支持字符编码该怎么办呢?我们可以使用 Buffer.isEncoding() 方法进行确认。如果支持,它将返回 true

console.log(Buffer.isEncoding(&#39;hex&#39;))
// true

console.log(Buffer.isEncoding(&#39;utf-8&#39;))
// true

console.log(Buffer.isEncoding(&#39;utf/8&#39;))
// false

console.log(Buffer.isEncoding(&#39;hey&#39;))
// false
로그인 후 복사

Buffer.slice()

buf.slice() 将用于使用缓冲区的选定元素创建一个新缓冲区 —— 对缓冲区进行切割时,将创建一个新缓冲区,其中包含要在新缓冲区切片中找到的项目的列表。

var a = Buffer.from(&#39;uvwxyz&#39;);
var b = a.slice(2, 5);

console.log(b.toString());
// wxy
로그인 후 복사

Buffer.swapX()

Buffer.swapX() 用于交换缓冲区的字节顺序。使用 Buffer.swapX() (此处 X 可以为 16, 32, 64)来交换 16 位,32 位和 64 位缓冲区对象的字节顺序。

const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8])
console.log(buf1)
// <Buffer 01 02 03 04 05 06 07 08>

// 交换 16 位字节顺序
buf1.swap16()
console.log(buf1)
// <Buffer 02 01 04 03 06 05 08 07>

// 交换 32 位字节顺序
buf1.swap32()
console.log(buf1)
// <Buffer 03 04 01 02 07 08 05 06>

// 交换 64 位字节顺序
buf1.swap64()
console.log(buf1)
// <Buffer 06 05 08 07 02 01 04 03>
로그인 후 복사

Buffer.json()Node.js 버퍼 모듈의 몇 가지 중요한 메소드에 대해 이야기해 보겠습니다.

Node.js 버퍼 방식

Node.js 버퍼 모듈의 가장 큰 장점은 Node.js에 내장되어 있어서 어디에서나 사용할 수 있다는 점입니다. 그것이 사용되는 곳.

🎜몇 가지 중요한 Node.js 버퍼링 모듈 방법을 살펴보겠습니다. 🎜🎜Buffer.alloc()🎜🎜🎜이 메서드는 새 버퍼를 생성하지만 할당된 크기는 고정되어 있지 않습니다. 이 메소드를 호출하면 크기를 바이트 단위로 할당할 수 있습니다. 🎜
const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);

console.log(buf.toJSON());
// {"type":"Buffer", data:[1, 2, 3, 4, 5, 6, 7, 8]}
로그인 후 복사
로그인 후 복사
🎜Buffer.byteLength()🎜🎜🎜버퍼의 길이를 얻으려면 Buffer.byteLength()를 호출하면 됩니다. 🎜rrreee🎜Buffer.compare()🎜🎜🎜 Buffer.compare()를 사용하면 두 버퍼를 비교할 수 있으며 이 메서드의 반환 값은 < One입니다. 코드>-1, 0, 1. 🎜🎜번역자 참고 사항: buf.compare(otherBuffer); 이 호출은 숫자 -1, 0, 1 </code)을 반환합니다. code>, <code>otherBuffer 앞, 뒤 또는 같은 buf에 해당합니다. 🎜rrreee🎜Buffer.concat()🎜🎜🎜이름에서 알 수 있듯이 이 함수를 사용하여 두 개의 버퍼를 연결할 수 있습니다. 물론 문자열과 마찬가지로 두 개 이상의 버퍼를 연결할 수도 있습니다. 🎜rrreee🎜Buffer.entries()🎜🎜🎜Buffer.entries()는 이 버퍼 Iterator의 내용에서 [인덱스, 바이트]를 생성하고 반환합니다. 형태의. 🎜rrreee🎜Buffer.fill()🎜🎜🎜이 함수를 사용하여 Buffer.fill()을 사용하여 버퍼에 데이터를 삽입하거나 채울 수 있습니다. 자세한 내용은 아래를 참조하세요. 🎜rrreee🎜Buffer.includes()🎜🎜🎜문자열처럼 버퍼에 값이 있는지 확인합니다. Buffer.includes() 메서드를 사용하여 이를 달성할 수 있습니다. 지정된 메서드는 검색에 따라 부울 값, 즉 true 또는 false를 반환합니다. 🎜rrreee🎜Buffer.isEncoding()🎜🎜🎜바이너리 파일은 인코딩해야 한다는 것을 알 수 있는데, 데이터 유형이 문자 인코딩을 지원하는지 확인하고 싶다면 어떻게 해야 할까요? Buffer.isEncoding() 메서드를 사용하여 확인할 수 있습니다. 지원되는 경우 true를 반환합니다. 🎜rrreee🎜Buffer.slice()🎜🎜🎜buf.slice()는 버퍼의 선택된 요소를 사용하여 새 버퍼를 생성하는 데 사용됩니다. 버퍼가 슬라이스되면 새 버퍼 슬라이스에서 찾을 항목 목록을 포함하는 새 버퍼가 생성됩니다. 🎜rrreee🎜Buffer.swapX()🎜🎜🎜Buffer.swapX() 버퍼의 바이트 순서를 바꾸는 데 사용됩니다. 16비트, 32비트 및 64비트 버퍼 개체의 바이트 순서를 바꾸려면 Buffer.swapX()(여기서 X는 16, 32, 64일 수 있음)를 사용하세요. . 🎜rrreee🎜Buffer.json()🎜🎜🎜버퍼에서 JSON 개체를 생성하는 데 도움이 될 수 있으며 이 메서드는 JSON 버퍼 개체 🎜를 반환합니다.
const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);

console.log(buf.toJSON());
// {"type":"Buffer", data:[1, 2, 3, 4, 5, 6, 7, 8]}
로그인 후 복사
로그인 후 복사

结论

如果我们需要进一步了解并使用 Node.js 的缓冲区,我们需要对缓冲区以及 Node.js 缓冲区的工作原理有更扎实的基础知识。我们还应该了解为什么我们需要使用 Node.js 缓冲区和各种 Node.js 缓冲区方法的使用。

更多node相关知识,请访问:nodejs 教程!!

위 내용은 Node.js 버퍼 모듈의 몇 가지 중요한 메소드에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

로그가 사용되는 로거 버퍼 크기 로그가 사용되는 로거 버퍼 크기 Mar 13, 2023 pm 04:27 PM

문제 분석을 용이하게 하기 위해 엔지니어에게 피드백 사용 정보 및 기록을 제공하는 기능입니다(개발 중에 사용). 사용자 자신은 업로드 로그를 자주 생성하지 않으므로 사용자에게는 쓸모가 없습니다. 로깅 버퍼는 디스크에 기록될 리두 로그에 대한 변경 벡터의 단기 저장에 사용되는 작은 임시 영역입니다. 디스크에 대한 로그 버퍼 쓰기는 여러 트랜잭션의 변경 벡터 배치입니다. 그럼에도 불구하고 로그 버퍼의 변경 벡터는 거의 실시간으로 디스크에 기록되며, 세션에서 COMMIT 문을 발행하면 로그 버퍼 쓰기 작업이 실시간으로 수행됩니다.

Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Mar 29, 2023 pm 06:02 PM

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

Node의 메모리 제어에 관한 기사 Node의 메모리 제어에 관한 기사 Apr 26, 2023 pm 05:37 PM

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

최고의 Node.js Docker 이미지를 선택하는 방법에 대해 이야기해 볼까요? 최고의 Node.js Docker 이미지를 선택하는 방법에 대해 이야기해 볼까요? Dec 13, 2022 pm 08:00 PM

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

Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Apr 24, 2023 pm 05:49 PM

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

Node.js 19가 공식적으로 출시되었습니다. Node.js의 6가지 주요 기능에 대해 이야기해 보겠습니다! Node.js 19가 공식적으로 출시되었습니다. Node.js의 6가지 주요 기능에 대해 이야기해 보겠습니다! Nov 16, 2022 pm 08:34 PM

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

Node.js의 GC(가비지 수집) 메커니즘에 대해 이야기해 보겠습니다. Node.js의 GC(가비지 수집) 메커니즘에 대해 이야기해 보겠습니다. Nov 29, 2022 pm 08:44 PM

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

Node의 이벤트 루프에 대해 이야기해 봅시다. Node의 이벤트 루프에 대해 이야기해 봅시다. Apr 11, 2023 pm 07:08 PM

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

See all articles