![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Netty
文章平均质量分 86
不是章鱼的章鱼哥
马达马达达内
展开
-
Netty 内存池(三)内存释放流程
Netty 内存池(三)内存释放流程原创 2022-06-18 15:50:11 · 883 阅读 · 1 评论 -
Netty 内存池(二)内存申请流程
Netty 内存池(二)内存申请流程原创 2022-06-18 15:49:29 · 442 阅读 · 0 评论 -
Netty 内存池(一)内部结构分析
Netty 内存池(一)内部结构分析原创 2022-06-18 15:48:20 · 689 阅读 · 0 评论 -
Netty ChannelOutboundBuffer出站缓冲区分析
Netty ChannelOutboundBuffer出站缓冲区分析原创 2022-06-18 15:46:57 · 452 阅读 · 0 评论 -
Netty LengthFieldBasedFrameDecoder源码分析
Netty LengthFieldBasedFrameDecoder源码分析原创 2022-06-18 15:45:12 · 948 阅读 · 0 评论 -
Netty pipeline & handler详解
Netty pipeline & handler详解原创 2022-06-18 15:43:16 · 471 阅读 · 0 评论 -
Netty RecvByteBufAllocator源码分析
在前面Netty系列的文章中,我们在客户端消息处理的时候埋下了一个问题,就是#NioByteUnsafe的read()方法中,有一个预测内存分配大小的组件还没有分析#NioByteUnsafepublic final void read() { //...... //缓冲区分配器 final ByteBufAllocator allocator = config.getAllocator(); //预测分配多大内存 final RecvByteBufAllocator.Handle原创 2021-12-07 20:10:11 · 1517 阅读 · 0 评论 -
NioEventLoop源码分析
前面几期带大家分析了Netty的服务端启动,客户端连接,客户端消息处理的流程,本期就来讲解Netty中一个极其重要的组件,事件循环器EventLoop。NioEventLoopGroup分析我们平常使用Netty的时候,一般都是用NioEventLoopGroup进行操作,所以我们从NioEventLoopGroup开始分析。首先来看一下NioEventLoopGroup的继承体系从上图可以看出NioEventLoopGroup是一个线程池,所以有一个execute()方法,并且实现了Schedul原创 2021-12-01 11:36:46 · 945 阅读 · 1 评论 -
Netty客户端消息处理流程
本期算是上一篇章的续篇,分析的是客户端连接上服务端后,向服务端发送消息,服务端是如何处理的。由于客户端通道是用来处理业务的,所以下面展示一个小demo,方便后面对客户端pipeline有个具体的实例分析。Netty服务端启动代码 EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try {原创 2021-11-29 15:53:41 · 1476 阅读 · 0 评论 -
Netty服务端处理客户端连接流程
在前面一期我们讲了Netty服务端启动流程,本期就带大家看看服务端是如何处理客户端连接的流程。我们直接从#NioEventLoop的processSelectedKeys()方法开始,此方法的被调用处在#NioEventLoop的run()方法中,熟悉NioEvetnLoop的朋友应该知道,所有的Io事件和任务队列中的任务,都是在run()方法中被执行到,所以run()是NioEvent Loop的核心方法,不熟悉的朋友也没事,后面会有单独篇章进行讲解,在这里只需要知道run()里面处理了什么即可。#N原创 2021-11-28 16:09:25 · 2460 阅读 · 0 评论 -
Netty服务端启动流程源码分析
Netty服务端启动代码模板 EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); //设置线程组 b.group(bossGroup, worke原创 2021-11-25 18:07:52 · 482 阅读 · 0 评论