Netty解析十六:Netty服务端启动流程

之前都在解析各个类的功能缺乏对Netty整体流程的了解,本篇将Netty服务端的启动流程画一下,将之前学习的内容连接起来。

阅读全文

Netty解析十五:NioEventLoop

在解析ServerBootstrap类的时候发现无法和之前解析的类整合起来,仔细分析发现少了NioEventLoop类的解析。NioEventLoop代表一个线程,而这个线程到底怎么运作影响了我们对于Netty理解。

阅读全文

Netty解析十四:ServerBootstrap

ServerBootstrap是我们在写Netty程序时接触的第二个类,负责简化Netty的启动。

阅读全文

Netty解析十三:ChannelHandlerContext

ChannelHandlerContext是ChannelHandler的上下文,关联了Channel、ChannelHandler和ChannelPipeline。

阅读全文

Netty解析十二:ChannelHandler

ChannelHandler负责处理I/O事件或者拦截I/O操作,并且通过ChannelPipeline转发到下一个处理程序。

ChannelHandler中没有提供什么方法,要是实现只能选择ChannelInboundHandler和ChannelOutboundHandler去处理inbound和outbound操作。

阅读全文

Netty解析十一:ChannelPipeline与DefaultChannelPipeline

在解析channel时发现channel内部实现非常依赖于ChannelPipeline,在每个事件节点都会调用ChannelPipeline的方法。

在Netty里,Channel是通讯的载体,而ChannelHandler负责Channel中的逻辑处理。

那么ChannelPipeline是什么呢?我觉得可以理解为ChannelHandler的容器:一个Channel包含一个ChannelPipeline,所有ChannelHandler都会注册到ChannelPipeline中,并按顺序组织起来。

阅读全文

Netty解析十:channel与AbstractNioChannel

在Netty里,Channel是通讯的载体,而ChannelHandler负责Channel中的逻辑处理。Channel是理解和使用Netty的核心,所以在正式解析流程前先将Channel做一个详细的拆解。

阅读全文

volatile几个场景总结

最近讨论volatile,产生几个问题并且想明白了,我觉得我对volatile有了一个比较深入的了解,所以对这几个场景进行总结。

阅读全文

volatile long/double原子读写原理

volatile不就是可见性和禁止重排序嘛有什么难的,结果我听到了volatile能够使long/double的读写变成原子读写,这我就懵了。long/double是64位的对于32位处理器需要两次完成,这就造成32位jvm上long/double读写没有原子性,但是volatile作用不就是禁止重排序和保证可见性怎么会有原子性的能力呢?

阅读全文

缓存行优化

在阅读Netty源码的时候看到了缓存行优化,之前也有看过类似的优化但一直不是很明白缓存行优化是干什么,今天就将缓存行优化作一个解析。

阅读全文