随笔分类 -  Netty

摘要:19年写的一个基础的TCP服务框架,内置了一个简单IOC容器,当时的目标是一方面能作为组件供第三方集成实现TCP通讯相关功能,另一方面作为提供一种服务框架范式。所以框架核心点主要还是通过适度的封装,隐藏底层的通讯细节,最终调用者接受到的是经过合包分包处理的字节数组,不涉及具体的协议解析,大家如果使用 阅读全文
posted @ 2022-10-08 10:02 DaFanJoy 阅读(1099) 评论(0) 推荐(0) 编辑
摘要:引用计数是一种常用的内存管理机制,是指将资源的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。Netty在4.x版本开始使用引用计数机制进行部分对象的管理,其实现思路并不是特别复杂,它主要涉及跟踪某个对象被引用的次数。在Netty具体代码中需要通过引用计数进行内存管理的对象,会基于Refe 阅读全文
posted @ 2021-12-30 10:03 DaFanJoy 阅读(967) 评论(0) 推荐(0) 编辑
摘要:Netty中的内存分配是基于ByteBufAllocator这个接口实现的,通过对它的具体实现,可以用来分配我们之前描述过的任意类型的BytebBuf实例;我们先看一下ByteBufAllocator接口中的定义的关键方法 一、ByteBufAllocator 构造 public interface 阅读全文
posted @ 2020-11-26 09:04 DaFanJoy 阅读(1537) 评论(0) 推荐(0) 编辑
摘要:ByteBuf是Netty中主要的数据容器与操作工具,也是Netty内存管理优化的具体实现,本章我们先从整体上对ByteBuf进行一个概述; AbstractByteBuf是整个ByteBuf的框架类,定义了各种重要的标志位与API供具体的实现类使用与实现;下面我们就从AbstractByteBuf 阅读全文
posted @ 2020-08-31 09:38 DaFanJoy 阅读(1616) 评论(0) 推荐(0) 编辑
摘要:在日常的网络开发当中,协议解析都是必须的工作内容,Netty中虽然内置了基于长度、分隔符的编解码器,但在大部分场景中我们使用的都是自定义协议,所以Netty提供了 MessageToByteEncoder<I> 与 ByteToMessageDecoder 两个抽象类,通过继承重写其中的encode 阅读全文
posted @ 2020-06-23 09:03 DaFanJoy 阅读(2345) 评论(1) 推荐(1) 编辑
摘要:ChannelHandler中异常的获取与处理是通过继承重写exceptionCaught方法来实现的,本篇文章我们对ChannelPipeline中exceptionCaught异常事件的传播进行梳理分析 1、出站事件的传播示例 首先我们继续在之前的代码上进行改造,模拟异常事件的传播 public 阅读全文
posted @ 2020-04-27 18:35 DaFanJoy 阅读(7560) 评论(0) 推荐(0) 编辑
摘要:上篇文章中我们梳理了ChannelPipeline中入站事件的传播,这篇文章中我们看下出站事件的传播,也就是ChannelOutboundHandler接口的实现。 1、出站事件的传播示例 我们对上篇文章中的示例代码进行改造,在ChannelPipeline中加入ChannelOutboundHan 阅读全文
posted @ 2020-03-16 20:52 DaFanJoy 阅读(894) 评论(0) 推荐(0) 编辑
摘要:之前的文章中我们说过ChannelPipeline作为Netty中的数据管道,负责传递Channel中消息的事件传播,事件的传播分为入站和出站两个方向,分别通知ChannelInboundHandler与ChannelOutboundHandler来触发对应事件。这篇文章我们先对Netty中入站事件 阅读全文
posted @ 2020-02-14 12:44 DaFanJoy 阅读(905) 评论(0) 推荐(1) 编辑
摘要:上篇文章中,我们对Netty中ChannelPipeline的构造与初始化进行了分析与总结,本篇文章我们将对ChannelHandler的添加与删除操作进行具体的的代码分析; 一、ChannelHandler的添加 下面是Netty官方的一段demo源码,可以看到在服务端初始化时执行了向Channe 阅读全文
posted @ 2019-12-07 16:27 DaFanJoy 阅读(917) 评论(0) 推荐(1) 编辑
摘要:Netty中ChannelPipeline实际上类似与一条数据管道,负责传递Channel中读取的消息,它本质上是基于责任链模式的设计与实现,无论是IO事件的拦截器,还是用户自定义的ChannelHandler业务逻辑都做为一个个节点被添加到任务链上。 一、ChannelPipeline的设计与构成 阅读全文
posted @ 2019-10-26 15:00 DaFanJoy 阅读(834) 评论(0) 推荐(1) 编辑
摘要:前面两篇文章Netty源码分析之NioEventLoop(一)—NioEventLoop的创建与Netty源码分析之NioEventLoop(二)—NioEventLoop的启动中我们对NioEventLoop的创建与启动做了具体的分析,本篇文章中我们会对NioEventLoop的具体执行内容进行分 阅读全文
posted @ 2019-06-11 22:04 DaFanJoy 阅读(993) 评论(0) 推荐(2) 编辑
摘要:上篇文章中我们对Netty中NioEventLoop创建流程与源码进行了跟踪分析。本篇文章中我们接着分析NioEventLoop的启动流程; Netty中会在服务端启动和新连接接入时通过chooser选择器,分别为NioServerSocketChannel与NioSocketChannel选择绑定 阅读全文
posted @ 2019-03-23 15:13 DaFanJoy 阅读(1053) 评论(0) 推荐(2) 编辑
摘要:一、NioEventLoop的概述 NioEventLoop做为Netty线程模型的核心部分,从本质上讲是一个事件循环执行器,每个NioEventLoop都会绑定一个对应的线程通过一个for(;;)循环来处理与 Channel 相关的 IO 操作, 包括 调用 select 等待就绪的 IO 事件、 阅读全文
posted @ 2019-03-10 22:44 DaFanJoy 阅读(3338) 评论(0) 推荐(1) 编辑
摘要:ServerBootstrap与Bootstrap分别是netty中服务端与客户端的引导类,主要负责服务端与客户端初始化、配置及启动引导等工作,接下来我们就通过netty源码中的示例对ServerBootstrap与Bootstrap的源码进行一个简单的分析。首先我们知道这两个类都继承自Abstra 阅读全文
posted @ 2018-11-03 17:47 DaFanJoy 阅读(1440) 评论(0) 推荐(1) 编辑
摘要:在netty基本组件介绍中,我们大致了解了netty的一些基本组件,今天我们来搭建一个基于netty的Tcp服务端程序,通过代码来了解和熟悉这些组件的功能和使用方法。 首先我们自己创建一个Server类,命名为TCPServer 第一步初始化ServerBootstrap,ServerBootstr 阅读全文
posted @ 2018-10-01 17:38 DaFanJoy 阅读(26402) 评论(4) 推荐(1) 编辑
摘要:Netty做为一款用于搭建高性能网络应用程序的高级框架,由以下几个主要构件组成: 一、Channel Channel 是java NIO的一个基本构造,可以把channel看作是传入或者传出的数据载体,可以被打开或者关闭,连接或者断开连接。简单来说其实就是我们平常网络编程中经常使用的socket套接 阅读全文
posted @ 2018-09-22 10:22 DaFanJoy 阅读(2708) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示