node提供了專門讀寫檔案的模組,檔案內容都是2進製存放在記憶體中的
node讀取檔案的結果都是16進製制,那麼你要學會進製轉換,二進位制0b開頭 ,八進位制0開頭,十六進製制0x
基礎知識:
1位元組=8bit
乙個漢字=3位元組,在不同的編碼下位元組個數還有不同的
乙個英文=1位元組
buffer裡面用16機制表示
buffer.alloc(3) //3是代表位元組
建立乙個有3個位元組的記憶體空間
預設是0x00 0x00 0x00 0x00
let buf1 = buffer.alloc(12)let buf2 = buffer.from('hello')
let buf3 = buffer.from('world')
buf2.copy(buf1, 0, 0, 5)
buf3.copy(buf1, 5, 0, 5)
console.log(buf1.tostring())
//helloworld
簡單的實現一下copy的方法
buffer.prototype.copy = function(target, targetstart, sourcestart, sourceend)
}
上面是通過copy方法把兩個記憶體拷貝到一起,還有concat方法也可以
let cat = buffer.concat([buf2, buf3])
兩個buffer拼接到一起,返回的乙個新的buffer,第二次引數是指定長度
基本原理是這樣的
buffer.concat = function (lists, len = lists.reduce((prev, next) => prev + next.length, 0))return buf.slice(0, offset) //
返回有效的內容
}
buffet中的indexof可以知道當前存在的位置
let index = buffer.from('a*b').indexof('*')console.log(index)
當時很遺憾buffer沒有split來拆分成兩段buffer,辣麼就自己寫
buffer.prototype.split = function(step)
arr.push(
this
.slice(pos));
return
arr;
}
解決node裡面的中文亂碼
const server http.createserver req,res 個訪問的 res.end server.listen 2080,error 我是想用node建乙個本地的伺服器,然後統計訪問的個數,但是卻出現了中文亂碼 榪欐槸絎 0涓 闂 殑 後來查詢資料,原來加乙個頭部 就行 設定 r...
js 和 node 裡面的事件迴圈
前言 之前有接觸過 js 事件迴圈,感覺比較容易理解。後面學習 深入淺出node.js 的時候,發現裡面提到的事件迴圈有點繞比較難理解,後面查了一些資料和部落格後,發現 node 環境下的事件迴圈和我之前接觸的事件迴圈是有一定的區別的。廢話不多說,先上圖 js 的事件迴圈,把非同步任務分為兩種 巨集...
Node核心模組Buffer
buffer是node掛載到global上的乙個類。也就是記憶體,乙個漢字在utf8編碼下是三個位元組。buffer的變現形式是16進製制。let buf buffer.alloc 6 console.log buf 複製 let buf buffer.from 123131 let buf buf...