gpt4 book ai didi

java - 在 java 中寻找 "does everything buffer"- 决定使用 Netty

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:55 25 4
gpt4 key购买 nike

一些背景:

我正在研究一些需要获取数据的 java 包,将其划分并分发到许多在线服务器。根据用户代码(使用我的包的人),我会知道使用哪种缓冲区。我看过 Netty 项目,它考虑了一些有趣的概念以及网站上建议的其他解决方案,但并不是我正在寻找的。我想我可以实现我的要求,但我更喜欢重用。

实际问题:字节缓冲区要求

将实现与接口(interface)分开。两种实现之间的变化。

固定尺寸​​:

  1. 直接内存使用。
  2. 分发时的零复制 IO。

规模不断扩大

  1. 可以长到一定大小。
  2. 在重新分配和使用的内存量之间保持平衡。

更新 1:由于许多其他好处,决定使用 Netty 项目库。

我想提供一些关于我的系统的细节。我需要在整个服务器网络中分发大量数据。我对缓冲区大小的了解非常少。有时它可以是固定尺寸,有时它可以是未知尺寸模式。我希望能够开发一种机制,享受两个世界的好处。当我收到用于检查的最终缓冲区时,我确实有一个定义的事件。

我知道缓冲区在直接映射到内存时性能会更好。 Netty 为我提供了这个,但我无法让这个缓冲区增长。我有可以增长的动态缓冲区 - Netty 也提供了。

几个问题:

  1. 我是否应该将缓冲区从动态​​复制到直接,以防它发生变化?有没有办法切换模式?

  2. 您如何看待实现一个类,该类包含 ChannleBuffer 数组并公开与 ChannleBuffer 相同的接口(interface),同时包含“内部”缓冲区数组并根据需要分配新的直接内存。

  3. 您还有其他解决方案吗?

最佳答案

我会好好看看直接字节缓冲区的 数组 上的分散/聚集 NIO。直接性为您提供无复制 I/O,数组为您提供增长机制。

关于java - 在 java 中寻找 "does everything buffer"- 决定使用 Netty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7780034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com