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 的构造器, ...
随机推荐
- Linux使用ssh-keygen实现SSH无密码登录
一.原理简介: 1.SSH公钥认证的基本原理: SSH是一个专为远程登录会话和其他网络服务提供安全性的协议.默认状态下SSH链接是需要密码认证的,可以通过添加系统认证(即公钥-私钥)的修改,修 ...
- html标准
html1.使用双引号2. <img src=""> 不添加/3. <html lang="zh-CN">4. <a class= ...
- Thinkphp5简单初体验
<?php namespace app\index\controller; use think\Controller; //引用think/Controller类 class Index ext ...
- POJ 2774 Long Long Message 后缀数组
Long Long Message Description The little cat is majoring in physics in the capital of Byterland. A ...
- [leetcode] 题型整理之排序
75. Sort Colors Given an array with n objects colored red, white or blue, sort them so that objects ...
- 疯狂房价"逼死"年轻人,别指望中国未来能出人才了
社会高房价,杀死那个学者 --北京青年学者生存侧记 这一轮,房价又上涨了,只有更疯狂. 几年前,北京三环内的房价突破5万,世人惊呼:没几年,四环5万了,五环5万了:这一轮,北京城乡结合部,哪怕脏乱差之 ...
- Bug整理——$(window).height()获取到$(document).height()的问题
想看解决方案不想看无聊乏味的bug解决过程的同学,请直接跳转到页面底部~ 今天在做项目的过程中遇到了一个BUG,项目中需要获取到浏览器客户区的高度以方便做一些适应性调整,代码如下: $(documen ...
- react-native 之布局篇
一.宽度单位和像素密度 react的宽度不支持百分比,设置宽度时不需要带单位,那么默认的单位是什么呢? /** * Sample React Native App * https://github.c ...
- STM32之GPIO操作
啊哈.没办法.外国人的芯片就喜欢用英文来命名,所以中文的:通用输入/输出 就用GPIO来代替..谁叫哥们都不是外国人呢.好啦.胡扯了一下,借用唐伯虎点秋香的话:小小书童,可笑可笑... 知道了GPI ...
- CSS实现元素水平/垂直居中的方法
首先,我们来了解水平居中,它有很多种方法,我们暂时先来了解其中的几种: 1. 在实现方案中,我们最熟悉的莫过于给元素定义一个宽度,然后使用margin: 1 2 3 4 body{ wi ...