Netty介绍(一)————为什么使用Netty

2023-11-08

Netty的简单介绍

Netty 是一个 NIO client-server(客户端服务器)框架,使用 Netty 可以快速开发网络应用,例如服务器和客户 端协议。 Netty 提供了一种新的方式来使开发网络应用程序,这种新的方式使得它很容易使用和有很强的扩展性。 Netty 的内部实现时很复杂的,但是 Netty 提供了简单易用的 api 从网络处理代码中解耦业务逻辑。 Netty 是完全基 于 NIO 实现的,所以整个 Netty 都是异步的。
简单点说就是Netty提供了一个简单,间接的方法来操作网络之间的通讯。

不选择JAVA原生NIO和IO的原因

基于IO的经典同步堵塞模型:

经典的IO模型也就是传统的服务器端同步阻塞I/O处理(也就是BIO,Blocking I/O)的经典编程模型,当我们每得到一个新的连接时,就会开启一个线程来处理这个连接的任务。之所以使用多线程,主要原因在于socket.accept()、socket.read()、socket.write()三个主要函数都是同步阻塞的,当一个连接在处理I/O的时候,系统是阻塞的,如果是单线程的话必然就挂死在那里;但CPU是被释放出来的,开启多线程,就可以让CPU去处理更多的事情。

因此这个模型最本质的问题在于,严重依赖于线程。但线程是很”贵”的资源,主要表现在:

  1. 线程的创建和销毁成本很高,在Linux这样的操作系统中,线程本质上就是一个进程。创建和销毁都是重量级的系统函数。
    线程本身占用较大内存,像Java的线程栈,一般至少分配512K~1M的空间ÿ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Netty介绍(一)————为什么使用Netty 的相关文章

随机推荐

  • HTTP协议——缓存

    缓存的概念 缓存这个东西真的是无处不在 有浏览器端的缓存 有服务器端的缓存 有代理服务器的缓存 有ASP NET页面缓存 对象缓存 数据库也有缓存 等等 http中具有缓存功能的是浏览器缓存 以及缓存代理服务器 http缓存的是指 当Web
  • C++的volatile

    在C 中 编译器为了提高代码的执行效率 常常会对变量进行反向优化 比如将变量缓存在寄存器中 这样可以减少对内存的访问次数 提高访问速度 然而 在某些情况下 我们希望确保每次访问变量时都能从内存中读取最新值 而不是使用缓存中的旧值 volat
  • colmap论文学习

    Structure from Motion Revisited 该文章是colmap对应的稀疏重建论文 主要讲了稀疏重建的几个步骤 特征提取与匹配 colmap利用SIFT算子进行特征提取与匹配 匹配完之后就获得了两两图像之间的匹配对 但是
  • swift 中的标记关键字

    1 MARK 我们知道 在OC中我们可以使用pragma mark添加一些说明 能够快速定位到相应的代码 例如 pragma mark 说明文字 那么在swift中怎么实现类似的功能呢 其实也很简单 只要在需要添加说明的地方加上如下格式的注
  • Linux如何查看目录占用空间大小?

    在Linux操作系统中 查看目录占用空间的大小可以使用du命令来完成 那么Linux du命令是什么 如何使用 常用参数有哪些 本文为大家详细介绍一下 在Linux中 可以使用du命令来查看目录占用空间大小 Linux du命令 du是统计
  • 运维常用的shell命令.md

    1 后台启动脚本 nohup start sh gt dev null 2 gt 1 dev null代表linux的空设备文件 所有往这个文件里面写入的内容都会丢失 俗称 黑洞 2 gt 1错误输出2重定向到标准输出1 意思是标准输出和错
  • 这10种赚钱方法,用手机就可以做,看看哪种适合你?

    现在很多人都想着做第二职业 也就是兼职赚钱 即使能够赚个零花钱也不错 今天给大家分享10个可以利用自己的空闲时间 可以赚到钱的办法 一部手机就能操作的赚钱方式 看看哪一种适合你 只要你有网络主播这一方面的才能 很多网络直播平台都会按照主播的
  • matlab坐标污染物浓度,基于MATLAB城市空气质量评价体系.doc

    基于MATLAB城市空气质量评价体系 基于MATLAB城市空气质量评价体系 本文针对大气污染问题 采用动态加权综合评价方法建立了合理的空气质量评价模型 同时 采用灰色关联度分析方法和BP神经网络模型较好地研究了空气质量和气象参数之间的关系
  • 深度解密Go语言之context

    Go 语言的 context 包短小精悍 非常适合新手学习 不论是它的源码还是实际使用 都值得投入时间去学习 这篇文章依然想尝试全面 深入地去研究 文章相比往期而言 整体不长 希望你看完可以有所收获 什么是 context Go 1 7 标
  • IDEA如何搭建Maven(安装&下载&配置)

    https www cnblogs com xihehua p 9639045 html 1 下载 Maven 压缩包 https maven apache org Use Download gt Files Binary zip arch
  • Linux 递归修改文件时间日期

    在操作 Linux 系统时 发现文件时间总是出现错误 在文件时间超越系统时间时 在执行文件时 就有可能出现错误 查看文件时间 stat test txt 修改一个文件的时间 touch d 2020 11 11 11 00 00 test
  • 【Bugs】解决报错CondaValueError- prefix already exists

    Bugs CondaValueError prefix already exists 1 问题情景 在conda create n ur env name python 3 7的时候报错 WARNING A directory alread
  • Unity游戏性能分析最终指南 02

    设置每帧时间预算 帧率 fps 并不是衡量游戏稳定体验的理想指标 考虑以下情况 在运行时的前0 75s内渲染了59帧 然后接下来的1帧需要0 25s才能渲染完毕 虽然是60fps 但实际上会让玩家感觉卡顿 这是需要设置帧时间预算的重要原因之
  • 数据分析师从业必问的5个问题~

    写在前面 经常有小伙伴问船长一些数据分析从业的问题 类似如何转行 毕业如何择业 如何学习成为数据分析师 今天就抽空总结了一下大家入行数据分析的问题 基本囊括在以下5个问题中 下面5个问题将解答你的困惑 也可能在后续的面试中问到 另外我为你准
  • 23062QTday2

    完善登录框 点击登录按钮后 判断账号 admin 和密码 123456 是否一致 如果匹配失败 则弹出错误对话框 文本内容 账号密码不匹配 是否重新登录 给定两个按钮ok和cancel 点击ok后 会清除密码框中的内容 继续进行登录 如果点
  • CondaValueError: Malformed version string ‘~‘: invalid character(s)

    创建python3 6环境 conda create n py36 python 3 6 anaconda和 升级conda环境 conda update conda和conda upgrade n base c defaults over
  • Unity3DAI行为------避开障碍物简单实现

    public float speed 20 0f public float mass 5 0f public float force 50 0f public float minimumDistToAvoid 20 0f private f
  • 键盘的测试点

  • ajax tottenham,Tottenham end Ajax dream in injury-time, reach first Champions League final

    Video PlayerClose AMSTERDAM May 9 Xinhua Tottenham Hotspur set up a Champions League final against Liverpool after beati
  • Netty介绍(一)————为什么使用Netty

    Netty的简单介绍 Netty 是一个 NIO client server 客户端服务器 框架 使用 Netty 可以快速开发网络应用 例如服务器和客户 端协议 Netty 提供了一种新的方式来使开发网络应用程序 这种新的方式使得它很容易