為什麼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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Node.js Buffer(緩衝區)Node.js
- 8、Node.js Buffer(緩衝區)Node.js
- node.js中緩衝區–BufferNode.js
- Node.js 中的緩衝區(Buffer)究竟是什麼?Node.js
- log buffer(日誌緩衝區)
- Java NIO 之 Buffer(緩衝區)Java
- Java-NIO之Buffer(緩衝區)Java
- Buffer Cache Size(資料緩衝區)
- MySQL中讀頁緩衝區buffer poolMySql
- Java NIO -- 緩衝區(Buffer)的資料存取Java
- Nio再學習之NIO的buffer緩衝區
- Buffer Cache(緩衝區快取)篇:keep pool(保留池)快取
- Ask Hoegh(5)——buffer cache和buffer有什麼區別?
- node事件迴圈 EventEmitter 非同步I/O Buffer緩衝區 模組事件MIT非同步
- 調整緩衝區快取記憶體(Buffer Cache)的效能(轉)快取記憶體
- 調整緩衝區快取記憶體(Buffer Cache)的效能(1)快取記憶體
- 調整緩衝區快取記憶體(Buffer Cache)的效能(2)快取記憶體
- 調整緩衝區快取記憶體(Buffer Cache)的效能(3)快取記憶體
- Cache 和 Buffer 有什麼區別?
- 你真的會用PostGIS中的buffer緩衝嗎?
- 聊聊 MySQL 網路緩衝區、net_buffer_length、max_allowed_packet 那些事MySql
- 物件有多少個資料塊緩衝在Data buffer中物件
- Node.js之BufferNode.js
- mySQL5.6新特性快速預熱Buffer_Pool緩衝池MySql
- Node.js中的BufferNode.js
- Node.js Buffer解讀Node.js
- Java IO學習筆記一:為什麼帶Buffer的比不帶Buffer的快Java筆記
- OpenGL Android課程七:介紹Vertex Buffer Objects(頂點緩衝區物件,簡稱:VBOs)AndroidObject物件
- 淺談HiZ-buffer
- log_buffer和 Redo Buffers有什麼區別啊
- 關於 Node.js 之 BufferNode.js
- SQL SERVER Buffer Pool緩衝池裡面修改過的頁總數大小SQLServer
- MySQL怎麼緩解讀的壓力的?---buffer poolMySql
- Cache和Buffer都是快取,有什麼區別?Linux快取Linux
- Angular 為什麼要引入 injection token 的概念Angular
- 緩衝區分析
- 徹底理解Node.js中的BufferNode.js
- buffer與cache的區別