netty
文章平均质量分 85
~小龙~
勇往直前,不停奋斗!!!
展开
-
Netty(四)——HTTP服务端之例
HTTP(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。我们用的tomcat、jetty、jobss等各种服务器,其实就是一个服务端容器,方便我们直接部署我们应用,让用户通过使用客户端(WEB浏览器、手机H5、app等)借住HTTP协议,来完成信息的提交和获取。这篇文章简单总结一...原创 2018-10-28 23:34:37 · 1496 阅读 · 0 评论 -
Netty(十六)——总体之览
在前边我们查看了Netty核心类功能及一些源码的查看分析,这篇我们从总体架构的视角来看看Netty是什么样的,方便更好的理解。先简单总结一下Netty的核心类: ByteBuf 网络数据的基本单位总是字节,Java NIO 提供了ByteBuffer作为它的字节容器,但是其过于复杂且繁琐。Netty的ByteBuf替代ByteBuffer,一个强大的实...原创 2018-12-13 22:45:08 · 527 阅读 · 0 评论 -
Netty(十四)——EventLoop之式
前边讲了ByteBuf、Channel、Unsafe、ChannelPipeline、ChannelHandler等核心的类。这篇来学习学习EventLoop(EventLoopGroup)——Netty的线程。Netty的线程模型是经过精心的设计,既提高了框架的并发性能,又能在很大程度上避免死锁,局部还是实现了无锁化设计。非常值得学习的。 一,Reactor线程模型...原创 2018-12-04 00:21:53 · 978 阅读 · 0 评论 -
Netty(十二)——ChannelPipeline之观
前边文章的代码中,我们经常往pipeline中添加ChannelHandler来进行前后顺序控制处理实际业务。是不是类似Servlet和Filter过滤器,利用职责链模式的思想,通过一个一个的Handler进行业务传递处理。下边这个图感觉挺合适: 好,这篇文章主要对ChannelPipeline进行总结学习,首先看下总结思维导图: 一,功能说明...原创 2018-11-27 23:34:22 · 2920 阅读 · 0 评论 -
Netty(十三)——ChannelHandler之意
上篇我们讲述了消息容器ChannelPipeline的相关知识,这篇我们来看下由它管理的,负责对I/O事件或者I/O操作进行拦截和处理,可以选择性的拦截和处理自己感兴趣的事件,也可以透传和终止事件的传递,也是由我们亲自实现的ChannelHandler业务处理。而Netty也帮我们实现一些通用的Handler,我们直接用就可以,前边写的例子中应该都有体会。我们还是来先看知识思维导图吧...原创 2018-11-30 00:57:28 · 1521 阅读 · 0 评论 -
Netty(十一)——Unsafe容貌之揭
上一篇 末尾简单提到了JDK的Unsafe类,其实是调用了一些底层的Native的一些方法实现,不希望用户调用的。而Netty中的Unsafe类实际上也是Channel的辅助类,不应该被用户直接调用的。实际的IO的读写操作都是有Unsafe完成的。好,我们简单总结一下。 一,AIP接口功能列表:Unsafe-API功能 序号 接口 注释 1, ...原创 2018-11-18 01:16:36 · 1104 阅读 · 0 评论 -
Netty(十)——Channel功能之剖
Channel是netty网络操作抽象类,它聚合网络的读、写、客户端发起连接、主动关闭连接、链路关闭,获通信双方的网络地址等,也包括获取该Chanel的EventLoop获取缓冲分配器的ByteBufAllocator和pipeline等。也是非常非常重要的。 一,看下它的设计理念:1,Netty在Channel接口层,采用Facade模式进行统一封装,将网络I/O操...原创 2018-11-16 00:41:22 · 780 阅读 · 0 评论 -
Netty(七)——客户端创建之意
上一篇,看了Netty创建Server的步骤,和一些源码跟踪,这篇来看看Client创建的流程以及一些源码分析,还是我们到前边博客中,随便找一个完整的Client创建的示例代码来看。 Netty创建Client的流程其实和Server的挺类似的,下边,还是来看一张时序图: 下边,来梳理一下上边的创建流程:1,用户创建Bootstrap实例,通过API设...原创 2018-11-08 23:59:40 · 787 阅读 · 0 评论 -
Netty(九)——ByteBuf源码之析
ByteBuf在Netty占据着中重要的位置,上篇《Netty——ByteBuf功能之说》讲了ByteBuf的工作原理和重要功能介绍。这篇从源码的角度来看ByteBuf。首先,来看一下主要的类继承结构图: 我们从两个角度看下上图: 从内容分配角度上分为:1,堆内存(HeapByteBuf)字节缓冲区,特点是内存的分配和回收速度快,可被JVM自动回收...原创 2018-11-11 23:51:16 · 1261 阅读 · 0 评论 -
Netty(八)——ByteBuf功能之说
前边说了Netty的一些基本使用,还有Server和Client的创建流程的分析,接下来的几篇博客,来看看Netty NIO相关的主要接口和模块的API功能,这篇和下篇先来看看里边核心的ByteBuf,由于东西比较多,这篇先来看看ByteBuf的功能,下篇说ByteBuf的源码实现。 好,当我们数据传输的时候,往往都需要缓冲区,ByteBuf就是Netty提供使用的,...原创 2018-11-10 14:42:32 · 1873 阅读 · 0 评论 -
Netty(六)——Server创建流程之解
前边的篇章已经把Netty的使用:包括Server创建、Client创建、粘包/拆包问题处理、编码解码支持、http协议开发、WebSocket协议编写等。接下来,我们来看看源码学习一下流程,原理。(个人认为,源码学习是一个了解牛人设计思想、学习高人编码方式、扩宽自己解决问题之道的很好途径) 服务端创建,前边写了那么多的例子,慢慢大家就会发现,其实是有套路的(也就是...原创 2018-11-03 22:47:36 · 1352 阅读 · 0 评论 -
Reactor模式详解(转)
在学习netty源码以前,需要熟悉JDK 中的NIO,多线程;了解一些设计模式:例如工厂方法、抽象工厂、建造者、外观、代理等;还有NIO的Reactor和AIO的Proactor模式。下边我转了两篇关于Reactor和Proactor相关内容的文章,感觉还不错,帮助理解: 转自:http://www.cnblogs.com/winner-0715/p/8733787.html...转载 2018-11-03 10:38:35 · 2122 阅读 · 1 评论 -
Netty(五)——WebSocket之事
在说WebSocket以前,我们再来看看HTTP协议,HTTP1.0,HTTP1.1,HTTP2.0每个版本的更新带来更高效的更丰富的功能:短连接、长连接、缓存处理的丰富、断点续传、错误通知的丰富、多路复用、请求优先级、header压缩……更多的我们来看这篇文章:HTTP1.0、HTTP1.1和HTTP2.0的区别 (https://www.cnblogs.com/zhangyfr...原创 2018-10-30 23:21:11 · 568 阅读 · 0 评论 -
Netty(一)——BIO、NIO、AIO
在工作中,无论什么项目我们都会用到网络传输,tomcat等server服务器、Dubbo等Rpc协议框架、Redis等NOsql数据库、各种MQ的中间件等等。这篇文章是学习《Netty权威指南》后的总结,从Java基础的BIO、NIO、AIO进行学习。 在说JavaIO以前,先看看unix提供的5种IO模型: 1,阻塞IO模型: ...原创 2018-10-21 22:57:53 · 935 阅读 · 0 评论 -
Netty(二)——粘包、拆包解决之道
上一篇博客我们说了Java基础中BIO、NIO、AIO,其中用NIO和AIO开发中需要处理的东西比较多,Netty是IO这方面优秀的框架,我们来看个Netty的入门,以及其解决IO传输中的比较恶心的粘包和拆包问题。 首先我们到http://netty.io/ 去下载netty的jar包,我是通过Maven下载了5.0.0.Alpha2版本,然后我们看下入门实例。注意其...原创 2018-10-23 23:45:16 · 882 阅读 · 0 评论 -
Netty(三)——编解码之路
我们在开发中经常会把Java类进行implements Serializable用来网络传输的序列化和反序列化,过程其实就是将Java对象转编码为字节数组或者ByteBuffer对象进行传输,当远程服务读取到ByteBuffer对象或者字节数组时,需要将其解码为Java对象。这也就是编解码技术。 Java的序列化只是编解码技术中的一种,但是由于其1,不支持跨语言;2,...原创 2018-10-27 02:30:12 · 1198 阅读 · 1 评论 -
Netty(十五)——Future、Promise之略
在总结Netty的过程中,我也在边总结多线程,因为Netty当中好多用到了多线程,比如Netty中的ChannelFuture、ChannelPromise的其实就是来源于上篇博客中的 Java高并发(七)——Future模式 ,将线程之间的交互通过异步通知的形式进行实现,提高效率,提升性能。当然在总结多线程中,其实有些东西想说的更明白,又会涉及到JVM的的东西,数据结构的知识,在...原创 2018-12-11 23:15:30 · 2125 阅读 · 0 评论