- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个只接受字符串作为键的缓存。该缓存是遗留系统的一部分,我无法修改它们。要使用此缓存,我需要将缓存键转换为字符串。
为了使我的缓存键成为字符串,我使用 KRYO 对其进行序列化。将它们转换为 bytes[]
并从 bytes[]
创建一个 string
。您认为这样做有什么问题吗?我使用下面的代码转换为 bytes[]
获取字节 [] 使用 Kryo :-
final Kryo kyroInstance = serializerInstance.get();
kyroInstance.writeObject(output, target);
output.getBuffer();
使用 KRYO 读取 key 如下
final Kryo kyroInstance = serializerInstance.get();
Object obj = kyroInstance.readObject(input, type);
return obj;
我有两个问题1. 您觉得这种方法好吗?对于我的用例,您还有其他方法吗?2. 在分布式环境中读取 key 时有时会出现 NPE 错误,并且该问题特定于 KRYO 序列化。
java.lang.IndexOutOfBoundsException: Index: 34120126, Size: 0 at
java.util.ArrayList.rangeCheck(ArrayList.java:653) at
java.util.ArrayList.get(ArrayList.java:429) at
com.esotericsoftware.kryo.util.MapReferenceResolver.getReadObject(MapReferenceResolver.java:42)
at com.esotericsoftware.kryo.Kryo.readReferenceOrNull(Kryo.java:830)
at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:680)
最佳答案
正如您在评论中所述,您可以通过以下方式构造 key 字符串:
String key =new String(byte[]);
这有以下问题:
为了创建字符串,它将输入解释为字节编码字符。使用的编码(或在本例中为解码)由默认字符集设置确定。这可能会根据您的环境而变化。
您的输入是任意字节流。并非每个字节序列在字符编码中都是合法的。请参阅方法注释:
The behavior of this constructor when the given bytes are not valid in the default charset is unspecified.
简而言之:远离这个构造函数。
为了您的目的,您可以使用,例如:
关于java - 使用 newString(bytes[]) 将缓存键存储在 hazelcast 缓存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31180411/
我希望标题不会太令人困惑,但稍后您就会明白我的意思。与此同时,一些背景故事 - 我正在开发一个生成随机用户名和密码的函数,并将它们作为 username:password 写入文本文件中,供另一个收集
我正在尝试接受字符串 (str) 作为输入,然后反向返回该字符串。 (现在它将返回一个数组,因为我尚未将输出转换为字符串)我的问题是我不断收到错误 TypeError: newString.push
我正在尝试使用 android 中的 JNI 将 char* 从 C++ 传递到 java。我已经尝试了多种方法来传递该数据 1) 使用 NewStringUTF: const char* data
我有一个只接受字符串作为键的缓存。该缓存是遗留系统的一部分,我无法修改它们。要使用此缓存,我需要将缓存键转换为字符串。 为了使我的缓存键成为字符串,我使用 KRYO 对其进行序列化。将它们转换为 by
我是一名优秀的程序员,十分优秀!