★ 《Spring 5核心原理与30个类手写实战》作者全新力作 ★ 集作者多年实战及授课经验与学员踩坑经验总结之大成 ★ 基于Netty 4,学习Dubbo、Spring Cloud等分布式技术基础 ★ 全网独创“手写源码学习法”,让学习源码更高效 ★ 提供基于Netty手写RPC框架、手写消息推送系统实战案例 ★ 快速掌握Bootstrap、EventLoop、Pipeline、ByteBuf等核心技术 ★ 深度剖析Netty的原理与特性,让学习Netty变得轻松易上手
售 价:¥
纸质售价:¥80.40购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
前折页
书名页
版权页
序言
关于我
第1篇 I/O基础篇
第1章 网络通信原理
1.1 网络基础架构
1.1.1 C/S架构
1.1.2 C/S信息传输流程
1.2 TCP/IP五层模型详解
1.2.1 物理层
1.2.2 数据链路层
1.2.3 网络层
1.2.4 传输层
1.2.5 应用层
1.2.6 小结
1.3 网络通信实现原理
1.4 向浏览器输入URL后发生了什么
1.5 网络通信之“魂”——Socket
第2章 Java I/O演进之路
2.1 I/O的问世
2.1.1 什么是I/O
2.1.2 I/O交互流程
2.2 五种I/O通信模型
2.2.1 阻塞I/O模型
2.2.2 非阻塞I/O模型
2.2.3 多路复用I/O模型
2.2.4 信号驱动I/O模型
2.2.5 异步I/O模型
2.2.6 易混淆的概念澄清
2.2.7 各I/O模型的对比与总结
2.3 从BIO到NIO的演进
2.3.1 面向流与面向缓冲
2.3.2 阻塞与非阻塞
2.3.3 选择器在I/O中的应用
2.3.4 NIO和BIO如何影响应用程序的设计
2.4 Java AIO详解
2.4.1 AIO基本原理
2.4.2 AIO初体验
第2篇 Netty初体验
第3章 Netty与NIO之前世今生
3.1 Java NIO三件套
3.1.1 缓冲区
3.1.2 选择器
3.1.3 通道
3.2 NIO源码初探
3.3 反应堆
3.4 Netty与NIO
3.4.1 Netty支持的功能与特性
3.4.2 Netty采用NIO而非AIO的理由
第4章 基于Netty手写Tomcat
4.1 环境准备
4.1.1 定义GPServlet抽象类
4.1.2 创建用户业务代码
4.1.3 完成web.properties配置
4.2 基于传统I/O手写Tomcat
4.2.1 创建GPRequest对象
4.2.2 创建GPResponse对象
4.2.3 创建GPTomcat启动类
4.3 基于Netty重构Tomcat实现
4.3.1 重构GPTomcat逻辑
4.3.2 重构GPRequest逻辑
4.3.3 重构GPResponse逻辑
4.3.4 运行效果演示
第5章 基于Netty重构RPC框架
5.1 RPC概述
5.2 环境预设
5.3 代码实战
5.3.1 创建API模块
5.3.2 创建自定义协议
5.3.3 实现Provider业务逻辑
5.3.4 完成Registry服务注册
5.3.5 实现Consumer远程调用
5.3.6 Monitor监控
5.4 运行效果演示
第3篇 Netty核心篇
第6章 Netty高性能之道
6.1 背景介绍
6.1.1 Netty惊人的性能数据
6.1.2 传统RPC调用性能差的“三宗罪”
6.1.3 Netty高性能的三个主题
6.2 Netty高性能之核心法宝
6.2.1 异步非阻塞通信
6.2.2 零拷贝
6.2.3 内存池
6.2.4 高效的Reactor线程模型
6.2.5 无锁化的串行设计理念
6.2.6 高效的并发编程
6.2.7 对高性能的序列化框架的支持
6.2.8 灵活的TCP参数配置能力
第7章 揭开Bootstrap的神秘面纱
7.1 客户端Bootstrap
7.1.1 Channel简介
7.1.2 NioSocketChannel的创建
7.1.3 客户端Channel的初始化
7.1.4 Unsafe属性的初始化
7.1.5 ChannelPipeline的初始化
7.1.6 EventLoop的初始化
7.1.7 将Channel注册到Selector
7.1.8 Handler的添加过程
7.1.9 客户端发起连接请求
7.2 服务端ServerBootstrap
7.2.1 NioServerSocketChannel的创建
7.2.2 服务端Channel的初始化
7.2.3 服务端ChannelPipeline的初始化
7.2.4 将服务端Channel注册到Selector
7.2.5 bossGroup与workerGroup
7.2.6 服务端Selector事件轮询
7.2.7 Netty解决JDK空轮询Bug
7.2.8 Netty对Selector中KeySet的优化
7.2.9 Handler的添加过程
第8章 大名鼎鼎的EventLoop
8.1 EventLoopGroup与Reactor
8.1.1 再谈Reactor线程模型
8.1.2 EventLoopGroup与Reactor关联
8.1.3 EventLoopGroup的实例化
8.2 任务执行者EventLoop
8.2.1 NioEventLoop的实例化过程
8.2.2 EventLoop与Channel的关联
8.2.3 EventLoop的启动
第9章 Netty大动脉Pipeline
9.1 Pipeline设计原理
9.1.1 Channel与ChannelPipeline
9.1.2 再谈ChannelPipeline的初始化
9.1.3 ChannelInitializer的添加
9.1.4 自定义ChannelHandler的添加过程
9.1.5 给ChannelHandler命名
9.1.6 ChannelHandler的默认命名规则
9.2 Pipeline的事件传播机制
9.2.1 Outbound事件传播方式
9.2.2 Inbound事件传播方式
9.2.3 小结
9.3 Handler的各种“姿势”
9.3.1 ChannelHandlerContext
9.3.2 Channel的生命周期
9.3.3 ChannelHandler常用的API
9.3.4 ChannelInboundHandler
第10章 异步处理双子星Future与Promise
10.1 异步结果Future
10.2 异步执行Promise
第11章 Netty内存分配ByteBuf
11.1 初识ByteBuf
11.1.1 ByteBuf的基本结构
11.1.2 ByteBuf的重要API
11.1.3 ByteBuf的基本分类
11.2 ByteBufAllocator内存管理器
11.3 非池化内存分配
11.3.1 堆内内存的分配
11.3.2 堆外内存的分配
11.4 池化内存分配
11.4.1 PooledByteBufAllocator简述
11.4.2 DirectArena内存分配流程
11.4.3 内存池的内存规格
11.4.4 命中缓存的分配
11.4.5 Page级别的内存分配
11.4.6 SubPage级别的内存分配
11.4.7 内存池ByteBuf的内存回收
11.4.8 SocketChannel读取ByteBuf的过程
第12章 Netty编解码的艺术
12.1 什么是拆包、粘包
12.1.1 TCP拆包、粘包
12.1.2 粘包问题的解决策略
12.2 什么是编解码
12.2.1 编解码技术
12.2.2 Netty为什么要提供编解码框架
12.3 Netty中常用的解码器
12.3.1 ByteToMessageDecoder抽象解码器
12.3.2 LineBasedFrameDecoder行解码器
12.3.3 DelimiterBasedFrameDecoder分隔符解码器
12.3.4 FixedLengthFrameDecoder固定长度解码器
12.3.5 LengthFieldBasedFrameDecoder通用解码器
12.4 Netty编码器原理和数据输出
12.4.1 WriteAndFlush事件传播
12.4.2 MessageToByteEncoder抽象编码器
12.4.3 写入Buffer队列
12.4.4 刷新Buffer队列
12.4.5 数据输出回调
12.5 自定义编解码
12.5.1 MessageToMessageDecoder抽象解码器
12.5.2 MessageToMessageEncoder抽象编码器
12.5.3 ObjectEncoder序列化编码器
12.5.4 LengthFieldPrepender通用编码器
第4篇 Netty实战篇
第13章 基于Netty手写消息推送系统
13.1 环境搭建
13.2 多协议通信设计
13.2.1 自定义协议规则
13.2.2 自定义编解码器
13.2.3 对HTTP的支持
13.2.4 对自定义协议的支持
13.2.5 对WebSocket协议的支持
13.3 服务端逻辑处理
13.3.1 多协议串行处理
13.3.2 服务端用户中心
13.4 客户端控制台处理
13.4.1 控制台接入代码
13.4.2 控制台消息处理
13.5 客户端Web页面交互实现
13.5.1 Web页面设计
13.5.2 WebSocket接入
13.5.3 登录和退出
13.5.4 发送文字信息
13.5.5 发送图片表情
13.5.6 发送鲜花雨特效
第14章 Netty高性能调优工具类解析
14.1 多线程共享FastThreadLocal
14.1.1 FastThreadLocal的使用和创建
14.1.2 FastThreadLocal的设值
14.2 Recycler对象回收站
14.2.1 Recycler的使用和创建
14.2.2 从Recycler中获取对象
14.2.3 相同线程内的对象回收
14.2.4 不同线程间的对象回收
14.2.5 获取不同线程间释放的对象
第15章 单机百万连接性能调优
15.1 模拟Netty单机连接瓶颈
15.2 单机百万连接调优解决思路
15.2.1 突破局部文件句柄限制
15.2.2 突破全局文件句柄限制
15.3 Netty应用级别的性能调优
15.3.1 Netty应用级别的性能瓶颈复现
15.3.2 Netty应用级别的性能调优方案
第16章 设计模式在Netty中的应用
16.1 单例模式源码举例
16.2 策略模式源码举例
16.3 装饰者模式源码举例
16.4 观察者模式源码举例
16.5 迭代器模式源码举例
16.6 责任链模式源码举例
16.7 工厂模式源码举例
第17章 Netty经典面试题集锦
17.1 基础知识部分
17.1.1 TCP和UDP的根本区别
17.1.2 TCP如何保证可靠传输
17.1.3 Netty能解决什么问题
17.1.4 选用Netty作为通信组件框架的举例
17.1.5 Netty有哪些主要组件,它们之间有什么关联
17.2 高级特性部分
17.2.1 相较同类框架,Netty有哪些优势
17.2.2 Netty的高性能体现在哪些方面
17.2.3 默认情况下Netty起多少线程,何时启动
17.2.4 Netty有几种发送消息的方式
17.2.5 Netty支持哪些心跳类型设置
17.2.6 Netty和Tomcat的区别
17.2.7 在实际应用中,如何确定要使用哪些编解码器
后折页
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜