当前位置: 首页 > 知识库问答 >
问题:

Kryo在读取时导致缓冲区下溢异常

鲁建茗
2023-03-14

我正在连载:

    private byte[] serialize()
{
    KryoPool pool = new KryoPool.Builder(factory).softReferences().build();
    Kryo kryo = pool.borrow();
    Output output = new Output(0, 1024);
    kryo.writeClassAndObject(output, readsSetNode);
    byte[] bytes = output.toBytes();
    output.close();
    pool.release(kryo);
    return bytes;
}

和反序列化:

KryoPool pool = new KryoPool.Builder(factory).softReferences().build();
        Kryo kryo = pool.borrow();

        Input input = new Input(bytes);
        HashMap<NodeStorage, NodeStorage> deserialized = (HashMap<NodeStorage, NodeStorage>) kryo.readClassAndObject(input);
        input.close();

        pool.release(kryo);

共有1个答案

鱼旺
2023-03-14

我也遇到过同样问题,您应该像这样修改序列化函数:

    private byte[] serialize()
{
    KryoPool pool = new KryoPool.Builder(factory).softReferences().build();
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    Kryo kryo = pool.borrow();
    Output output = new Output(byteArrayOutputStream);
    kryo.writeClassAndObject(output, readsSetNode);
    output.close();
    pool.release(kryo);
    byte[] bytes = byteArrayOutputStream.toByteArray();;
    return bytes;
}
 类似资料:
  • 我不知道为什么,但是有一半通过ssl的站点在我的读取过程中得到了缓冲区溢出。 当我把我的程序链接到连续调用不同的ssl站点时,它在一半的链接上不起作用,但是如果我一个接一个地调用,它们就起作用了。例如,我使用Chrome的开发工具在我的nexus7平板电脑上调用https://www.facebook.com。当我看到请求,调用的链接是: https://www.facebook.com/ 如果我

  • 缓冲区溢出的漏洞随着冯·诺依曼 1 构架的出 现就已经开始出现了。 在1988年随着莫里斯互联网蠕虫的广泛传播他们开始声名狼藉。不幸的是, 同样的这种攻击一直持续到今天。 到目前为止,大部分的缓冲区溢出的攻击都是基于摧毁栈的方式。 大部分现代计算机系统使用栈来给进程传递参数并且存储局部变量。 栈是一种在进程映象内存的高地址内的后进先出(LIFO)的缓冲区。 当程序调用一个函数时一个新的“栈帧”会被

  • 我正在尝试正确地使用ByteBuffer和BigEndian字节顺序格式。。 我有几个字段,我试图把它存储在Cassandra数据库之前放在一个单一的ByteBuffer中。 我将要写入Cassandra的字节数组由三个字节数组组成,如下所述- 现在,我需要快速压缩attributeValue数据,然后再将其存储在Cassandra中- 现在,我将编写,和snappy压缩的一起组成一个单字节数组,

  • 当程序试图在临时数据存储区域(缓冲区)中存储比预期要容纳的更多数据时,会出现缓冲区溢出。由于创建缓冲区以包含有限数量的数据,因此额外信息可能溢出到相邻缓冲区中,从而破坏其中保存的有效数据。 示例 这是缓冲区溢出的经典示例。它演示了一个简单的缓冲区溢出,它是由第一个依赖外部数据来控制其行为的场景引起的。无法限制用户输入的数据量,程序的行为取决于用户放入的字符数。 动手实践 第1步 - 我们需要使用姓

  • 这篇文章说默认的溢出策略是缓冲区。 doOnNext内部的subscribe()调用有不同的策略吗?

  • 首先,我要声明,我打的这篇文档,原稿是《黑手缓冲区溢出教程》,而不是作者出的正版书,在这里向王炜老大道歉!!因为我兜里的那个实在是那什么,外加上我们烟台这里买不到…