stream数据流
首先必须先要了解Buffer,Buffer是js和c++的结合体,类数组,通常与Stream一起用:
1.
(1).Buffer是个类,因此可以构建成对象
(2).buf具有数组的性质
字符串转换成二进制:
(1)通常用Buffer来构建二进制
new Buffer(string,[encodding]) 默认是utf-8 //中文一个字是3个字节
buf对象之间的encodding相互转换
buf.write(string,[encodding])
(2)buf转为字符串
buf.toString([encodding])
buf += chunk //这是一种默认的转换,会将二进制转为字符串,默认是utf-8
因为buf在转换成string时,中文是3个字节,如果不是宽字节编码时,就会截断一部分buf,造成乱码
(3)buffer的拼接(buffer的应用中一般是一段一段的传输的),一般用在两种情况下
(1) var rs = fs.createReadStream()
rs的data事件,是一段一段读的
rs.on('data',function(chunk){})
(2)网络请求中,res.on('data',function(chunk){})
拼接中用:
var rs = fs.createReadStream('./test.txt');
var chunks = [];
rs.on('data', function (chunk) {
chunks.push(chunk);
});
rs.on('end', function () {
var buf = Buffer.concat(chunks);
var str = buf.toString()
});
(4)对文件读取时以及网络请求的优化
(1)网络中优化
node可以将静态的文件转换成二进制的内容,将二进制的内容返回,可将性能大幅度提高.
同时将二进制采用zlib进行压缩
(2)文件读取的优化
fs.readFile与fs.createReadStream的区别:
fs.readFile是一次将读取的内容存到内存中
fs.createReadStream是从磁盘中读一点,放到内存中,先在内存中准备一段Buffer,然后调用fs.read()读取时逐步复制到Buffer中.因此调用fs.read()则调用一次磁盘读取.
fs.createReadStream(path,opts) 其中:highWaterMark设置为64*1024这样可保证速度
(5)采用压缩,判断压缩类型:
stream数据流的更多相关文章
- 浅谈stream数据流
汴水流,泗水流,流到瓜州古渡头, 吴山点点愁. 我们知道水是源源不断的, 抽刀断水水更流, 斩不断, 理还乱, 是水流.(技术贴, 本文权当读者没学过古诗). 在一些语言里, 我们的前辈把数据 ...
- [LeetCode] 295. Find Median from Data Stream ☆☆☆☆☆(数据流中获取中位数)
295. Find Median from Data Stream&数据流中的中位数 295. Find Median from Data Stream https://leetcode.co ...
- JDK8 Stream 数据流效率分析
JDK8 Stream 数据流效率分析 Stream 是Java SE 8类库中新增的关键抽象,它被定义于 java.util.stream (这个包里有若干流类型: Stream<T> ...
- [LeetCode] Kth Largest Element in a Stream 数据流中的第K大的元素
Design a class to find the kth largest element in a stream. Note that it is the kth largest element ...
- java8中Stream数据流
筛选重复的元素 Stream 接口支持 distinct 的方法, 它会返回一个元素(根据流所生成元素的 hashCode和equals方法实现)的流. 例如,以下代码会筛选出列表中所有的偶数,并确保 ...
- [leetcode]295. Find Median from Data Stream数据流的中位数
Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...
- 295 Find Median from Data Stream 数据流的中位数
中位数是排序后列表的中间值.如果列表的大小是偶数,则没有中间值,此时中位数是中间两个数的平均值.示例:[2,3,4] , 中位数是 3[2,3], 中位数是 (2 + 3) / 2 = 2.5设计一个 ...
- Leetcode703.Kth Largest Element in a Stream数据流中的第K大元素
设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中 ...
- Leetcode 703. 数据流中的第K大元素
1.题目要求 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器, ...
随机推荐
- 终端下vim无法输入问题解决
最近回归vim时发现会偶尔出现vim无法输入,但光标在动的情况,一度怀疑是spf13的问题,后来经搜索,才发现是因为vim下,快捷键 Ctrl+s 的功能是停止输入,在IDE下编程时间长了,都有潜意识 ...
- 如何在 SSAS服务器之间做同步
简介: 从SQL Server 2005开始,分析服务就支持了同步的功能.本文将介绍如何在SQL Server 2012下同步Adventureworks的分析服务数据库.通过同步的功能,我们就来可以 ...
- eventbus实时更新
1.发送方 EventBus.getDefault().post(new FriendApprovalEvent()); 2.接收方 /** * 收到好友消息 * * @param event */ ...
- psql-08表:触发器
语句级触发器与行为触发器 //创建一个对student表的操作记录表 create table log( update_time timestamp, //操作时间 db_user varchar(4 ...
- 【原】iOS学习之应用程序的启动原理
最近看视频了解了一下应用程序的启动原理,这里就做一个博客和大家分享一下,相互讨论,如果有什么补充或不同的意见可以提出来! 1.程序入口 众所周知,一个应用程序的入口一般是一个 main 函数,iOS也 ...
- ACM:UESTC - 649 括号配对问题 - stack
UESTC - 649 括号配对问题 Time Limit: 1000MS Memory Limit: 65535KB 64bit IO Format: %lld & %llu ...
- A*算法——启发式搜索
A*算法 本质还是搜索:加了优化而已 关于这个优化,听到两种说法: 1.剪枝 通过判断预计最少还要几步,加强版剪枝 比如说一个经典剪枝: 如果 步数≥已知最小值 则 剪枝 升级| V 如果 步数+最少 ...
- HDU 1556 线段树或树状数组,插段求点
1.HDU 1556 Color the ball 区间更新,单点查询 2.题意:n个气球,每次给(a,b)区间的气球涂一次色,问最后每个气球各涂了几次. (1)树状数组 总结:树状数组是一个查 ...
- .NET 二维码生成(ThoughtWorks.QRCode)
引用ThoughtWorks.QRCode.dll (源代码里有) 1.简单二维码生成及解码代码: //生成二维码方法一 private void CreateCode_Simple(string n ...
- Struts2基础数据校验和框架校验
一:三种校验的方式 1.用validate()方法实现数据校验 2.用execute()方法实现数据校验 3.用validateXxx()方法实现数据校验 1.用validate()方法实现数据校验 ...