Node緩衝區

瞭解Node緩衝區是什麼,它們用於什麼,以及如何使用它們。 緩衝區是什麼? 緩衝區是一塊內存區域。與C、C++或Go等使用系統編程語言的開發人員(或任何與內存交互的程序員)相比,JavaScript開發人員對這個概念不太熟悉,因為js開發人員並不需要直接與內存交互。 它代表著在V8 JavaScript引擎之外分配的固定大小的內存塊(無法調整大小)。 您可以將緩衝區視為一個整數數組,其中每個整數表示一個字節的數據。 它是由Node的Buffer類實現的。 為什麼我們需要緩衝區? 引入緩衝區是為了幫助開發人員處理二進制數據,在傳統上,js只處理字符串而不是二進制數據。 緩衝區與流(streams)緊密相關。當流處理器接收到的數據速度比它處理的速度快時,它將數據放入緩衝區。 對於緩衝區的一個簡單的可視化是當您觀看YouTube視頻時,紅色條超出了您的視覺點:您正在比您查看數據更快地下載數據,並且您的瀏覽器將其緩衝。 如何創建一個緩衝區 使用Buffer.from(),Buffer.alloc()和Buffer.allocUnsafe()方法來創建緩衝區。 const buf = Buffer.from('Hey!') Buffer.from(array) Buffer.from(arrayBuffer[, byteOffset[, length]]) Buffer.from(buffer) Buffer.from(string[, encoding]) 您還可以通過傳遞大小來初始化緩衝區。這將創建一個1KB大小的緩衝區。 const buf = Buffer.alloc(1024) //或者 const buf = Buffer.allocUnsafe(1024) 使用緩衝區 訪問緩衝區的內容 緩衝區作為字節數組,可以像訪問數組一樣訪問。 const buf = Buffer.from('Hey!') console.log(buf[0]) //72 console.log(buf[1]) //101 console.log(buf[2]) //121 這些數字是緩衝區位置中標識字符的Unicode編碼(H => 72,e => 101,y => 121)。 您可以使用toString()方法打印緩衝區的全部內容。 console.log(buf.toString()) 请注意,如果您使用設置大小的數字初始化緩衝區,您將獲得預初始化內存的訪問權限,其中包含隨機數據,而不是一個空的緩衝區。 獲取緩衝區的長度 使用length屬性。 const buf = Buffer.from('Hey!') console.log(buf.length) 遍歷緩衝區的內容 const buf = Buffer.from('Hey!') for (const item of buf) { console....