
Netty
文章平均质量分 91
程序猿进阶
要做就做第一,就算结果不是第一,也会是一个好成绩。 加油!我的未来不是梦。
展开
-
ChannelInboundHandlerAdapter 与 SimpleChannelInboundHandler 的区别
是不错的选择,如果操作是异步的话,那他的逻辑就有点麻烦了,例如你把数据交给另外的线程处理了,还没处理就会释放了。方法被调用时引用计数减1,当计数减少到0的时候会被显示清除,再次访问被清除的对象会出现访问冲突(这里想起了JVM判断对象是否存活的引用计数算法)。是提供了一种默认实现,子类如果要继承,需要覆盖父类中的方法,并且不需要调用。处理自由的优点也就提现出来了,可以更好的处理更多的特定场景。的好处是可以处理不同的类型对象,并且可以做释放。的好处则是更自由,在异步的场景下更适合。原创 2024-12-05 05:30:00 · 2267 阅读 · 47 评论 -
Java面试——Netty
一个数据或者事件可能会被多个 Handler 处理,在这个过程中,数据或者事件经流 ChannelPipeline,由 ChannelHandler 处理。在这个处理过程中,一个 ChannelHandler 接收数据后处理完成后交给下一个 ChannelHandler,或者什么都不做直接交给下一个 ChannelHandler。原创 2024-03-09 05:00:00 · 1984 阅读 · 80 评论 -
粘包与拆包
对于一些更加复杂的协议,可能有一些定制化的需求。通过继承。原创 2024-03-06 05:00:00 · 1632 阅读 · 61 评论 -
IO 与 NIO
阻塞:当一条线程执行或者方法时,这条线程会一直阻塞直到读取到了一些数据或者要写出去的数据已经全部写出,在这期间这条线程不能做任何其他的事情。非阻塞:与原有的有同样的作用和目的,但是使用的方式完全不同,支持面向缓冲区的、基于通道的操作。将以更加高效的方式进行文件读写操作。的核心在于:通道和缓冲区。通道表示打开设备(例如:文件、套接字)的连接。若需要使用系统,需要获取用于连接设备的通道以及用于容纳数据的缓冲区。对数据进行处理。当出现 、等方法是就会阻塞。三、阻塞 IO解决办法可以通过线程池创建多线程,为每一原创 2024-03-04 05:00:00 · 1148 阅读 · 72 评论 -
Netty5 入门HelloWorld
之前,查找缓冲区泄漏是很困难的,并且泄漏的警告信息也不是很有帮助。的后续版本,因此在架构上进行了一些重大调整,增加了许多新的功能和特性,使得其复杂性相较于。方法返回专门类型的参数,因此你不必在转换他们的返回值。这可以简化你的测试用例代码。的设计方式相似,因此它们之间的差异并不是特别大。中如果存在一个以上的属性容易是多余的。都有其自己的存储用户定义属性的容器。的主要区别在于它们的版本更新以及一些新特性的添加。对于在容器环境下运行的应用是不友好的,现在不是了。的方式,使用该特性需要指定一个用户自定义的。原创 2024-03-02 05:00:00 · 1675 阅读 · 55 评论 -
IO 流分类
磁盘与内存之间的数据交互,可以看做是一种数据的流动,按照流动方向,以内存为基准,分为输入 input 和输出 output,即流向内存的是输入流,流出内存的是输出流。Java IO操作主要是指使用 java.io包下的内容,进行输入、输出操作。输入也叫读取数据,输出也叫写出数据。根据数据的流向分为:输入流和输出流。根据数据的类型分为:字节流(以字节为单位)和字符流(以字符为单位)。输入流输出流字节流字符流ReaderWriter。原创 2024-02-19 05:00:00 · 13189 阅读 · 59 评论 -
Netty Channel 详解
【4】端口绑定:我们分析源码的入口从端口绑定开始,的创建过程就出来了,一句话总结就是:通过我们在。方法,就能看到,实际上是通过反射。到底是啥呢,什么时候传递进来的?【分析入口,端口绑定】在。】还记得之前我们的第一个。方法,我们传递了一个参数。方法里面,发现是调用了。的初始化:【接收服务端。【初始化并注册】进入。原创 2024-01-12 11:00:00 · 1224 阅读 · 29 评论 -
IdleStateHandler 心跳机制源码详解
也是一个,也需要被载入到中,加入我们在服务器端的中。我们在channel链中加入了,第一个参数是5,单位是秒,那么这样做的意思就是:在服务器端会每隔5秒来检查一下方法被调用的情况,如果在5秒内该链上的方法都没有被触发,就会调用//创建服务类//boss和workertry {//设置线程池//设置socket工厂,Channel 是对 Java 底层 Socket 连接的抽象//设置管道工厂@Override//设置后台转换器(二进制转换字符串)});并且还是个。原创 2023-12-03 22:23:12 · 3294 阅读 · 63 评论 -
Netty 高性能之零拷贝
Netty 零拷贝详解原创 2022-07-24 12:20:25 · 1440 阅读 · 52 评论 -
磁盘IO 基本常识
计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的 CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时SSD(固态硬盘)硬盘价格高昂,不能在短时间内完全替代传统硬盘。传统磁盘的 I/O读写速度成为了计算机系统性能提高的瓶颈,制约了计算机整体性能的发展。硬盘性能的制约因素是什么?如何根据磁盘I/O特性来进行系统设计?针对这些问题,本文将介绍硬盘的物理结构和性能指标,以及操作系统针对磁盘性能所做的优化,最后讨论下原创 2021-04-22 22:44:10 · 5710 阅读 · 67 评论 -
Netty堆外内存泄露排查
Netty堆外内存泄露排查来源于美团一、导读Netty 是一个异步事件驱动的网络通信层框架,用于快速开发高可用高性能的服务端网络框架与客户端程序,它极大地简化了 TCP 和 UDP 套接字服务器等网络编程。Netty 底层基于 JDK 的 NIO,我们为什么不直接基于 JDK 的 NIO 或者其他 NIO框架:使用 JDK 自带的 NIO 需要了解太多的概念,编程复杂。Netty 底层 IO 模型随意切换,而这一切只需要做微小的改动。Netty自带的拆包解包,异常检测等机制让我们从 NIO转载 2021-01-03 12:28:31 · 1111 阅读 · 0 评论 -
Netty 线程模型(Reactor 线程模型)
[Netty 线程模型(Reactor 线程模型)当说到 Netty 线程模型的时候,一般首先会想到经典的 Reactor 线程模型,尽管不同的 NIO 框架对于 Reactor 模式的实现存在差异,但本质上还是遵循了 Reactor 的基础线程模式。一、Reactor 单线程模型无论是C++ 还是 Java 编写的网络框架,大多数都是基于 Reactor 模型进行设计和开发,Reactor 模型基于事件驱动,特别适合海量的 I/O 事件。【1】Reactor 单线程模型,是指所有的 I/原创 2020-12-14 20:12:29 · 4285 阅读 · 37 评论