摘要:
当有多个 git 账号时, 比如: 一个 gitee, 用于公司内部的工作开发; 一个 github, 用于自己进行一些开发活动; 解决方法 生成一个公司用的 SSH-Key $ ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/gitee_id_ 阅读全文
摘要:
UnpaddedInternalThreadLocalMap InternalThreadLocalMap继承自UnpaddedInternalThreadLocalMap所以先来看一下这个类. // 内部数据结构, 用于存储 Netty 和所有 FastThreadLocal 的线程局部变量. c 阅读全文
摘要:
ChannelOutboundBuffer 是 Netty 发送缓存, 当 Netty 调用 write 时数据不会真正的去发送而是写入到 ChannelOutboundBuffer 缓存队列, 直到调用 flush 方法 Netty 才会从 ChannelOutboundBuffer 取数据发送. 阅读全文
摘要:
继承关系 该接口与 给大动脉来一刀 - ChannelPipeLine 接口一样都继承了 ChannelOutboundInvoker 和 ChannelInboundInvoker, 这两个接口下面有说. 关于 AttributeMap 接口可以储存自定义的属性. ChannelInboundIn 阅读全文
摘要:
Future 最顶端的是 java.util.concurrent.Future 接口, 表示一个异步操作后的结果对象. 这里面有三个关键字: 异步, 操作, 结果. 首先, Future 首先是一个 “结果”; 其次这个结果产生于一个 “操作”, 操作具体是什么可以随便定义; 最后这个操作是 "异 阅读全文
摘要:
在 4.不完全的 NioEventLoopGroup & NioEventLoop 源码分析 文章中, 只是简单的说了一下 NioEventLoop 的继承, 以及实例化过程. 并没有对线程的开启以及任务的执行等有解释, 本篇主要来看这些. 创建 EventLoop 线程 EventLoop 线程的 阅读全文
摘要:
在 5.不完全的 ServerBootstrap 启动过程源码分析 文章中, 发现有好多类没有了解过, 后续几篇文章都会先了解这些类的左右, 然后在开始说处理客户端连接的问题. ChannelPipeline 是 ChannelHandler 的管理容器, 它内部维护了一个 ChannelHandl 阅读全文
摘要:
通过名字可以看出它是一个服务端的引导, 就是为了引导创建 Channel. Bootstrap 的继承结构 在 netty 的代码中, 类 ServerBootstrap 和类 Bootstrap 都继承自基类 AbstractBootstrap: channel类型 用于引导的bootstrap实 阅读全文
摘要:
创建服务端时需要先实例化两个 NioEventLoopGroup 分别为 bossGroup 和 workerGroup. bossGroup: 只是处理连接请求. workerGroup: 处理客户端业务逻辑. 上图是该类的继承关系, 我个人觉得没必要去了解完全这些类的作用, 只需要记住几个重点类 阅读全文
摘要:
关于 2.线程模型概述 有人问能回答上来就可以了. 但是对于 Netty 模型来说, 一定要了解透彻后才继续学习. 下面的图是我自己根据网上疯传的一种一张 Netty 模型图改的, 看着是不是有点像 主从 Reactor 多线程. Netty 抽象出了两组线程池, BossGroup 专门用来处理客 阅读全文