网络编程与Netty
文章平均质量分 80
这部分会从计算机网络相关的基础,到I/O相关的知识,然后会讲解关于Netty比较重要的组件及其使用,最后会通过源码来认识Netty的整个执行流程
程序バ鱼仔
本人2020届毕业生。蓝桥杯国赛二等奖。刚开始写博客,从java基础开始,都是自己的理解,如果有什么不对的,还望各位大佬指点指点。
展开
-
网络编程与Netty(四) Netty源码-(Ⅸ)
关于netty的源码分析,暂时就告一段落了,接下来会开始spring系列的源码讲解,希望大家能从我的文章学到知识,谢谢大家的阅读!原创 2022-02-09 22:45:48 · 412 阅读 · 0 评论 -
网络编程与Netty(四) Netty源码-(Ⅷ)
在上一小节的讲解中,我们对doBind方法中的initAndRegister()方法进行了底层源码的分析,而在这小节中主要是对doBind方法中另一个比较重要的方法调用做讲解—doBind0()方法,这个方法做了实际的绑定工作:private static void doBind0( final ChannelFuture regFuture, final Channel channel, final SocketAddress localAddress,原创 2022-02-04 14:14:47 · 923 阅读 · 0 评论 -
网络编程与Netty(四) Netty源码-(Ⅶ)
netty的启动流程源码讲解!!!原创 2022-01-16 15:14:47 · 185 阅读 · 0 评论 -
网络编程与Netty(四) Netty源码-(Ⅵ)
netty中重要组件EventLoop部分源码详细讲解过程原创 2022-01-03 22:23:39 · 419 阅读 · 0 评论 -
网络编程与Netty(四) Netty源码-(Ⅴ)
Netty之Unsafe系列源码原创 2021-12-13 21:59:52 · 494 阅读 · 0 评论 -
网络编程与Netty(四) Netty源码-(Ⅳ)
这是Netty源码的第四篇文章,喜欢的读者可以点个赞支持下,谢谢!欢迎文章末尾留言支持不足和提问!原创 2021-12-01 22:26:04 · 311 阅读 · 2 评论 -
网络编程与Netty(四) Netty源码-(Ⅲ)
Channel 系列源码分析 我们用到了两种Channel----NioServerSocketChannel和NioSocketChannel,先来看这两个类的关系图:NioServerSocketChannelNioSocketChannel 看到这两个类的关系图可以发现,其实他们都有共同的父类(或实现的接口)Channel、AbstractChannel、AbstractNioChannel,而不同的是NioServerSocketChannel继承的是AbstractNioMessa原创 2021-11-21 23:44:06 · 713 阅读 · 0 评论 -
网络编程与Netty(四) Netty源码-(Ⅱ)
ChannelHandlerContext ChannelHandlerContext 代表了一个 ChannelHandler 和 ChannelPipeline 之间的关系,Netty会把 ChannelHandler 包装进 ChannelHandlerContext 的实例 DefaultChannelHandlerContext, 然后把 ChannelHandlerContext 作为元素来组成链表。所以 ChannelHandler 中一定有获得ChannelHandler 和 Chann原创 2021-11-18 23:35:22 · 530 阅读 · 0 评论 -
网络编程与Netty(三) 初识Netty-(Ⅳ)
ByteBuf ByteBuf API的优点:它可以被用户自定义的缓冲区类型扩展通过内置的复合缓冲区类型实现了透明的零拷贝容量可以按需增长(类似于JDK的StringBuilder)在读和写两种模式之间切换不需要调用ByteBuffer的flip()方法读和写使用了不同的索引支持方法的链式调用支持引用计数支持池化 ByteBuf维护了两个不同的索引,名称以read或者write开头的ByteBuf方法,将会推进其对应的索引,而名称以set或者get开头的操作则不会。原创 2021-11-06 14:39:20 · 129 阅读 · 0 评论 -
网络编程与Netty(四) Netty源码-(Ⅰ)
前面主要是介绍了在Netty中每个组件的使用和作用,在运行的时候,Netty中组件一起基于Netty的网络通信做出了贡献,而且也有说到一些并未给出证据的结论,例如,在每个EventLoop中是否真的是有一个线程和一个队列?在ChannelPipeline中是否真的默认会有一个head和一个tail共两个ChannelHandler?那么接下来我们来一一解析Netty中的组件,包括ChannelPipeline、ChannelHandlerContext、ChannelHandler、EventLoop、Ch原创 2021-11-09 22:05:38 · 558 阅读 · 0 评论 -
网络编程与Netty(三) 初识Netty-(Ⅲ)
ChannelPipeline 和 ChannelHandlerContextChannelPipeline 接口 当Channel被创建时,它将会自动的分配一个新的ChannelPipeline,并且是不可替换的。Channel不能附加到另一个ChannelPipeline。这个分配工作是由netty完成的,不需要开发人员操作。 当数据在ChannelHandler中被处理,然后传递下到下一个ChannelHandler,实际上就是在Pipeline中传递,而传递的顺序由它们被添加的顺序所决定的原创 2021-10-31 15:04:12 · 153 阅读 · 0 评论 -
网络编程与Netty(三) 初识Netty-(Ⅱ)
进一步了解Netty重要组件上一节中学习了Netty中比较常用且重要的组件,并且通过编写了"Hello netty"的小案例来使用这些组件。现在我们在上一节课的基础上,来更深层次的去了解Netty中重要的组件。Channel我们都知道在java的原生网络编程中,我们通过使用Socket进行网络通信,但是使用起来还是有些复杂的,而Channel提供的API,可以用于所有的IO操作,大大降低了直接使用Socket类的复杂性。每个Channel在创建的时候都会被注册到一个EventLoop中,那就意味着他有原创 2021-10-23 12:47:21 · 210 阅读 · 0 评论 -
网络编程与Netty(三) 初识Netty-(Ⅰ)
Netty简介原创 2021-10-18 22:50:17 · 101 阅读 · 0 评论 -
走进网络编程与Netty(二)
网络编程与Netty(二) java原生网络编程常见知识点 socket:是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。将复杂的TCP/IP协议族隐藏在socket接口后面,而我们只需要让socket去组织数据,达到符合指定的协议要求。 短连接:传统的HTTP是无状态的,浏览器和服务器没进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。也就是说短连接是指socket连接后发送数据然后接收完数据后马上断开连接。 长连接:长链接就是在建立socket连接后不管是否在原创 2021-10-12 23:38:26 · 87 阅读 · 0 评论 -
走进网络编程与Netty(一)-下
网络编程与Netty(一) 计算机网络基础部分-下TCP概述 TCP是面向连接的通信协议,通过三次握手建立连接才能开始数据的读写,通讯完成时要断开连接,由于TCP是面向连接的,所以只能用于端对端的通讯。 TCP提供的是一种可靠的数据流服务,数据有可能被拆分后发送,那么采用超时重传机制和应答确认机制是组成TCP可靠传输的关键设计。 在超时重传机制里面有个很重要的指标—重传超时的时间限定。网络环境并不是人为可以控制的,有时网络十分顺畅,有时有十分的卡顿,那么这个时间限定如果设置为一个固定值,是不科原创 2021-10-11 23:27:06 · 113 阅读 · 2 评论 -
走进网络编程与Netty(一)-上
网络编程与Netty(一) 计算机网络基础部分计算机网络体系OSI七层模型 开放系统互连参考模型 (Open System Interconnect 简称 OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系 统提供了一种功能结构的框架。其目的是为异种计算机互连提供一个共同的基础和标准框架,并为保持相关标准的一致性和兼容性提供共同的参考。这里所说的开放系统,实质上指的是遵循 OSI 参考模型和相关协议能够实现互连的具有各种应用目的原创 2021-10-10 23:57:57 · 581 阅读 · 0 评论