Netty
0xZzzz
目前就职于阿里,从事阿里新零售业务的相关开发工作,开源爱好者,喜欢阅读优秀开源框架的源码,热衷于研究各种技术,致力于成为一名有腔调的工程师
展开
-
Netty源码解析之ServerSocketChannel register流程
阅读须知Netty版本:4.1.14.Final 文章中使用/**/注释的方法会做深入分析正文我们在分析Bootstrap引导启动的源码时看到了Channel的注册,但是并没有做深入分析,本篇文章我们就来看一下Channel的注册流程。Channel的注册委托给了Channel内部的Unsafe来完成,我们来看实现: AbstractChannel.AbstractUnsafe...原创 2018-06-11 16:52:28 · 2769 阅读 · 0 评论 -
Netty源码解析之ServerSocketChannel close流程
###阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析###正文本篇文章我们来分析ServerSocketChannel的close流程,这是一个通用的流程,很多地方关闭ServerSocketChannel时都是复用这个流程。AbstractChannel.AbstractUnsafe:protected final void close...原创 2018-09-18 10:46:51 · 1631 阅读 · 0 评论 -
Netty源码解析之NioEventLoopGroup
阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析正文在分析BootStrap源码时我们给出的示例程序中,我们看到了NioEventLoopGroup的身影,之前我们分析了NioEventLoop的源码,从命名上就可以看出,NioEventLoopGroup维护了一组NioEventLoop,我们首先看一下它的构造方法,默认无参构造方法...原创 2018-08-25 16:23:14 · 640 阅读 · 0 评论 -
Netty源码解析之ByteToMessageDecoder
阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析正文之前我们介绍了ChannelHandler,这篇文章我们来介绍一个具体的子类实现ByteToMessageDecoder,它是一个抽象类,继承了ChannelInboundHandlerAdapter,所以它处理入站事件,从命名上可以看出,它是一个解码器,用于将ByteBuf解码成P...原创 2018-08-08 16:05:36 · 1511 阅读 · 0 评论 -
Netty源码解析之NioEventLoop
阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析正文Netty的EventLoop主要用于处理I/O操作,而NioEventLoop就是EventLoop的主要实现之一,它将Channel注册到Selector,因此在事件循环中可以对这些进行多路复用。我们首先来看NioEventLoop的层次结构: 我们首先来看它的构造方法:...原创 2018-08-13 10:21:51 · 892 阅读 · 0 评论 -
Netty源码解析之ChannelHandler
阅读须知Netty版本:4.1.14.Final 文章中使用/**/注释的方法会做深入分析正文原创 2018-07-24 17:26:53 · 761 阅读 · 0 评论 -
Netty源码解析之AbstractByteBuf
阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析正文当我们进行数据传输的时候,经常需要使用到缓冲区,对于JDK NIO而言,我们主要使用的是ByteBuffer,从功能角度而言,ByteBuffer完全可以满足NIO编程的需要,为什么Netty还要实现自己的ByteBuf呢?这里引用《Netty权威指南》中对这个问题的解释:Byte...原创 2018-07-18 10:39:39 · 1139 阅读 · 0 评论 -
Netty源码解析之UnpooledHeapByteBuf
阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析正文建议首先阅读Netty源码解析之AbstractByteBuf,UnpooledHeapByteBuf是AbstractByteBuf的子类,它是基于内存的非池化的字节缓冲区,我们首先来看它的主要成员变量: UnpooledHeapByteBuf:// 用于内存分配priva...原创 2018-07-23 11:03:54 · 1222 阅读 · 0 评论 -
Netty源码解析之ServerBootstrap
阅读须知Netty版本:4.1.14.Final文章中使用/**/注释的方法会做深入分析正文我们在之前的文章中分析了Bootstrap的源码,ServerBootstrap和Bootstrap都继承了AbstractBootstrap,所以它们有相似的逻辑,Bootstrap用户客户端,而ServerBootstrap用于服务端,我们还是先来看一个简单的服务端启动的方法:...原创 2018-05-31 21:25:10 · 1092 阅读 · 0 评论 -
Netty源码解析之ServerSocketChannel bind流程
阅读须知Netty版本:4.1.14.Final文章中使用/**/注释的方法会做深入分析正文提起Channel,相信熟悉java网络编程的同学都不陌生,Channel是JDK NIO类库的重要组成部分,用于非阻塞的I/O操作,同样的,Netty也提供了自己的Channel实现,为什么Netty不使用JDK NIO原生的Channel而要自己实现新的Channel呢?我们引用《...原创 2018-06-07 17:06:40 · 3548 阅读 · 3 评论 -
Netty源码解析之ChannelPipeline
阅读须知Netty版本:4.1.14.Final 文章中使用/**/注释的方法会做深入分析正文在之前的文章中,我们经常能看到ChannelPipeline的身影,本篇文章我们就来详细分析一下ChannelPipeline。下面为ChannelPipeline的注释介绍: ChannelHandler的列表,用于处理或拦截Channel的入站事件和出站操作。Channel...原创 2018-06-14 17:50:55 · 1276 阅读 · 0 评论 -
Netty源码解析之Bootstrap
阅读须知Netty版本:4.1.14.Final文章中使用/**/注释的方法会做深入分析正文private void connect(int port, String host) throws Exception { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap ...原创 2018-05-31 09:55:10 · 2495 阅读 · 0 评论 -
浅谈长连接保活机制
前言在日常工作中,我们经常会接触到长连接这个概念,例如一些RPC框架(如Dubbo)、网络通信框架(Netty)等,都会涉及到长连接的概念,我们来探究一下长连接是如何保活的。长连接&短连接首先我们要知道,TCP本身是没有长连接和短连接的区分的,长短与否完全取决于我们怎么用它。长连接和短连接的简单区分如下:短连接:每次通信时,创建新的socket;一次通信结束,调用 socket...原创 2019-10-07 22:29:23 · 2442 阅读 · 0 评论