爱码网专注于资源免费下载

Netty实战 PDF 下载

爱码网2024-04-09 10:37:54611JavaNetty实战pdf下载

Netty实战 PDF 下载-第1张图片 此部分为隐藏内容,请输入验证码后查看
验证码:


扫描右侧图片或微信搜索 “ Java技术分享屋 ” ,回复 “ 验证码 ” ,获取验证密码。
本资料仅供读者预览及学习交流使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版!

一.资料图片

Netty实战 PDF 下载-第2张图片

二.资料简介

本书是为想要或者正在使用Java从事高性能网络编程的人而写的,循序渐进地介绍了Netty各个方面的内容。

本书共分为4个部分:第一部分详细地介绍Netty的相关概念以及核心组件,第二部分介绍自定义协议经常用到的编解码器,第三部分介绍Netty对于应用层高级协议的支持,会覆盖常见的协议及其在实践中的应用,第四部分是几个案例研究。此外,附录部分还会简单地介绍Maven,以及如何通过使用Maven编译和运行本书中的示例。

阅读本书不需要读者精通Java网络和并发编程。如果想要更加深入地理解本书背后的理念以及Netty源码本身,可以系统地学习一下Java网络编程、NIO、并发和异步编程以及相关的设计模式。

曾经人们认为Web应用服务器将会让我们忘记如何编写HTTP或者 RPC服务器。不幸的是,这个白日梦并没有持续多久。我们正在处理的负载量以及功能变化的速度一直在不断地增加,超出了传统的三层体系结构的承受能力,我们正被迫将应用程序切分成很多块,并分发到更大的机器集群中。

运行一个如此庞大的分布式系统引发了两个有趣的问题:运行成本和延迟。如果我们将单个节点的性能提高30%,或者甚至超过100%,那么我们可以节省多少台机器呢?当一个来自Web浏览器的查询触发了几十个跨越了很多不同机器的内部远程过程调用时,我们如何能达到最低的延迟呢?

在本书(第一本关于Netty项目的书)中,Norman Maurer(Netty 的核心贡献者之一)通过展示如何使用Netty构建高性能、低延迟的网络应用程序,给出了这些问题的最终答案。读完这本书,你就能够构建所有可能的网络应用程序了,从轻量级的HTTP服务器到高度定制化的RPC服务器。

本书之所以能令人印象深刻,一方面是因为它是由知晓Netty每个细节的核心贡献者编写的,另一方面是因为它包含了几家在其生产系统中使用了Netty的公司(Twitter、Facebook和Firebase等)的案例研

三.作者简介

Norman Maurer,是苹果公司的资深软件工程师,同时也是Netty的核心开发人员。

Marvin Allen Wolfthal,是Dell Services的顾问,他使用Netty实现了多个任务关键型的企业系统。

何品,目前是淘宝的一名资深软件工程师,热爱网络、并发、异步相关的主题以及函数式编程,同时也是Netty、Akka等项目的贡献者,活跃于Scala社区,目前也在从事GraphQL相关的开发工作。

四.资料目录

版权信息

版权声明

内容提要

中文版序

译者序

译者简介

前言

致谢

关于本书

关于封面

插图

第一部分 Netty的概念及体系结构

第1章 Netty——异步和事件驱动

1.1 Java网络编程

1.1.1 Java NIO

1.1.2 选择器

1.2 Netty简介

1.2.1 谁在使用Netty

1.2.2 异步和事件驱动

1.3 Netty的核心组件

1.3.1 Channel

1.3.2 回调

1.3.3 Future

1.3.4 事件和ChannelHandler

1.3.5 把它们放在一起

1.4 小结

第2章 你的第一款Netty应用程序 2.1 设置开发环境

2.1.1 获取并安装Java开发工具包

2.1.2 下载并安装IDE

2.1.3 下载和安装Apache Maven

2.1.4 配置工具集

2.2 Netty客户端/服务器概览

2.3 编写Echo服务器

2.3.1 ChannelHandler和业务逻辑

2.3.2 引导服务器

2.4 编写Echo客户端

2.4.1 通过ChannelHandler实现客户端逻辑

2.4.2 引导客户端

2.5 构建和运行Echo服务器和客户端

2.5.1 运行构建

2.5.2 运行Echo服务器和客户端

2.6 小结

第3章 Netty的组件和设计

3.1 Channel、EventLoop和ChannelFuture

3.1.1 Channel接口

3.1.2 EventLoop接口

3.1.3 ChannelFuture接口

3.2 ChannelHandler和ChannelPipeline

3.2.1 ChannelHandler接口

3.2.2 ChannelPipeline接口

3.2.3 更加深入地了解ChannelHandler

3.2.4 编码器和解码器

3.2.5 抽象类SimpleChannelInboundHandler

3.3 引导

3.4 小结

第4章 传输 4.1 案例研究:传输迁移

4.1.1 不通过Netty使用OIO和NIO

4.1.2 通过Netty使用OIO和NIO

4.1.3 非阻塞的Netty版本

4.2 传输API

4.3 内置的传输

4.3.1 NIO——非阻塞I/O

4.3.2 Epoll——用于Linux的本地非阻塞传输

4.3.3 OIO——旧的阻塞I/O

4.3.4 用于JVM内部通信的Local传输

4.3.5 Embedded传输

4.4 传输的用例

4.5 小结

第5章 ByteBuf

5.1 ByteBuf的API

5.2 ByteBuf类——Netty的数据容器

5.2.1 它是如何工作的

5.2.2 ByteBuf的使用模式

5.3 字节级操作

5.3.1 随机访问索引

5.3.2 顺序访问索引

5.3.3 可丢弃字节

5.3.4 可读字节 5.3.5 可写字节 5.3.6 索引管理

5.3.7 查找操作

5.3.8 派生缓冲区

5.3.9 读/写操作

5.3.10 更多的操作

5.4 ByteBufHolder接口

5.5 ByteBuf分配

5.5.1 按需分配:ByteBufAllocator接口

5.5.2 Unpooled缓冲区

5.5.3 ByteBufUtil类

5.6 引用计数 5.7 小结

第6章 ChannelHandler和ChannelPipeline

6.1 ChannelHandler家族

6.1.1 Channel的生命周期

6.1.2 ChannelHandler的生命周期

6.1.3 ChannelInboundHandler接口

6.1.4 ChannelOutboundHandler接口

6.1.5 ChannelHandler适配器

6.1.6 资源管理

6.2 ChannelPipeline接口

6.2.1 修改ChannelPipeline

6.2.2 触发事件

6.3 ChannelHandlerContext接口

6.3.1 使用ChannelHandlerContext

6.3.2 ChannelHandler和ChannelHandlerContext的高级用法

6.4 异常处理

6.4.1 处理入站异常

6.4.2 处理出站异常 6.5 小结

第7章 EventLoop和线程模型

7.1 线程模型概述

7.2 EventLoop接口

7.2.1 Netty 4中的I/O和事件处理

7.2.2 Netty 3中的I/O操作

7.3 任务调度

7.3.1 JDK的任务调度API

7.3.2 使用EventLoop调度任务

7.4 实现细节

7.4.1 线程管理

7.4.2 EventLoop/线程的分配 7.5 小结

第8章 引导

8.1 Bootstrap类

8.2 引导客户端和无连接协议

8.2.1 引导客户端

8.2.2 Channel和EventLoopGroup的兼容性

8.3 引导服务器

8.3.1 ServerBootstrap类

8.3.2 引导服务器

8.4 从Channel引导客户端

8.5 在引导过程中添加多个ChannelHandler

8.6 使用Netty的ChannelOption和属性

8.7 引导DatagramChannel

8.8 关闭

8.9 小结

第9章 单元测试

9.1 EmbeddedChannel概述

9.2 使用EmbeddedChannel测试ChannelHandler

9.2.1 测试入站消息

9.2.2 测试出站消息

9.3 测试异常处理

9.4 小结

第二部分 编解码器

第10章 编解码器框架 10.1 什么是编解码器

10.2 解码器

10.2.1 抽象类ByteToMessageDecoder

10.2.2 抽象类ReplayingDecoder

10.2.3 抽象类MessageToMessageDecoder

10.2.4 TooLongFrameException类

10.3 编码器

10.3.1 抽象类MessageToByteEncoder

10.3.2 抽象类MessageToMessageEncoder

10.4 抽象的编解码器类

10.4.1 抽象类ByteToMessageCodec

10.4.2 抽象类MessageToMessageCodec

10.4.3 CombinedChannelDuplexHandler类 10.5 小结

第11章 预置的ChannelHandler和编解码器 11.1 通过SSL/TLS保护Netty应用程序

11.2 构建基于Netty的HTTP/HTTPS应用程序

11.2.1 HTTP解码器、编码器和编解码器

11.2.2 聚合HTTP消息

11.2.3 HTTP压缩

11.2.4 使用HTTPS

11.2.5 WebSocket

11.3 空闲的连接和超时

11.4 解码基于分隔符的协议和基于长度的协议

11.4.1 基于分隔符的协议

11.4.2 基于长度的协议

11.5 写大型数据

11.6 序列化数据

11.6.1 JDK序列化

11.6.2 使用JBoss Marshalling进行序列化

11.6.3 通过Protocol Buffers序列化 11.7 小结

第三部分 网络协议第12章 WebSocket 12.1 WebSocket简介

12.2 我们的WebSocket示例应用程序

12.3 添加WebSocket支持

12.3.1 处理HTTP请求

12.3.2 处理WebSocket帧

12.3.3 初始化ChannelPipeline

12.3.4 引导

12.4 测试该应用程序

如何进行加密

12.5 小结

第13章 使用UDP广播事件

13.1 UDP的基础知识

13.2 UDP广播

13.3 UDP示例应用程序

13.4 消息POJO: LogEvent

13.5 编写广播者

13.6 编写监视器

13.7 运行LogEventBroadcaster和LogEventMonitor 13.8 小结

第四部分 案例研究

第14章 案例研究,第一部分

14.1 Droplr——构建移动服务

14.1.1 这一切的起因

14.1.2 Droplr是怎样工作的

14.1.3 创造一个更加快速的上传体验

14.1.4 技术栈

14.1.5 性能

14.1.6 小结——站在巨人的肩膀上

14.2 Firebase——实时的数据同步服务

14.2.1 Firebase的架构

14.2.2 长轮询

14.2.3 HTTP 1.1 keep-alive和流水线化

14.2.4 控制SslHandler

14.2.5 Firebase小结

14.3 Urban Airship——构建移动服务

14.3.1 移动消息的基础知识

14.3.2 第三方递交

14.3.3 使用二进制协议的例子

14.3.4 直接面向设备的递交

14.3.5 Netty擅长管理大量的并发连接

14.3.6 Urban Airship小结——跨越防火墙边界 14.4 小结

第15章 案例研究,第二部分

15.1 Netty在Facebook的使用:Nifty和Swift[1]

15.1.1 什么是Thrift

15.1.2 使用Netty改善Java Thrift的现状

15.1.3 Nifty服务器的设计

15.1.4 Nifty异步客户端的设计

15.1.5 Swift:一种更快的构建Java Thrift服务的方式

15.1.6 结果

15.1.7 Facebook小结

15.2 Netty在Twitter的使用:Finagle

15.2.1 Twitter成长的烦恼

15.2.2 Finagle的诞生

15.2.3 Finagle是如何工作的

15.2.4 Finagle的抽象

15.2.5 故障管理

15.2.6 组合服务

15.2.7 未来:Netty

15.2.8 Twitter小结

15.3 小结

附录

Maven介绍


本文链接:https://www.icode1024.com/java/373.html

网友评论