buffer缓冲区和node搜索包
1.node搜索包的流程
我们通过npm下载的包,直接通过包名引入即可。
node在使用模块名字来引入模块时,它会首先在当前目录的node_modules中寻找是否含有该模块,如果有则直接使用,如果没有则去上一级目录node_modules中寻找,如果有则使用,如果没有则再去上一级目录寻找,直到找到为止,直到找到磁盘的根目录,如果依然没有,则报错
2.Buffer缓冲区
Buffer的结构和数组很像,操作的方法和数组类似
传统的数组中无法保存二进制文件(视频和mp3),而Buffer就是用来存储二进制数据的数组。
在Buffer中存储的都是二进制数据,但是在显示时都是以16进制的形式显示。
Buffer中每一个元素的范围是从00-ff
使用buffer不需要引入模块,直接使用即可。
Buffer中的一个元素,占用内存一个字节。
一个汉字占用3个字节
创建一个指定大小的buffer
但是通过查阅node.js文档发现,buffer构造函数不推荐使用。尽量少用,避免后续出现一系列问题。
var buf2 = new Buffer(10) //10个字节的buffer
创建一个10个字节的buffer
var buf2=Buffer.alloc(10)
如何赋值呢?
通过索引,来操作buf中的元素
添加进去数字之后都会将添加的10进制的数字转换为16进制。
buf2[0]=88 //给元素buf2的第一位添加了一个数字88
Buffer的大小一旦确定,则不能修改,Buffer实际上是对我们底层内部的直接操作
只要数字在控制台或页面中输出一定是10进制
Buffer.allocUnsafe(size) 创建一个指定大小的buffer,但是buffer中可能含有敏感数据(分配空间的时候没有清理之前的数据)
回顾Buffer的相关用法
Buffer.from(str) 将一个字符串转换为buffer
Buffer.alloc(size) 创建一个指定大小的Buffer
Buffer.allocUnsafe(size) 创建一个指定大小的Buffer,但是可能包含敏感数据
buf.toString() 将缓冲区中的数据转换为字符串