问题标签 [chronicle-bytes]

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 回答
320 浏览

java - 来自 InputStream 的编年史字节

我正在尝试使用萨克斯管即时将 json 解析为 protobuf 消息,并希望避免为每个响应创建字符串实例。

为此,我需要从 InputStream(由 apache http 实体提供)创建 Bytes 实例。

我正在挖掘资源一段时间,但找不到这样做的方法......有什么建议吗?

0 投票
1 回答
144 浏览

chronicle - 重用 Chronicle Bytes 的 OutputStream

我正在使用采用 OutputStream 的第三方二进制编码器。我从 Marshallable 的 writeMarshallable 方法中检索 OutputStream,类似于:

wire.bytes().outputStream()的实现在每次调用时都会创建一个新的 StreamingOutputStream,这是我希望避免的(当底层 Bytes实际上没有改变时,多余的对象分配)。

也就是说,我正在考虑将 WeakReference 存储到给定的 wire.bytes() 值并检查提供的值引用(即 ==)是否与先前提供的值相同:

所以我的问题是这是否是一种合理的方法,或者你们编年史的人是否有更明智的方法?

谢谢!!

0 投票
1 回答
145 浏览

java - 多次同时读取 Chronicle Bytes 作为流

我正在使用 Chronicle Bytes 版本 1.7.22。我想将字节用于堆外缓存和大型媒体(例如图像、视频)的持久性。目前我正在创建字节如下:

或(用于持久性)

我使用 Bytes.outputStream() 编写媒体内容并使用 Bytes.inputStream() 读取媒体内容。但是,我只能读取一次 InputStream。它似乎不支持重置。如何在不分配额外内存的情况下多次同时读取媒体内容?

0 投票
1 回答
277 浏览

chronicle - Serialize Java object ByteBuffer using Chronicle Wire

I have been using "javolution" that facilitates me to create Java objects which can be serialized to nio.ByteBuffer that can be further mapped to C structs.

How can I achieve the same using Chronicle Wire?

0 投票
1 回答
67 浏览

chronicle - 从 Bytes 中检索 ByteBuffer 对象

我一直在尝试从 Bytes 对象中检索 ByteBuffer (Direct) 对象引用。以下是代码:

我想在创建 ByteBuffer 对象时避免多次分配。因此,想要重用由 Bytes 包装的相同 Bitebuffer。我怎样才能做到这一点?

0 投票
1 回答
1013 浏览

chronicle - 在 Chronicle Queue Tailer (v5.16.11) 中读取消息不会自动将索引移动到下一个滚动周期

我使用 CQ v5.16.11(带有 openjdk 11)来保存每日滚动周期的数据。这个过程从周日到周五不间断地运行,所以我每周有 5 个 cq4 文件。我运行了 1.5 周,有 8 个文件(第 1 周 3 个,第 2 周 5 个)。

所以我拥有的文件是:

请注意 20181006.cq4 (cycle=17810) 的缺失文件,因为该过程在星期六不运行。

我使用此代码读取数据:

这会正确读取第一周的数据,但不会读取第二周的数据,因为它不会自动滚动到下一个周期。

知道为什么会发生这种情况或如何解决这个问题吗?

这个问题与旧版本的问题类似

日志:

[编辑 1]: 上周末也发生了同样的事情,即,正如预期的那样,10 月 13 日没有新文件。现在我有 10 月 7 日到 10 月 15 日的文件(缺少 10 月 13 日的文件)。如果我这样做tailer.toStart(); while(tailer.readBytes() { ...},它只会从 10 月 7 日到 10 月 12 日读取文件,而不会读取 10 月 14 日和 15 日的文件。

[编辑 2]:将问题复制如下 Chronicle-Queue/issues/537

  1. 设置/库: jvm openjdk 11、Ubuntu 16.04、openhft.affinity/3.1.9、chronicle-map/3.16.0、chronicle-queue/5.16.11、chronicle-bytes/1.16.23、chronicle-core/1.16.20 ,编年史线/1.16.16,编年史线程/1.16.3,jna/4.4.0
  2. 脚步:
    • 启动 WriterProcess - 让它完成。
    • 启动 ReaderProcess - 查看 5 个打印语句。
    • 停止 ReaderProcess
    • 等待一段时间 - 10 分钟。
    • 再次启动 WriterProcess - 让它完成或继续运行这个过程。
    • 启动 ReaderProcess - 它只打印前 5 个打印语句,此后不打印任何内容。即使 WriterProcess 正在运行/写入以排队,该进程中的尾部也不会向前移动。

0 投票
1 回答
52 浏览

chronicle - 编年史字节共享 DirectBytesStores

我已经MappedBytes为一个文件创建了一个实例,该文件用作不同 Java 进程之间的共享缓存。

我希望能够从原始文件中分离出额外的 MappedByte 实例(或 ByteBuffer 或任何其他实例),这些实例提供对底层文件子集的直接读/写访问。

我今天花了很多时间尝试不同的方法,但选项如subBytes(),rawCopy()并且copyTo()似乎都是创建底层文件的本地副本,而不是直接访问文件。

例如:

产生输出:

副本已被修改,但不是原件。我想修改原始文件,chronicle-bytes 可以这样做吗?

谢谢你的帮助,乔希。

0 投票
1 回答
47 浏览

chronicle - 引发段错误的编年史字节

按照chronicle-bytes shared DirectBytesStores中接受的解决方案,我现在已经以与接受的答案相同的方式设置了我的代码。

我正在生成 1,000,000 个对象,并将其写入 MappedFile,并且我希望每个对象都能够管理自己对 MappedFile 的读/写操作:

然后我使用以下方法创建 DataObject:

我发现,使用与上面类似的代码,一旦我达到约 100,000 个对象,chronicle-bytes 就会生成一个段错误。当尝试读取或写入 PointerBytesStore 但无法预测时,往往会发生段错误。

这是编年史字节中的错误还是我滥用了库?任何帮助/建议/建议将不胜感激。

0 投票
1 回答
96 浏览

chronicle - Chronicle Bytes 中是否有超快速的比较 byte[] 方法?

我将 Murmur3 64 位哈希作为字节数组存储在 Chronicle 字节对象中。我试图在物理上尽可能快地对这些键进行排序。我实施了快速排序来做到这一点。我注意到有一组比较和交换方法,但对于字节数组却没有。有什么可以用来加快我的快速排序的吗?分析表明,大多数压力都在net.openhft.chronicle.bytes.AbstractBytes.readCheckOffset(long, long, boolean) AbstractBytes.java

感谢您的任何提示。

0 投票
1 回答
92 浏览

chronicle - 日志记录器的日志级别设置为“TRACE”导致 AbstractMethodError

我已将编年史记录器级别设置为跟踪如下

导致以下错误

但是当日志级别设置为 info 或 error 时该错误不可用

任何可能的原因