為什麼node.js要引入buffer?淺析緩衝區buffer

post200發表於2021-09-11
本篇文章帶大家瞭解一下中的緩衝區buffer,介紹一下為什麼node.js中要引入buffer、node伺服器在什麼場景需要緩衝等等。

為什麼node.js要引入buffer?淺析緩衝區buffer

為什麼node.js中要引入buffer

buffer的英文釋義

buffer在英文中是緩衝,快取的意思,從這個意思中可以初步獲悉引入buffer是為了在node伺服器上面做緩衝的。【推薦學習:《》】

node伺服器在什麼場景需要緩衝

既然node是用於伺服器,那就需要應對網路請求(net,http),操作檔案系統(fs,readline),處理圖片,檔案的上傳與下載等場景。node選中了js,同時需要V8引擎來執行js,強大的V8引擎難道不能勝任了嗎?

V8的限制

為什麼V8會有限制呢?V8的誕生是用於chrome瀏覽器的,瀏覽器用於呈現網頁;對於網頁的展示,V8設計時在64位作業系統下使用記憶體約為1.4G,32作業系統下約為0.7G記憶體,這樣的記憶體大小對於網頁的展示是足夠的,但是對於伺服器端的使用就會捉襟見肘。

node底層C++來分配記憶體

既然V8限制了記憶體的使用,node底層使用C++來分配記憶體,確實可以獲取到更大的記憶體,但是老子曰:道可道,非常道,名可名,非常名;同理分配的記憶體有大小,就會有被佔滿,阻塞,繼而服務緩慢,甚至崩潰。

緩衝區buffer怎麼處理上述場景的問題

火星移民

想象這個場景,需要將地球(C盤)上10億生物(英文字元,漢字,阿拉伯文字等)轉移到火星(D盤),我們在地球和火星之間建立了可容納1千萬生物的空間站(記憶體);如果10億生物同時進入空間站,將是一場災難(崩潰);地球的航天飛船(緩衝區buffer)有1000個位置(位元組)來運載生物到空間站;然後去火星的航天飛船(快取區buffer)有1000個位置(位元組),再運載生物到火星。

概念提取

  • Buffer: 用於表示固定長度的位元組序列,好比:固定1000個位置的飛船
  • UTF-8:是一種變長的編碼方式。它可以使用1~4個位元組表示一個符號,根據不同的符號而變化位元組長度。好比:飛船會規定英文生物佔用1個位置,漢字生物佔用2個或者3個,4個位置

原文地址:

作者:LE

更多程式設計相關知識,請訪問:!!

以上就是為什麼node.js要引入buffer?淺析緩衝區buffer的詳細內容,更多請關注php中文網其它相關文章!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2249/viewspace-2827609/,如需轉載,請註明出處,否則將追究法律責任。

相關文章