Hướng dẫn what is a buffer in javascript? - đệm trong javascript là gì?
JavaScript thuần túy, trong khi tuyệt vời với các chuỗi được mã hóa unicode, không xử lý dữ liệu nhị phân thẳng. Điều này là tốt trên trình duyệt, trong đó hầu hết dữ liệu ở dạng chuỗi. Tuy nhiên, các máy chủ Node.js cũng phải xử lý các luồng TCP và đọc và ghi vào hệ thống tập tin, cả hai đều cần thiết phải xử lý các luồng dữ liệu nhị phân thuần túy. Một cách để xử lý vấn đề này là chỉ sử dụng các chuỗi, đó chính xác là những gì Node.js đã làm lúc đầu. Tuy nhiên, cách tiếp cận này là vô cùng có vấn đề để làm việc; Nó chậm, làm cho bạn làm việc với một API được thiết kế cho các chuỗi chứ không phải dữ liệu nhị phân, và có xu hướng phá vỡ theo những cách kỳ lạ và bí ẩn. Đừng sử dụng chuỗi nhị phân. Sử dụng bộ đệm thay thế! Lớp Trong tự nhiên, các bộ đệm thường được nhìn thấy trong bối cảnh dữ liệu nhị phân đến từ các luồng, chẳng hạn như 6.Có một vài cách để tạo bộ đệm mới:
Bộ đệm này được khởi tạo và chứa 8 byte bằng không.
Điều này khởi tạo bộ đệm đến nội dung của mảng này. Hãy nhớ rằng nội dung của mảng là các số nguyên đại diện cho byte.
Điều này khởi tạo bộ đệm thành mã hóa nhị phân của chuỗi thứ nhất theo quy định của đối số thứ hai (trong trường hợp này là 7). 7 cho đến nay là mã hóa phổ biến nhất được sử dụng với Node.js, nhưng 3 cũng hỗ trợ những người khác. Xem mã hóa được hỗ trợ để biết thêm chi tiết.Cho rằng đã có một bộ đệm được tạo:
Chúng ta có thể bắt đầu viết chuỗi cho nó:
Đối số đầu tiên cho 0 là chuỗi để ghi vào bộ đệm và đối số thứ hai là mã hóa chuỗi. Nó xảy ra mặc định với UTF-8 vì vậy đối số này là không liên quan. 0 đã trả lại 5. Điều này có nghĩa là chúng tôi đã viết cho năm byte của bộ đệm. Thực tế là chuỗi "Xin chào" cũng dài 5 ký tự là trùng hợp, vì mỗi nhân vật chỉ là 8 bit. Điều này rất hữu ích nếu bạn muốn hoàn thành tin nhắn:
Khi 0 có 3 đối số, đối số thứ hai cho biết độ lệch hoặc chỉ mục của bộ đệm để bắt đầu viết tại.Có lẽ cách phổ biến nhất để đọc bộ đệm là sử dụng phương thức 3, vì nhiều bộ đệm chứa văn bản:
Một lần nữa, đối số đầu tiên là mã hóa. Trong trường hợp này, có thể thấy rằng không phải toàn bộ bộ đệm đã được sử dụng! May mắn thay, bởi vì chúng tôi biết có bao nhiêu byte chúng tôi đã viết cho bộ đệm, chúng tôi chỉ có thể thêm nhiều đối số hơn để "xâu chuỗi" lát cắt thực sự thú vị:
Bạn cũng có thể đặt các byte cá nhân bằng cách sử dụng cú pháp giống như mảng:
Trong ví dụ này, tôi đặt các byte còn lại, bằng tay, sao cho chúng đại diện cho UTF-8 được mã hóa "!" và các ký tự "1". Phương pháp này kiểm tra xem 4 có phải là bộ đệm hay không, tương tự như 5.Với chức năng này, bạn có thể kiểm tra số byte cần thiết để mã hóa một chuỗi với mã hóa đã cho (mặc định là UTF-8). Độ dài này không giống như độ dài chuỗi, vì nhiều ký tự yêu cầu nhiều byte hơn để mã hóa. Ví dụ:
Người tuyết Unicode chỉ là một nhân vật, nhưng mất toàn bộ 3 byte để mã hóa! Đây là độ dài của bộ đệm của bạn và biểu thị số lượng bộ nhớ được phân bổ. Nó không giống với kích thước của nội dung của bộ đệm, vì bộ đệm có thể được lấp đầy một nửa. Ví dụ: 0Trong ví dụ này, các nội dung được ghi vào bộ đệm chỉ bao gồm ba nhóm (vì chúng đại diện cho người tuyết đơn đặc trưng), nhưng chiều dài của bộ đệm vẫn là 16, vì nó đã được khởi tạo. 6 cho phép một người sao chép nội dung của một bộ đệm sang một bộ đệm khác. Đối số đầu tiên là bộ đệm đích để sao chép nội dung của 7 và phần còn lại của các đối số cho phép chỉ sao chép một phần phụ của bộ đệm nguồn đến một nơi nào đó ở giữa bộ đệm đích. Ví dụ: 1Trong ví dụ này, tôi đã sao chép bộ đệm "Snowman", chứa một ký tự dài 3 byte, vào bộ đệm "Frosty", mà tôi đã viết cho 16 byte đầu tiên. Bởi vì ký tự người tuyết dài 3 byte, kết quả chiếm 19 byte của bộ đệm. API của phương thức này thường giống như 8, nhưng với một sự khác biệt rất quan trọng: lát cắt không phải là bộ đệm mới và chỉ tham chiếu một tập hợp con của không gian bộ nhớ. Sửa đổi lát cắt cũng sẽ sửa đổi bộ đệm ban đầu! Ví dụ:not a new buffer and merely references a subset of the memory space. Modifying the slice will also modify the original buffer! For example: 2Bây giờ Frosty đã bị biến thành một vũng gạch dưới.Người lập dị. Kiểu dữ liệu bộ đệm là gì?Trong khoa học máy tính, bộ đệm dữ liệu (hoặc chỉ bộ đệm) là một khu vực của bộ nhớ được sử dụng để lưu trữ dữ liệu tạm thời trong khi nó được chuyển từ nơi này sang nơi khác.a region of a memory used to temporarily store data while it is being moved from one place to another.
Là một bộ đệm là một mảng?Đối tượng ArrayBuffer được sử dụng để biểu diễn bộ đệm dữ liệu nhị phân thô có độ dài chung, có độ dài cố định.Nó là một mảng các byte, thường được gọi bằng các ngôn ngữ khác là "mảng byte".It is an array of bytes, often referred to in other languages as a "byte array".
TypeScript bộ đệm là gì?Một bộ đệm tương tự như một loạt các số nguyên nhưng tương ứng với phân bổ bộ nhớ thô bên ngoài đống V8.Một bộ đệm không thể được thay đổi kích thước.Mã hóa chuỗi hợp lệ: 'ASCII' | 'UTF8' | 'UTF16LE' | 'UCS2' (bí danh của 'UTF16LE') |similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized. Valid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
Đối tượng bộ đệm là gì?Các đối tượng bộ đệm là các đối tượng OpenGL lưu trữ một mảng bộ nhớ không được định dạng được phân bổ bởi bối 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ộ tạo khung và nhiều thứ khác.OpenGL Objects that store an array of unformatted memory allocated by the OpenGL context (AKA the GPU). These can be used to store vertex data, pixel data retrieved from images or the framebuffer, and a variety of other things. |