更新时间:2024-01-05 16:22:10
封面
版权信息
前言
基础篇 走进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开发环境准备