Bộ đệm nút

Tìm hiểu bộ đệm Node là gì, chúng được sử dụng để làm gì, cách sử dụng chúng

Bộ đệm là gì?

Bộ đệm là một vùng của bộ nhớ. Các nhà phát triển JavaScript không quen thuộc với khái niệm này, ít hơn nhiều so với các nhà phát triển C, C ++ hoặc Go (hoặc bất kỳ lập trình viên nào sử dụng ngôn ngữ lập trình hệ thống), tương tác với bộ nhớ hàng ngày.

Nó đại diện cho một đoạn bộ nhớ có kích thước cố định (không thể thay đổi kích thước) được phân bổ bên ngoài công cụ JavaScript V8.

Bạn có thể coi bộ đệm giống như một mảng các số nguyên, mỗi số đại diện cho một byte dữ liệu.

Nó được thực hiện bởi NodeLớp đệm.

Tại sao chúng ta cần một bộ đệm?

Bộ đệm đã được giới thiệu để giúp các nhà phát triển xử lý dữ liệu nhị phân, trong một hệ sinh thái theo truyền thống chỉ xử lý các chuỗi thay vì các mã nhị phân.

Bộ đệm được liên kết sâu sắc vớidòng suối. Khi một bộ xử lý luồng nhận dữ liệu nhanh hơn mức nó có thể tiêu hóa, nó sẽ đặt dữ liệu vào bộ đệm.

Hình dung đơn giản về bộ đệm là khi bạn đang xem video trên YouTube và đường màu đỏ vượt ra ngoài điểm hình dung của bạn: bạn đang tải xuống dữ liệu nhanh hơn so với việc bạn đang xem và trình duyệt của bạn lưu vào bộ đệm.

Cách tạo vùng đệm

Bộ đệm được tạo bằng cách sử dụngBuffer.from(),Buffer.alloc(), vàBuffer.allocUnsafe()các phương pháp.

const buf = Buffer.from('Hey!')

Bạn cũng có thể khởi tạo bộ đệm chuyển kích thước. Điều này tạo ra một bộ đệm 1KB:

const buf = Buffer.alloc(1024)
//or
const buf = Buffer.allocUnsafe(1024)

Sử dụng bộ đệm

Truy cập nội dung của bộ đệm

Bộ đệm, là một mảng byte, có thể được truy cập giống như một mảng:

const buf = Buffer.from('Hey!')
console.log(buf[0]) //72
console.log(buf[1]) //101
console.log(buf[2]) //121

Những con số đó là Mã Unicode xác định ký tự ở vị trí đệm (H => 72, e => 101, y => 121)

Bạn có thể in toàn bộ nội dung của bộ đệm bằng cách sử dụngtoString()phương pháp:

console.log(buf.toString())

Lưu ý rằng nếu bạn khởi tạo bộ đệm bằng một số đặt kích thước của nó, bạn sẽ có quyền truy cập vào bộ nhớ khởi tạo trước sẽ chứa dữ liệu ngẫu nhiên, không phải bộ đệm trống!

Nhận độ dài của một bộ đệm

Sử dụnglengthbất động sản:

const buf = Buffer.from('Hey!')
console.log(buf.length)

Lặp lại nội dung của bộ đệm

const buf = Buffer.from('Hey!')
for (const item of buf) {
  console.log(item) //72 101 121 33
}

Thay đổi nội dung của bộ đệm

Bạn có thể ghi vào bộ đệm một chuỗi toàn bộ dữ liệu bằng cách sử dụngwrite()phương pháp:

const buf = Buffer.alloc(4)
buf.write('Hey!')

Giống như bạn có thể truy cập bộ đệm bằng cú pháp mảng, bạn cũng có thể đặt nội dung của bộ đệm theo cách tương tự:

const buf = Buffer.from('Hey!')
buf[1] = 111 //o
console.log(buf.toString()) //Hoy!

Sao chép bộ đệm

Có thể sao chép bộ đệm bằng cách sử dụngcopy()phương pháp:

const buf = Buffer.from('Hey!')
let bufcopy = Buffer.alloc(4) //allocate 4 bytes
buf.copy(bufcopy)

Theo mặc định, bạn sao chép toàn bộ bộ đệm. 3 tham số khác cho phép bạn xác định vị trí bắt đầu, vị trí kết thúc và độ dài bộ đệm mới:

const buf = Buffer.from('Hey!')
let bufcopy = Buffer.alloc(2) //allocate 2 bytes
buf.copy(bufcopy, 0, 2, 2)
bufcopy.toString() //'He'

Cắt một bộ đệm

Nếu bạn muốn tạo hình ảnh trực quan một phần của bộ đệm, bạn có thể tạo một lát cắt. Một lát cắt không phải là một bản sao: bộ đệm ban đầu vẫn là nguồn gốc của sự thật. Nếu điều đó thay đổi, lát cắt của bạn sẽ thay đổi.

Sử dụngslice()phương pháp để tạo ra nó. Tham số đầu tiên là vị trí bắt đầu và bạn có thể chỉ định tham số thứ hai tùy chọn với vị trí kết thúc:

const buf = Buffer.from('Hey!')
buf.slice(0).toString() //Hey!
const slice = buf.slice(0, 2)
console.log(slice.toString()) //He
buf[1] = 111 //o
console.log(slice.toString())

Tải xuống miễn phí của tôiSổ tay Node.js


Các hướng dẫn nút khác: