Hướng dẫn buffer javascript

Hướng dẫn buffer javascript
Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.

Hướng dẫn buffer javascript
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới.
Hướng dẫn buffer javascript
Facebook

1- NodeJS Buffer

Khi làm việc trên một môi trường Internet, nơi mà các dữ liệu được truyền tải thông qua TCP, ứng dụng của bạn thường xuyên phải làm việc với các luồng nhị phân (Binary Stream). NodeJS cung cấp cho bạn lớp Buffer (Bộ đệm), nó giúp bạn có thể làm việc với từng byte của dữ liệu.

Buffer là một lớp thuộc module buffer, tuy nhiên vì tính quan trọng và thông dụng, bạn không cần phải nhập khẩu nó, mà vẫn có thể sử dụng lớp này ở bất kỳ nơi nào trong project của bạn.

Lớp Buffer có một vài constructor, nhưng tất cả các contructor này đã bị lỗi thời (Không được chấp nhận) (Deprecated).

Constructor
Buffer(size)
Buffer(byteArray)
Buffer(buffer)
Buffer(byteArray[, byteOffset[, length]])
Buffer(string[, encoding])

Thay vào đó bạn có thể tạo ra các đối tượng Buffer thông qua các phương thức tĩnh (Phương thức lớp)

Class Method
Buffer.alloc(size[, fill[, encoding]])
Buffer.allocUnsafe(size)
Buffer.allocUnsafeSlow(size)
Buffer.byteLength(string[, encoding])
Buffer.concat(list[, totalLength])
Buffer.from(array)
Buffer.from(arrayBuffer[, byteOffset[, length]])
Buffer.from(buffer)
Buffer.from(string[, encoding])
Buffer.from(object[, offsetOrEncoding[, length]])

Buffer.alloc(size[, fill[, encoding]]) --> Buffer

Phương thức trả về một đối tượng Buffer.

  • size Độ dài mong muốn của Buffer.
  • fill | | Giá trị khởi tạo cho Buffer.
  • encoding Mã hóa (encoding) cho Buffer này, mặc định: 'utf8'.

buffer-alloc-example.js



// Create a Buffer with length of array is 5
const buf1 = Buffer.alloc(5);

// ===> 
console.log(buf1);

// @fill: A string
const buf2 = Buffer.alloc(5, 'abc');

// ==> ['a', 'b', 'c', 'a', 'b']
// ===> 
console.log(buf2);

// ==> abcab
console.log(buf2.toString());

// Encoding: base64
const buf3 = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');

// ==> 
console.log(buf3);

// ==> hello world
console.log(buf3.toString());

 

Buffer.allocUnsafe(size) ==> Buffer

  • size Độ dài mong muốn của Buffer.

Buffer.allocUnsafe(size) là phương thức để tạo ra một đối tượng Buffer với kích thước mảng được chỉ định 'size'. Các phần tử của mảng này có giá trị tùy thuộc vào địa chỉ của nó trên bộ nhớ. Phương thức Buffer.alloc(size) cũng tạo ra một đối tượng Buffer, nhưng tất cả các phần tử của mảng có giá trị 0.

buffer-allocUnsafe-example.js


// Create a Buffer
var buf = Buffer.allocUnsafe(15);

// Result Like:
// 
console.log(buf); 
buf.fill('abcd'); 

// 
console.log(buf);

// ==> abcdabcdabcdabc
console.log(buf.toString());

buf.fill(0);

// 
console.log(buf);

Buffer.allocUnsafeSlow(size)  ==> Buffer

Các đối tượng được tạo ra trên bộ nhớ, và sau khi nó không còn được sử dụng nữa nó sẽ bị loại bỏ bởi "Garbage Collector" (Một chương trinh gom rác). Và các đối tượng Buffer cũng vậy, chúng được tạo ra quá trình ứng dụng của bạn hoạt động.

Để chương trình chạy nhanh hơn, và hạn chế phải sử dụng "Garbage Collector", NodeJS sử dụng một bể chứa (Pool) để chứa các đối tượng Buffer không còn được sử dụng. Khi ứng dụng cần tới một đối tượng Buffer, nó sẽ lấy ra một đối tượng này ra từ trong bể chứa (Pool).

Hướng dẫn buffer javascript

Phương thức Buffer.allocUnsafe() trả về một Buffer từ trong Pool, nó chỉ tạo mới một Buffer khi trong Pool không còn Buffer nào để lấy ra. Trong trường hợp bạn muốn có một Buffer để sử dụng lâu dài, và không được quản lý trong Pool thì hãy sử dụng phương thức Buffer.allocUnsafeSlow(size). Chẳng hạn bạn dùng phương thức này để tạo ra một Buffer mẫu (dữ liệu mẫu), dùng để copy cho các Buffer khác.

Buffer.from(arrayBuffer[, byteOffset[, length]])

  • arrayBuffer |
  • byteOffset Giá trị mặc định của tham số này là 0.
  • length Giá trị mặc định của tham số này là: arrayBuffer.length - byteOffset.

Hướng dẫn buffer javascript

Hướng dẫn buffer javascript

buffer-from-example.js


const arr = new Uint16Array(2);

arr[0] = 5000;
arr[1] = 4000;

// Shares memory with `arr`
const buf = Buffer.from(arr.buffer);

// ==> 
console.log(buf);

// Changing the original Uint16Array changes the Buffer also
arr[1] = 6000;

// ==> 
console.log(buf);

 

2- TODO (Chem gio tiep)