为你推荐
前言
第1章 高并发时代的必备技能
1.1 Netty为何这么火
1.1.1 Netty火热的程度
1.1.2 Netty是面试的必杀器
1.2 高并发利器Redis
1.2.1 什么是Redis
1.2.2 Redis成为缓存事实标准的原因
1.3 分布式利器ZooKeeper
1.3.1 什么是ZooKeeper
1.3.2 ZooKeeper的优势
1.4 高并发IM的综合实践
1.4.1 高并发IM的学习价值
1.4.2 庞大的应用场景
1.5 Netty、Redis、ZooKeeper实践计划
1.5.1 第1天:Java NIO实践
1.5.2 第2天:Reactor反应器模式实践
1.5.3 第3天:异步回调模式实践
1.5.4 第4天:Netty基础实践
1.5.5 第5天:解码器(Decoder)与编码器(Encoder)实践
1.5.6 第6天:JSON和ProtoBuf序列化实践
1.5.7 第7~10天:基于Netty的单聊实战
1.5.8 第11天:ZooKeeper实践计划
1.5.9 第12天:Redis实践计划
1.6 本章小结
第2章 高并发IO的底层原理
2.1 IO读写的基础原理
2.1.1 内核缓冲区与进程缓冲区
2.1.2 详解典型的系统调用流程
2.2 四种主要的IO模型
2.2.1 同步阻塞IO(Blocking IO)
2.2.2 同步非阻塞NIO(None Blocking IO)
2.2.3 IO多路复用模型(IO Multiplexing)
2.2.4 异步IO模型(Asynchronous IO)
2.3 通过合理配置来支持百万级并发连接
2.4 本章小结
第3章 Java NIO通信基础详解
3.1 Java NIO简介
3.1.1 NIO和OIO的对比
3.1.2 通道(Channel)
3.1.3 Selector选择器
3.1.4 缓冲区(Buffer)
3.2 详解NIO Buffer类及其属性
3.2.1 Buffer类
3.2.2 Buffer类的重要属性
3.2.3 4个属性的小结
3.3 详解NIO Buffer类的重要方法
3.3.1 allocate()创建缓冲区
3.3.2 put()写入到缓冲区
3.3.3 flip()翻转
3.3.4 get()从缓冲区读取
3.3.5 rewind()倒带
3.3.6 mark( )和reset( )
3.3.7 clear( )清空缓冲区
3.3.8 使用Buffer类的基本步骤
3.4 详解NIO Channel(通道)类
3.4.1 Channel(通道)的主要类型
3.4.2 FileChannel文件通道
3.4.3 使用FileChannel完成文件复制的实践案例
3.4.4 SocketChannel套接字通道
3.4.5 使用SocketChannel发送文件的实践案例
3.4.6 DatagramChannel数据报通道
3.4.7 使用DatagramChannel数据包通道发送数据的实践案例
3.5 详解NIO Selector选择器
3.5.1 选择器以及注册
3.5.2 SelectableChannel可选择通道
3.5.3 SelectionKey选择键
3.5.4 选择器使用流程
3.5.5 使用NIO实现Discard服务器的实践案例
3.5.6 使用SocketChannel在服务器端接收文件的实践案例
3.6 本章小结
第4章 鼎鼎大名的Reactor反应器模式
4.1 Reactor反应器模式为何如此重要
4.1.1 为什么首先学习Reactor反应器模式
4.1.2 Reactor反应器模式简介
4.1.3 多线程OIO的致命缺陷
4.2 单线程Reactor反应器模式
4.2.1 什么是单线程Reactor反应器
4.2.2 单线程Reactor反应器的参考代码
4.2.3 一个Reactor反应器版本的EchoServer实践案例
4.2.4 单线程Reactor反应器模式的缺点
4.3 多线程的Reactor反应器模式
4.3.1 多线程池Reactor反应器演进
4.3.2 多线程Reactor反应器的实践案例
4.3.3 多线程Handler处理器的实践案例
4.4 Reactor反应器模式小结
4.5 本章小结
第5章 并发基础中的Future异步回调模式
5.1 从泡茶的案例说起
5.2 join异步阻塞
5.2.1 线程的join合并流程
5.2.2 使用join实现异步泡茶喝的实践案例
5.2.3 详解join合并方法
5.3 FutureTask异步回调之重武器
5.3.1 Callable接口
5.3.2 初探FutureTask类
5.3.3 Future接口
5.3.4 再探FutureTask类
5.3.5 使用FutureTask类实现异步泡茶喝的实践案例
5.4 Guava的异步回调
5.4.1 详解FutureCallback
5.4.2 详解ListenableFuture
5.4.3 ListenableFuture异步任务
5.4.4 使用Guava实现泡茶喝的实践案例
5.5 Netty的异步回调模式
5.5.1 详解GenericFutureListener接口
5.5.2 详解Netty的Future接口
5.5.3 ChannelFuture的使用
5.5.4 Netty的出站和入站异步回调
5.6 本章小结
第6章 Netty原理与基础
6.1 第一个Netty的实践案例DiscardServer
6.1.1 创建第一个Netty项目
6.1.2 第一个Netty服务器端程序
6.1.3 业务处理器NettyDiscardHandler
6.1.4 运行NettyDiscardServer
6.2 解密Netty中的Reactor反应器模式
6.2.1 回顾Reactor反应器模式中IO事件的处理流程
6.2.2 Netty中的Channel通道组件
6.2.3 Netty中的Reactor反应器
6.2.4 Netty中的Handler处理器
6.2.5 Netty的流水线(Pipeline)
6.3 详解Bootstrap启动器类
6.3.1 父子通道
6.3.2 EventLoopGroup线程组
6.3.3 Bootstrap的启动流程
6.3.4 ChannelOption通道选项
6.4 详解Channel通道
6.4.1 Channel通道的主要成员和方法
6.4.2 EmbeddedChannel嵌入式通道
6.5 详解Handler业务处理器
6.5.1 ChannelInboundHandler通道入站处理器
6.5.2 ChannelOutboundHandler通道出站处理器
6.5.3 ChannelInitializer通道初始化处理器
6.5.4 ChannelInboundHandler的生命周期的实践案例
6.6 详解Pipeline流水线
6.6.1 Pipeline入站处理流程
6.6.2 Pipeline出站处理流程
6.6.3 ChannelHandlerContext上下文
6.6.4 截断流水线的处理
6.6.5 Handler业务处理器的热拔插
6.7 详解ByteBuf缓冲区
6.7.1 ByteBuf的优势
6.7.2 ByteBuf的逻辑部分
6.7.3 ByteBuf的重要属性
6.7.4 ByteBuf的三组方法
6.7.5 ByteBuf基本使用的实践案例
6.7.6 ByteBuf的引用计数
6.7.7 ByteBuf的Allocator分配器
6.7.8 ByteBuf缓冲区的类型
6.7.9 三类ByteBuf使用的实践案例
6.7.10 ByteBuf的自动释放
6.8 ByteBuf浅层复制的高级使用方式
6.8.1 slice切片浅层复制
6.8.2 duplicate整体浅层复制
6.8.3 浅层复制的问题
6.9 EchoServer回显服务器的实践案例
6.9.1 NettyEchoServer回显服务器的服务器端
6.9.2 共享NettyEchoServerHandler处理器
6.9.3 NettyEchoClient客户端代码
6.9.4 NettyEchoClientHandler处理器
6.10 本章小结
第7章 Decoder与Encoder重要组件
7.1 Decoder原理与实践
7.1.1 ByteToMessageDecoder解码器
7.1.2 自定义Byte2IntegerDecoder整数解码器的实践案例
7.1.3 ReplayingDecoder解码器
7.1.4 整数的分包解码器的实践案例
7.1.5 字符串的分包解码器的实践案例
7.1.6 MessageToMessageDecoder解码器
7.2 开箱即用的Netty内置Decoder
7.2.1 LineBasedFrameDecoder解码器
7.2.2 DelimiterBasedFrameDecoder解码器
7.2.3 LengthFieldBasedFrameDecoder解码器
7.2.4 多字段Head-Content协议数据帧解析的实践案例
7.3 Encoder原理与实践
7.3.1 MessageToByteEncoder编码器
7.3.2 MessageToMessageEncoder编码器
7.4 解码器和编码器的结合
7.4.1 ByteToMessageCodec编解码器
7.4.2 CombinedChannelDuplexHandler组合器
7.5 本章小结
第8章 JSON和ProtoBuf序列化
8.1 详解粘包和拆包
8.1.1 半包问题的实践案例
8.1.2 什么是半包问题
8.1.3 半包现象的原理
8.2 JSON协议通信
8.2.1 JSON序列化的通用类
8.2.2 JSON序列化与反序列化的实践案例
8.2.3 JSON传输的编码器和解码器之原理
8.2.4 JSON传输之服务器端的实践案例
8.2.5 JSON传输之客户端的实践案例
8.3 Protobuf协议通信
8.3.1 一个简单的proto文件的实践案例
8.3.2 控制台命令生成POJO和Builder
8.3.3 Maven插件生成POJO和Builder
8.3.4 消息POJO和Builder的使用之实践案例
8.4 Protobuf编解码的实践案例
8.4.1 Protobuf编码器和解码器的原理
8.4.2 Protobuf传输之服务器端的实践案例
8.4.3 Protobuf传输之客户端的实践案例
8.5 详解Protobuf协议语法
8.5.1 proto的头部声明
8.5.2 消息结构体与消息字段
8.5.3 字段的数据类型
8.5.4 其他的语法规范
8.6 本章小结
第9章 基于Netty的单体IM系统的开发实践
9.1 自定义ProtoBuf编解码器
9.1.1 自定义Protobuf编码器
9.1.2 自定义Protobuf解码器
9.1.3 IM系统中Protobuf消息格式的设计
9.2 概述IM的登录流程
9.2.1 图解登录/响应流程的9个环节
9.2.2 客户端涉及的主要模块
9.2.3 服务器端涉及的主要模块
9.3 客户端的登录处理的实践案例
9.3.1 LoginConsoleCommand和User POJO
9.3.2 LoginSender发送器
9.3.3 ClientSession客户端会话
9.3.4 LoginResponceHandler登录响应处理器
9.3.5 客户端流水线的装配
9.4 服务器端的登录响应的实践案例
9.4.1 服务器流水线的装配
9.4.2 LoginRequestHandler登录请求处理器
9.4.3 LoginProcesser用户验证逻辑
9.4.4 EventLoop线程和业务线程相互隔离
9.5 详解ServerSession服务器会话
9.5.1 通道的容器属性
9.5.2 ServerSession服务器端会话类
9.5.3 SessionMap会话管理器
9.6 点对点单聊的实践案例
9.6.1 简述单聊的端到端流程
9.6.2 客户端的ChatConsoleCommand收集聊天内容
9.6.3 客户端的CommandController发送POJO
9.6.4 服务器端的ChatRedirectHandler消息转发
9.6.5 服务器端的ChatRedirectProcesser异步处理
9.6.6 客户端的ChatMsgHandler接收POJO
9.7 详解心跳检测
9.7.1 网络连接的假死现象
9.7.2 服务器端的空闲检测
9.7.3 客户端的心跳报文
9.8 本章小结
第10章 ZooKeeper分布式协调
10.1 ZooKeeper伪集群安装和配置
10.1.1 创建数据目录和日志目录:
10.1.2 创建myid文件
10.1.3 创建和修改配置文件
10.1.4 配置文件示例
10.1.5 启动ZooKeeper伪集群
10.2 使用ZooKeeper进行分布式存储
10.2.1 详解ZooKeeper存储模型
10.2.2 zkCli客户端命令清单
10.3 ZooKeeper应用开发的实践
10.3.1 ZkClient开源客户端介绍
10.3.2 Curator开源客户端介绍
10.3.3 Curator开发的环境准备
10.3.4 Curator客户端实例的创建
10.3.5 通过Curator创建ZNode节点
10.3.6 在Curator中读取节点
10.3.7 在Curator中更新节点
10.3.8 在Curator中删除节点
10.4 分布式命名服务的实践
10.4.1 ID生成器
10.4.2 ZooKeeper分布式ID生成器的实践案例
10.4.3 集群节点的命名服务之实践案例
10.4.4 使用ZK实现SnowFlakeID算法的实践案例
10.5 分布式事件监听的重点
10.5.1 Watcher标准的事件处理器
10.5.2 NodeCache节点缓存的监听
10.5.3 PathChildrenCache子节点监听
10.5.4 Tree Cache节点树缓存
10.6 分布式锁的原理与实践
10.6.1 公平锁和可重入锁的原理
10.6.2 ZooKeeper分布式锁的原理
10.6.3 分布式锁的基本流程
10.6.4 加锁的实现
10.6.5 释放锁的实现
10.6.6 分布式锁的使用
10.6.7 Curator的InterProcessMutex可重入锁
10.7 本章小结
第11章 分布式缓存Redis
11.1 Redis入门
11.1.1 Redis安装和配置
11.1.2 Redis客户端命令
11.1.3 Redis Key的命名规范
11.2 Redis数据类型
11.2.1 String字符串
11.2.2 List列表
11.2.3 Hash哈希表
11.2.4 Set集合
11.2.5 Zset有序集合
11.3 Jedis基础编程的实践案例
11.3.1 Jedis操作String字符串
11.3.2 Jedis操作List列表
11.3.3 Jedis操作Hash哈希表
11.3.4 Jedis操作Set集合
11.3.5 Jedis操作Zset有序集合
11.4 JedisPool连接池的实践案例
11.4.1 JedisPool的配置
11.4.2 JedisPool创建和预热
11.4.3 JedisPool的使用
11.5 使用spring-data-redis完成
11.5.1 CRUD中应用缓存的场景
11.5.2 配置spring-redis.xml
11.5.3 使用RedisTemplate模板API
11.5.4 使用RedisTemplate模板API完成CRUD的实践案例
11.5.5 使用RedisCallback回调完成CRUD的实践案例
11.6 Spring的Redis缓存注解
11.6.1 使用Spring缓存注解完成CRUD的实践案例
11.6.2 spring-redis.xml中配置的调整
11.6.3 详解@CachePut和@Cacheable注解
11.6.4 详解@CacheEvict注解
11.6.5 详解@Caching组合注解
11.7 详解SpringEL(SpEL)
11.7.1 SpEL运算符
11.7.2 缓存注解中的SpringEL表达式
11.8 本章小结
第12章 亿级高并发IM架构的开发实践
12.1 如何支撑亿级流量的高并发IM架构的理论基础
12.1.1 亿级流量的系统架构的开发实践
12.1.2 高并发架构的技术选型
12.1.3 详解IM消息的序列化协议选型
12.1.4 详解长连接和短连接
12.2 分布式IM的命名服务的实践案例
12.2.1 IM节点的POJO类
12.2.2 IM节点的ImWorker类
12.3 Worker集群的负载均衡之实践案例
12.3.1 ImLoadBalance负载均衡器
12.3.2 与WebGate的整合
12.4 即时通信消息的路由和转发的实践案例
12.4.1 IM路由器WorkerRouter
12.4.2 IM转发器WorkerReSender
12.5 Feign短连接RESTful调用
12.5.1 短连接API的接口准备
12.5.2 声明远程接口的本地代理
12.5.3 远程API的本地调用
12.6 分布式的在线用户统计的实践案例
12.6.1 Curator的分布式计数器
12.6.2 用户上线和下线的统计
12.7 本章小结
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜