首先必须先要了解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数据流的更多相关文章

  1. 浅谈stream数据流

    汴水流,泗水流,流到瓜州古渡头, 吴山点点愁.    我们知道水是源源不断的, 抽刀断水水更流, 斩不断, 理还乱,  是水流.(技术贴, 本文权当读者没学过古诗). 在一些语言里, 我们的前辈把数据 ...

  2. [LeetCode] 295. Find Median from Data Stream ☆☆☆☆☆(数据流中获取中位数)

    295. Find Median from Data Stream&数据流中的中位数 295. Find Median from Data Stream https://leetcode.co ...

  3. JDK8 Stream 数据流效率分析

    JDK8 Stream 数据流效率分析 Stream 是Java SE 8类库中新增的关键抽象,它被定义于 java.util.stream (这个包里有若干流类型: Stream<T> ...

  4. [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 ...

  5. java8中Stream数据流

    筛选重复的元素 Stream 接口支持 distinct 的方法, 它会返回一个元素(根据流所生成元素的 hashCode和equals方法实现)的流. 例如,以下代码会筛选出列表中所有的偶数,并确保 ...

  6. [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 ...

  7. 295 Find Median from Data Stream 数据流的中位数

    中位数是排序后列表的中间值.如果列表的大小是偶数,则没有中间值,此时中位数是中间两个数的平均值.示例:[2,3,4] , 中位数是 3[2,3], 中位数是 (2 + 3) / 2 = 2.5设计一个 ...

  8. Leetcode703.Kth Largest Element in a Stream数据流中的第K大元素

    设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中 ...

  9. Leetcode 703. 数据流中的第K大元素

    1.题目要求 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器, ...

随机推荐

  1. MIT 6.828 JOS学习笔记9. Exercise 1.5

    Lab 1 Exercise 5 再一次追踪一下boot loader的一开始的几句指令,找到第一条满足如下条件的指令处: 当我修改了boot loader的链接地址,这个指令就会出现错误. 找到这样 ...

  2. 传智播客DotNet面试题

    技术类面试.笔试题汇总(整理者:杨中科,部分内容从互联网中整理而来) 注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系. 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化 ...

  3. PHP导出数据到Excel

    <?php date_default_timezone_set('PRC'); $filename="info.xls";//先定义一个excel文件 header(&quo ...

  4. win8 系统安装node环境记录

    原先我是用win7环境安装node很方便,到了win8系统突然变了,让我顿时困惑了一段时间,但还是被我找到方式解决了,记录一下解决方案: 首先在网上看了一些资料说win8下安装node环境会出错,但我 ...

  5. BZOJ4712 : 洪水

    首先不难列出DP方程: $dp[x]=\min(w[x],h[x])$ $h[x]=\sum dp[son]$ 当$w[x]$增加时,显然$dp[x]$不会减少,那么我们求出$dp[x]$的增量$de ...

  6. bzoj3212 pku3468 A Simple Problem with Integers

    一个有初值的数列.区间加.区间查 用线段树直接水过 然而并没有1A,主要是做题太快没看规模结果没注意线段树要用longlong建 卧槽怎么可以这么坑爹,害得我看见wa心慌了,还以为连线段树都要跪 一开 ...

  7. asp.net 数据绑定 -- 时间格式

    <asp:TemplateField HeaderText="日期" SortExpression="Date">                & ...

  8. Java Interview Test

    Java基础:1.例举Java中的不可变类? 所有数据类型的包装器类和java.lang.String也是不可变类,虽然他不是基本类型.2.==和.equals的区别和结果? 基本数据类型的比较只能用 ...

  9. [LintCode] Min Stack 最小栈

    Implement a stack with min() function, which will return the smallest number in the stack. It should ...

  10. IBatis添加信息返当前添加对象ID

      在Ibatis中,insert()的返回值为一个Object的主键,其实这个Object的主键是这样的来的:如果在bean的xml文件中设置了插入的keyProperty,则insert()方法返 ...