zoukankan      html  css  js  c++  java
  • Netty权威指南

    Netty权威指南

    基础篇 走进Java NIO

    1 Java的I/O演进之路

    1.1 I/O基础入门
    1.1.1 Linux网络I/O模型简介
    1.1.2 I/O多路复用技术
    1.2 Java的I/O演进
    1.3 总结

    2 NIO入门

    2.1 传统的BIO编程
    2.1.1 BIO通信模型图
    2.1.2 同步阻塞式I/O创建的TimeServer源码分析
    2.1.3 同步阻塞式I/O创建的TimeClient源码分析
    2.2 伪异步I/O编程
    2.2.1 伪异步I/O模型图
    2.2.2 伪异步式I/O创建的TimeServer源码分析
    2.2.3 伪异步I/O弊端分析
    2.3 NIO编程
    2.3.1 NIO类库简介
    2.3.2 NIO服务端序列图
    2.3.3 NIO创建的TimeServer源码分析
    2.3.4 NIO客户端序列图
    2.3.5 NIO创建的TimeClient源码分析
    2.4 AIO编程
    2.4.1 AIO创建的TimeServer源码分析
    2.4.2 AIO创建的TimeClient源码分析
    2.4.3 AIO版本时间服务器运行结果
    2.5 4种I/O的对比
    2.5.1 概念澄清
    2.5.2 不同I/O模型对比
    2.6 选择Netty的理由
    2.6.1 不选择Java原生NIO编程的原因
    2.6.2 为什么选择Netty
    2.7 总结

    入门篇 Netty NIO开发指南

    3 Netty入门应用

    3.1 Netty开发环境的搭建
    3.1.1 下载Netty的软件包
    3.1.2 搭建Netty应用工程
    3.2 Netty服务端开发
    3.3 Netty客户端开发
    3.4 运行和调试
    3.4.1 服务端和客户端的运行
    3.4.2 打包和部署
    3.5 总结

    4 TCP粘包/拆包问题的解决之道

    4.1 TCP粘包/拆包
    4.1.1 TCP粘包/拆包问题说明
    4.1.2 TCP粘包/拆包发生的原因
    4.1.3 粘包问题的解决策略
    4.2 未考虑TCP粘包导致功能异常案例
    4.2.1 TimeServer的改造
    4.2.2 TimeClient的改造
    4.2.3 运行结果
    4.3 利用LineBasedFrameDecoder解决TCP粘包问题
    4.3.1 支持TCP粘包的TimeServer
    4.3.2 支持TCP粘包的TimeClient
    4.3.3 运行支持TCP粘包的时间服务器程序
    4.3.4 LineBasedFrameDecoder和StringDecoder的原理分析
    4.4 总结

    5 分隔符和定长解码器的应用

    5.1 DelimiterBasedFrameDecoder应用开发
    5.1.1 DelimiterBasedFrameDecoder服务端开发
    5.1.2 DelimiterBasedFrameDecoder客户端开发
    5.1.3 运行DelimiterBasedFrameDecoder服务端和客户端
    5.2 FixedLengthFrameDecoder应用开发
    5.2.1 FixedLengthFrameDecoder服务端开发
    5.2.2 利用telnet命令行测试EchoServer服务端
    5.3 总结

    中级篇 Netty编解码开发指南

    6 编解码技术

    6.1 Java序列化的缺点
    6.1.1 无法跨语言
    6.1.2 序列化后的码流太大
    6.1.3 序列化性能太低
    6.2 业界主流的编解码框架
    6.2.1 Google的Protobuf介绍
    6.2.2 Facebook的Thrift介绍
    6.2.3 JBoss Marshalling介绍
    6.3 总结

    7 Java序列化

    7.1 Netty Java序列化服务端开发
    7.2 Java序列化Netty客户端开发
    7.3 运行结果
    7.4 总结

    8 Google Protobuf编解码

    8.1 Protobuf的入门
    8.1.1 Protobuf开发环境搭建
    8.1.2 Protobuf编解码开发
    8.1.3 运行Protobuf例程
    8.2 Netty的Protobuf服务端开发
    8.2.1 Protobuf版本的图书订购服务端开发
    8.2.2 Protobuf版本的图书订购客户端开发
    8.2.3 Protobuf版本的图书订购程序功能测试
    8.3 Protobuf的使用注意事项
    8.4 总结

    9 JBoss Marshalling编解码

    9.1 Marshalling开发环境准备
    9.2 Netty的Marshalling服务端开发
    9.3 Netty的Marshalling客户端开发
    9.4 运行Marshalling客户端和服务端例程
    9.5 总结

    高级篇 Netty多协议开发和应用

    10 HTTP协议开发应用

    10.1 HTTP协议介绍
    10.1.1 HTTP协议的URL
    10.1.2 HTTP请求消息(HttpRequest)
    10.1.3 HTTP响应消息(HttpResponse)
    10.2 Netty HTTP服务端入门开发
    10.2.1 HTTP服务端例程场景描述
    10.2.2 HTTP服务端开发
    10.2.3 Netty HTTP文件服务器例程运行结果
    10.3 Netty HTTP+XML协议栈开发
    10.3.1 开发场景介绍
    10.3.2 HTTP+XML协议栈设计
    10.3.3 高效的XML绑定框架JiBx
    10.3.4 HTTP+XML编解码框架开发
    10.3.5 HTTP+XML协议栈测试
    10.3.6 小结
    10.4 总结

    11 WebSocket协议开发

    11.1 HTTP协议的弊端
    11.2 WebSocket入门
    11.2.1 WebSocket背景
    11.2.2 WebSocket连接建立
    11.2.3 WebSocket生命周期
    11.2.4 WebSocket连接关闭
    11.3 Netty WebSocket协议开发
    11.3.1 WebSocket服务端功能介绍
    11.3.2 WebSocket服务端开发
    11.3.3 运行WebSocket服务端
    11.4 总结

    12 UDP协议开发

    12.1 UDP协议简介
    12.2 UDP服务端开发
    12.3 UDP客户端开发
    12.4 运行UDP例程
    12.5 总结

    13 文件传输

    13.1 文件的基础知识
    13.1.1 文件的概念
    13.1.2 文件路径
    13.1.3 文件名称
    13.1.4 FileChannel简介
    13.2 Netty文件传输开发
    13.3 运行Netty文件传输服务例程
    13.4 总结

    14 私有协议栈开发

    14.1 私有协议介绍
    14.2 Netty协议栈功能设计
    14.2.1 网络拓扑图
    14.2.2 协议栈功能描述
    14.2.3 通信模型
    14.2.4 消息定义
    14.2.5 Netty协议支持的字段类型
    14.2.6 Netty协议的编解码规范
    14.2.7 链路的建立
    14.2.8 链路的关闭
    14.2.9 可靠性设计
    14.2.10 安全性设计
    14.2.11 可扩展性设计
    14.3 Netty协议栈开发
    14.3.1 数据结构定义
    14.3.2 消息编解码
    14.3.3 握手和安全认证
    14.3.4 心跳检测机制
    14.3.5 断连重连
    14.3.6 客户端代码
    14.3.7 服务端代码
    14.4 运行协议栈
    14.4.1 正常场景
    14.4.2 异常场景:服务端宕机重启
    14.4.3 异常场景:客户端宕机重启
    14.5 总结

    源码分析篇 Netty功能介绍和源码分析

    15 ByteBuf和相关辅助类

    15.1 ByteBuf功能说明
    15.1.1 ByteBuf的工作原理
    15.1.2 ByteBuf的功能介绍
    15.2 ByteBuf源码分析
    15.2.1 ByteBuf的主要类继承关系
    15.2.2 AbstractByteBuf源码分析
    15.2.3 AbstractReferenceCountedByteBuf源码分析
    15.2.4 UnpooledHeapByteBuf源码分析
    15.2.5 PooledByteBuf内存池原理分析
    15.2.6 PooledDirectByteBuf源码分析
    15.3 ByteBuf相关的辅助类功能介绍
    15.3.1 ByteBufHolder
    15.3.2 ByteBufAllocator
    15.3.3 CompositeByteBuf
    15.3.4 ByteBufUtil
    15.4 总结

    16 Channel和Unsafe

    16.1 Channel 功能说明
    16.1.1 Channel的工作原理
    16.1.2 Channel的功能介绍
    16.2 Channel源码分析
    16.2.1 Channel的主要继承关系类图
    16.2.2 AbstractChannel源码分析
    16.2.3 AbstractNioChannel源码分析
    16.2.4 AbstractNioByteChannel源码分析
    16.2.5 AbstractNioMessageChannel源码分析
    16.2.6 AbstractNioMessageServerChannel源码分析
    16.2.7 NioServerSocketChannel源码分析
    16.2.8 NioSocketChannel源码分析
    16.3 Unsafe功能说明
    16.4 Unsafe源码分析
    16.4.1 Unsafe继承关系类图
    16.4.2 AbstractUnsafe源码分析
    16.4.3 AbstractNioUnsafe源码分析
    16.4.4 NioByteUnsafe源码分析
    16.5 总结

    17 ChannelPipeline和ChannelHandler

    17.1 ChannelPipeline功能说明
    17.1.1 ChannelPipeline的事件处理
    17.1.2 自定义拦截器
    17.1.3 构建pipeline
    17.1.4 ChannelPipeline的主要特性
    17.2 ChannelPipeline源码分析
    17.2.1 ChannelPipeline的类继承关系图
    17.2.2 ChannelPipeline对ChannelHandler的管理
    17.2.3 ChannelPipeline的inbound事件
    17.2.4 ChannelPipeline的outbound事件
    17.3 ChannelHandler功能说明
    17.3.1 ChannelHandlerAdapter功能说明
    17.3.2 ByteToMessageDecoder功能说明
    17.3.3 MessageToMessageDecoder功能说明
    17.3.4 LengthFieldBasedFrameDecoder功能说明
    17.3.5 MessageToByteEncoder功能说明
    17.3.6 MessageToMessageEncoder功能说明
    17.3.7 LengthFieldPrepender功能说明
    17.4 ChannelHandler源码分析
    17.4.1 ChannelHandler的类继承关系图
    17.4.2 ByteToMessageDecoder源码分析
    17.4.3 MessageToMessageDecoder源码分析
    17.4.4 LengthFieldBasedFrameDecoder源码分析
    17.4.5 MessageToByteEncoder源码分析
    17.4.6 MessageToMessageEncoder源码分析
    17.4.7 LengthFieldPrepender源码分析
    17.5 总结

    18 EventLoop和EventLoopGroup

    18.1 Netty的线程模型
    18.1.1 Reactor单线程模型
    18.1.2 Reactor多线程模型
    18.1.3 主从Reactor多线程模型
    18.1.4 Netty的线程模型
    18.1.5 最佳实践
    18.2 NioEventLoop源码分析
    18.2.1 NioEventLoop设计原理
    18.2.2 NioEventLoop继承关系类图
    18.2.3 NioEventLoop
    18.3 总结

    19 Future和Promise

    19.1 Future功能
    19.2 ChannelFuture源码分析
    19.3 Promise功能介绍
    19.4 Promise源码分析
    19.4.1 Promise继承关系图
    19.4.2 DefaultPromise
    19.5 总结

    架构和行业应用篇 Netty高级特性

    20 Java多线程编程在Netty中的应用

    20.1 Java内存模型与多线程编程
    20.1.1 硬件的发展和多任务处理
    20.1.2 Java内存模型
    20.2 Netty的并发编程实践
    20.2.1 对共享的可变数据进行正确的同步
    20.2.2 正确的使用锁
    20.2.3 volatile的正确使用
    20.2.4 CAS指令和原子类
    20.2.5 线程安全类的应用
    20.2.6 读写锁的应用
    20.2.7 线程安全性文档说明
    20.2.8 不要依赖线程优先级
    20.3 总结

    21 Netty架构剖析

    21.1 Netty逻辑架构
    21.1.1 Reactor通信调度层
    21.1.2 职责链ChannelPipeline
    21.1.3 业务逻辑编排层(Service ChannelHandler)
    21.2 关键架构质量属性
    21.2.1 高性能
    21.2.2 可靠性
    21.2.3 可定制性
    21.2.4 可扩展性
    21.3 总结

    22 Netty行业应用

    22.1 Netty在互联网行业的应用
    22.1.1 传统垂直架构面临的问题
    22.1.2 阿里分布式服务框架Dubbo
    22.1.3 Dubbo的架构介绍
    22.1.4 Netty在Dubbo中的应用
    22.1.5 Dubbo框架集成Netty源码分析
    22.2 Netty在大数据领域的应用
    22.3 Netty在游戏行业的应用
    22.3.1 游戏服务端架构介绍
    22.3.2 Netty在游戏服务端的应用
    22.4 总结

    23 Netty未来展望

    23.1 应用范围
    23.2 技术演进
    23.3 社区活跃度
    23.4 Road Map
    23.5 总结

    附录 Netty参数配置表

    思维导图

    Netty权威指南

    防止博客图床图片失效,防止图片源站外链:

    http://www.processon.com/chart_image/5e5b454de4b0cb56dab12cb3.png)

    思维导图在线编辑链接:

    https://www.processon.com/view/5e5b454de4b0cb56dab12cb0

  • 相关阅读:
    定制一个支持中英文的简单LaTex模板
    汉字hash问题(转)
    算法题之最大回文子串
    算法题之添加回文串
    数据表设计的步骤
    很简单的Java断点续传实现原理
    MongoDB 搭建文件存储的方案
    cron语法
    关于如何使用SVN的一些建议
    无后台应用 Stash Backend
  • 原文地址:https://www.cnblogs.com/jingle1267/p/13287877.html
Copyright © 2011-2022 走看看