走好每一步路--netty篇
本专栏主要记录找工作时需要具备的知识
灯塔先生
这个作者很懒,什么都没留下…
展开
-
写自己的netty源码分析--ByteBuf
绪论三个问题内存的类别有哪些? 如何减少多线程内存分配之间的竞争? 不同大小的内存是如何进行分配的?主要内容内存与内存管理器的抽象 不同规格大小和不同类别的内存的分配策略 内存的回收过程ByteBuf结构与重要API内存结构该结构其实是一个数组,有两个索引 readerIndex 和writerIndex,支持索引访问。* +------------...原创 2019-07-04 16:59:04 · 469 阅读 · 0 评论 -
写自己的netty源码分析--pipeline
绪论三个问题netty是如何判断ChannelHandler类型的? 对于ChannelHandler的添加应该遵循什么样的顺序? 用户手动触发事件传播,不同的触发方式有什么样的的区别?主要内容pipeline的初始化 添加和删除ChannelHandler 事件和异常的传播pipeline的初始化pipeline在创建Channel的时候被创建; pipeline节...原创 2019-07-01 15:35:00 · 347 阅读 · 0 评论 -
写自己的netty源码分析--新连接接入
绪论两个问题netty是在哪里检测到有新连接接入的? 新连接是怎样注册到NioEventLoop线程的?处理逻辑检测新连接 创建NioSocketChannel 分配线程及注册selector 向selector注册读事件检测新连接processSelectedKey(key, channel) [入口]NioMessageUnsafe.read() doRe...原创 2019-06-21 15:55:33 · 132 阅读 · 0 评论 -
写自己的netty源码分析--NioEventLoop
目录绪论步骤一:NioEventLoop创建new ThreadPerTaskExecutor()[线程创建器]每次执行任务时都会创建一个线程实体(FastThreadLocalThread--封装的一个线程)识别nioEventLoop-1-xxfor(){newChild()} [构造NioEventLoop]创建一个selector保存线程执行器Threa...原创 2019-06-14 17:37:54 · 184 阅读 · 0 评论 -
写自己的netty源码分析--服务端启动
目录服务端启动步骤一:创建服务端Channel步骤二:初始化服务端Channelinit()方法步骤三:注册selector步骤四:端口绑定netty整体架构Netty与Socket的对应关系 NioEventLoop --> Thread Channel --> Socket ByteBuf --> IO Bytes...原创 2019-06-13 20:32:29 · 150 阅读 · 0 评论