1.node.js
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建高性能的网络应用程序。它采用事件驱动、非阻塞 I/O 模型,使得它非常适合构建数据密集型的实时应用程序。
Node.js 具有以下特点和优势:
-
事件驱动: Node.js 使用事件驱动的架构,通过回调函数处理异步操作,使得可以高效地处理大量并发请求。
-
非阻塞 I/O: Node.js 使用非阻塞 I/O 模型,允许处理多个并发请求而无需创建多个线程,从而降低了系统资源消耗。
-
跨平台: Node.js 可以在多个操作系统上运行,包括 Windows、Mac 和 Linux。
-
NPM 包管理器: Node.js 附带了 NPM(Node Package Manager),这是一个丰富的包管理工具,允许开发者轻松地安装、更新和管理依赖包。
-
前后端统一语言: Node.js 使用 JavaScript 作为开发语言,使得前端和后端可以使用同一种语言进行开发,简化了全栈开发人员的学习成本。
Node.js 可以用于构建各种类型的应用程序,包括 Web 服务器、API 服务、实时通信应用、命令行工具等。它具有强大的生态系统和活跃的社区支持,提供了丰富的模块和工具来简化开发过程。
2.环境配置
根据自身电脑配置下载与配置node.js(具体可以到node官网进行查询自己需要的版本以及下载)。
验证环境是否搭建成功(命令行)
3.终端运行
2.1命令行常用操作
切盘 C: D:
切换工作目录 cd
查看目录文件 dir
2.2运行
在对应的文件路径下 node xxx.js
2.3 vscode 运行
集成终端中 node xxx.js
4.Buffer(缓冲器)
Buffer 是用于处理二进制数据的类。它提供了对二进制数据的操作和处理,包括创建、读取、写入、转换等功能。Buffer 类在 Node.js 中是全局对象,因此无需使用 require() 来引入。
以下是一些常见的 Buffer 操作:
-
创建 Buffer 对象:
- 通过指定长度创建 Buffer 对象:
const buf = Buffer.alloc(10);
- 通过字符串创建 Buffer 对象:
const buf = Buffer.from('hello', 'utf8');
- 通过指定长度创建 Buffer 对象:
-
读取和写入:
- 读取指定位置的字节:
buf[index]
- 写入指定位置的字节:
buf[index] = value
- 读取指定位置的字节:
-
转换为字符串:
- 将 Buffer 对象转换为字符串:
buf.toString()
- 指定编码方式进行转换:
buf.toString('utf8')
- 将 Buffer 对象转换为字符串:
-
拷贝和裁剪:
- 拷贝部分数据到新的 Buffer 对象:
buf.slice(start, end)
- 裁剪多余的空间:
buf.slice(0, buf.length)
- 拷贝部分数据到新的 Buffer 对象:
-
其他操作:
- 获取 Buffer 的长度:
buf.length
- 比较两个 Buffer 对象:
Buffer.compare(buf1, buf2)
- 获取 Buffer 的长度:
Buffer 类在 Node.js 中被广泛应用于处理文件、网络通信、加密解密等场景中。需要注意的是,在使用 Buffer 时要小心处理内存溢出和安全性问题。
4.1创建Buffer对象
// alloc(10)
// 创建buffer对象长度为10字节 相当于申请了10字节的内存空间 每一个字节值为0
const buf = Buffer.alloc(10);//<Buffer 00 00 00 00 00 00 00 00 00 00>
// allocUnsafe(10)
// 可能会存在旧数据,影响执行结果,因此unsafe
const buf2=Buffer.allocUnsafe(10)//<Buffer 00 00 00 00 00 00 00 00 00 00>
// from()
// 字符创建一个utf-8占三个字节
// 每一个字母都会转换为这个字符在 Unicode 码表当中对应的那个数字,然后这个数字会转成二进制,然后存到 buffer 当中,
const buf3=Buffer.from('yeye','utf8');//<Buffer 79 65 79 65>
// from数组创建Buffer
const buf4=Buffer.from([105,108,111,118,101,121,111,117]);//<Buffer 69 6c 0b 76 65 79 6f 75>
4.2.转换为字符串
// 对象转换为字符串
console.log(buf4.toString());//iloveyou
// 指定编码方式进行转换
console.log(buf4.toString('utf8'));//iloveyou
4.3.读取与写入
// 读取
console.log(buf4[1]);//108
// 修改
buf4[1]=96
console.log(buf4[1]);//96
4.4.数字的进制转换
console.log(buf4[1].toString(2));//1100000 7位前面第一位0输出时进行舍弃
4.5拷贝与剪切
// 拷贝 Buffer 对象
const father = Buffer.from('Hello, World!');
const son = father.slice(7, 12); // 从位置 7 到 12(不包括)的子 Buffer
console.log(son.toString()); // World
// 裁剪 Buffer 对象
const bestSon=father.slice(7)// 从位置 7 开始到结尾的子 Buffer
console.log(bestSon.toString());// World!
4.6获取 Buffer 的长度
console.log(buf4.length);//8
4.7 比较两个 Buffer 对象
bufA 在排序中应排在 bufB 之前,则返回一个负数。
bufA 和 bufB 相等,则返回 0。
bufA 在排序中应排在 bufB 之后,则返回一个正数。
const bufA = Buffer.from('abc');
const bufB = Buffer.from('abcd');
const result = Buffer.compare(bufA, bufB);
console.log(result); // 输出:-1
5.总结(Buffer常用实际场景)
-
文件操作:在读取和写入文件时,经常需要处理文件的二进制数据,例如图片、音频、视频等。Buffer 类可以用于读取和操作文件的二进制数据。
-
网络通信:在进行网络通信时,需要处理请求和响应的二进制数据,例如处理 HTTP 请求和响应的内容。Buffer 类可以用于解析和处理网络通信中的二进制数据。
-
加密解密:在进行加密解密操作时,需要处理原始数据的二进制形式。Buffer 类可以用于存储加密解密操作的输入输出数据。
-
数据传输:在进行数据传输时,需要处理数据的二进制形式,例如通过流来传输大量数据。Buffer 类可以用于存储和操作传输中的二进制数据。
-
缓冲区管理:在一些底层系统编程中,需要手动管理内存缓冲区以存储和处理数据。Buffer 类可以提供对内存缓冲区的灵活控制。
-
处理二进制数据Node.js 中的 Buffer 类适用于各种需要处理二进制数据的场景,包括文件操作、网络通信、加密解密、数据传输等。它提供了对二进制数据的高效处理和操作能力,并且在 Node.js 的底层实现中被广泛使用。