问题标签 [chronicle-map]
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.
java - ChronicleMap 和并行流
我正在尝试使用chronicleMap.parallelStream:
我得到了以下异常。
java.lang.IllegalStateException: ChronicleMap ... Iterator 只能从单个线程访问
知道如何使用chronicleMap 和parallelStream 吗?谢谢
transactions - Chronicle Map 原子性语义
我想知道 Chronicle Map 中的原子性语义。如果我有一个跨 2 个节点(服务器)共享的编年史地图,并且我尝试在两个节点上同时将相同的密钥插入到该地图中,那么事务语义是什么?
第一次put成功,第二次失败吗?
我很好奇 Chronicle Map 是否保证与 Apache Zookeeper 相同的事务语义?
在我的用例中,我想依靠这样一个事实,即如果 node1 将密钥 K1 放入映射中,则 node2 将能够检查 K1 的存在,如果它不存在,它将明确知道它是第一个添加K1。
实际上,询问 ChronicleMap 上的 put 是否是跨 2 个节点的分布式事务。
非常感谢克利福德
dictionary - 编年史地图更新持久值
我需要更新一个持久值。我是说:
////// 类 InfoEquipoCache 用作 CM 的值
///// Principal Class 有一个 InfoEquipoCache 的 CM
..... //// 在主体类的某些部分:
但是,equipos.get(idEquipo) 有一个 EquipoCache 的引用,而 InfoEquipoCache 内部有一个不同的 EquipoCache 引用。由于结果实际化方法是无用的
有人知道如何更改此值吗?
chronicle-map - 编年史地图恢复
我在读这个
https://github.com/OpenHFT/Chronicle-Map/blob/master/docs/CM_Tutorial.adoc
它说如果一个进程在“访问”它时被杀死,它可能处于损坏状态。
我想这意味着它正在“写入”它?
如果我只有一个只读进程并且被杀死,它会破坏地图吗?
谢谢, - 麦格
chronicle - 使用 ChronicleMap 作为键值数据库
我想使用ChronicleMap作为内存映射键值数据库(String
to byte[]
)。它应该能够容纳多达 1 亿个条目。读取/获取将比写入/放置更频繁地发生,预期写入速率低于 10 个条目/秒。虽然键的长度相似,但值的长度可能会有很大差异:它可以是从几个字节到几十 Mbs 的任何内容。然而,大多数值的长度在 500 到 1000 字节之间。
阅读了一些关于 ChronicleMap 的内容后,我对它的功能感到惊讶,并且想知道为什么我找不到描述它被用作通用键值数据库的文章。对我来说,将 ChronicleMap 用于此目的似乎有很多优势。我在这里想念什么?
对于给定的边界条件,使用 ChronicleMap 有什么缺点?
java - 如何使用 Chronicle Map 对随机索引进行 get/set 序列化/反序列化 long[] 值?
我是编年史地图的新手。我正在尝试使用 Chronicle-map 对堆外映射进行建模,其中键是原始短数组,值是原始长数组。对于给定的地图,长数组值的最大大小是已知的。但是,我将有多个此类映射,每个映射对于长数组值可能具有不同的最大大小。我的问题与键和值的序列化/反序列化有关。
通过阅读文档,我了解到对于键,我可以使用值类型 ShortValue 并重用该接口的实现实例。关于值,我发现页面谈论DataAccess 和 SizeReader的页面给出了 byte[] 的示例,但我不确定如何使其适应 long[]。我还有一个额外的要求是,我需要在长数组中的任意索引处获取和设置值,而无需支付每次对整个值进行完全序列化/反序列化的成本。
所以我的问题是:如何在构建映射时对值类型进行建模,如果每个映射的最大大小已知并且我需要能够随机读写每次都没有序列化/反序列化整个值有效负载的索引?理想情况下,long[] 将直接在堆外进行编码/解码,而无需进行堆内中间转换为 byte[],并且编年史映射代码不会在运行时分配。谢谢你。
chronicle - 纪事地图有没有过期的概念
Chronicle Map 是否有任何概念(或可插拔能力)来提供自动条目过期?
java - 使用原语的编年史地图
在Chronicle-map
描述中说:
Chronicle Map 提供内存访问速度,并支持超低垃圾收集。Chronicle Map 可以支持最苛刻的应用程序。
支持超低垃圾回收究竟代表什么?这是否意味着 Chronicle 映射试图在堆中分配尽可能少的对象?
据我所知,具有低延迟要求的项目会尽量避免不必要的分配,部分通过使用 gc-free 集合,部分通过对象池。其中之一是避免对原语进行不必要的装箱/拆箱。例如,如果您有一个Map<Long, Entity>
, 来避免创建Long
对象,您可以使用基于值类型的映射实现,例如TLongObjectMap<Value>
在trove
library.xml 中。
然后,以这种方式创建实例是有意义的,chronicle-map
例如,使用原语作为键。可能吗?如果没有,是否有任何理由不执行此操作?
java - 用于查看编年史队列/地图内容的 UI/实用程序
是否有任何 UI 或实用程序可以让我们检查 Chronicle Queues 和 Chronicle Maps 的内容?
到目前为止,我只发现DumpQueueMain类会吐出队列中所有可用的信息。
谢谢!
java - Chronicle:反序列化期间未初始化对象
我目前有一些在声明中初始化的字段的类,如下所示:
并且此类用于基于文件的chronicle-map
配置,如下所示:
问题是,当我重新启动我的应用程序时,我会NullpointerException
在编年史尝试读取保存的地图时得到,因为hits
字段没有初始化,这意味着它是null
.
我做了一些调查,发现在调用chronical之前使用(in )readExternal
创建了这个类的对象:UNSAFE.allocateInstance
ExternalizableMarshaller
所以基本上这就是它没有初始化的原因。我想了解为什么它使用这种方法而不是MethodHandle
反射?
也许还有另一种方法可以在不修改的情况下解决这个问题SomeClass
,比如一些编年史配置属性?