首頁  >  文章  >  web前端  >  為什麼node.js要引入buffer?淺析緩衝區buffer

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

青灯夜游
青灯夜游轉載
2021-08-04 10:05:141994瀏覽

這篇文章帶大家了解一下node.js中的緩衝區buffer,介紹為什麼node.js中要引入buffer、node伺服器在什麼場景需要緩衝等等。

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

為什麼node.js中要引入buffer

buffer的英文釋義

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

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個位置
原文地址:https://juejin.cn/post/6991495867219836936

作者:LE

更多程式相關知識,請造訪:

程式設計入門! !

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

陳述:
本文轉載於:掘金--LE。如有侵權,請聯絡admin@php.cn刪除