Bộ đệm NodeJS

JavaScript thuần túy không xử lý tốt dữ liệu nhị phân thẳng, mặc dù JavaScript thân thiện với Unicode. Khi xử lý các luồng TCP và đọc và ghi vào hệ thống tệp, cần phải xử lý các luồng dữ liệu nhị phân thuần túy

Nút có một số chiến lược để thao tác, tạo và sử dụng octet ( Một octet có thể được sử dụng để biểu thị các giá trị thập phân nằm trong khoảng từ 0 đến 255. ) dòng suối. Dữ liệu thô được lưu trữ trong các phiên bản của lớp Bộ đệm (được thiết kế để xử lý dữ liệu nhị phân thô) trong nút

Ghi chú. Một octet là một đơn vị thông tin kỹ thuật số trong máy tính và viễn thông bao gồm tám bit. Thuật ngữ này thường được sử dụng khi thuật ngữ byte có thể mơ hồ, vì trong lịch sử không có định nghĩa tiêu chuẩn cho kích thước của byte

Bộ đệm là một vùng lưu trữ bộ nhớ vật lý được sử dụng để lưu trữ tạm thời dữ liệu trong khi nó đang được di chuyển từ nơi này sang nơi khác. Trong nút, mỗi bộ đệm tương ứng với một số bộ nhớ thô được phân bổ bên ngoài V8. Bộ đệm hoạt động giống như một mảng các số nguyên, nhưng không thể thay đổi kích thước. Lớp Bộ đệm là toàn cầu. Nó xử lý trực tiếp dữ liệu nhị phân và có thể được xây dựng theo nhiều cách khác nhau

Danh sách mã hóa, được sử dụng với nút

Chuyển đổi giữa các đối tượng chuỗi Bộ đệm và JavaScript yêu cầu một phương thức mã hóa rõ ràng. Bảng sau đây cho thấy các mã hóa chuỗi khác nhau

Mã hóaMô tả'ascii'chỉ dành cho dữ liệu ASCII 7 bit. Phương pháp mã hóa này rất nhanh, nhưng bị giới hạn ở bộ ký tự ascii. Để chuyển đổi một ký tự null thành 0x00, bạn nên sử dụng 'utf8'. 'utf8'Các ký tự Unicode được mã hóa nhiều byte. Nó đã trở thành mã hóa ký tự thống trị cho web trên toàn thế giới. 'utf16le'2 hoặc 4 byte, các ký tự Unicode được mã hóa endian nhỏ, các cặp thay thế (U+10000 đến U+10FFFF) được hỗ trợ. 'ucs2'Bí danh của 'utf16le'. mã hóa chuỗi 'base64'Base64. 'binary'Phương pháp mã hóa dữ liệu nhị phân thô thành chuỗi bằng cách chỉ sử dụng 8 bit đầu tiên của mỗi ký tự. Phương pháp mã hóa này không được dùng nữa. 'hex'Phương thức này được sử dụng để mã hóa từng byte thành hai ký tự thập lục phân

Tạo bộ đệm trong nút

Có một số cách để tạo bộ đệm mới

Bộ đệm mới (n)

Bộ đệm mới(n) được sử dụng để tạo bộ đệm mới gồm 'n' octet, trong đó 'n' là một số

Tranh luận

TênMô tảTypenKích thước của bộ đệm. con số

Trong ví dụ sau 'bộ đệm' chứa 10 octet

Bộ đệm NodeJS

Bộ đệm mới (mảng)

bộ đệm mới(mảng) được sử dụng để tạo bộ đệm mới, sử dụng một mảng octet

Tranh luận

NameDescriptionTypearrMột mảng đã cho. mảng

Trong ví dụ sau roll_no chứa nội dung của một mảng. Xem đầu ra

Bộ đệm NodeJS

Bộ đệm mới (str, [mã hóa])

new Buffer(str, [encoding]) được sử dụng để tạo một bộ đệm mới, chứa một chuỗi đã cho

Tranh luận

TênMô tảYêu cầu/Tùy chọnKiểu bắt đầuVị trí bắt đầu vào bộ đệm. Mặc định là 0. Tùy chọnnumberendEnd vị trí vào bộ đệm. Mặc định cho bộ đệm. chiều dài. số tùy chọn

Nhị phân chỉ đơn giản là một tập hợp hoặc một tập hợp của

const buf2 = Buffer.from('Hello World!');
6 và
const buf2 = Buffer.from('Hello World!');
7. Mỗi số trong hệ nhị phân, mỗi số 1 và 0 trong tập hợp được gọi là một bit. Máy tính chuyển đổi dữ liệu sang định dạng nhị phân này để lưu trữ và thực hiện các thao tác. Ví dụ, sau đây là năm nhị phân khác nhau

const buf2 = Buffer.from('Hello World!');
0

JavaScript không có dữ liệu loại byte trong API cốt lõi của nó. Để xử lý dữ liệu nhị phân Node. js bao gồm triển khai bộ đệm nhị phân với mô-đun toàn cầu có tên là

const buf2 = Buffer.from('Hello World!');
1

Tạo bộ đệm

Có nhiều cách khác nhau để bạn có thể tạo bộ đệm trong Node. js. Bạn có thể tạo một bộ đệm trống với kích thước 10 byte

const buf1 = Buffer.alloc(10);

Từ các chuỗi được mã hóa UTF-8, việc tạo ra như thế này

const buf2 = Buffer.from('Hello World!');

Có các mã hóa được chấp nhận khác nhau khi tạo Bộ đệm

  • ascii
  • utf-8
  • cơ sở64
  • latin1
  • nhị phân
  • lục giác

Có ba chức năng riêng biệt được phân bổ trong API bộ đệm để sử dụng và tạo bộ đệm mới. Trong các ví dụ trên, chúng ta đã thấy

const buf2 = Buffer.from('Hello World!');
2 và
const buf2 = Buffer.from('Hello World!');
3. Cái thứ ba là
const buf2 = Buffer.from('Hello World!');
4

const buf3 = Buffer.allocUnsafe(10);

Khi trả về, hàm này có thể chứa dữ liệu cũ cần ghi đè

Tương tác với bộ đệm

Có các tương tác khác nhau có thể được thực hiện với API bộ đệm. Chúng tôi sẽ bao gồm hầu hết trong số họ ở đây. Hãy để chúng tôi bắt đầu với việc chuyển đổi bộ đệm thành JSON

________số 8

JSON chỉ định rằng loại đối tượng được chuyển đổi là Bộ đệm và dữ liệu của nó. Chuyển đổi bộ đệm trống thành JSON sẽ cho chúng ta thấy rằng nó không chứa gì ngoài số không

const emptyBuf = Buffer.alloc(10);

emptyBuf.toJSON();

// Output: { "type": "Buffer", "data": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }

Xin lưu ý rằng, API bộ đệm cũng cung cấp hàm trực tiếp

const buf2 = Buffer.from('Hello World!');
5 để chuyển đổi bộ đệm thành đối tượng JSON. Để kiểm tra kích thước của bộ đệm, chúng ta có thể sử dụng phương pháp
const buf2 = Buffer.from('Hello World!');
6

const buf2 = Buffer.from('Hello World!');
2

Bây giờ hãy để chúng tôi chuyển đổi bộ đệm thành một chuỗi có thể đọc được, trong trường hợp của chúng tôi, mã hóa utf-8

const buf2 = Buffer.from('Hello World!');
3

const buf2 = Buffer.from('Hello World!');
7 theo mặc định chuyển đổi bộ đệm thành chuỗi định dạng utf-8. Đây là cách bạn giải mã một bộ đệm. Nếu bạn chỉ định mã hóa, bạn có thể chuyển đổi bộ đệm sang mã hóa khác

const buf2 = Buffer.from('Hello World!');
5

Thông tin thêm về bộ đệm

  • Cần hiểu rõ hơn về bộ đệm trong Node. js?

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


Nếu bài viết này hữu ích, hãy tweet nó

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Bộ đệm trong Nodejs là gì?

Bộ đệm là gì? . js được được thiết kế để xử lý dữ liệu nhị phân thô . Mỗi bộ đệm tương ứng với một số bộ nhớ thô được phân bổ bên ngoài V8. Bộ đệm hoạt động giống như mảng số nguyên, nhưng không thể thay đổi kích thước và có rất nhiều phương thức dành riêng cho dữ liệu nhị phân.

Bộ đệm và luồng trong Nodejs là gì?

Bộ đệm là bộ nhớ tạm thời mà một luồng sử dụng để giữ một số dữ liệu cho đến khi sử dụng hết . Trong một luồng, kích thước bộ đệm được quyết định bởi thuộc tính highWatermark trên cá thể luồng, đây là một số biểu thị kích thước của bộ đệm theo byte. Bộ nhớ đệm trong Nút theo mặc định hoạt động trên Chuỗi và Bộ đệm.

Tại sao bộ đệm không được dùng nữa?

Bộ đệm() không được dùng nữa do các vấn đề về bảo mật và khả năng sử dụng .

Đối tượng đệm là gì?

Đối tượng bộ đệm là Đối tượng OpenGL lưu trữ một mảng bộ nhớ chưa định dạng được cấp phát bởi ngữ cảnh OpenGL (còn gọi là GPU) . Chúng có thể được sử dụng để lưu trữ dữ liệu đỉnh, dữ liệu pixel được lấy từ hình ảnh hoặc bộ đệm khung và nhiều thứ khác.