大家好,我叫大鸡腿,大家可以关注下我,会持续更新技术文章还有人生感悟,感谢~

文章目录

  • 前言
  • 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总结相关推荐

  1. Netty学习笔记(四)EventLoopGroup续篇

    @Overrideprotected void run() {for (;;) {try { switch (selectStrategy.calculateStrategy(selectNowSup ...

  2. Netty学习笔记(六)Pipeline的传播机制

    前面简单提到了下Pipeline的传播机制,这里再详细分析下 Pipeline的传播机制中有两个非常重要的属性inbound和outbound(AbstractChannelHandlerContex ...

  3. Netty学习笔记二网络编程

    Netty学习笔记二 二. 网络编程 1. 阻塞模式 阻塞主要表现为: 连接时阻塞 读取数据时阻塞 缺点: 阻塞单线程在没有连接时会阻塞等待连接的到达,连接到了以后,要进行读取数据,如果没有数据,还要 ...

  4. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  5. Netty学习笔记(二)Netty服务端流程启动分析

    先贴下在NIO和Netty里启动服务端的代码 public class NioServer { /*** 指定端口号启动服务* */public boolean startServer(int por ...

  6. 【http学习笔记四】安全篇

    [http学习笔记四]安全篇 文章目录 [http学习笔记四]安全篇 一.HTTPS 与 SSL/TLS ① 什么是安全? 机密性 完整性 身份认证 不可否认 ② 什么是HTTPS? ③ SSL/TL ...

  7. Netty学习笔记一NIO基础

    Netty学习笔记一 一. NIO 基础 non-blocking io 非阻塞IO (也可称为new IO, 因为是JDK1.4加入的) 1. 三大组件 1.1 Channel 通道:数据的传输通道 ...

  8. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  9. RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)

    RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) 参考文章: (1)RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) (2)https://www.cnblogs. ...

最新文章

  1. 2019年, image captioning论文汇总
  2. 信息系统管理十大知识领域
  3. linux 固定ip_linux固定IP
  4. 知识图谱之语言计算与信息抽取
  5. Swift 4.1带来条件一致性等语言上的提升
  6. Quick-cocos2d-x luabinding
  7. TensorFlow人工智能入门教程之十一 最强网络DLSTM 双向长短期记忆网络(阿里小AI实现)...
  8. 代码的检查走查与评审
  9. 数据结构--最小生成树详解
  10. 网上购物系统-关系型数据库设计举例
  11. 不收费的数据恢复软件好用吗?数据丢失这样恢复
  12. hex文件、bin文件、axf文件的区别?
  13. [ICCV2021] TransReID: Transformer-based Object Re-Identification 行人重识别
  14. Stream流的学习
  15. Microsoft Teams通话质量仪表盘(CQD)怎么玩?
  16. Hexo系列(2) - NexT主题美化与博客功能增强
  17. 巴士博弈_自主穿梭巴士内部和服务的设计
  18. linux公共基础-初阶
  19. ES 按照每隔几分钟,几小时,几天统计折线图
  20. 【Unity3D实现自定义调色板】

热门文章

  1. 虚拟机Ubuntu内鼠标闪烁终极解决方案
  2. serializable和parcelable的区别
  3. java8:关闭钩子shutdown hook
  4. Mongo数据库简单操作 (本地)
  5. java反射 调用构造函数_Java反射详解
  6. 怎样处理人际关系?分享人际关系思维导图模板
  7. CCA典型关联分析原理与Python案例
  8. Linux ubuntu系统在线安装、启动、卸载MongoDB 5.0
  9. python与会计的论文_python计算与编程实践论文范文 有关西安交通大学软件学院软件工程硕士研究生毕业论文写作资料...
  10. java目前比较新的技术有哪些?