- 博客(13)
- 收藏
- 关注
原创 Netty源码深度解析-ByteBuf(1) ByteBuf简介
ByteBuf主要api有read/write,get/set,slice,duplicate,copy等系列方法。实现类上主要分为Unpooled和Pooled,并且支持分配HeapByteBuf及DirectByteBuf。
2022-02-23 08:32:27
820
原创 Netty源码深度解析-服务端新连接接入
导读原创文章,转载请注明出处。本文源码地址:netty-source-code-analysis本文所使用的netty版本4.1.6.Final:带注释的netty源码本文本文简要地介绍服务端新连接的接入过程,逻辑比较简单,主要功能在NioMessageUnsafe和ServerBootsrapAcceptor中。1 服务端的启动过程1.1 两个EventLoopGroup我们在“服务端的启动过程”这篇文章中看到过ServerBootstrap在启动时需要传入两个EventLoop,一个叫b
2021-07-27 20:34:15
189
原创 Netty源码深度解析-Pipeline(2) 以客户端为例分析Pipeline工作原理
导读原创文章,转载请注明出处。本文源码地址:netty-source-code-analysis本文所使用的netty版本4.1.6.Final:带注释的netty源码在"Pipeline的构造"这一节中我们已经讲过了,Pipeline中利用了责任链模式,而发挥责任链功能的数据结构就是由多个HandlerContext构成的的双向链表,而每一个HandlerContext又对应一个ChannelHandler(组合模式或者继承)。由于每一个HandlerContext对应一个ChannelHandl
2021-07-23 21:03:23
365
原创 Netty源码深度解析-Pipeline(1) Pipeline的构造
导读原创文章,转载请注明出处。本文源码地址:netty-source-code-analysis本文所使用的netty版本4.1.6.Final:带注释的netty源码Pipeline这个词翻译过来就是“流水线”的意思,读到这里有了解过设计模式的同学应该已经想到了,这里用到的是“责任链模式”。本文我们将以DefaultChannelPipeline为例看一下Pipeline的构造以及其中重要的数据结构。1 和Pipeline相关的其他组件1.1 ChannnelHandler这是Channel
2021-06-02 20:13:57
369
原创 Netty源码深度解析-EventLoop(2)EventLoop的工作原理
导读原创文章,转载请注明出处。本文源码地址:netty-source-code-analysis本文所使用的netty版本4.1.6.Final:带注释的netty源码EventLoop在netty中发挥着驱动引擎的作用,本文我们以NioEventLoop为例分析一下EventLoop的工作原理。1 EventLoop线程的创建时机还记得我们在“服务端启动”和“客户端启动”这两篇文章中都有一个重要操作吗?就是将Channel注册到EventLoop上。我们看AbstractChannel的reg
2021-05-21 08:41:42
295
原创 Netty源码深度解析-EventLoop(1)EventLoop的构造
导读原创文章,转载请注明出处。本文源码地址:netty-source-code-analysis本文所使用的netty版本4.1.6.Final:带注释的netty源码EventLoop在netty中发挥着驱动引擎的作用,本文我们以NioEventLoopGroup和NioEventLoop为例着重分析一下EventLoopGroup和EventLoop的创建、一些重要的数据结构和netty的一些优化。1 NioEventLoopGroup咱们以NioEventLoopGroup为例进行分析。N
2021-05-20 09:46:21
231
原创 netty源码深度解析-启动引导(2)客户端启动流程
导读原创文章,转载请注明出处。本文源码地址:netty-source-code-analysis本文所使用的netty版本4.1.6.Final:带注释的netty源码在“BIO vs NIO”这篇文章中我们给出了使用jdk原生nio编写的客户端Hello World。还记得其中的关键步骤吗,咱们再来温习一下。创建一个SocketChannel连接到服务方端口将SocketChannel设置为非阻塞的将SocketChannel注册到selector上今天我们就以这几个
2021-05-11 08:53:18
197
原创 netty源码解析-启动引导(1) 服务端启动流程
导读原创文章,转载请注明出处。本文源码地址:netty-source-code-analysis本文所使用的netty版本4.1.6.Final:带注释的netty源码我们在“BIO vs NIO”这篇文件中我们给出了使用jdk原生nio编写的服务端Hello World。还记得其中的关键步骤吗,咱们再来温习一下。创建一个ServerSocketChannel将ServerSocketChannel设置为非阻塞的将ServerSocketChannel绑定到8000端口将Se
2021-04-27 17:22:26
181
原创 netty源码解析-前言(3)netty整体架构
导读原创文章,转载请注明出处。本文源码地址:netty-source-code-analysis两篇开胃小菜过后,我已经有一些粉丝了,还有一些粉丝加了我的好友,有粉丝通过微信对我的文章表示了肯定,在此表示感谢。哈喽,大佬好,您的公众号文章写的很细致,质量很好,希望以后能向您学习,沟通交流我也是从一个netty小白开始学习的,在学习中也遇到过很多困惑和难点。我尽量用比较通俗易懂的语言来写文章(话说比较高档的词汇我也不会),咱们像讲故事一样,一点点地讲netty。曾经我遇到过的困惑,后来怎么理解的
2021-04-23 08:52:56
226
1
原创 netty源码解析-前言(2)为什么用netty
导读原创文章,转载请注明出处。本文源码地址:netty-source-code-analysis为什么用netty?因为dubbo、sofa-rpc、rocketMQ、jetty等知名的的项目都在用,就是这么简单。平时我们在遇到技术难题的时候,第1个想法是什么呢:看看别人怎么搞的。我们在和同事争论技术方案的时候,最常说的一句话是什么:XXX(某知名框架/某知名公司)也是这么做的。思路没问题,看看别人怎么做的,尤其是知名权威的项目/公司是怎么做的,借鉴一下,这是最快速的解决问题的方式。1 用netty
2021-04-23 08:50:37
97
原创 netty源码解析-前言(1) BIO vs NIO
使用过java的同学想必对BIO和NIO这两个词汇并不陌生,即便平时工作中没有接触过,也会在招聘需求里见过,或者面试被问到过。那么BIO和NIO到底表示什么意思呢,BIO即blocking io,NIO有的解释为new io,有的解释为none blocking io,个人认为none blocking io更为准确,至于为什么,咱们接下来看。
2021-04-23 08:47:10
142
1
原创 多任务操作系统是如何切换进程
多任务操作系统在并行执行多任务时,实际上是不断地在任务间进行切换的,也就是切换上文。首先要保存前一个进程的上下文,然后调度一个就绪的进程,并载入该进程的上下文,cpu开始执行该进程的代码。在切换上下文时,最重要的就是切换eip寄存器的值和esp寄存器的值,eip寄存器指向的指令即时cpu即将执行的指令,esp寄存器指向栈顶。下面我们通过一段比较简单的代码来演示一下cpu是如何切换进程的。这是修
2017-03-05 21:08:34
4126
原创 cpu的工作原理及程序调用过程中栈的变化
计算机在执行过程中,最重要的寄存器就是eip,eip指向哪里,cpu就从哪里取指执行,所以要想让程序执行某一个指令,只需要让eip寄存器指向该指令的内存地址即可。但是程序员是不能直接操作eip寄存器的,即不能通过movl指令直接给eip寄存器赋值。eip寄存器的值在顺序执行过程中,执行一条指令后会自动变化指向下一条指令,这是程序员无需操心的。要想不按顺序执行,则可通过call、ret、jmp、pop
2017-02-22 10:05:47
932
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人