什么是 Stream?为什么要有 Stream?

写在前面

用了这么久的 Stream 类,还没了解过什么是 stream 以及为何要有 stream。

什么是 Stream?

stream 就是一些等待解释其含义的数据,这些数据通常具有至少一个下面列出的特点:

  • 不要求在处理时全部到达。
  • 数据的到达时机难以确定。
  • 数据是按照一定顺序到达。
  • 数据顺序读写比随机读写效率要高或只能顺序读写。
  • 读取过一次的数据无法再次读取或再次读取时开销很大。

符合上列特点的数据典型的就是在线视频。


stream本身没有含义,它的含义取决于你如何解释。这也就是为什么面向对象语言中会有 FileStream,NetworkStream 等多种 Stream 类的派生类,这些类包含了对stream的解释方式。
如果以字节为最小处理单位则称字节流,以一位二进制为最小处理单位则称比特流,以此类推。

目前来说stream已经不单单代表数据了,通常也代表与数据配套的操作。

为什么要有 Stream

  • 使得编程更加容易。如果统一使用 stream 模型处理数据,那么对应不同类型的数据只需要用到不同的 stream 处理模块,代码改动较少。
  • 对于在线视频这种业务场景,使用 stream 来处理再好不过了。
    • 视频通过网络传输,即到达时间不确定。
    • 视频只需要加载一部分就能开始播放以提高用户体验,即不要求在处理时全部到达。
    • 视频必须要保证顺序正确,即数据是按照一定顺序到达。
  • 对于较大的数据无需一次性装入内存而是分批次处理。虽然 OS 提供的分页机制一定程度上缓解了这个问题,但是频繁的缺页会大大降低运行效率。
本文作者:ADD-SP
本文链接https://www.addesp.com/archives/252
版权声明:本博客所有文章除特别声明外,均默认采用 CC-BY-NC-SA 4.0 许可协议。
暂无评论

发送评论 编辑评论


上一篇
下一篇