问题标签 [buffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1941 浏览

memory - 交换空间上的缓存有什么意义?

将东西缓存在主内存中以避免昂贵的磁盘 i/o 不是重点吗?

如果您在硬盘驱动器的交换空间中缓存内容,如何避免磁盘 i/o?

0 投票
3 回答
12487 浏览

java - Java 视频播放器

我需要一个不能使用 JMF 的 java api 来播放由 SO 编解码器解释的视频,但我想检索 java 代码中的每一帧。有人知道一些吗?

0 投票
7 回答
4463 浏览

c++ - 何时为 I/O (C++) 构建自己的缓冲系统?

我必须处理非常大的文本文件(2 GB),必须逐行读取/写入它们。使用 ofstream 写入 2300 万行真的很慢,所以一开始,我尝试加快在内存缓冲区(例如 256 MB 或 512 MB)中写入大块行的过程,然后将缓冲区写入文件. 这不起作用,性能或多或少相同。我在读取文件时遇到了同样的问题。我知道 I/O 操作由 STL I/O 系统缓冲,这也取决于磁盘调度程序策略(由操作系统管理,在我的情况下是 Linux)。

关于如何提高性能的任何想法?

PS:我一直在考虑在程序处理数据时使用后台子进程(或线程)来读取/写入数据块,但我不知道(主要是在子进程的情况下)这是否值得。

0 投票
5 回答
7276 浏览

c# - 使用 C# 进行缓冲池管理

我们需要为使用 C# 开发的应用程序开发某种缓冲区管理。

本质上,应用程序会在设备进入时接收来自设备的消息(短时间内可能会有很多消息)。我们需要将它们排在某种缓冲池中,以便我们可以以托管方式处理它们。

我们正在考虑以 256 字节的块分配一块内存(所有消息都小于这个值),然后使用缓冲池管理来拥有一个可用于传入消息的可用缓冲区池和一个准备好处理的缓冲区池.

因此流程将是“获取缓冲区”(处理它)“释放缓冲区”或“将其留在池中”。我们还需要知道缓冲区何时填满。

潜在地,我们还需要一种“窥视”缓冲区的方法,以查看池中最高优先级的缓冲区是什么,而不是总是获取下一个缓冲区。

.NET 中是否已经对此提供了支持,或者是否有一些我们可以使用的开源代码?

0 投票
4 回答
548 浏览

parsing - 为分隔符分隔的块缓冲数据

有一个问题我多年来一直想知道,我希望有人能给我一个答案,让我放松一下。

假设我有一个输入流(如文件/套接字/管道)并且想要解析传入的数据。让我们假设每个传入数据块都由换行符分割,就像大多数常见的互联网协议一样。这个应用程序也可以解析 html、xml 或任何其他智能数据结构。关键是数据通过分隔符而不是固定长度分成逻辑块。如何缓冲数据以等待分隔符出现?

答案似乎很简单:只要有一个足够大的字节/字符数组来容纳整个事物。

但是如果分隔符出现在缓冲区已满之后呢?这实际上是一个关于如何将动态数据块放入固定大小的块中的问题。我真的只能想到几个替代方案:

  1. 需要时增加缓冲区大小。这可能需要大量的内存重新分配,并且可能导致特制流的资源耗尽(或者甚至可能在我们想要保护自己免受耗尽攻击的套接字的情况下拒绝服务并丢弃试图耗尽资源的连接......和攻击者开始发送虚假的、超大的数据包以触发保护)。

  2. 使用循环缓冲区开始覆盖旧数据。也许不是一个理想的方法,因为逻辑块会变得不完整。

  3. 缓冲区已满时转储新数据。但是,这种方式永远找不到分隔符,所以这个选择显然不是一个好的选择。

  4. 只需将固定大小的缓冲区变大,并假设所有传入的逻辑数据块都在其范围内……如果它被填满,只需将整个缓冲区解释为逻辑块……

无论哪种情况,我都觉得我们必须假设逻辑块永远不会超过一定的大小......

对这个话题有什么想法吗?显然必须有一种方法,因为高级语言通过其readLine()流方法提供了某种缓冲机制。

有没有“最好的方法”来解决这个问题,或者总是有一个权衡?我非常感谢关于这个主题的所有想法和想法,因为每次我需要编写某种解析器时,这个问题一直困扰着我。

0 投票
8 回答
1594 浏览

java - 最好的收藏?

我正在阅读日志文件,但并非所有行都希望立即处理。我正在使用队列/缓冲区来存储等待处理的行。

定期扫描此队列以查找特定行 - 当找到它们时,它们会从队列中删除(它们可以在队列中的任何位置)。当没有找到特定的行时,将一行一行地从队列的开头取出进行处理。

因此,队列需要以下内容:

  • 能够调整大小(或给人以印象)
  • 从任何地方删除元素
  • 添加元素(将始终位于队列的末尾)
  • 被快速扫描
  • 根据性能,有一个指向上次扫描位置的指针。

我最初编写代码时对 Java 或 API 几乎没有经验,并且只是使用了 ArrayList,因为我知道它会起作用(不一定是因为它是最佳选择)。

随着越来越多的日志需要处理,它的性能现在变得很差——那么,在这种情况下,您建议使用什么集合?也总是有可能写我自己的。

谢谢

0 投票
7 回答
45075 浏览

java - CharBuffer 与 char[]

在以下情况下是否有任何理由更喜欢CharBuffera char[]

对比

inaReaderouta 在哪里Writer)?

0 投票
5 回答
16188 浏览

java - Java 中最好的可调整大小的循环字节缓冲区是什么?

我需要一个 Java 中的字节缓冲区类以供单线程使用。我应该能够在缓冲区的后面插入数据并在前面读取数据,摊销成本为 O(1)。缓冲区满时应该调整大小,而不是抛出异常或其他东西。

我可以自己写一个,但是如果标准 Java 包中还不存在它,我会感到非常惊讶,如果它不存在,我希望它存在于一些经过良好测试的公共库中。

你会推荐什么?

0 投票
16 回答
58383 浏览

vim - 你更喜欢如何在 Vim 中的缓冲区之间切换?

我试过MiniBufExplorer,但我通常会看到几个窗口显示它或完全关闭它。我想要的是像LustyJuggler这样的增量搜索,我在 Emacs 中的缓冲区之间切换的方式。肯定有这样的剧本吗?

0 投票
4 回答
1523 浏览

emacs - 修改缓冲区时如何运行 Emacs 挂钩?

建立在让 Emacs 在保存某些文件类型(并且只有那些文件类型)时取消制表符的基础上,我想在我开始修改缓冲区时运行一个挂钩来取消我的 C++ 文件的制表符。我尝试添加钩子以在加载时取消缓冲,但随后它取消了我所有在 emacs 启动时自动加载的可写文件。

(对于那些想知道我为什么这样做的人,这是因为我工作的地方强制在文件中使用制表符,我很乐意遵守。问题是我标记了我的文件以告诉我何时行太长,但正则表达式匹配行中的字符数,而不是行占用多少空间。一行中的 4 个制表符可以将其推到远远超过我的 132 个字符限制,但该行不会被正确标记。因此,我需要一种自动制表和取消制表的方法。)