# fed-e-task-05-01 **Repository Path**: frontend_site/fed-e-task-05-01 ## Basic Information - **Project Name**: fed-e-task-05-01 - **Description**: Node.js 高级编程(核心模块、模块加载机制) - **Primary Language**: Unknown - **License**: ISC - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-03 - **Last Updated**: 2021-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 1.简述 Node.js 的特点以及适用的场景。 ##### 1.Node.js的特点 1. 是一个JavaScript运行环境; 2. 依赖Chrome V8引擎进行代码解释; 3. 单进程、单线程的; 4. 基于事件驱动的非阻塞I/O; 5. 轻量、可伸缩、适用于实时数据交互应用; ##### 2.适用场景 NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景;不适合CPU密集型应用、内存消耗巨大的应用; 1. RESTful API 2. 大量Ajax请求的应用 #### 2.简述 Buffer 的使用.包括多种创建方式。实例方法,静态方法。 + 用来创建一个专门存放二进制数据的缓存区,Buffer 为Node带来了一种存储原始数据的方法,可以让Node.js处理二进制数据; ```javascript // 创建 Buffer 类 Buffer.from Buffer.alloc // 实例方法 buf.toJSON() buf.toString() buf.slice([start[, end]]) buf.equals(otherBuffer) buf.concat(list[, totalLength])) ``` #### 3.写出5个以上文件操作的API,并且用文字说明其功能。 ```javascript fs.stat(path, callback) // 获取文件信息 fs.writeFile(file, data[, options], callback) // 写入文件操作 fs.createReadStream(path) // 创建文件读取流 fs.createWriteStream(path) // 创建文件写入流 fs.watch(filename[, options][, listener]) // 创建文件监听对象 fs.readFile(filename[, options], callback) // 异步读取文件内容 fs.writeFile(filename, data[, options], callback) // 异步写入文件内容 ``` #### 4.简述使用流操作的优势,以及Node中流的分类。 + 流操作可以减少逻辑处理工程中对内存占用,通过流操作以做到控制流出和流入的速度,即避免将数据全读到内存中,在把数据写到磁盘内,会大量占用内存; Node.js 中有四种基本的流类型: 1. Writable - 可写入数据的流(例如 fs.createWriteStream()); 2. Readable - 可读取数据的流(例如 fs.createReadStream()); 3. Duplex - 可读又可写的流(例如 net.Socket); 4. Transform - 在读写过程中可以修改或转换数据的 Duplex 流(例如 zlib.createDeflate()); #### 5.在数据封装与解封装过程中,针对应用层、传输层、网络层、数据链路层、物理层5层分别做了什么事情? 在数据封装与解封装过程中,在TCP/IP五层协议中分别包含以下主要信息,即在不同的层架添加上网络传输过程中,寻找目标主机的必要信息,在找到目标主机后在层层解封装,获取到原始数据(应用层数据); 1. 应用层 : 原始数据(应用层数据); 2. 传输层:目标端口 + 源端口 + 原始数据; 3. 网络层:目标IP + 源IP + 目标端口 + 源端口 + 原始数据; 4. 数据链路层:目标Mac + 源Mac + 目标IP + 源IP + 目标端口 + 源端口 + 原始数据; 5. 物理层:转换成二进制数据表示的高低电压;