微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用字节包装 ByteBuffer

如何解决使用字节包装 ByteBuffer

我有一个编年史队列,其中有以下课程:

public class Message extends SelfDescribingMarshallable {
    private final Bytes<ByteBuffer> text;
    private long timeStamp;

    public Message(int bufferSize,long timeStamp) {
        this.text = Bytes.elasticHeapByteBuffer(bufferSize);
        this.timeStamp = timeStamp;
    }

    public Bytes<ByteBuffer> getText() {
        return text;
    }

    public void setText(CharSequence text) {
        this.text.clear().append(text);
    }

    public long getTimeStamp() {
        return timeStamp;
    }

    public void setTimeStamp(long timeStamp) {
        this.timeStamp = timeStamp;
    }
}

我使用这个类从队列中读取和写入。我需要与以以下格式接收此文本的内部库集成:ByteBuffer 和 byte[]。我需要发送具有正确大小且没有内存分配的文本,换句话说,我需要共享文本实例,因为我将此库应用于命令链模式,并且对于我的 poc 而言,低延迟时间很重要。

为了在没有内存分配的情况下提取 byte[],我使用了以下策略:

byte[] textByte = new byte[2048];
ByteBuffer textBuffer = message.getText().underlyingObject();
textBuffer.limit((int) message.getText().readLimit());
textBuffer.position(0);
textBuffer.get(textByte,(int) message.getText().readLimit());

在不分配的情况下检索字节缓冲区也是一种可能,但我现在不是最好的方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。