Netty
文章平均质量分 71
冷环渊
这里是四年学习Java的小冷,
腾讯云技术笔者
阿里云专家博主
阿里云程序员2022 1024高并发技术征文top1
亚马逊云优质技术征文作者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Netty功能实现:实现心跳检测
netty实现心跳检测 检测逻辑: 1) 服务端启动,客户端建立连接,连接的目的是互相发送消息。 2) 如果客户端在工作,服务端一定能收到数据,如果客户端空闲,服务端会出现资源浪费。 3) 服务端需要一种检测机制,验证客户端的活跃状态,不活跃则关闭。 需求设计: 1) 客户端向服务端发送 “I am alive” , sleep一个随机时间,模拟空闲状态 2) 服务端收到消息后,返回“over”, 客户端有空闲,记录空闲次数 3) 设定阈值,达到阈值时主动关闭连接 服务端编写 public class H原创 2021-11-30 18:54:47 · 4664 阅读 · 12 评论 -
Netty原理:pipeline
ChannelPipeline pipeline中维护入站和出站链路,两条链路的执行顺序。 handler只负责处理自身的业务逻辑,对通道而言,它是无状态的。通道的信息会保存到handlerContext处理器上下文中,它是连接pipeline和handler之间的中间角色。 pipeline管理的是由handlerContext包裹的handler,也就是说,当添加handler时,先将其转为handlerContext,然后添加到pipeline的双向链表中。头结点叫做HeadContext,尾节点叫做原创 2021-11-25 13:00:56 · 1084 阅读 · 0 评论 -
Netty原理:ChannelHandler
ChannelHandler 类层次关系图 入站和出站: 从服务端的角度,数据从客户端发送到服务端,称之为入站,当数据处理完成返回给客户端,称之为出站。是相对的概念。 从客户端的角度,数据从服务端发送给客户端,称之为入站,当数据返回给服务端,称之为出站。 不论是入站还是出站,handler从一端开始,到另一端结束,以责任链的模式依次执行。 责任链模式——“击鼓传花”,当请求被不同的接收者处理时,每个接收者都包含对下一个接收者的引用,一个接收者处理完成后,将依次向下传递。 适配器模式——出国时要使用的电源转原创 2021-11-24 23:58:07 · 693 阅读 · 0 评论 -
Netty原理:Channel
Channel 1)Channel channel是通讯的载体,对应通讯的一端,在BIO中对应Socket,NIO中对应SocketChannel,Netty中对应NioSocketChannel,ServerSocket同理。 channelhandler是通道的处理器,一个channel往往有多个handler channelpipeline是handler的容器,装载并管理handler的顺序(本质是双向链表) 如图,channel创建时,会对应创建一个channelpipeline,pipelin原创 2021-11-24 23:56:02 · 950 阅读 · 0 评论 -
Netty原理:ByteBuf对Nio bytebuffer做了什么导致效率提升?
ByteBuf NIO中ByteBuffer的缺点: A 长度固定,无法动态的扩容和缩容,缺乏灵活性 B 使用一个position记录读写的索引位置,在读写模式切换时需手动调用flip方法,增加了使用的复杂度。 C 功能有限,使用过程中往往需要自行封装 1)分类 按照内存的位置,分为堆内存缓冲区 heap buffer、直接内存缓冲区direct buffer、复合内存缓冲区composite buffer。 A heap buffer 将数据存储到JVM的堆空间中,实际使用字节数组byte[]来存放。原创 2021-11-23 23:26:38 · 1109 阅读 · 2 评论 -
Netty: WebSocket应用,代码demo
WebSocket 为什么使用进阶版呢? 新的技术肯定是解决了 技术的问题 Http协议都的缺陷 : 通信只能由客户端发起,需要一种服务端能够主动推送到能力 –websocket **websocket:**这是一种双向通信的能力 也叫做 : “全双工” websocket是由浏览器发起的 通常我们使用 http叫做 : 短连接 性能好一点 用 websocket 叫做 : 长连接 复用性高一些 适用于不同场景 这里我们还是使用 http来链连接 只不过 连接之后就传输信息 直到断开为止 应为原创 2021-11-21 21:53:58 · 845 阅读 · 0 评论 -
Netty应用:快速了解http各版本的特性 HttpServer的小demo
HTTP协议 0.9版本 GET /index.html 服务端只能返回html格式,传输过程只能处理文字。 1.0版本 支持任何格式的内容,包括图像、视频、二进制等等 引入了POST命令、HEAD命令 HEAD命令 : 这个命令和 get 是有相似之处的 只返回头部信息,不会返回全部内容,速度较快,一般用来验证连接的有效性 增加了请求头、状态码,以及权限、缓存等 那么1.0 他的会是什么样子的呢? 请求 GET / HTTP/1.0 User-Agent:Mozilla/1.0 Accept:原创 2021-11-20 21:24:49 · 1226 阅读 · 7 评论 -
基于NIO的多客户端群聊
基于NIO的多客户端群聊 分析需求 服务端 监听客户端状态 保存客户端聊天记录 将客户端的信息分发给其他客户端 群聊 客户端 连接服务端 接受服务端分发的消息 发出消息 代码编写 代码里有详细的注释,这里我们主要是看一下编写步骤 服务端 ---------------------初始化------------------------------ 1.开启serversocket通道 2.开启选择器 3.设置非阻塞,注册任务 --------------------监听客户端------------原创 2021-11-17 22:39:04 · 739 阅读 · 4 评论 -
Netty: NIO Selector选择器(C/S demo详细注释与源码)
Netty 基础 java NIO Selector 三个元素: Selector选择器、SelectableChannel可选择的通道、SelectionKey选择键 本质上,Selector是监听器,监听的是通道是否有我们关心的操作产生,操作对应的是事件(连接、接收、读/写),使用SelectionKey代表具体的事件,在确保通道是可选择的情况下,将通道注册进选择器中,此时Selector维护的是,通道和事件之间的关联关系。 Selector,管理被注册的通道集合,以及他们的状态 Selectable原创 2021-11-16 18:11:35 · 1125 阅读 · 0 评论 -
Netty:NIO buffer 原理(附 示例代码)
Java:NIO buffer 原理理解 NIO 是同步,非阻塞 NIO 和 BIO 最大不同在于 BIO是面向流的 NIO是面向块(缓冲区)的 NIO将文件或文件中的一段区域映射到内存中,可以像访问内存一样访问文件 那么今天我们打卡点知识就是 java NIO 中的 缓冲区接口 Buffer Buffer 我们以 cahrBuffer为例子 capacity 总体容量大小 limit 存储容量的大小,是可读写和不可读写的界线 position 已读容量的大小,已读和未读区域的界线 【使用原理】 a) 初原创 2021-11-16 12:55:58 · 584 阅读 · 0 评论 -
Netty高性能网络通信:NIO
前言 给大家推荐一个知识交流社区哪吒社区 在这里新手小白可以得到十分有力度技术依靠, 进阶的小伙伴可以在大佬的文章中得到提升 学习较深的大佬们可以互相讨论技术的心得 认识Netty Netty 网络编程框架 他可以做到什么? 自定义通信协议 自定义编码/解码字节流 没有netty之前我们是用什么的? java.net + java .io java.nio Mina /Grizzly Netty的特点 并发高 基于 NIO网络通信框架,比较BIO性能得到了提升 传输快 NIO原创 2021-11-13 23:34:45 · 1304 阅读 · 9 评论
分享