gpt4 book ai didi

java - 具有阻塞 IO 的 SSLEngine

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:06 26 4
gpt4 key购买 nike

来自 SSLEngine 文档:“通过将 SSL/TLS 抽象与 I/O 传输机制分离,SSLEngine 可用于各种 I/O 类型,例如非阻塞 I/O(轮询) ,可选择的非阻塞 I/O,Socket 和传统的 Input/OutputStreams,本地 ByteBuffers 或字节数组,.."将 SSLEngine 与常规 Sockets 和阻塞 channel 一起使用,与使用 SSLSocket 阻塞 IO 相比更好。

最佳答案

勉强,是的。 NIO 不仅仅是关于非阻塞 IO。它还带来了:

  • 更高级别的 API,基于包装缓冲区 (ByteBuffers),而不仅仅是字节数组。
  • “分散”和“聚集”API,即在同一 IO 操作中使用多个顺序缓冲区的能力。
  • 直接 IO:使用“直接”ByteBuffer,可以在堆外生存。

最后一点具有非常具体的一般性能影响,因为当使用基于堆的数组/缓冲区时,JVM 会对在 native 调用中发送的任何数组进行额外的复制,以促进与垃圾收集器的同步。使用 native 缓冲区可以避免这种情况,这可以显着减少垃圾收集开销。

也就是说,SSLEngine 存在巨大的可用性问题,因为正确使用它非常困难,尤其是比使用旧的 SSLSocket 困难得多。

幸运的是,this library允许将 SSLEngine 与 ByteChannel 接口(interface)一起使用,围绕 SSLEngine 完成所有繁重的工作(免责声明:我是主要作者)。

关于java - 具有阻塞 IO 的 SSLEngine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39866496/

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