avatar
文章
94
标签
89
分类
16

首页
归档
标签
分类
关于
虾壳
搜索
首页
归档
标签
分类
关于

Netty

发表于2023-10-02|更新于2023-10-02|JavaJava教程
|字数总计:5|阅读时长:1分钟|阅读量:
文章作者: 虾壳
文章链接: http://yagote.github.io/2023/10/02/netty/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 虾壳!
教程网络编程Netty
上一篇
ElasticSearch
下一篇
Dubbo旧
相关推荐
2024-01-06
Java-网络编程
2023-10-01
Axios
2023-10-01
CSS
目录
  1. 一、NIO基础
    1. 1、三大组件
      1. 1.1 Channel
      2. 1.2 Buffer
      3. 1.3 Selector
        1. 1.3.1 多线程版设计
        2. 1.3.2 线程池版设计
        3. 1.3.3 Selector版设计
    2. 2、ByteBuffer
      1. 2.1 使用示例
      2. 2.2 ByteBuffer使用步骤
      3. 2.3 ByteBuffer 结构
      4. 2.4 ByteBuffer 常见方法
        1. 2.4.1 分配空间
        2. 2.4.2 向buffer写入数据
        3. 2.4.3 从 buffer 读取数据
        4. 2.4.4 mark和reset
        5. 2.4.5 字符串与ByteBuffer互转
      5. 2.5 Scattering Reads
      6. 2.6 Gathering Writes
      7. 2.7 练习
    3. 3. 文件编程
      1. 3.1 FileChannel
        1. 3.1.1 获取
        2. 3.1.2 读取
        3. 3.1.3 写入
        4. 3.1.4 关闭
        5. 3.1.5 位置
        6. 3.1.6 大小
        7. 3.1.7 强制写入
      2. 3.2 两个 Channel 传输数据
      3. 3.3 Path
      4. 3.4 Files
    4. 4、网络编程
      1. ==4.1 非阻塞 vs 阻塞==
        1. 4.1.1 阻塞
        2. 4.1.2 非阻塞
        3. 4.1.3 多路复用
      2. 4.2 Selector
        1. 4.2.1 创建
        2. 4.2.2 绑定 Channel 事件
        3. 4.2.3 监听 Channel 事件
        4. 4.2.4 select 何时不阻塞
      3. 4.3 Selector处理 accept 事件
      4. 4.4 Selector处理 read 事件
        1. 4.4.1 不处理边界的问题
        2. 4.4.2 处理消息的边界
        3. 4.4.3 ByteBuffer 大小分配
      5. 4.5 Selector处理 write 事件
      6. 4.6 利用多线程优化
      7. 4.7 UDP
    5. 5、NIO vs BIO
      1. 5.1 stream vs channel
      2. ==5.2 IO 模型==
      3. 5.3 零拷贝
      4. 5.4 AIO
        1. 5.4.1 文件 AIO
        2. 5.4.2 守护线程
        3. 5.4.3 网络 AIO
  2. 二、Netty 入门
    1. 1. 概述
      1. 1.1 Netty 是什么?
      2. 1.2 Netty 的地位
      3. 1.3 Netty 的优势
    2. 2. 简单案例
      1. 2.1 目标
      2. 2.2 服务器端
      3. 2.3 客户端
      4. 2.4 流程梳理
    3. 3. 组件
      1. 3.1 EventLoop
        1. 3.1.1 NioEventLoop 处理 io 事件
        2. 3.1.2 handler 的切换
        3. 3.1.3 NioEventLoop 处理普通任务
        4. 3.1.4 NioEventLoop 处理定时任务
      2. 3.2 Channel
        1. 3.2.1 ChannelFuture
        2. 3.2.2 CloseFuture
        3. 3.2.3 异步提升
      3. 3.3 Future & Promise
        1. 例1
        2. 例2
        3. 例3
        4. 例4
        5. 例6
      4. 3.4 Handler & Pipeline
      5. 3.5 ByteBuf
        1. 3.5.1 创建
        2. 3.5.2 直接内存 vs 堆内存
        3. 3.5.3 池化 vs 非池化
        4. 3.5.4 组成
        5. 3.5.5 写入
        6. 3.5.6 扩容
        7. 3.5.7 读取
        8. 3.5.8 retain & release
        9. 3.5.9 slice
        10. 3.5.10 duplicate
        11. 3.5.11 copy
        12. 3.5.12 CompositeByteBuf
        13. 3.5.13 Unpooled
        14. 3.5.14 ByteBuf 优势
    4. 4. 双向通信
      1. 4.1 练习
      2. 4.2 读和写的误解
  3. 三、Netty 进阶
    1. 1. 粘包与半包
      1. 1.1 粘包现象
      2. 1.2 半包现象
      3. 1.3 现象分析
      4. 1.4 解决方案
        1. 方法1,短链接
        2. 方法2,固定长度
        3. 方法3,固定分隔符
        4. 方法4,预设长度
    2. 2. 协议设计与解析
      1. 2.1 为什么需要协议?
      2. 2.2 redis 协议举例
      3. 2.3 http 协议举例
      4. 2.4 自定义协议要素
      5. 2.5 编解码器
      6. 2.6 什么时候可以加 @Sharable
    3. 3. 聊天室案例
      1. 3.1 聊天室业务介绍
      2. 3.2 聊天室业务-登录
      3. 3.3 聊天室业务-单聊
      4. 3.4 聊天室业务-群聊
      5. 3.5 聊天室业务-退出
      6. 3.6 聊天室业务-空闲检测
  4. 四、Netty 优化
    1. 1、扩展序列化算法
    2. 2、参数调优
      1. 2.1 CONNECT_TIMEOUT_MILLIS
      2. 2.2 SO_BACKLOG
      3. 2.3 ulimit -n
      4. 2.4 TCP_NODELAY
      5. 2.5 SO_SNDBUF & SO_RCVBUF
      6. 2.6 ALLOCATOR
      7. 2.7 RCVBUF_ALLOCATOR
    3. 3、RPC 框架
      1. 3.1 准备工作
      2. 3.2 服务器 handler
      3. 3.3 客户端第一版
      4. 3.4 客户端 handler 第一版
      5. 3.5 客户端第二版
      6. 3.6 客户端 handler 第二版
  5. 五、Netty源码分析
    1. 1、启动剖析
    2. 2、NioEventLoop 剖析
    3. 3、accept 剖析
    4. 4、read 剖析
Copyright © 2021 - present 虾壳
搜索
数据库加载中