netty学习笔记(四)观闪电侠小册netty总结
大家好,我叫大鸡腿,大家可以关注下我,会持续更新技术文章还有人生感悟,感谢~
文章目录
- 前言
- 1.Nio概念
- 2.boostrap
- 3.客户端连接失败重试
- 4.ButeBuf
- 5.ChannelPipeline
- 6.编码解码
- 6.1粘包拆包
- 7.可拔插链路
- @Sharble
- ctx.writeAndFlush跟ctx.channel.writeAndFlush区别
- 8.避免阻塞Nio里面channel
- 9.多人直播间实现
前言
大二的时候买了一个某团大佬的netty掘金小册,看了一遍懵懵懂懂,当看完netty in action书籍之后,再次回味细品,还有很多值得学习的地方。
1.Nio概念
可以看到由一个io线程来负责多个socket的请求情况管理,这里是selector。其中有两个,一个负责接客,一个负责服务请求。
个人总结
客户端连接服务端需要用channel才能发送消息,channelFuture再获取channel是发送不了的
2.boostrap
这个是连接的相关配置。
对channel进行相关参数配置以及netty配置
3.客户端连接失败重试
就是添加监听器,如果失败重新连接。
4.ButeBuf
read,write会对索引进行偏移,如果读取不到会抛出异常。
5.ChannelPipeline
6.编码解码
ByteBuf是堆外内存,所以调用之后需要release.注意图片中画红框部分。
6.1粘包拆包
7.可拔插链路
@Sharble
ctx.writeAndFlush跟ctx.channel.writeAndFlush区别
8.避免阻塞Nio里面channel
我们知道nio里面通过一个io线程来处理数据,如果阻塞了对其他线程的影响蛮大的。
9.多人直播间实现
小册中实现的多人聊天是使用channelGroup去实现的,如果是分布式环境就得重新写了。直播间号跟用户id使用map来保存,这些相对比较简单。
netty学习笔记(四)观闪电侠小册netty总结相关推荐
- Netty学习笔记(四)EventLoopGroup续篇
@Overrideprotected void run() {for (;;) {try { switch (selectStrategy.calculateStrategy(selectNowSup ...
- Netty学习笔记(六)Pipeline的传播机制
前面简单提到了下Pipeline的传播机制,这里再详细分析下 Pipeline的传播机制中有两个非常重要的属性inbound和outbound(AbstractChannelHandlerContex ...
- Netty学习笔记二网络编程
Netty学习笔记二 二. 网络编程 1. 阻塞模式 阻塞主要表现为: 连接时阻塞 读取数据时阻塞 缺点: 阻塞单线程在没有连接时会阻塞等待连接的到达,连接到了以后,要进行读取数据,如果没有数据,还要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- Netty学习笔记(二)Netty服务端流程启动分析
先贴下在NIO和Netty里启动服务端的代码 public class NioServer { /*** 指定端口号启动服务* */public boolean startServer(int por ...
- 【http学习笔记四】安全篇
[http学习笔记四]安全篇 文章目录 [http学习笔记四]安全篇 一.HTTPS 与 SSL/TLS ① 什么是安全? 机密性 完整性 身份认证 不可否认 ② 什么是HTTPS? ③ SSL/TL ...
- Netty学习笔记一NIO基础
Netty学习笔记一 一. NIO 基础 non-blocking io 非阻塞IO (也可称为new IO, 因为是JDK1.4加入的) 1. 三大组件 1.1 Channel 通道:数据的传输通道 ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)
RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) 参考文章: (1)RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) (2)https://www.cnblogs. ...
最新文章
- 2019年, image captioning论文汇总
- 信息系统管理十大知识领域
- linux 固定ip_linux固定IP
- 知识图谱之语言计算与信息抽取
- Swift 4.1带来条件一致性等语言上的提升
- Quick-cocos2d-x luabinding
- TensorFlow人工智能入门教程之十一 最强网络DLSTM 双向长短期记忆网络(阿里小AI实现)...
- 代码的检查走查与评审
- 数据结构--最小生成树详解
- 网上购物系统-关系型数据库设计举例
- 不收费的数据恢复软件好用吗?数据丢失这样恢复
- hex文件、bin文件、axf文件的区别?
- [ICCV2021] TransReID: Transformer-based Object Re-Identification 行人重识别
- Stream流的学习
- Microsoft Teams通话质量仪表盘(CQD)怎么玩?
- Hexo系列(2) - NexT主题美化与博客功能增强
- 巴士博弈_自主穿梭巴士内部和服务的设计
- linux公共基础-初阶
- ES 按照每隔几分钟,几小时,几天统计折线图
- 【Unity3D实现自定义调色板】
热门文章
- 虚拟机Ubuntu内鼠标闪烁终极解决方案
- serializable和parcelable的区别
- java8:关闭钩子shutdown hook
- Mongo数据库简单操作 (本地)
- java反射 调用构造函数_Java反射详解
- 怎样处理人际关系?分享人际关系思维导图模板
- CCA典型关联分析原理与Python案例
- Linux ubuntu系统在线安装、启动、卸载MongoDB 5.0
- python与会计的论文_python计算与编程实践论文范文 有关西安交通大学软件学院软件工程硕士研究生毕业论文写作资料...
- java目前比较新的技术有哪些?