返回顶部
首页 > 资讯 > 前端开发 > node.js >Netty支持什么I/O模式
  • 659
分享到

Netty支持什么I/O模式

2024-04-02 19:04:59 659人浏览 安东尼
摘要

本篇内容主要讲解“Netty支持什么I/O模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Netty支持什么I/O模式”吧! 1 经典I/O模式Bi

本篇内容主要讲解“Netty支持什么I/O模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Netty支持什么I/O模式”吧!

 1 经典I/O模式

Bio (阻塞I/O)jdk1.4前
NIO (非阻塞 I/O)JDK1.4 (2002 年,java.nio 包)
aiO(异步 I/O)JDK1.7 (2011 年)

1.2 对比概念

阻塞与非阻塞

数据就绪前要不要等待?

  • 阻塞

没有数据传过来时,读会阻塞直到有数据;缓冲区满时,写操作也会阻塞

  • 非阻塞

直接返回

同步与异步

数据就绪后,数据操作谁完成?

  • 需要自己去读是同步

  • 数据就绪直接读好再回调给程序是异步

2 Netty 对三种 IO 的支持变迁

划线的已不再支持了哦!

Netty支持什么I/O模式

为什么废除阻塞I/0 (BIO/OIO) ?

连接数高的情况下:阻塞 -> 耗资源、效率低。

阻塞意味着等待,等待就会一直占用该线程,当连接数高时,大多线程又在等待,就会耗尽系统的线程资源。

为什么删掉已经做好的AIO支持?

  • windows实现成熟,但其很少用做服务器

  • linux常用做服务器,但其AlO实现不够成熟

  • Linux下AIO相比较NIO的性能提升不明显

所以 netty 也是联系实际情况才有选择地支持高性能的 IO 模式。

为什么 Netty 支持多种实现?

Netty支持什么I/O模式

通用NIO实现(Common)在Linux下也是epoll,但Netty依旧选择自己实现,因为更好:

Netty提供更多可控参数:

  • JDK的NIO默认实现是水平触发

  • Netty 是边缘触发(默认)和水平触发,且可切换

Netty实现的垃圾回收更少、性能更好

NIO 一定优于 BIO?

BIO 代码简单且在特定场景:连接数少,并发度低,BIO 性能不输NIO。当然考虑业务发展后期都是复杂场景了,所以 Netty 只考虑 NIO。

到此,相信大家对“Netty支持什么I/O模式”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Netty支持什么I/O模式

本文链接: https://lsjlt.com/news/84204.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Netty支持什么I/O模式
    本篇内容主要讲解“Netty支持什么I/O模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Netty支持什么I/O模式”吧! 1 经典I/O模式BI...
    99+
    2024-04-02
  • 为什么Python不支持i ++语法
    本篇内容介绍了“为什么Python不支持i ++语法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正常情况下,当有人问起++原因而不是Pyt...
    99+
    2023-06-16
  • 怎么解析Linux-I/O模型
    本篇文章为大家展示了怎么解析Linux-I/O模型,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。I/O介绍I/O通常有内存IO、网络I/O、磁盘I/O等,但我们通常说的是网络I/O以及磁盘I/O。网...
    99+
    2023-06-16
  • Python为什么不支持i++自增语法
    本篇内容介绍了“Python为什么不支持i++自增语法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. Python 的整数是不可变类型当...
    99+
    2023-06-16
  • Linux I/O调度器是什么
    这篇文章主要介绍Linux I/O调度器是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux I/O 调度器是Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能。Linux I/O 系...
    99+
    2023-06-16
  • STM32单片机I/O的工作模式有哪些
    这篇文章主要讲解了“STM32单片机I/O的工作模式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“STM32单片机I/O...
    99+
    2024-04-02
  • nodejs中I/O的含义是什么
    这篇文章主要介绍“nodejs中I/O的含义是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs中I/O的含义是什么”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • Node.js中非阻塞I/O是什么
    本篇文章为大家展示了Node.js中非阻塞I/O是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先新建一个index.js,再打开我们前端人的vs-code,打...
    99+
    2024-04-02
  • ThinkPHP支持的四种URL模式分别是什么
    这篇文章主要为大家展示了ThinkPHP支持的四种URL模式分别是什么,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“ThinkPHP支持的四种URL模式分别是什么”这篇文章吧。thinkphp是什...
    99+
    2023-06-06
  • Linux网络I/O+Reactor模型是怎么样的
    本篇文章给大家分享的是有关Linux网络I/O+Reactor模型是怎么样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言网络I/O,可以理解为网络上的数据流。通常我们会基...
    99+
    2023-06-15
  • Linux中直接I/O原理是什么
    这篇文章主要为大家展示了“Linux中直接I/O原理是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中直接I/O原理是什么”这篇文章吧。什么是缓存 I/O (Buffered I/...
    99+
    2023-06-16
  • Chainer支持动态图模式和静态图模式吗
    Chainer主要支持动态图模式,这意味着用户可以在运行时构建和修改计算图。Chainer的动态图模式使得模型构建更加灵活和直观,但...
    99+
    2024-04-02
  • CNTK支持动态图模式和静态图模式吗
    CNTK主要支持静态图模式,即定义计算图后编译并执行。在CNTK中,用户定义计算图的方式是通过创建网络模型和操作符,然后调用cntk...
    99+
    2024-04-02
  • mac支持的硬盘格式 什么硬盘格式是mac和win支持的
    大部分硬盘在默认出厂前都会设定好一个固定的磁盘格式,如果该格式与用户电脑所使用的系统不兼容,就无法正确地进行硬盘读写甚至硬盘识别。对于Mac系统和Windows系统而言,它们都有自己支持的某些硬盘格式。什么是Mac支持的硬盘格式,什么硬盘格...
    99+
    2023-09-07
    macos windows
  • C++ 中有哪些异步 I/O 模型?它们的优缺点是什么?
    C++ 中的异步 I/O 模型 异步 I/O 模型允许并发执行 I/O 操作,而不用阻塞主线程。这对于高性能应用程序至关重要,因为可以同时进行计算和其他活动。 C++ 中有两种主要类型...
    99+
    2024-05-08
    c++ 异步i/o
  • Storm支持哪种数据处理模式
    Storm支持以下两种主要数据处理模式: 流式处理(Stream Processing):Storm最为擅长的数据处理模式之一是流...
    99+
    2024-04-02
  • Flink支持的部署模式有哪些
    Flink支持的部署模式包括: 单机模式:在单机上搭建集群,适合开发和调试。 Standalone模式:使用Flink自带的资源管...
    99+
    2024-04-02
  • C++ lambda 表达式是否支持模板?
    是的,c++++ lambda 表达式支持模板,可让你创建根据不同类型参数定制的通用 lambda 表达式:语法:[template-parameter-list](parameters...
    99+
    2024-04-17
    lambda 模板 c++
  • laravel模板怎么支持URL
    本篇内容主要讲解“laravel模板怎么支持URL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“laravel模板怎么支持URL”吧!一、Laravel中支持URL在使用Laravel模板时,需...
    99+
    2023-07-06
  • JAVA NIO怎么构建I/O多路复用的请求模型
    这篇文章主要介绍“JAVA NIO怎么构建I/O多路复用的请求模型”,在日常操作中,相信很多人在JAVA NIO怎么构建I/O多路复用的请求模型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JAVA NIO怎...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作