国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

面試官:說說對 Node 中的 Buffer 的理解?應用場景?

網絡 網絡管理
在Node應用中,需要處理網絡協議、操作數據庫、處理圖片、接收上傳文件等,在網絡流和文件的操作中,要處理大量二進制數據,而Buffer就是在內存中開辟一片區域(初次初始化為8KB),用來存放二進制數據。

[[404099]]

本文轉載自微信公眾號「JS每日一題」,作者灰灰。轉載本文請聯系JS每日一題公眾號。

 一、是什么

在Node應用中,需要處理網絡協議、操作數據庫、處理圖片、接收上傳文件等,在網絡流和文件的操作中,要處理大量二進制數據,而Buffer就是在內存中開辟一片區域(初次初始化為8KB),用來存放二進制數據

在上述操作中都會存在數據流動,每個數據流動的過程中,都會有一個最小或最大數據量

如果數據到達的速度比進程消耗的速度快,那么少數早到達的數據會處于等待區等候被處理。反之,如果數據到達的速度比進程消耗的數據慢,那么早先到達的數據需要等待一定量的數據到達之后才能被處理

這里的等待區就指的緩沖區(Buffer),它是計算機中的一個小物理單位,通常位于計算機的 RAM 中

簡單來講,Nodejs不能控制數據傳輸的速度和到達時間,只能決定何時發送數據,如果還沒到發送時間,則將數據放在Buffer中,即在RAM中,直至將它們發送完畢

上面講到了Buffer是用來存儲二進制數據,其的形式可以理解成一個數組,數組中的每一項,都可以保存8位二進制:00000000,也就是一個字節

例如:

  1. const buffer = Buffer.from("why"

其存儲過程如下圖所示:

二、使用方法

Buffer 類在全局作用域中,無須require導入

創建Buffer的方法有很多種,我們講講下面的兩種常見的形式:

  • Buffer.from()
  • Buffer.alloc()

Buffer.from()

  1. const b1 = Buffer.from('10'); 
  2. const b2 = Buffer.from('10''utf8'); 
  3. const b3 = Buffer.from([10]); 
  4. const b4 = Buffer.from(b3); 
  5.  
  6. console.log(b1, b2, b3, b4); // <Buffer 31 30> <Buffer 31 30> <Buffer 0a> <Buffer 0a> 

Buffer.alloc()

  1. const bAlloc1 = Buffer.alloc(10); // 創建一個大小為 10 個字節的緩沖區 
  2. const bAlloc2 = Buffer.alloc(10, 1); // 建一個長度為 10 的 Buffer,其中全部填充了值為 `1` 的字節 
  3. console.log(bAlloc1); // <Buffer 00 00 00 00 00 00 00 00 00 00> 
  4. console.log(bAlloc2); // <Buffer 01 01 01 01 01 01 01 01 01 01> 

在上面創建buffer后,則能夠toString的形式進行交互,默認情況下采取utf8字符編碼形式,如下

  1. const buffer = Buffer.from("你好"); 
  2. console.log(buffer); 
  3. // <Buffer e4 bd a0 e5 a5 bd> 
  4. const str = buffer.toString(); 
  5. console.log(str); 
  6. // 你好 

如果編碼與解碼不是相同的格式則會出現亂碼的情況,如下:

  1. const buffer = Buffer.from("你好","utf-8 "); 
  2. console.log(buffer); 
  3. // <Buffer e4 bd a0 e5 a5 bd> 
  4. const str = buffer.toString("ascii"); 
  5. console.log(str);  
  6. // d= e%= 

當設定的范圍導致字符串被截斷的時候,也會存在亂碼情況,如下:

  1. const buf = Buffer.from('Node.js 技術棧''UTF-8'); 
  2.  
  3. console.log(buf)          // <Buffer 4e 6f 64 65 2e 6a 73 20 e6 8a 80 e6 9c af e6 a0 88> 
  4. console.log(buf.length)   // 17 
  5.  
  6. console.log(buf.toString('UTF-8', 0, 9))  // Node.js � 
  7. console.log(buf.toString('UTF-8', 0, 11)) // Node.js 技 

所支持的字符集有如下:

  • ascii:僅支持 7 位 ASCII 數據,如果設置去掉高位的話,這種編碼是非??斓?/li>
  • utf8:多字節編碼的 Unicode 字符,許多網頁和其他文檔格式都使用 UTF-8
  • utf16le:2 或 4 個字節,小字節序編碼的 Unicode 字符,支持代理對(U+10000至 U+10FFFF)
  • ucs2,utf16le 的別名
  • base64:Base64 編碼
  • latin:一種把 Buffer 編碼成一字節編碼的字符串的方式
  • binary:latin1 的別名,
  • hex:將每個字節編碼為兩個十六進制字符

三、應用場景

Buffer的應用場景常常與流的概念聯系在一起,例如有如下:

  • I/O操作
  • 加密解密
  • zlib.js

I/O操作

通過流的形式,將一個文件的內容讀取到另外一個文件

  1. const fs = require('fs'); 
  2.  
  3. const inputStream = fs.createReadStream('input.txt'); // 創建可讀流 
  4. const outputStream = fs.createWriteStream('output.txt'); // 創建可寫流 
  5.  
  6. inputStream.pipe(outputStream); // 管道讀寫 

加解密

在一些加解密算法中會遇到使用 Buffer,例如 crypto.createCipheriv 的第二個參數 key 為 string 或 Buffer 類型

zlib.js

zlib.js 為 Node.js 的核心庫之一,其利用了緩沖區(Buffer)的功能來操作二進制數據流,提供了壓縮或解壓功能

參考文獻

http://nodejs.cn/api/buffer.html

https://segmentfault.com/a/1190000019894714

 

責任編輯:武曉燕 來源: JS每日一題
相關推薦

2021-06-08 08:33:23

NodeStream數據

2021-05-31 10:35:34

TCPWebSocket協議

2021-07-07 08:36:45

React應用場景

2021-07-12 08:35:24

組件應用場景

2021-09-16 07:52:18

算法應用場景

2021-06-10 07:51:07

Node.js循環機制

2021-06-03 08:14:01

NodeProcessJavaScript

2021-09-06 10:51:27

TypeScriptJavaScript

2021-06-30 07:19:36

React事件機制

2021-06-01 08:25:06

Node.jsJavaScript運行

2021-11-09 08:51:13

模式命令面試

2021-11-05 07:47:56

代理模式對象

2021-11-04 06:58:32

策略模式面試

2021-11-03 14:10:28

工廠模式場景

2021-11-10 07:47:49

組合模式場景

2021-08-16 08:33:26

git

2021-06-04 07:55:30

Node Fs 操作

2021-09-08 07:49:34

TypeScript 泛型場景

2021-09-28 07:12:09

測試路徑

2021-11-11 16:37:05

模板模式方法
點贊
收藏

51CTO技術棧公眾號

欧美这里只有精品| 精品国产精品三级精品av网址| 韩国免费在线视频| 97视频在线观看视频免费视频| 国产sm精品调教视频网站| 天堂av中文在线| 成人av蜜桃| 日韩欧美成人网| 久久要要av| 三上悠亚在线免费观看| 欧美亚洲第一区| 国产精品白丝在线| 欧美日韩看看2015永久免费| 久久久久国产一区| 午夜精品一区二区三区在线 | 欧美一级色片| 999在线免费视频| xx视频.9999.com| zzijzzij亚洲日本少妇熟睡| 欧美日韩五码| xxxx18hd亚洲hd捆绑| 亚洲视频免费一区| 国产精品一区二区在线观看不卡 | 黄色网一区二区| 一级黄色香蕉视频| 久久久免费电影| 久久九九久精品国产免费直播| 日韩黄色碟片| 成人在线免费在线观看| 久久久国产影院| 久久久久久久久久久黄色| 中文字幕一区二区三区中文字幕| 老司机午夜av| 久久久久久久999精品视频| 久久男人中文字幕资源站| 亚洲三级av| 亚洲美女主播视频免费观看| 国产这里只有精品| 欧洲一区二区三区在线| 亚洲永久免费| 青青青免费在线视频| 日韩av新片网| 久久久久久久一| 成人免费在线视频| 欧美色网址大全| 欧美美女色图| 久久精品国产第一区二区三区最新章节| 91精品国产色综合久久久蜜香臀| 美腿丝袜在线亚洲一区| 亚洲国产综合在线观看| av黄色免费在线| 成人欧美一区二区三区视频xxx| 欧美丰满美乳xxx高潮www| 狠狠色丁香婷综合久久| 欧一区二区三区| 在线成年人视频| 神马影院一区二区| 最近更新的2019中文字幕| 中文字幕巨乱亚洲| 亚洲欧美综合| 国产精品蜜臀| 少妇性l交大片| 亚洲a级在线播放观看| 精品嫩草影院久久| 久久日韩粉嫩一区二区三区| 国产欧美日韩精品一区二区三区| 欧美另类极品| 丰满爆乳一区二区三区| 国产日韩欧美91| 精品国产伦一区二区三区观看体验 | 免费精品一区| 在线中文视频| 正在播放一区二区三区| 久久久日本电影| 欧美性生活久久| 粉嫩av一区二区三区在线播放 | 国家队第一季免费高清在线观看| 视频在线精品一区| 欧美床上激情在线观看| 欧美性猛交xxxx乱大交| 国产真实乱对白精彩久久| 亚洲精品无吗| 欧美xxxx少妇| 成年人免费看的视频| 日韩视频专区| 欧美自拍视频在线观看| 欧美精品自拍偷拍| 欧美国产一区二区| 亚洲欧美清纯在线制服| 911亚洲精品| 丝袜中文在线| 福利在线免费| 超碰成人在线免费观看| 国产精品久久久精品| 亚洲裸体xxxx| 欧美日韩精品在线观看| 成人小视频在线| 国产精品v亚洲精品v日韩精品 | 亚洲一级黄色| 亚洲精品在线a| 色图在线观看| 三上悠亚在线观看二区| 国产日韩亚洲欧美在线| av成人午夜| 欧美精品久久久久久久久久| 7777女厕盗摄久久久| 中文字幕一区二区在线观看| 麻豆精品一区二区av白丝在线| 精品香蕉视频| 欧洲美女精品免费观看视频| 精品国产99久久久久久| 1069男同网址| 成年人午夜免费视频| 欧美二区三区| 国产玖玖精品视频| 欧美成人免费播放| 亚洲精品videossex少妇| 欧美日韩一二三四五区| 中文字幕乱码亚洲精品一区| 久久99九九99精品| 午夜精品av| 国产日韩欧美一区二区三区| 成人午夜毛片| 欧美videossex| 高h视频在线| 五月天最新网址| 午夜dv内射一区二区| 99视频精品全部免费看| 美女一区视频| 成人黄色免费片| 97久久精品视频| 国产小视频91| 亚洲国产精品久久91精品| 欧美日本一区二区| 色综合色综合色综合色综合色综合| 国产精品卡一卡二| 91农村精品一区二区在线| 国产精品456露脸| 麻豆成人久久精品二区三区小说| 亚洲国产高清一区| 亚洲综合激情在线| 精品国产一区二区三区噜噜噜| av成人app永久免费| 国产福利一区二区三区在线播放| 人妖欧美1区| 国产秀色在线www免费观看| 国产裸舞福利在线视频合集| 真不卡电影网| videoxxxx另类日本极品| www.91av| 成年人羞羞的网站| 成年人黄色电影| 91av影院| 国产美女免费观看| 四虎永久在线高清国产精品| 日本久久久久久久久久久久| 日本三区在线观看| 成人性生生活性生交12| 亚洲自偷自拍熟女另类| 久久精品免费一区二区| 亚洲中文字幕无码中文字| 国产淫片免费看| 久久精品免费网站| 99999精品视频| 男人亚洲天堂网| 男人女人黄一级| 色偷偷亚洲第一综合| av激情网站| 在线播放的av| 免费在线国产| 国产一级片在线| 一区二区三区视频在线观看视频| 1pondo在线播放免费| 麻豆tv入口在线看| 在线午夜影院| caoporn视频在线观看| 亚洲性色av| 日韩电影精品| 国产一区二区三区视频在线| 一区二区三区视频播放| 日韩欧美天堂| 91亚洲自偷观看高清| 欧美日韩一区二区国产| 校园激情久久| 国产真实精品久久二三区| 91丨九色porny丨蝌蚪| 国产精品你懂的| 亚洲成人自拍一区| 欧美日韩成人综合天天影院| 亚洲国产天堂久久综合网| 中文字幕亚洲欧美一区二区三区| 欧美伦理91i| 国产精品福利在线观看| 国产66精品久久久久999小说| 日韩欧美在线电影| 波多野结衣家庭教师在线播放| 欧美18—20岁hd第一次| 男生女生差差差的视频在线观看| 高潮毛片在线观看| 欧美天堂在线|