1
1
维基百科的这个定义怎么样? http://en.wikipedia.org/wiki/Stream_(computing) |
2
0
“流”的概念只是由一个类封装的字节序列,该类跟踪流的长度、当前位置、对象数或字节数等。并提供在对象流(或字节等)中来回搜索的功能。 所以你所说的底层“构造”只是一个字节数组(或者磁盘上的一个文件,或者指向类、结构甚至整数类型的指针),它根据流封装“服务”它上面的对象。 想象一下,我有10只橡皮鸭,站在一条真实世界的小溪旁。我在河里放了一只鸭子,它开始顺流而下。我现在有一只鸭子在河里。我把另一只鸭子放在河里,它开始顺流而下。我现在有两只鸭子在河里。这一直持续到…你的内存用完了。现在我顺流而下,从水里抓第二只鸭子(寻找)。现在小河里有9只鸭子,我在2号位置… 因此,流式处理对象不同于将其放在数组或列表中,因为它可以由封装流类“操作”。 流的整洁之处在于,可以在其他流的顶部创建不同的流,从而允许某种程度的抽象。例如,在.NET中,我可以在文件流的顶部创建一个流写器,它允许我将字符串写入文件流,而不必手动将它们转换为字节数组。 希望能有所帮助。请随意更正或添加任何必要的内容。我不自称是专家。 (顺便说一句,没有必要迟钝和声称“太笼统”,“我不明白”等……让我们更加理解和礼貌一点,从讲坛上下来,以合理的方式解释事情。) |
3
0
我想你对C感兴趣#
内存流通过流接口公开连续的内存块。这通常实现为表示当前字节的数组和索引(或指针)。内存流可以是非增长的,在这种情况下,数组的大小预先定义,并且不能改变和增长,在这种情况下,如果现有数组不适合数据,则分配新的数组,并且复制内存。作为一种优化,对于增长的流数组通常被分配的大小大于当前流中所有数据所需的大小——这是为了当最后写入更多的数据时,可以快速使用未使用的空间,而不需要在每个写入上重新分配数组。通过这种优化,流将需要跟踪数组中除了大小之外还有多少空间未使用。
文件流通常要简单得多,因为操作系统本身已经将文件公开为流(即,您可以让操作系统api在文件中读/写/查找)。因此,文件流通常只包装一个os文件句柄,并提供委托给那些os api的方法。有时,由于性能原因,它们会提供额外的缓冲,例如,提供给
操作系统本身如何在其文件上实现这些流原语操作是高度特定于操作系统的。 |
John Smith · Java按值对映射进行分组,其中值为列表 2 年前 |
r3k0j · 在c++中有没有办法将输入字符串转换为输入流? 2 年前 |
Ankur · 猛击猫管据称行为不端 2 年前 |
Ksenia Alexeeva · 什么是产量控制器。流动 2 年前 |
tooFastForSatan · 组合两个流并调用方法 2 年前 |
Logan Lee · 通过在jq中一对一比较两个流进行过滤 2 年前 |
Lev · 使用jOO按属性总结BigDecimal分组 6 年前 |