- buffer, 缓存区域
- stream, 缓存方式
- 生产者消费者问题/有缓冲问题, 共享固定大小缓冲区的两个进程运行中产生的问题
- 生产者, 生成数量的数据放入缓冲区(重复此过程)
- 消费者, 缓冲区消耗这些数据
什么是流?
流, 数据处理方法, 用于按顺序将输入读写到输出中。
一种处理读/写文件、网络通信或任何端到端信息交换的有效方式。
优点:
- 内存高效
- 时间效率
背景: 比如使用fs.readFile 读/写静态文件时, 由于文件较大, 对内存消耗过大。
fs.readFile
// 改写
fs.createReadStream
创建一个可读流,逐次读取文件内容供给下游消费,这种逐步读取和消费的方式,有效减缓了内存的消耗
流类型
可读流
可写流
双工流
转换流
输入和输出是存在相互关联的,中间做了一次转换处理
应用: Gzip 压缩、解压
模式
流模式
将自动从底层系统读取数据,并通过 EventEmitter
接口使用事件将其尽快提供给程序。
事件
- data
- end
- error
暂停模式
必须显式调用 stream.read()
方法以从流中读取数据块
事件
- readable
- end
http://nodejs.cn/api/stream.html
https://www.barretlee.com/blog/2017/06/06/dive-to-nodejs-at-stream-module/
mei上 https://tech.meituan.com/2016/07/08/stream-basics.html
下 https://tech.meituan.com/2016/07/15/stream-internals.html