- 博客(1)
- 资源 (2)
- 收藏
- 关注
转载 文件操作——fread,fwrite,fscanf和fprintf函数详解
文章来自:http://wujeangwei.blog.51cto.com/785319/159775,如需转载,请注明原文地址。 数据块读写函数fread和fwrite C语言还提供了用于整块数据的读写函数。 可用来读写一组数据,如一个数组元素,一个结构变量的值等。读数据块函数调用的一般形式为: fread(buffer,size,count,fp); 写数据块函数调用的一般形式
2015-11-02 14:41:10
2431
MFC视频课件
第17讲鼠标消息响应和界面设计.ppt
第18讲通用字体对话框和快捷键的添加
第19讲对象链表和序列化.ppt
第20讲绘图系统总体设计和直线绘制.ppt
.
.
.
2015-05-26
netty实战pdf
第一部分 Netty
的概念及体系结构
第 1 章 Netty——异步 和事件驱动 3 1.1 Java 网络编程 4 1.1.1 Java NIO 5 1.1.2 选择器 6 1.2 Netty 简介 6 1.2.1 谁在使用 Netty 7 1.2.2 异步和事件驱动 8 1.3 Netty 的核心组件 9 1.3.1 Channel 9 1.3.2 回调 9 1.3.3 Future 10 1.3.4 事件和 Channel Handler 11 1.3.5 把它们放在一起 12 1.4 小结 13
第 2 章 你的第一款 Netty 应用程序 14 2.1 设置开发环境 14 2.1.1 获取并安装 Java 开发 工具包 14 2.1.2 下载并安装 IDE 15 2.1.3 下载和安装Apache Maven 15 2.1.4 配置工具集 16
2.2 Netty 客户端/服务器 概览 16 2.3 编写 Echo 服务器 17 2.3.1 ChannelHandler 和 业务逻辑 17 2.3.2 引导服务器 18 2.4 编写 Echo 客户端 21 2.4.1 通过 ChannelHandler 实现 客户端逻辑 21 2.4.2 引导客户端 22 2.5 构建和运行 Echo 服务器 和客户端 24 2.5.1 运行构建 24 2.5.2 运行 Echo 服务器和 客户端 27 2.6 小结 29
第3章 Netty的组件和设计 30 3.1 Channel、EventLoop 和 ChannelFuture 30 3.1.1 Channel 接口 31 3.1.2 EventLoop 接口 31 3.1.3 ChannelFuture接口 32 3.2 ChannelHandler 和 ChannelPipeline 32 3.2.1 ChannelHandler 接口 32 3.2.2 ChannelPipeline接口 33 3.2.3 更加深入地了解 ChannelHandler 34 3.2.4 编码器和解码器 35 3.2.5 抽象类 SimpleChannel- InboundHandler 35
异步社区会员 hyinxiaoyu(hyinxiaoyu@gmail.com) 专享 尊重版权
ii 目录
4
5
6
7
3.3 引导 36 3.4 小结 37
第 4 章 传输 38 4.1 案例研究:传输迁移 38 4.1.1 不通过 Netty使用 OIO 和 NIO 39 4.1.2 通过 Netty使用 OIO 和 NIO 41 4.1.3 非阻塞的 Netty版本 42 4.2 传输 API 43 4.3 内置的传输 45 4.3.1 NIO——非阻塞 I/O 46 4.3.2 Epoll——用于 Linux 的本地非阻塞传输 47 4.3.3 OIO——旧的阻塞 I/O 48 4.3.4 用于 JVM 内部通信的 Local 传输 48 4.3.5 Embedded 传输 49 4.4 传输的用例 49 4.5 小结 51
第 5 章 ByteBuf 52 5.1 ByteBuf 的 API 52 5.2 ByteBuf 类——Netty 的 数据容器 53 5.2.1 它是如何工作的 53 5.2.2 ByteBuf 的使用模式 53 5.3 字节级操作 57 5.3.1 随机访问索引 57 5.3.2 顺序访问索引 57 5.3.3 可丢弃字节 58 5.3.4 可读字节 58 5.3.5 可写字节 59 5.3.6 索引管理 59 5.3.7 查找操作 60 5.3.8 派生缓冲区 60 5.3.9 读/写操作 62 5.3.10 更多的操作 64 5.4 ByteBufHolder 接口 65 5.5 ByteBuf 分配 65 5.5.1 按需分配:Byte- BufAllocator 接口 65 5.5.2 Unpooled 缓冲区 67 5.5.3 ByteBufUtil 类 67
5.6 引用计数 67 5.7 小结 68
第 6 章 ChannelHandler 和 ChannelPipeline 70 6.1 ChannelHandler 家族 70 6.1.1 Channel 的生命周期 70 6.1.2 ChannelHandler 的生命周期 71 6.1.3 ChannelInboundHandler 接口 71 6.1.4 ChannelOutboundHandler 接口 73 6.1.5 ChannelHandler 适配器 74 6.1.6 资源管理 74 6.2 ChannelPipeline 接口 76 6.2.1 修改 ChannelPipeline 78 6.2.2 触发事件 79 6.3 ChannelHandlerContext 接口 80 6.3.1 使用 Channel- HandlerContext 82 6.3.2 ChannelHandler 和 ChannelHandler Context 的高级用法 84 6.4 异常处理 86 6.4.1 处理入站异常 86 6.4.2 处理出站异常 87 6.5 小结 88
第 7 章 EventLoop 和线程 模型 89 7.1 线程模型概述 89 7.2 EventLoop 接口 90 7.2.1 Netty 4 中的 I/O 和 事件处理 92 7.2.2 Netty 3 中的 I/O 操作 92 7.3 任务调度 93 7.3.1 JDK的任务调度 API 93 7.3.2 使用 EventLoop 调度任务 94 7.4 实现细节 95 7.4.1 线程管理 95 7.4.2 EventLoop/线程的分配 96 7.5 小结 98
异步社区会员 hyinxiaoyu(hyinxiaoyu@gmail.com) 专享 尊重版权
目录 iii
8
9
10
11
12
第 8 章 引导 99 8.1 Bootstrap 类 99 8.2 引导客户端和无连接 协议 101 8.2.1 引导客户端 102 8.2.2 Channel 和 EventLoop- Group 的兼容性 103 8.3 引导服务器 104 8.3.1 ServerBootstrap 类 104 8.3.2 引导服务器 105 8.4 从 Channel 引导客户端 107 8.5 在引导过程中添加 多个ChannelHandler 108 8.6 使用 Netty 的 Channel- Option 和属性 110 8.7 引导DatagramChannel 111 8.8 关闭 112 8.9 小结 112
第 9 章 单元测试 113 9.1 EmbeddedChannel 概述 113 9.2 使用 EmbeddedChannel 测试ChannelHandler 115 9.2.1 测试入站消息 115 9.2.2 测试出站消息 118 9.3 测试异常处理 119 9.4 小结 121
第二部分 编解码器
第 10 章 编解码器框架 125 10.1 什么是编解码器 125 10.2 解码器 125 10.2.1 抽象类 ByteTo- MessageDecoder 126 10.2.2 抽象类 ReplayingDecoder 127 10.2.3 抽象类 Message- ToMessageDecoder 128
10.2.4 TooLong- FrameException 类 130 10.3 编码器 131 10.3.1 抽象类 Message- ToByteEncoder 131 10.3.2 抽象类 Message- ToMessageEncoder 132 10.4 抽象的编解码器类 133 10.4.1 抽象类 Byte- ToMessageCodec 133 10.4.2 抽象类 Message- ToMessageCodec 134 10.4.3 CombinedChannel- DuplexHandler 类 137 10.5 小结 138
第11章 预置的ChannelHandler 和编解码器 139 11.1 通过 SSL/TLS 保护 Netty 应用程序 139 11.2 构建基于Netty的HTTP/ HTTPS 应用程序 141 11.2.1 HTTP 解码器、 编码器和编解码器 141 11.2.2 聚合 HTTP 消息 143 11.2.3 HTTP 压缩 144 11.2.4 使用 HTTPS 145 11.2.5 WebSocket 146 11.3 空闲的连接和超时 148 11.4 解码基于分隔符的协议 和基于长度的协议 150 11.4.1 基于分隔符的协议 150 11.4.2 基于长度的协议 153 11.5 写大型数据 155 11.6 序列化数据 1 57 11.6.1 JDK 序列化 157 11.6.2 使用 JBoss Marshalling 进行序列化 157 11.6.3 通过 Protocol Buffers 序列化 159 11.7 小结 160
第三部分 网络协议
第 12 章 WebSocket 163 12.1 WebSocket 简介 163
异步社区会员 hyinxiaoyu(hyinxiaoyu@gmail.com) 专享 尊重版权
iv 目录
14
15
13
12.2 我们的 WebSocket 示例 应用程序 164 12.3 添加 WebSocket 支持 165 12.3.1 处理 HTTP 请求 165 12.3.2 处理 WebSocket 帧 168 12.3.3 初始化 Channel- Pipeline 169 12.3.4 引导 171 12.4 测试该应用程序 173 12.5 小结 176
第13章 使用UDP广播事件 177 13.1 UDP 的基础知识 177 13.2 UDP 广播 178 13.3 UDP 示例应用程序 178 13.4 消息 POJO: LogEvent 179 13.5 编写广播者 180 13.6 编写监视器 185 13.7 运行 LogEvent- Broadcaster 和 LogEventMonitor 187 13.8 小结 189
第四部分 案例研究
第14章 案例研究,第一部分 193 14.1 Droplr—构建 移动服务 193 14.1.1 这一切的起因 193 14.1.2 Droplr 是怎样工作的 194 14.1.3 创造一个更加快速 的上传体验 194 14.1.4 技术栈 196 14.1.5 性能 199 14.1.6 小结——站在 巨人的肩膀上 200 14.2 Firebase—实时的 数据同步服务 200 14.2.1 Firebase的架构 201
14.2.2 长轮询 201 14.2.3 HTTP 1.1 keep-alive 和流水线化 204 14.2.4 控制 SslHandler 205 14.2.5 Firebase小结 207 14.3 Urban Airship—构建 移动服务 207 14.3.1 移动消息的 基础知识 207 14.3.2 第三方递交 208 14.3.3 使用二进制 协议的例子 209 14.3.4 直接面向设备 的递交 211 14.3.5 Netty擅长管理 大量的并发连接 212 14.3.6 Urban Airship 小结——跨 越防火墙边界 213 14.4 小结 214
第15章 案例研究,第二部分 215 15.1 Netty 在 Facebook 的 使用:Nifty 和 Swift 215 15.1.1 什么是 Thrift 215 15.1.2 使用 Netty 改善 Java Thrift 的现状 216 15.1.3 Nifty 服务器的设计 217 15.1.4 Nifty异步客户端的 设计 220 15.1.5 Swift:一种更快的构建 Java Thrift服务的方式 221 15.1.6 结果 221 15.1.7 Facebook小结 224 15.2 Netty 在 Twitter 的使用:Finagle 224 15.2.1 Twitter 成长的烦恼 224 15.2.2 Finagle的诞生 224 15.2.3 Finagle是如何 工作的 225 15.2.4 Finagle 的抽象 230 15.2.5 故障管理 231 15.2.6 组合服务 232 15.2.7 未来:Netty 232 15.2.8 Twitter 小结 233 15.3 小结 233
附录 Maven 介绍 234
2018-12-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人