首页 文章
  • 0 votes
     answers
     views

    Tomcat NIO - 实际用法

    我们一直在 生产环境 中使用Tomcat和axis2来实现SOAP服务 . 但是,在一些高流量的情况下,我们发现CPU一直很高 . 我们在那段时间发现netstat,我们有很多来自外部客户端的连接 . 我们认为CPU高可能是由于这些线程之间的高上下文切换,因为这些线程本质上是阻塞的 . 所以,我们认为我们可以在tomcat连接器中启用NIO . 我们认为这可以减少线程的数量以处理许多连接 . 但是...
  • 0 votes
     answers
     views

    将一定数量的字节读入ByteBuffer

    我有一个10MB的二进制文件 . 我需要以不同大小的块(例如300,273字节)读取它 . 为了阅读我使用 FileChannel 和 ByteBuffer . 现在,对于每次读取迭代,我分配新的 ByteBuffer 大小,我需要阅读 . 是否有可能只为ByteBuffer分配一次(比方说200 KB)并读入它(300,273字节等)?我不会一次阅读超过200KB . 必须读取整个文件 . U...
  • 0 votes
     answers
     views

    为什么FileChannel阅读永远不会结束?

    当我执行以下课程时 import java.io.*; import java.nio.*; import java.nio.file.*; import java.nio.channels.*; public class FileChannelTest { ...
  • 1 votes
     answers
     views

    Java NIO通过ByteBuffer扫描某些字节和带有节的字

    好吧,所以我正在尝试做一些看起来应该相当简单的事情,但是对于这些新的NIO接口,事情让我感到困惑!这是我正在尝试做的事情,我需要扫描一个文件作为字节,直到遇到某些字节!当我遇到那些特定的字节时,需要 grab 那段数据并对其做一些事情,然后继续前进并再次执行此操作 . 我会想到,凭借ByteBuffer中的所有这些标记和位置和限制,我能够做到这一点,但我似乎无法使它工作!这是我到目前为止所拥有的....
  • 1 votes
     answers
     views

    如果有足够的数据,FileChannel.read会读取比指定的更少的字节吗?

    例如,我有一个文件的内容是: abcdefg 然后我使用以下代码来读取'defg' . ByteBuffer bb = ByteBuffer.allocate(4); int read = channel.read(bb, 3); assert(read == 4); 因为文件中有足够的数据所以我可以这样想吗?我是否可以假设只有当文件中没有足够的字节时,该方法才会返回小于给定缓冲区限制的数字?...
  • 0 votes
     answers
     views

    与Datagram Socket相比,使用数据报通道有什么好处

    我正在尝试优化UDP服务器以处理更多吞吐量,它基于Java IO数据报套接字(不是NIO) . 当该UDP服务器收到UDP数据包时,需要处理该数据包,并将处理后的数据发送到后台资源,然后响应客户端 . 目前,该服务器将为每个要处理的传入数据包分配一个线程 . 我读过一些文章,我理解在某些情况下,例如,基于TCP的聊天服务器:需要同时管理数千个开放连接,每个只发送一点数据,在NIO中实现服务器可能是...
  • 1 votes
     answers
     views

    Scala:trait扩展了java.nio.file.FileVisitor

    我每天都在Scala学习新东西 . 我正在采取的当前路线是从java nio中提取功能并使Scala实现不受其影响 . 我观察过其他Scala专家如何使用java.nio.files包,以及FileVisitor接口以递归方式向下遍历带有子目录和文件的嵌套目录结构 . 但是,我遇到了一个小问题 . 我无法理解 我注意到paulp维护的github上的一个实现,我无法理解 . 我将在这里提出他的代码...
  • 76 votes
     answers
     views

    Java:将字符串转换为ByteBuffer和来自ByteBuffer的字符串以及相关问题

    我使用Java NIO进行套接字连接,我的协议是基于文本的,所以我需要能够在将字符串转换为SocketChannel之前将其转换为ByteBuffers,并将传入的ByteBuffers转换回字符串 . 目前,我正在使用此代码: public static Charset charset = Charset.forName("UTF-8"); public static Cha...
  • 2 votes
     answers
     views

    ByteBuffer和FileChannel只读取指定的字节数

    我有一种情况,我继续阅读下面的ByteBuffer . ByteBuffer buffer = MappedByteBuffer.allocateDirect(Constants.BUFFER_SIZE); 但是当读数到达边界时(当读取的剩余字节小于BUFFER_SIZE时),我只需要读取 boundaryLimit - FileChannel's current position . 意味着...
  • 0 votes
     answers
     views

    Java一次发送一个文件[重复]

    这个问题在这里已有答案: Java multiple file transfer over socket 2个答案 我有一个客户端和服务器程序应该像这样工作:客户端在命令行(stdin)中输入文件名,服务器通过套接字向客户端发送文件数据 . 发送另一个名称和另一个文件的客户端类型 . 但是,我目前只能发送一个文件 . 我第二次输入文件名,它不会进入我的客户端的while循环:“while((c...
  • 204 votes
     answers
     views

    以Java的形式递归列出文件

    如何以递归方式列出Java中目录下的所有文件?框架是否提供任何实用程序? 我看到了很多hacky实现 . 但没有来自框架或nio
  • 3 votes
     answers
     views

    Apache http核心nio 4.3.3反向代理SSL错误

    我正在使用http core nio 4.3.3开发反向代理,需要通过代理连接到Secure / HTTPS endpoints . 我采用了反向代理(异步HTTP反向代理)[1]并添加了SSL支持,如下所示 . SSLContext clientSSLContext = SSLUtil.createClientSSLContext(TRUST_ST...
  • 7 votes
     answers
     views

    为什么ByteBuffer的绝对读取不被认为是线程安全的?

    我的用例需要一个直接分配ByteBuffer,写入一次,然后由许多并发线程读取 . 所有读数都是绝对的,所以我的状态(位置,限制,标记) . 关于字节缓冲区的This article由Keith Gregory警告说,即使绝对读取也不被认为是线程安全的: ByteBuffer线程安全性包含在Buffer JavaDoc中;简短的版本是缓冲区不是线程安全的 . 显然,在没有竞争条件的情况下,您不能...
  • 0 votes
     answers
     views

    使用ByteBuffer处理byte []

    我尝试通过ByteBuffer访问byte []以表示我定义的文件类型 . byte []中的第一个位置包含一些元数据,并通过位操作进行处理 . 所以他们根本不代表一个字符 . 我想在某个固定位置添加文件数据(例如字符) . byte[] file_portion 包含大文件的一部分:开头部分 . 其中包括元数据的标头 . content 是一个包含我想要添加到该缓冲区的信息的String ...
  • 1 votes
     answers
     views

    如果有足够的数据,FileChannel.read会读取比指定的更少的字节吗?

    例如,我有一个文件的内容是: abcdefg 然后我使用以下代码来读取'defg' . ByteBuffer bb = ByteBuffer.allocate(4); int read = channel.read(bb, 3); assert(read == 4); 因为文件中有足够的数据所以我可以这样想吗?我是否可以假设只有当文件中没有足够的字节时,该方法才会返回小于给定缓冲区限制的数字?...
  • 2 votes
     answers
     views

    flink sink只支持bio吗?

    沉没的 invoke 方法似乎无法制作异步io?例如返回 Future ? 例如,redis连接器使用jedis lib同步执行redis命令: https://github.com/apache/bahir-flink/blob/master/flink-connector-redis/src/main/java/org/apache/flink/streaming/connectors/red...
  • 0 votes
     answers
     views

    Java使用FileChannel从文件中读取

    从大型文件读取时,我从这段代码中获得了一些奇怪的输出,文件使用while循环打印到99,999位,但是在读取文件并打印内容时它只输出99,988行 . 另外,使用ByteBuffer是读回文件的唯一选择吗?我已经看过一些使用CharBuffer的其他代码,但我不确定应该使用哪一个,以及在什么情况下我应该使用它们 . 注意:filePath是指向磁盘上文件的Path对象 . private void...
  • 20 votes
     answers
     views

    TCP:服务器在从客户端接收[SYN]后立即发送[RST,ACK]

    Host_A尝试通过TCP向Host_B发送一些数据 . Host_B正在侦听端口8181. Host_A和Host_B都是Linux机箱(Red Hat Enterprise) . TCP层使用Java NIO API实现 . 无论Host_A发送什么,Host_B都无法接收 . 使用WireShark在线上嗅探数据导致以下日志: 1)Host_A(33253)> Host_B(81...
  • 0 votes
     answers
     views

    Apache camel netty(udp服务器)无法跟上udp流量

    我使用apache netty模块接收udp数据包 . 在负载下,它似乎不接受所有发送的udp数据包 . 我通过运行虚拟udp服务器(非驼峰,只计算接收到的数据包的数量)测试它,并从localhost每秒发送1000个数据包,这个虚拟udp服务器接受并计算全部 . 但是从localhost每秒发送1000个数据包到我的camel udp端口,我可以看到一些(1-5%)从未出现过 . 我应该使用什么...
  • -1 votes
     answers
     views

    客户端的传统IO和服务器的NIO,如果客户端在同一个套接字中发送多条消息,我如何获得特定的消息?

    我在服务器端使用Apache Mina . 我是一个用传统IO编写的客户端 . 这是将数据发送到服务器的CLIENT端代码 . class SomeClass extends Thread { Socket socket; //Constructor SomeClass() { Socket socket = ... } publ...
  • 0 votes
     answers
     views

    TCP套接字上的断管读取

    我有一个Java应用程序,它打开一个TCP服务器套接字,然后从这个套接字读取和写入 . 我遇到一个问题,服务器在读取时收到IOException并显示消息"Broken pipe" . 我很清楚为什么会在写入时发生这种情况,但我无法弄清楚为什么它会在读取时发生 . 作为参考,这是堆栈跟踪的顶部 Caused by: java.io.IOException: Broken pip...
  • 0 votes
     answers
     views

    为什么我的客户端无法从服务器接收消息

    服务器: import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.Serve...
  • 1 votes
     answers
     views

    ReplayingDecoder在解码时抛出异常

    我创建了一个解码器来处理客户端发送的字节 . 就这个 import java.util.List; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ReplayingDecoder; public class MessageD...

热门问题