Nodejs stream模块-翻译】的更多相关文章

花了两天时间尝试按照自己的话翻译了一下stream模块,以下内容皆翻译于:https://nodejs.org/api/stream.html. 目录 1  Stream(流)     1.1     这篇文档的组织方式     1.2    stream的种类 1.2.1   对象模式 1.2.2  Buffering     1.3    API for Stream Consumers 1.3.1  Writable Streams 1.3.1.1 Class: stream.Writab…
一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流是可读,可写或兼具两者的. 最早接触Stream是从早期的unix开始的, 数十年的实践证明Stream 思想可以很简单的开发出一些庞大的系统. 在unix里,Stream是通过 "|" 实现的.在node中,作为内置的stream模块,很多核心模块和三方模块都使用到. 和unix一样,node stream主要的操作也是.pipe(),使用者可以使…
本文摘录自<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 模块概览 nodejs的核心模块,基本上都是stream的的实例,比如process.stdout.http.clientRequest. 对于大部分的nodejs开发者来说,平常并不会直接用到stream模块,只需要了解stream的运行机制即可(非常重要). 而对于想要实现自定义stream实例的开发者来说,就得好好研究stream的扩展API了,比如gulp的内部实…
对于大部分有后端经验的的同学来说 Stream 对象是个再合理而常见的对象,但对于前端同学 Stream 并不是那么理所当然,github 上甚至有一篇 9000 多 Star 的文章介绍到底什么是 Stream -- stream-handbook.为了更好的理解 Stream,在这篇文章的基础上简单总结概括一下. 什么是 Stream 在 Unix 系统中流就是一个很常见也很重要的概念,从术语上讲流是对输入输出设备的抽象. ls | grep *.js 类似这样的代码我们在写脚本的时候经常可…
由表及里 HTTP服务器用于响应来自客户端的请求,当客户端请求数逐渐增大时服务端的处理机制有多种,如tomcat的多线程.nginx的事件循环等.而对于node而言,由于其也采用事件循环和异步I/O机制,因此在高I/O并发的场景下性能非常好,但是由于单个node程序仅仅利用单核cpu,因此为了更好利用系统资源就需要fork多个node进程执行HTTP服务器逻辑,所以node内建模块提供了child_process和cluster模块.利用child_process模块,我们可以执行shell命令…
nodejs stream 手册 https://github.com/jabez128/stream-handbook 在node中,流可以帮助我们将事情的重点分为几份,因为使用流可以帮助我们将实现接口的部分分割成一些连续的接口,这些接口都是可重用的.接着,你可以将一个流的输出口接到另一个流的输入口,然后使用使用一些库来对流实现高级别的控制.(metamask中就是这样,使用了很多流,希望这几天的学习能够让我真正搞懂metamask几个部分之间到底是怎么相互工作的) 为什么应该使用流 在nod…
nodejs 事件模块 events 只有一个对象 EventEmitter . var EventEmitter = require('events').EventEmitter;var life = new EventEmitter();                           //生成 EventEmitter 对象的实例 life . //on 也可以用 addEventListenerlife.on('EventName',function(name){          …
根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境". 所有需要的安装文件, 我都下载好放到百度云盘了: nodejs-gyp-windows Python 安装 python-2.7.7.msi iso 虚拟磁盘 安装 DTLite4491-0356.exe Windows XP 文件在: node-gyp-windows/windowsXP 用 DTLite 打开 VS2010Express1.iso , 然后安装…
#4 NodeJS http 模块 工作目录 server.js var http = require('http'); var fs = require('fs'); var path = require('path'); var mime = require('mime'); function send404(response){      response.writeHead(404,{           'Content-Type':'text/plain'      });     …
前言:工欲善其事,必先利其器.模块系统是nodejs组织管理代码的利器也是调用第三方代码的途径,本文将详细讲解nodejs的模块系统.在文章最后实例分析一下exprots和module.exprots. nodejs的模块 什么是模块? node.js通过实现CommonJS的Modules/1.0标准引入了模块(module)概念,模块是Node.js的基本组成部分.一个node.js文件就是一个模块,也就是说文件和模块是一一对应的关系.这个文件可以是JavaScript代码,JSON或者编译…
一直以来,Nginx 并不支持tcp协议,所以后台的一些基于TCP的业务就只能通过其他高可用负载软件来完成了,比如Haproxy. 这算是一个nginx比较明显的缺憾.不过,在1.90发布后这个认知将得到改写: 2015-04-28 nginx-1.9.0 mainline version has been released, with the stream module for generic TCP proxying and load balancing. nginx-1.9.0 已发布,该…
什么是可写流 可写流是对数据流向设备的抽象,用来消费上游流过来的数据,通过可写流程序可以把数据写入设备,常见的是本地磁盘文件或者 TCP.HTTP 等网络响应. 看一个之前用过的例子 process.stdin.pipe(process.stdout); *process.stdout* 是一个可写流,程序把可读流 process.stdin 传过来的数据写入的标准输出设备.在了解了可读流的基础上理解可写流非常简单,流就是有方向的数据,其中可读流是数据源,可写流是目的地,中间的管道环节是双向流.…
大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,为了使用多核cpu来提高性能 就有了cluster,让node可以利用多核CPU实现并行. 随着nodejs的发展,让nodejs上生产环境,就必须是支持多进程多核处理!在V0.6.0版本,Nodejs内置了cluster的特性.自此,Nodejs终于可以作为一个独立的应用开发解决方案,映入大家眼帘了. 这个包不用安装,node默认自带. 引入cluster const cluster…
NodeJS Web模块 本文介绍nodeJS的http模块的基本用法,实现简单服务器和客户端 经典Web架构 Client:客户端一般指浏览器,通过HTTP协议向服务器发送请求(request) Server:服务器,接受客户端请求,并向服务器发送响应数据(response),主流的有Apache.Nginx.IIS Business:业务逻辑层,核心应用逻辑所在,与数据库.文件系统.外部程序交互 Data:数据层,主要由数据库组成 Node服务器 server.js var http = r…
NodeJS Stream流 流数据在网络通信中至关重要,nodeJS用Stream提供了一个抽象接口,node中有很多对象实现了这个接口,提供统一的操作体验 基本流类型 NodeJS中,Stream有四种类型: Readable-可读操作 Writable-可写操作 Duplex-可读写操作 Transform - 操作被写入数据,然后读出结果 所有的嗯Stream对象都是EventEmitter对象的实例,常用事件有: data-当有数据可读时触发 end-没有更多的数据可读时触发 erro…
通过我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载均衡一般用LVS或Haproxy来做.至于4层负载均衡和7层负载均衡的区别,可以参考:http://www.cnblogs.com/kevingrace/p/6137881.html.然而Nginx从1.9.0版本开始,新增加了一个stream模块,用来实现四层协议的转发.代理或者负载均衡等,鉴于Nginx在7层负载均衡和web serv…
1.操作背景 操作系统版本:CentOS Linux release (Core) nginx版本:1.13.4 nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡.默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream,使其支持stream代理. 2.nginx编译添加stream模块 2.1.查看原nginx编译参数 [root@test-server sbin]# nginx -V nginx ver…
配置 Windows 下的 nodejs C++ 模块编译环境 根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境". 所有需要的安装文件, 我都下载好放到百度云盘了: nodejs-gyp-windows Python 安装 python-2.7.7.msi iso 虚拟磁盘 安装 DTLite4491-0356.exe Windows XP 文件在: node-gyp-windows/windowsXP 用 DTL…
nodejs cheerio模块提取html页面内容 1. nodejs cheerio模块提取html页面内容 1.1. 找到目标元素 1.2. 美化文本输出 1.3. 提取答案文本 1.4. 最终代码 本文给出使用一个用cheerio模块提取html文件中指定内容的例子,并说明具体步骤.涉及到的API.以及其它模块. cheerio模块是一个类似jquery的模块,具有相似的API.功能,能够将一个网页解析为DOM,以及通过selector选择元素,设置.获取元素属性. 以下为我们待解析网页…
我们知道es6 的模块导入导出是通过import 和 export 来实现,而nodejs的模块导入导出是通过require 和module.exports 来实现,那么它们有什么异同吗? 请看如下: 1.es6的模块导出: 2.nodejs 的模块导出  3.es6 模块的导入 4.nodejs 的模块导入 小结: (一)你会发现一个是es6和node的导出最好都用具名的导出(不要export default的导出方式). (二)导入的方式es6和node也有异曲同工之妙,都可以导出整个模块,…
nginx7层调度方式 使用upstream模块定义集群名称和节点地址 定义在server字段之外httpd字段之内 upstream staticweb { server 172.17.0.2; #也可以指定weight=2 指定权(默认为轮询算法rr) server 172.17.0.3; } server { listen 8088; server_name www.stephenzhong.com; proxy_set_header X-Real-IP $remote_addr; loc…
一:先到官网下载nginx-1.17.5.tar.gz包并且解压到当前目录,解压后目录为:nginx-1.17.5: 二:下载njs源码(它没有像stream模块一样附带在了nginx源码里),因此首先需要下载mercurial(nginx不是在git仓库而是mercurial仓库),sudo apt install mercurial: 三:在下载目录(也可以是其他目录)里执行hg clone http://hg.nginx.org/njs(类似git clone ...):然后下载目录会多个…
cluster&forever cluster & forever 虽然 nodejs 原生已经提供了 cluster 模块,大部分情况下可以满足我们的基本需求,但这两个模块 cluster 和 forever 都提供了更强大的功能. cluster 及 forever 都能让你的 nodejs 应用的管理更加方便,比如启动.重启.停止你的应用. 他们也都可以保证应用的稳定性,如果你的 nodejs 程序存在错误而使进程关闭了,cluster 或 forever 都能自动重启他们,以保证…
net模块是同样是nodejs的核心模块.在http模块概览里提到,http.Server继承了net.Server,此外,http客户端与http服务端的通信均依赖于socket(net.Socket).也就是说,做node服务端编程,net基本是绕不开的一个模块. 从组成来看,net模块主要包含两部分,了解socket编程的同学应该比较熟悉了: net.Server:TCP server,内部通过socket来实现与客户端的通信. net.Socket:tcp/本地 socket的node版…
buffer模块的详细使用教程 浅析nodejs的buffer类 深入浅出NodeJS--Buffer Node Buffer/Stream 内存策略分析…
当年是看了朴灵的九浅一深 NodeJS 入门的 Node, 朴大大的书讲实践很少更多的篇幅用在了讲原理上,道理听了那么多,后来开始在前端工程领域使用 NodeJS 却处处掣肘,总结原因发现 NodeJS 中难的部分无非是文件和网络,文件操作和网络都依赖了一个很重要的对象-- Stream,这恰恰是朴大大书中没有提及的. Buffer 朴大大在书中是有提到过的,但因为流实际上就是在处理 Buffer,所以还是要简单总结一下. 什么是 Buffer 如同官方 API 中介绍的那样,在 ES6 引入…
什么是可读流 可读流是生产数据用来供程序消费的流.我们常见的数据生产方式有读取磁盘文件.读取网络请求内容等,看一下前面介绍什么是流用的例子: const rs = fs.createReadStream(filePath); rs 就是一个可读流,其生产数据的方式是读取磁盘的文件,我们常见的控制台 process.stdin 也是一个可读流: process.stdin.pipe(process.stdout); 通过简单的一句话可以把控制台的输入打印出来,process.stdin 生产数据的…
双工流就是同时实现了 Readable 和 Writable 的流,即可以作为上游生产数据,又可以作为下游消费数据,这样可以处于数据流动管道的中间部分,即 rs.pipe(rws1).pipe(rws2).pipe(rws3).pipe(ws); 在 NodeJS 中双工流常用的有两种 Duplex Transform Duplex 实现 Duplex 和 Readable.Writable 实现方法类似,实现 Duplex 流非常简单,但 Duplex 同时实现了 Readable 和 Wri…
推荐的入门教程: <七天学会NodeJS>  https://github.com/nqdeng/7-days-nodejs <Node.js 包教不包会> https://github.com/alsotang/node-lessons 常用内置模块: fs 提供对文件的操作.http://nodejs.org/api/fs.html    http://nodejs.org/api/stream.html path 简化路径相关操作,并提升代码可读性.http://nodejs…
net模块的组成部分 详见 http://nodejs.cn/api/net.html 下面整理出了整个net模块的知识结构,和各个事件.方法.属性的用法 net.Server类 net.Socket类 事件 方法 属性 工厂方法 练习代码 netServer var net=require("net"); /** * 创建server */ function t1(){ var server=net.createServer(function(socket){ //socket.en…