别拿 Node.js 当脚本写,先把流搞透
很多写 Node.js 的人,调几个接口、连个数据库就以为精通后端了。真碰到大文件上传、日志实时处理、管道压缩加密,代码立马内存溢出或者卡死。这门课解决的就是这个核心痛点:教你用流的方式处理数据,而不是把几十兆甚至几个G的数据全塞进内存里拼字符串。它适合已经掌握 Node.js 基础语法、能写简单接口,但对底层运行机制一知半解的开发者。如果你连事件循环和回调都没搞明白,建议先补基础;如果你正为内存暴涨、数据处理吞吐量低发愁,这课就是来填坑的。别假装自己什么都会,流这块要是只会调 createReadStream,面试和实战都得露馅。
先啃原理,再碰分类与场景
资料里的内容不要跳着看,建议先从概述部分看流在文件系统、网络、压缩解压和加密解密中的实例。这几个实例不是让你背 API,而是建立“数据分块流动”的直觉。看完实例,直接扎进 Readable stream 原理那块,这是整门课的地基。重点死磕数据的旅程、缓冲区机制、两种流动模式(流动模式与暂停模式)以及两种数据模式的切换。很多人写流出 Bug,就是因为不知道消费者不主动读取时,数据到底堵在哪里。把调用者和实现者的职责分清楚,你才能明白什么时候该用 pipe,什么时候该自己监听 data 事件。Writable 和 Transform 的原理可以紧随其后看,结合压缩加密的实例去理解数据如何流转和被加工。
配套练习怎么做,学完能干什么
看视频时手别闲着。资料里的压缩解压、加密解密实例,必须自己敲一遍。练习时,先实现一个基础需求,比如读取大日志文件写入新文件;然后加难度,边读边通过管道过一遍 gzip 压缩,再过一层加密,最后落盘。重点观察内存占用曲线,体会流的背压机制。学完这套内容,你应当能独立设计并实现高吞吐量的数据处理管道。具体来说,面对 GB 级文件上传,你能用流分片接收、边接收边转存;面对实时日志分析,你能把 Readable 流对接到处理逻辑再写入数据库,全程不撑爆内存。看完后,试着回答几个问题:流的背压是怎么产生的,怎么解决?Readable 的两种流动模式在什么业务场景下该切换?自己实现一个自定义 Transform 流需要重写哪个方法?这些问题答得上来,这门课才算补到了点子上。
课程目录
1-1 [概述] 课程介绍 (05:27) 1-2 [概述] 什么是 stream 流 (04:15) 1-3 [概述] 流在文件系统中的实例 (08:15) 1-4 [概述] 流在网络中的实例 (04:13) 1-5 [概述] 流在压缩解压中的实例 (08:02) 1-6 [概述] 流在加密解密中的实例 (10:01) 1-7 [概述] 流的分类 (02:44) 2-1 [Readable stream 原理] 数据的旅程 (08:57) 2-2 [Readable stream 原理] 缓冲区 (01:06) 2-3 [Readable stream 原理] 两种流动模式 (03:06) 2-4 [Readable stream 原理] 两种数据模式 (01:36) 2-5 [Readable stream 原理] 调用者和实现者 (03:15) 3-1 [Readable stream 实现] 实现原理 (03:23) 3-2 [Readable stream 实现] 快速实现 (02:07) 3-3 [Readable stream 实现] 实现类的 ES6 写法 (03:00) 3-4 [Readable stream 实现] 实现类的 ES5 写法 (03:30) 3-5 [Readable stream 实现] 推数据 push 方法详解 (24:08) 3-6 [Readable stream 实现] 错误抛出与捕获 (07:20) 4-1 [Readable stream 调用] 获取数据两种方式 (18:50) 4-2 [Readable stream 调用] 暂停和恢复 (19:38) 4-3 [Readable stream 调用] 管道方法 (07:49) 4-4 [Readable stream 调用] 事件 (01:30) 4-5 [Readable stream 调用] 逆流 (27:00) 5-1 [Writable stream] 原理 (02:30) 5-2 [Writable stream] 实现 (09:28) 5-3 [Writable stream] 一次性处理缓冲数据与强制缓冲 (14:23) 5-4 [Writable stream] 写入者 API (10:22) 6-1 [Duplex stream] 双工流实战讲解 (11:16) 6-2 [Duplex stream] 转换流实战讲解 (08:24)





