今天要记录的是Stream,当我在研读这个部分时,发现我的参考书介绍的比较简略一点,但实际查资料也发现Stream在Nodjs占了举足轻重的位置。所以今天会把研读的重点做个整理。
在第DAY12:HTTP前情提要中,介绍Buffer处有短暂提到Stream。
Stream是Nodejs中的流式数据,而Stream模块给予基本的API,而在前几篇的实作中也都有Stream的影子在,
像是文件的读取:
//HTTP请求文件(内容为转换的状态)
var http=require("http");
var fs=require("fs");
var server=http.createServer((req,res)=>
{
fs.readFile("./Heartbeat.txt",(err,data)=>
{
res.end(data);
});
});
server.listen(3000);
每接到一次请求,会把butterfly.txt
读进记忆体,再取出给客户端。
前提是,因为butterfly.txt
内容"小",若有一份内容"大"的要读取,
依照前面所述的步骤,会消耗不少服务器的记忆体,使用者等待的时间就会变长。
Stream总共有四个基础类型以及常见的例子:
fs.creatReadStream()
)fs.creatWriteStream()
)net.Socket
)zlib.creatDflate()
)Stream都是Event(EventEmmitter)的实例。
其实也可以说Stream是Event与Buffer的混合版
。
还有一个很重要的东西!就是pipe方法!
pipe()
pipe就像是一个管道,把流与流之间都串连起来,发挥到最大的效用!
pipe会串连数据生产者与数据消耗者,可以多个数据串接。通常对於复制数据很方便!!
总结:
明天会继续做Stream相关的例子,今天的部分,若有理解错误,再请指教!!
另外,附上我在理解Stream时,查阅到的一些网站,觉得很有帮助贴出来与大家分享,
他们比我的更专业解说得更清楚!非常感谢这些专业人士与网站。
Readable
、Writable
、pipe()
的介绍!也非常容易理解!
<<: [Day15] Storybook - Publish Storybook (Static web application & Chromatic)
看完这篇文章你会得到的成果图 因为 PyQt5 要学的东西太多, 我们先来学打包 python 好了...
使用Auttaja 点击Dashboard 选择Assignable & Giveable ...
这回写到的霍夫曼编码是在Algorithms Illuminated Part 3: Greedy ...
另一个常见资料库分类是从「资料处理*」的应用角度来区分: 交易型Transaction: OLTP:...
09-13-2021 前言: 当我们需要的资料越多越繁杂时,我们所需要的是一个可以快速把按照我们所...