设计模式之禅(第2版)
基本概述:
《设计模式之禅(第 2 版)》由秦小波著,是设计模式领域公认的 3 本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和方法的最大特点。第 1 版 2010 年出版,畅销至今,广受好评,是该领域的里程碑著作。深刻解读 6 大设计原则和 28 种设计模式的准确定义、应用方法和最佳实践,全方位比较各种同类模式之间的异同,详细讲解将不同的模式组合使用的方法。第 2 版在第 1 版的基础上有两方面的改进,一方面结合读者的意见和建议对原有内容中的瑕疵进行了修正和完善,另一方面增加了 4 种新的设计模式,希望这一版能为广大程序员们奉上一场更加完美的设计模式盛宴!
《设计模式之禅(第 2 版)》共 38 章,分为五部分:第一部分(第 1~6 章),以一种全新的视角对面向对象程序设计的 6 大原则进行了深刻解读,旨在让读者能更深刻且准确地理解这些原则,为后面的学习打下基础;第二部分(第 7~29 章)通过大量生动的案例讲解和分析了 23 种最常用的设计模式,并进行了扩展讲解,通俗易懂,趣味性极强而又紧扣模式的核心;第三部分(第 30~33 章)对同类型和相关联的模式进行了深入分析和比较,旨在阐明各种设计模式之间的差别以及它们的理想应用场景;第四部分(第 34~36 章)探讨了如何在实际开发中将各种设计模式混合起来使用,以发挥设计模式的最大效用;第五部分(第 37~38 章)是本书的扩展篇,首先从实现的角度对 MVC 框架的原理进行了深入分析,然后讲解了 5 种新的设计模式的原理、意图和最佳实践。本书最后附有一份精美的设计模式彩图,可以裁剪,便于参考。
深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)
深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)
目录:
第一部分走近 Java
第 1 章走近 Java2
1.1 概述 2
1.2Java 技术体系 3
1.3Java 发展史 5
1.4Java 虚拟机发展史 9
1.4.1SunClassicExactVM9
1.4.2SunHotSpotVM11
1.4.3SunMobile—EmbeddedVMMeta—CircularVM12
1.4.4BEAJRockitIBMJ9VM13
1.4.5AzulVMBEALiquidVM14
1.4.6ApacheHarmonyGoogleAndroidDalvikVM14
1.4.7MicrosoftJVM 及其他 15
1.5 展望 Java 技术的未来 16
1.5.1 模块化 17
1.5.2 混合语言 17
1.5.3 多核并行 19
1.5.4 进一步丰富语法 20
1.5.564 位虚拟机 21
1.6 实战:自己编译 JDK22
1.6.1 获取 JDK 源码 22
1.6.2 系统需求 24
1.6.3 构建编译环境 25
1.6.4 进行编译 26
1.6.5 在 IDE 工具中进行源码调试 31
1.7 本章小结 35
第二部分自动内存管理机制
第 2 章 Java 内存区域与内存溢出异常 38
2.1 概述 38
2.2 运行时数据区域 38
2.2.1 程序计数器 39
2.2.2Java 虚拟机栈 39
2.2.3 本地方法栈 40
2.2.4Java 堆 41
2.2.5 方法区 41
2.2.6 运行时常量池 42
2.2.7 直接内存 43
2.3HotSpot 虚拟机对象探秘 43
2.3.1 对象的创建 44
2.3.2 对象的内存布局 47
2.3.3 对象的访问定位 48
2.4 实战:OutOfMemoryError 异常 50
2.4.1Java 堆溢出 51
2.4.2 虚拟机栈和本地方法栈溢出 53
2.4.3 方法区和运行时常量池溢出 56
2.4.4 本机直接内存溢出 59
2.5 本章小结 60
第 3 章垃圾收集器与内存分配策略 61
3.1 概述 61
3.2 对象已死吗 62
3.2.1 引用计数算法 62
3.2.2 可达性分析算法 64
3.2.3 再谈引用 65
3.2.4 生存还是死亡 66
3.2.5 回收方法区 68
3.3 垃圾收集算法 69
3.3.1 标记—清除算法 69
3.3.2 复制算法 70
3.3.3 标记—整理算法 71
3.3.4 分代收集算法 72
3.4HotSpot 的算法实现 72
3.4.1 枚举根节点 72
3.4.2 安全点 73
3.4.3 安全区域 74
3.5 垃圾收集器 75
3.5.1Serial 收集器 76
3.5.2ParNew 收集器 77
3.5.3ParallelScavenge 收集器 79
3.5.4SerialOld 收集器 80
3.5.5ParallelOld 收集器 80
3.5.6CMS 收集器 81
3.5.7G1 收集器 84
3.5.8 理解 GC 日志 89
3.5.9 垃圾收集器参数总结 90
3.6 内存分配与回收策略 91
3.6.1 对象优先在 Eden 分配 91
3.6.2 大对象直接进入老年代 93
3.6.3 长期存活的对象将进入老年代 95
3.6.4 动态对象年龄判定 97
3.6.5 空间分配担保 98
3.7 本章小结 100
第 4 章虚拟机性能监控与故障处理工具 101
4.1 概述 101
4.2JDK 的命令行工具 101
4.2.1jps:虚拟机进程状况工具 104
4.2.2jstat:虚拟机统计信息监视工具 105
4.2.3jinfo:Java 配置信息工具 106
4.2.4jmap:Java 内存映像工具 107
4.2.5jhat:虚拟机堆转储快照分析工具 108
4.2.6jstack:Java 堆栈跟踪工具 109
4.2.7HSDIS:JIT 生成代码反汇编 111
4.3JDK 的可视化工具 114
4.3.1JConsole:Java 监视与管理控制台 115
4.3.2VisualVM:多合一故障处理工具 122
4.4 本章小结 131
第 5 章调优案例分析与实战 132
5.1 概述 132
5.2 案例分析 132
5.2.1 高性能硬件上的程序部署策略 132
5.2.2 集群间同步导致的内存溢出 135
5.2.3 堆外内存导致的溢出错误 136
5.2.4 外部命令导致系统缓慢 137
5.2.5 服务器 JVM 进程崩溃 138
5.2.6 不恰当数据结构导致内存占用过大 139
5.2.7 由 Windows 虚拟内存导致的长时间停顿 141
5.3 实战:Eclipse 运行速度调优 142
5.3.1 调优前的程序运行状态 142
5.3.2 升级 JDK1.6 的性能变化及兼容问题 145
5.3.3 编译时间和类加载时间的优化 150
5.3.4 调整内存设置控制垃圾收集频率 153
5.3.5 选择收集器降低延迟 157
5.4 本章小结 160
第三部分虚拟机执行子系统
第 6 章类文件结构 162
6.1 概述 162
6.2 无关性的基石 162
6.3Class 类文件的结构 164
6.3.1 魔数与 Class 文件的版本 166
6.3.2 常量池 167
6.3.3 访问标志 173
6.3.4 类索引、父类索引与接口索引集合 174
6.3.5 字段表集合 175
6.3.6 方法表集合 178
6.3.7 属性表集合 180
6.4 字节码指令简介 196
6.4.1 字节码与数据类型 197
6.4.2 加载和存储指令 199
6.4.3 运算指令 200
6.4.4 类型转换指令 202
6.4.5 对象创建与访问指令 203
6.4.6 操作数栈管理指令 203
6.4.7 控制转移指令 204
6.4.8 方法调用和返回指令 204
6.4.9 异常处理指令 205
6.4.10 同步指令 205
6.5 公有设计和私有实现 206
6.6Class 文件结构的发展 207
6.7 本章小结 208
第 7 章虚拟机类加载机制 209
7.1 概述 209
7.2 类加载的时机 210
7.3 类加载的过程 214
7.3.1 加载 214
7.3.2 验证 216
7.3.3 准备 219
7.3.4 解析 220
7.3.5 初始化 225
7.4 类加载器 227
7.4.1 类与类加载器 228
7.4.2 双亲委派模型 229
7.4.3 破坏双亲委派模型 233
7.5 本章小结 235
第 8 章虚拟机字节码执行引擎 236
8.1 概述 236
8.2 运行时栈帧结构 236
8.2.1 局部变量表 238
8.2.2 操作数栈 242
8.2.3 动态连接 243
8.2.4 方法返回地址 243
8.2.5 附加信息 244
8.3 方法调用 244
8.3.1 解析 244
8.3.2 分派 246
8.3.3 动态类型语言支持 258
8.4 基于栈的字节码解释执行引擎 269
8.4.1 解释执行 269
8.4.2 基于栈的指令集与基于寄存器的指令集 270
8.4.3 基于栈的解释器执行过程 272
8.5 本章小结 275
第 9 章类加载及执行子系统的案例与实战 276
9.1 概述 276
9.2 案例分析 276
9.2.1Tomcat:正统的类加载器架构 276
9.2.2OSGi:灵活的类加载器架构 279
9.2.3 字节码生成技术与动态代理的实现 282
9.2.4Retrotranslator:跨越 JDK 版本 286
9.3 实战:自己动手实现远程执行功能 289
9.3.1 目标 290
9.3.2 思路 290
9.3.3 实现 291
9.3.4 验证 298
9.4 本章小结 299
第四部分程序编译与代码优化
第 10 章早期(编译期)优化 302
10.1 概述 302
10.2Javac 编译器 303
10.2.1Javac 的源码与调试 303
10.2.2 解析与填充符号表 305
10.2.3 注解处理器 307
10.2.4 语义分析与字节码生成 307
10.3Java 语法糖的味道 311
10.3.1 泛型与类型擦除 311
10.3.2 自动装箱、拆箱与遍历循环 315
10.3.3 条件编译 317
10.4 实战:插入式注解处理器 318
10.4.1 实战目标 318
10.4.2 代码实现 319
10.4.3 运行与测试 326
10.4.4 其他应用案例 327
10.5 本章小结 328
第 11 章晚期(运行期)优化 329
11.1 概述 329
11.2HotSpot 虚拟机内的即时编译器 329
11.2.1 解释器与编译器 330
11.2.2 编译对象与触发条件 332
11.2.3 编译过程 337
11.2.4 查看及分析即时编译结果 339
11.3 编译优化技术 345
11.3.1 优化技术概览 346
11.3.2 公共子表达式消除 350
11.3.3 数组边界检查消除 351
11.3.4 方法内联 352
11.3.5 逃逸分析 354
11.4Java 与 C/C++的编译器对比 356
11.5 本章小结 358
第五部分高效并发
第 12 章 Java 内存模型与线程 360
12.1 概述 360
12.2 硬件的效率与一致性 361
12.3Java 内存模型 362
12.3.1 主内存与工作内存 363
12.3.2 内存间交互操作 364
12.3.3 对于 volatile 型变量的特殊规则 366
12.3.4 对于 long 和 double 型变量的特殊规则 372
12.3.5 原子性、可见性与有序性 373
12.3.6 先行发生原则 375
12.4Java 与线程 378
12.4.1 线程的实现 378
12.4.2Java 线程调度 381
12.4.3 状态转换 383
12.5 本章小结 384
第 13 章线程安全与锁优化 385
13.1 概述 385
13.2 线程安全 385
13.2.1Java 语言中的线程安全 386
13.2.2 线程安全的实现方法 390
13.3 锁优化 397
13.3.1 自旋锁与自适应自旋 398
13.3.2 锁消除 398
13.3.3 锁粗化 400
13.3.4 轻量级锁 400
13.3.5 偏向锁 402
13.4 本章小结 403
附录
附录 A 编译 Windows 版的 OpenJDK406
附录 B 虚拟机字节码指令表 414
附录 CHotSpot 虚拟机主要参数表 420
附录 D 对象查询语言(OQL)简介 424
附录 EJDK 历史版本轨迹 430
HTTP权威指南 mobi+epub+azw3
基本概述:
HTTP(HyperText Transfer Protocol,超文本传输协议)是 Web 客户端与服务器交互文档和信息时所使用的协议,是每个成功 Web 事务的幕后推手。众所周知,我们每天访问公司内部网络、搜索书籍、研究统计信息时所使用的浏览器的核心是 HTTP。但 HTTP 的应用远不仅仅是浏览 Web 内容。由于 HTTP 既简单又普及,很多其他网络应用程序也选择了它,尤其是采用 SOAP 和 XML-RPC 这样的 Web 服务。
详细解释了 HTTP 协议,包括它是如何工作的,如何用它来开发基于 Web 的应用程序。但本书并不只介绍了 HTTP,还探讨了 HTTP 有效工作所依赖的所有其他核心因特网技术。尽管 HTTP 是本书的中心内容,但本书的本质是理解 Web 的工作原理,以及如何将这些知识应用到 Web 编程和管理之中去,主要涵盖 HTTP 的技术运作方式、产生动机、性能和目标,以及一些相关技术问题。
本书是 HTTP 协议及相关 Web 技术方面的著作,主要内容包括:
HTTP 方法、首部以及状态码
优化代理和缓存的方法
设计 Web 机器人和爬虫的策略
Cookies、认证以及安全 HTTP
国际化及内容协商
重定向及负载平衡策略
本书由具有多年实践经验的专家编写,通过简洁语言和大量翔实的细节图解帮助读者形象地理解 Web 幕后所发生的事情,详细说明了 Web 上每条请求的实际运行情况。要想高效地进行 Web 开发,所有 Web 程序员、管理员和应用程序都应该熟悉 HTTP。很多书籍只介绍了 Web 的使用方式,而本书则深入说明了 Web 的工作原理。
目录:
第一部分 HTTP:Web 的基础
第 1 章 HTTP 概述
1.1 HTTP——因特网的多媒体信使
1.2 Web 客户端和服务器
1.3 资源
1.3.1 媒体类型
1.3.2 UIU
1.3.3 URL
1.3.4 URN
1.4 事务
1.4.1 方法
1.4.2 状态码
1.4.3 Web 页面中可以包含多个对象
1.5 报文
1.6 连接
1.6.1 TCMP
1.6.2 连接、IP 地址及端口号
1.6.3 一个使用 Telnet 的实例
1.7 协议版本
1.8 Web 的结构组件
1.8.1 代理
1.8.2 缓存
1.8.3 网关
1.8.4 隧道
1.8.5 Agent 代理
1.9 起始部分的结束语
1.10 更多信息
1.10.1 HTTP 协议信息
1.10.2 历史透视
1.10.3 其他万维网信息
第 2 章 URL 与资源
2.1 浏览因特网资源
2.2 URL 的语法
2.2.1 方案——使用什么协议
2.2.2 主机与端口
2.2.3 用户名和密码
2.2.4 路径
2.2.5 参数
2.2.6 查询字符串
2.2.7 片段
2.3 URL 快捷方式
2.3.1 相对 UPL
2.3.2 自动扩展 URL
2.4 各种令人头疼的字符
2.4.1 URL 字符集
2.4.2 编码机制
2.4.3 字符限制
2.4.4 另外一点说明
2.5 方案的世界
2.6 未来展望
2.7 更多信息
第 3 章 HTTP 报文
3.1 报文流
3.1.1 报文流入源端服务器
3.1.2 报文向下游流动
3.2 报文的组成部分
3.2.1 报文的语法
3.2.2 起始行
3.2.3 首部
3.2.4 实体的主体部分
3.2.5 版本 0.9 的报文
3.3 方法
3.3.1 安全方法
3.3.2 GET
3.3.3 HEAD
3.3.4 PUT
3.3.5 POST
3.3.6 TRACE
3.3.7 OPTIONS
3.3.8 DELETE
3.3.9 扩展方法
3.4 状态码
3.4.1 100~199——信息性状态码
3.4.2 200~299——成功状态码
3.4.3 300~399——重定向状态码
3.4.4 400~499——客户端错误状态码
3.4.5 500~599——服务器错误状态码
3.5 首部
3.5.1 通用首部
3.5.2 请求首部
3.5.3 响应首部
3.5.4 实体首部
3.6 更多信息
4 章连接管理
4.1 TCP 连接
4.1.1 TCP 的可靠数据管道
4.1.2 TCP 流是分段的、由 IP 分组传送
4.1.3 保持 TCP 连接持续不断地运行
4.1.4 用 TCP 套接字编程
4.2 对 TCP 性能的考虑
4.2.1 HTTP 事务的时延
4.2.2 性能聚焦区域
4.2.3 TCP 连接的握手时延
4.2.4 延迟确认
4.2.5 TCP 慢启动
4.2.6 Nagle 算法与 TCP—NODELAY
4.2.7 TIME WAIT 累积与端口耗尽
4.3 HTTP 连接的处理
4.3.1 常被误解的 Connection 首部
4.3.2 串行事务处理时延
4.4 并行连接
4.4.1 并行连接可能会提高页面的加载速度
4.4.2 并行连接不一定更快
……
第二部分 HTTP 结构
第 5 章 Web 服务器
第 6 章 代理
第 7 章 缓存
第 8 章 集成点:网关、隧道及中继
第 9 章 Web 机器人
第 10 章 HTTP—NG
第三部分 识别、认证与安全
第 11 章 客户端识别与 cookie 机制
第 12 章 基本认证机制
第 13 章 摘要认证
第 14 章 安全 HTTP
第四部分 实体、编码和国际化
第 15 章 实体和编码
第 16 章 国际化
第 17 章 内容协商与转码
第五部分 内容发布与分发
第 18 章 Web 主机托管
第 19 章 发布系统
第 20 章 重定向与负载均衡
第 21 章 日志记录与使用情况跟踪
第六部分 附录
附录 A URI 方案
附录 B HTTP 状态码
附录 C HTTP 首部参考
附录 D MIME 类型
附录 E Base—64 编码
附录 F 摘要认证
附录 G 语言标记
附录 H MIME 字符集注册表
索引
大话Java性能优化.rar
目录:
第 1 章 性能调优策略概述 1
1.1 为什么需要调优 1
1.2 性能优化的参考因素 5
1.2.1 传统计算机体系的分歧 5
1.2.2 导致系统瓶颈的计算资源 7
1.2.3 程序性能衡量指标 8
1.2.4 性能优化目标 9
1.2.5 性能优化策略 10
1.3 性能调优分类方法 11
1.3.1 业务方面 12
1.3.2 基础技术方面 12
1.3.3 组件方面 17
1.3.4 架构方面 19
1.3.5 层次方面 20
1.4 本章小结 21
第 2 章 优化前的准备知识 22
2.1 服务器知识 23
2.1.1 内存 23
2.1.2 GPU/CPU44
2.1.3 硬盘 49
2.1.4 网络架构 51
2.2 新兴技术 53
第 3 章 JavaAPI 调用优化建议 54
3.1 面向对象及基础类型 55
3.1.1 采用 Clone()方式创建对象 55
3.1.2 避免对 boolean 判断 55
3.1.3 多用条件操作符 56
3.1.4 静态方法代替实例方法 56
3.1.5 有条件地使用 final 关键字 58
3.1.6 避免不需要的 instanceof 操作 58
3.1.7 避免子类中存在父类转换 59
3.1.8 建议多使用局部变量 60
3.1.9 运算效率最高的方式——位运算 60
3.1.10 用一维数组代替二维数组 62
3.1.11 布尔运算代替位运算 64
3.1.12 提取表达式优化 65
3.1.13 不要总是使用取反操作符(!)66
3.1.14 不要重复初始化变量 66
3.1.15 变量初始化过程思考 66
3.1.16 对象的创建、访问过程 69
3.1.17 在 switch 语句中使用字符串 70
3.1.18 数值字面量的改进 73
3.1.19 优化变长参数的方法调用 74
3.1.20 针对基本数据类型的优化 75
3.1.21 空变量 76
3.2 集合类概念 77
3.2.1 快速删除 List 里面的数据 78
3.2.2 集合内部避免返回 null80
3.2.3 ArrayList、LinkedList 比较 82
3.2.4 Vector、HashTable 比较 85
3.2.5 HashMap 使用经验 87
3.2.6 EnumSet、EnumMap91
3.2.7 HashSet 使用经验 92
3.2.8 LinkedHashMap、TreeMap 比较 96
3.2.9 集合处理优化新方案 99
3.2.10 优先考虑并行计算 107
3.3 字符串概念 108
3.3.1 String 对象 108
3.3.2 善用 String 对象的 SubString 方法 111
3.3.3 用 charat()代替 startswith()113
3.3.4 在字符串相加的时候,使用''代替””114
3.3.5 字符串切割 114
3.3.6 字符串重编码 117
3.3.7 合并字符串 118
3.3.8 正则表达式不是万能的 122
3.4 引用类型概念 123
3.4.1 强引用(Strong Reference)126
3.4.2 软引用(Soft Reference)131
3.4.3 弱引用(Weak Reference)135
3.4.4 引用队列 141
3.4.5 虚引用(Phantom Reference)142
3.5 其他相关概念 146
3.5.1 JNI 技术提升 146
3.5.2 异常捕获机制 150
3.5.3 ExceptionUtils 类 154
3.5.4 循环技巧 155
3.5.5 替换 switch157
3.5.6 优化循环 158
3.5.7 使用 arrayCopy()159
3.5.8 使用 Buffer 进行 I/O 操作 161
3.5.9 使用 clone()代替 new164
3.5.10 I/O 速度 166
3.5.11 Finally 方法里面释放或者关闭资源占用 167
3.5.12 资源管理机制 167
3.5.13 牺牲 CPU 时间 169
3.5.14 对象操作 172
3.5.15 正则表达式 172
3.5.16 压缩文件处理 174
3.6 本章小结 175
第 4 章 程序设计优化建议 176
4.1 算法优化概述 176
4.1.1 常用算法逻辑描述 177
4.1.2 多核算法优化原理 186
4.1.3 Java 算法优化实践 188
4.2 设计模式 196
4.2.1 设计模式的六大准则 196
4.2.2 单一对象控制 200
4.2.3 并行程序设计模式 202
4.2.4 接口适配 205
4.2.5 访问方式隔离 219
4.3 I/O 及网络相关优化 225
4.3.1 I/O 操作优化 225
4.3.2 Socket 编程 231
4.3.3 NIO2.0 文件系统 235
4.4 数据应用优化 236
4.4.1 关系型数据库优化 236
4.4.2 向 HBase 插入大量数据 240
4.4.3 解决海量数据缓存 251
4.5 其他优化 256
4.5.1 Web 系统性能优化建议 256
4.5.2 死锁情况解决方案 259
4.5.3 JavaBeans 组件 268
4.6 本章小结 269
第 5 章 Java 并行程序优化建议 270
5.1 并行程序优化概述 270
5.1.1 资源限制带来的挑战 271
5.1.2 进程、线程、协程 272
5.1.3 使用多线程的原因 281
5.1.4 线程不安全范例 282
5.1.5 重排序机制 284
5.1.6 实例变量的数据共享 286
5.1.7 生产者与消费者模式 288
5.1.8 线程池的使用 290
5.2 锁机制对比 296
5.2.1 锁机制概述 296
5.2.2 Synchronized 使用技巧 298
5.2.3 Volatile 的使用技巧 303
5.2.4 队列同步器 304
5.2.5 可重入锁 307
5.2.6 读写锁 308
5.2.7 偏向锁和轻量级锁 309
5.3 增加程序并行性 310
5.3.1 并发计数器 311
5.3.2 减少上下文切换次数 312
5.3.3 针对 Thread 类的更新 314
5.3.4 Fork/Join 框架 314
5.3.5 Executor 框架 318
5.4 JDK 类库使用 319
5.4.1 原子值 320
5.4.2 并行容器 324
5.4.3 非阻塞队列 332
5.4.4 阻塞队列 338
5.4.5 并发工具类 365
5.5 本章小结 376
第 6 章 JVM 性能测试及监控 377
6.1 监控计算机设备层 378
6.1.1 监控 CPU380
6.1.2 监控内存 405
6.1.3 监控磁盘 417
6.1.4 监控网络 423
6.2 监控 JVM 活动 428
6.2.1 监控垃圾收集目的 429
6.2.2 GC 垃圾回收报告分析 430
6.2.3 图形化工具 431
6.2.4 GC 跟踪示例 437
6.3 本章小结 438
第 7 章 JVM 性能调优建议 439
7.1 JVM 相关概念 439
7.1.1 内存使用相关概念 440
7.1.2 字节码相关知识 443
7.1.3 自动内存管理 448
7.2 JVM 系统架构 451
7.2.1 JVM 的基本架构 451
7.2.2 JVM 初始化过程 453
7.2.3 JVM 架构模型与执行引擎 456
7.2.4 解释器与 JIT 编译器 456
7.2.5 类加载机制 457
7.2.6 虚拟机 458
7.3 垃圾回收机制相关 459
7.3.1 GC 相关概念 459
7.3.2 垃圾回收算法 468
7.3.3 垃圾收集器 476
7.4 实用 JVM 实验 490
7.4.1 将新对象预留在年轻代 490
7.4.2 大对象进入年老代 494
7.4.3 设置对象进入年老代的年龄 495
7.4.4 稳定与震荡的堆大小 497
7.4.5 吞吐量优先案例 498
7.4.6 使用大页案例 499
7.4.7 降低停顿案例 499
7.4.8 设置最大堆内存 499
7.4.9 设置最小堆内存 500
7.4.10 设置年轻代 503
7.4.11 设置持久代 504
7.4.12 设置线程栈 504
7.4.13 堆的比例分配 505
7.4.14 堆分配参数总结 508
7.4.15 垃圾回收器相关参数总结 509
7.4.16 查询 GC 命令 515
7.5 本章小结 515
第 8 章 其他优化建议 516
8.1 Java 现有机制及未来发展 516
8.1.1 Java 体系结构变化历史 516
8.1.2 Java 语言面临的挑战 520
8.1.3 Java8 的新特性 522
8.1.4 Java 语言前景 523
8.1.5 物联网:Java 和你是一对 524
8.1.6 Java 模块化发展 525
8.1.7 OpenJDK 的发展 527
8.2 系统架构优化建议 528
8.2.1 系统架构调优 528
8.2.2 Java 项目优化方式分享 530
8.2.3 面向服务架构 534
8.2.4 程序隔离技术 538
8.2.5 团队并行开发准则 544
8.3 与编程无关 546
8.3.1 工程师品格 546
8.3.2 如何成为技术大牛 547
8.3.3 编程方法分享 548
8.4 本章小结 549
Docker进阶与实战 (容器技术系列) mobi+epub+azw3
本书概述:
Docker在国内的发展如火如荼,短短一两年时间里就陆续出现了一批关于Docker的创业公司。华为公司作为国内开源领域的领导者,对Docker也有很大的投入,我们认为有必要把自己的知识积累和实践经验总结出来分享给广大开发者。除了吸引更多的人投入到Docker的生态建设以外,我们也希望通过本书帮助更多的读者更好、更快地掌握Docker关键技术。本书不仅适合一般的Docker用户,也适合 Docker 生态圈中的开发者,希望它可以成为一本 Docker 进阶的图书,帮助读者快速提升。
第一本Docker书(修订版)mobi+epub+azw3
本书概述:
Docker是一个开源的应用容器引擎,开发 者可以利用Docker打包自己的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 本书由Docker公司前服务与支持副总裁 James Turnbull 编写,是Docker开发指南。本书专注于Docker 1.9 及以上版本,指导读者完成Docker的安装、部署、管理和扩展,带领读者经历从测试到生产的整个开发生命周期,让读者了解 Docker 适用于什么场景。书中先介绍 Docker 及其组件的基础知识,然后介绍用 Docker 构建容器和服务来完成各种任务:利用 Docker 为新项目建立测试环境,演示如何使用持续集成的工作流集成 Docker,如何构建应用程序服务和平台,如何使用 Docker 的 API,如何扩展 Docker。
目录:
第 1 章简介
1.1Docker 简介
1.1.1 提供一个简单、轻量的建模方式
1.1.2 职责的逻辑分离
1.1.3 快速、高效的开发生命周期
1.1.4 鼓励使用面向服务的架构
1.2Docker 组件
1.2.1Docker 客户端和服务器
1.2.2Docker 镜像
1.2.3Registry
1.2.4 容器
1.3 能用 Docker 做什么
1.4Docker 与配置管理
1.5Docker 的技术组件
1.6 本书的内容
1.7Docker 资源
第 2 章安装 Docker
2.1 安装 Docker 的先决条件
2.2 在 Ubuntu 和 Debian 中安装 Docker
2.2.1 检查前提条件
2.2.2 安装 Docker
2.2.3Docker 与 UFW
2.3 在 RedHat 和 RedHat 系发行版中安装 Docker
2.3.1 检查前提条件
2.3.2 安装 Docker
2.3.3 在 RedHat 系发行版中启动 Docker 守护进程
2.4 在 OS X 中安装 Docker Toolbox
2.4.1 在 OS X 中安装 Docker Toolbox
2.4.2 在 OS X 中启动 Docker Toolbox
2.4.3 测试 Docker Toolbox
2.5 在 Windows 中安装 Docker Toolbox
2.5.1 在 Windows 中安装 Docker Toolbox
2.5.2 在 Windows 中启动 Docker Toolbox
2.5.3 测试 Docker Toolbox
2.6 使用本书的 Docker Toolbox 示例
2.7Docker 安装脚本
2.8 二进制安装
2.9Docker 守护进程
2.9.1 配置 Docker 守护进程
2.9.2 检查 Docker 守护进程是否正在运行
2.10 升级 Docker
2.11Docker 用户界面
2.12 小结
第 3 章 Docker 入门
3.1 确保 Docker 已经就绪
3.2 运行我们的第一个容器
3.3 使用第一个容器
3.4 容器命名
3.5 重新启动已经停止的容器
3.6 附着到容器上
3.7 创建守护式容器
3.8 容器内部都在干些什么
3.9Docker 日志驱动
3.10 查看容器内的进程
3.11Docker 统计信息
3.12 在容器内部运行进程
3.13 停止守护式容器
3.14 自动重启容器
3.15 深入容器
3.16 删除容器
3.17 小结
第 4 章使用 Docker 镜像和仓库
4.1 什么是 Docker 镜像
4.2 列出镜像
4.3 拉取镜像
4.4 查找镜像
4.5 构建镜像
4.5.1 创建 DockerHub 账号
4.5.2 用 Docker 的 commit 命令创建镜像
4.5.3 用 Dockerfile 构建镜像
4.5.4 基于 Dockerfile 构建新镜像
4.5.5 指令失败时会怎样
4.5.6Dockerfile 和构建缓存
4.5.7 基于构建缓存的 Dockerfile 模板
4.5.8 查看新镜像
4.5.9 从新镜像启动容器
4.5.10Dockerfile 指令
4.6 将镜像推送到 DockerHub
4.7 删除镜像
4.8 运行自己的 DockerRegistry
4.8.1 从容器运行 Registry
4.8.2 测试新 Registry
4.9 其他可选 Registry 服务
4.10 小结
第 5 章在测试中使用 Docker
5.1 使用 Docker 测试静态网站
5.1.1Sample 网站的初始 Dockerfile
5.1.2 构建 Sample 网站和 Nginx 镜像
5.1.3 从 Sample 网站和 Nginx 镜像构建容器
5.1.4 修改网站
5.2 使用 Docker 构建并测试 Web 应用程序
5.2.1 构建 Sinatra 应用程序
5.2.2 创建 Sinatra 容器
5.2.3 扩展 Sinatra 应用程序来使用 Redis
5.2.4 将 Sinatra 应用程序连接到 Redis 容器
5.2.5Docker 内部连网
5.2.6Docker Networking
5.2.7 使用容器连接来通信
5.2.8 连接容器小结
5.3Docker 用于持续集成
5.3.1 构建 Jenkins 和 Docker 服务器
5.3.2 创建新的 Jenkins 作业
5.3.3 运行 Jenkins 作业
5.3.4 与 Jenkins 作业有关的下一步
5.3.5Jenkins 设置小结
5.4 多配置的 Jenkins
5.4.1 创建多配置作业
5.4.2 测试多配置作业
5.4.3Jenkins 多配置作业小结
5.5 其他选择
5.5.1Drone
5.5.2Shippable
5.6 小结
第 6 章使用 Docker 构建服务
6.1 构建第一个应用
6.1.1Jekyll 基础镜像
6.1.2 构建 Jekyll 基础镜像
6.1.3Apache 镜像
6.1.4 构建 Jekyll Apache 镜像
6.1.5 启动 Jekyll 网站
6.1.6 更新 Jekyll 网站
6.1.7 备份 Jekyll 卷
6.1.8 扩展 Jekyll 示例网站
6.2 使用 Docker 构建一个 Java 应用服务
6.2.1WAR 文件的获取程序
6.2.2 获取 WAR 文件
6.2.3Tomecat7 应用服务器
6.2.4 运行 WAR 文件
6.2.5 基于 Tomcat 应用服务器的构建服务
6.3 多容器的应用栈
6.3.1Node.js 镜像
6.3.2Redis 基础镜像
6.3.3Redis 主镜像
6.3.4Redis 副本镜像
6.3.5 创建 Redis 后端集群
6.3.6 创建 Node 容器
6.3.7 捕获应用日志
6.3.8Node 程序栈的小结
6.4 不使用 SSH 管理 Docker 容器
6.5 小结
第 7 章 Docker 编配和服务发现
7.1DockerCompose
7.1.1 安装 Docker Compose
7.1.2 获取示例应用
7.1.3docker—compose.yml 文件
7.1.4 运行 Compose
7.1.5 使用 Compose
7.1.6Compose 小结
7.2Consul、服务发现和 Docker
7.2.1 构建 Consul 镜像
7.2.2 在本地测试 Consul 容器
7.2.3 使用 Docker 运行 Consul 集群
7.2.4 启动具有自启动功能的 Consul 节点
7.2.5 启动其余节点
7.2.6 配合 Consul,在 Docker 里运行一个分布式服务
7.3DockerSwarm
7.3.1 安装 Swam
7.3.2 创建 Swarm 集群
7.3.3 创建容器
7.3.4 过滤器
7.3.5 策略
7.3.6 小结
7.4 其他编配工具和组件
7.4.1Fleet 和 etcd
7.4.2Kubernetes
7.4.3Apache Mesos
7.4.4Helios
7.4.5Centurion
7.5 小结
第 8 章使用 DockerAPI
8.1DockerAPI
8.2 初识 Remote API
8.3 测试 Docker Remote API
8.3.1 通过 API 来管理 Docker 镜像
8.3.2 通过 API 管理 Docker 容器
8.4 改进 TProv 应用
8.5 对 Docker Remote API 进行认证
8.5.1 建立证书授权中心
8.5.2 创建服务器的证书签名请求和密钥
8.5.3 配置 Docker 守护进程
8.5.4 创建客户端证书和密钥
8.5.5 配置 Docker 客户端开启认证功能
8.6 小结
第 9 章获得帮助和对 Docker 进行改进
9.1 获得帮助
9.1.1Docker 用户、开发邮件列表及论坛
9.1.2IRC 上的 Docker
9.1.3GitHub 上的 Docker
9.2 报告 Docker 的问题
9.3 搭建构建环境
9.3.1 安装 Docker
9.3.2 安装源代码和构建工具
9.3.3 检出源代码
9.3.4 贡献文档
9.3.5 构建开发环境
9.3.6 运行测试
9.3.7 在开发环境中使用 Docker
9.3.8 发起 pull request
9.3.9 批准合并和维护者
9.4 小结
Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 (大数据技术丛书) - 董西成著 mobi+epub+azw3
基本概述:
本书由 hadoop 领域资深的实践者亲自执笔,首先介绍了 mapreduce 的设计理念和编程模型,然后从源代码的角度深入分析了 rpc 框架、客户端、jobtracker、tasktracker 和 task 等 mapreduce 运行时环境的架构设计与实现原理,最后从实际应用的角度深入讲解了 hadoop 的性能优化、安全机制、多用户作业调度器和下一代 mapreduce 框架等高级主题和内容。本书适合 hadoop 的二次开发人员、应用开发工程师、运维工程师阅读。
Spark快速大数据分析 mobi+epub+azw3
基本概述:
本书由 Spark 开发者及核心成员共同打造,讲解了网络大数据时代应运而生的、能高效迅捷地分析处理数据的工具——Spark,它带领读者快速掌握用 Spark 收集、计算、简化和保存海量数据的方法,学会交互、迭代和增量式分析,解决分区、数据本地化和自定义序列化等问题。
目录:
第 1 章 Spark 数据分析导论 1
1.1 Spark 是什么 1
1.2 一个大一统的软件栈 2
1.2.1 Spark Core 2
1.2.2 Spark SQL 3
1.2.3 Spark Streaming 3
1.2.4 MLlib 3
1.2.5 GraphX 3
1.2.6 集群管理器 4
1.3 Spark 的用户和用途 4
1.3.1 数据科学任务 4
1.3.2 数据处理应用 5
1.4 Spark 简史 5
1.5 Spark 的版本和发布 6
1.6 Spark 的存储层次 6
第 2 章 Spark 下载与入门 7
2.1 下载 Spark 7
2.2 Spark 中 Python 和 Scala 的 shell 9
2.3 Spark 核心概念简介 12
2.4 独立应用 14
2.4.1 初始化 SparkContext 15
2.4.2 构建独立应用 16
2.5 总结 19
第 3 章 RDD 编程 21
3.1 RDD 基础 21
3.2 创建 RDD 23
3.3 RDD 操作 24
3.3.1 转化操作 24
3.3.2 行动操作 26
3.3.3 惰性求值 27
3.4 向 Spark 传递函数 27
3.4.1 Python 27
3.4.2 Scala 28
3.4.3 Java 29
3.5 常见的转化操作和行动操作 30
3.5.1 基本 RDD 30
3.5.2 在不同 RDD 类型间转换 37
3.6 持久化( 缓存) 39
3.7 总结 40
第 4 章 键值对操作 41
4.1 动机 41
4.2 创建 Pair RDD 42
4.3 Pair RDD 的转化操作 42
4.3.1 聚合操作 45
4.3.2 数据分组 49
4.3.3 连接 50
4.3.4 数据排序 51
4.4 Pair RDD 的行动操作 52
4.5 数据分区(进阶) 52
4.5.1 获取 RDD 的分区方式 55
4.5.2 从分区中获益的操作 56
4.5.3 影响分区方式的操作 57
4.5.4 示例:PageRank 57
4.5.5 自定义分区方式 59
4.6 总结 61
第 5 章 数据读取与保存 63
5.1 动机 63
5.2 文件格式 64
5.2.1 文本文件 64
5.2.2 JSON 66
5.2.3 逗号分隔值与制表符分隔值 68
5.2.4 SequenceFile 71
5.2.5 对象文件 73
5.2.6 Hadoop 输入输出格式 73
5.2.7 文件压缩 77
5.3 文件系统 78
5.3.1 本地/“常规”文件系统 78
5.3.2 Amazon S3 78
5.3.3 HDFS 79
5.4 Spark SQL 中的结构化数据 79
5.4.1 Apache Hive 80
5.4.2 JSON 80
5.5 数据库 81
5.5.1 Java 数据库连接 81
5.5.2 Cassandra 82
5.5.3 HBase 84
5.5.4 Elasticsearch 85
5.6 总结 86
第 6 章 Spark 编程进阶 87
6.1 简介 87
6.2 累加器 88
6.2.1 累加器与容错性 90
6.2.2 自定义累加器 91
6.3 广播变量 91
6.4 基于分区进行操作 94
6.5 与外部程序间的管道 96
6.6 数值 RDD 的操作 99
6.7 总结 100
第 7 章 在集群上运行 Spark 101
7.1 简介 101
7.2 Spark 运行时架构 101
7.2.1 驱动器节点 102
7.2.2 执行器节点 103
7.2.3 集群管理器 103
7.2.4 启动一个程序 104
7.2.5 小结 104
7.3 使用 spark-submit 部署应用 105
7.4 打包代码与依赖 107
7.4.1 使用 Maven 构建的用 Java 编写的 Spark 应用 108
7.4.2 使用 sbt 构建的用 Scala 编写的 Spark 应用 109
7.4.3 依赖冲突 111
7.5 Spark 应用内与应用间调度 111
7.6 集群管理器 112
7.6.1 独立集群管理器 112
7.6.2 Hadoop YARN 115
7.6.3 Apache Mesos 116
7.6.4 Amazon EC2 117
7.7 选择合适的集群管理器 120
7.8 总结 121
第 8 章 Spark 调优与调试 123
8.1 使用 SparkConf 配置 Spark 123
8.2 Spark 执行的组成部分:作业、任务和步骤 127
8.3 查找信息 131
8.3.1 Spark 网页用户界面 131
8.3.2 驱动器进程和执行器进程的日志 134
8.4 关键性能考量 135
8.4.1 并行度 135
8.4.2 序列化格式 136
8.4.3 内存管理 137
8.4.4 硬件供给 138
8.5 总结 139
第 9 章 Spark SQL 141
9.1 连接 Spark SQL 142
9.2 在应用中使用 Spark SQL 144
9.2.1 初始化 Spark SQL 144
9.2.2 基本查询示例 145
9.2.3 SchemaRDD 146
9.2.4 缓存 148
9.3 读取和存储数据 149
9.3.1 Apache Hive 149
9.3.2 Parquet 150
9.3.3 JSON 150
9.3.4 基于 RDD 152
9.4 JDBC/ODBC 服务器 153
9.4.1 使用 Beeline 155
9.4.2 长生命周期的表与查询 156
9.5 用户自定义函数 156
9.5.1 Spark SQL UDF 156
9.5.2 Hive UDF 157
9.6 Spark SQL 性能 158
9.7 总结 159
第 10 章 Spark Streaming 161
10.1 一个简单的例子 162
10.2 架构与抽象 164
10.3 转化操作 167
10.3.1 无状态转化操作 167
10.3.2 有状态转化操作 169
10.4 输出操作 173
10.5 输入源 175
10.5.1 核心数据源 175
10.5.2 附加数据源 176
10.5.3 多数据源与集群规模 179
10.6 24/7 不间断运行 180
10.6.1 检查点机制 180
10.6.2 驱动器程序容错 181
10.6.3 工作节点容错 182
10.6.4 接收器容错 182
10.6.5 处理保证 183
10.7 Streaming 用户界面 183
10.8 性能考量 184
10.8.1 批次和窗口大小 184
10.8.2 并行度 184
10.8.3 垃圾回收和内存使用 185
10.9 总结 185
第 11 章 基于 MLlib 的机器学习 187
11.1 概述 187
11.2 系统要求 188
11.3 机器学习基础 189
11.4 数据类型 192
11.5 算法 194
11.5.1 特征提取 194
11.5.2 统计 196
11.5.3 分类与回归 197
11.5.4 聚类 202
11.5.5 协同过滤与推荐 203
11.5.6 降维 204
11.5.7 模型评估 206
11.6 一些提示与性能考量 206
11.6.1 准备特征 206
11.6.2 配置算法 207
11.6.3 缓存 RDD 以重复使用 207
11.6.4 识别稀疏程度 207
11.6.5 并行度 207
11.7 流水线 API 208
11.8 总结 209
oracle导入详细脚本
Oracle导入详细脚本
Oracle导入详细脚本
Oracle导入详细脚本
09-17年408计算机全国统考真题及详细答案解析
2009年-2017年408计算机全国统一考试真题及详细答案解析
Maven+SSM的博客系统源码和系统设计文档以及数据库脚本
基于SSM框架的博客系统还包括系统设计文档 数据库脚本等等
详细写明了 设计过程和设计思路 系统代码中含有大量的注释 方便理解和阅读
HTML5捕鱼游戏源码
HTML5捕鱼游戏源码
HTML5捕鱼游戏源码
HTML5捕鱼游戏源码
HTML5捕鱼游戏源码
HTML5开心消消乐小游戏
HTML5开心消消乐小游戏
HTML5开心消消乐小游戏
HTML5开心消消乐小游戏
HTML5开心消消乐小游戏
HTML5开心消消乐小游戏
3D元素周期表
3D元素周期表 太炫酷了,看了用了你就知道了。
Dev-Cpp【C/C++语言】
Dev-Cpp【C/C++语言】
适合写C语言/C++ 小巧但非常好使用
强烈推荐!
JAVA WEB从入门到精通PDF
重要的事情说三遍:
适合有java基础的同学学习
适合有java基础的同学学习
适合有java基础的同学学习
Java EE 7权威指南pdf
重要的事情说三遍:
适合有java基础的同学学习!
适合有java基础的同学学习!
适合有java基础的同学学习!
JavaFx开发的经典魔塔
完美还原魔塔,JavaFx开发的经典魔塔半成品,给魔塔爱好者继续补充!
资源对象都有,直接调用即可,50层太多了,就没继续下去了,你们继续补充!
史上最全经典数据结构算法c语言实现代码合集
16进制10进制.txt
32.txt
asm.txt
Crctable.txt
C标志符命名源程序.txt
erre.txt
erre2.txt
ff.txt
for循环的.txt
list.log
N皇后问题回溯算法.txt
ping.txt
re.txt
source.txt
winsock2.txt
ww.txt
万年历.txt
万年历的算法 .txt
乘方函数桃子猴.txt
乘法矩阵.txt
二分查找1.txt
二分查找2.txt
二叉排序树.txt
二叉树.txt
二叉树实例.txt
二进制数.txt
二进制数2.txt
余弦曲线.txt
余弦直线.txt
傻瓜递归.txt
冒泡排序.txt
冒泡法改进.txt
动态计算网络最长最短路线.txt
十五人排序.txt
单循环链表.txt
单词倒转.txt
单链表.txt
单链表1.txt
单链表2.txt
单链表倒序.txt
单链表的处理全集.txt
双链表正排序.txt
反出字符.txt
叠代整除.txt
各种排序法.txt
哈夫曼算法.txt
哈慢树.txt
四分砝码.txt
四塔1.txt
四塔2.txt
回文.txt
图.txt
圆周率.txt
多位阶乘.txt
多位阶乘2.txt
大加数.txt
大小倍约.txt
大整数.txt
字符串查找.txt
字符编辑.txt
字符编辑技术(插入和删除) .txt
完数.txt
定长串.txt
实例1.txt
实例2.txt
实例3.txt
小写数字转换成大写数字1.txt
小写数字转换成大写数字2.txt
小写数字转换成大写数字3.txt
小字库DIY-.txt
小字库DIY.txt
小孩分糖果.txt
小明买书.txt
小白鼠钻迷宫.txt
带头结点双链循环线性表.txt
平方根.txt
建树和遍历.txt
建立链表1.txt
扫描码.txt
挽救软盘.txt
换位递归.txt
排序法.txt
推箱子.txt
数字移动.txt
数据结构.txt
数据结构2.txt
数据结构3.txt
数组完全单元.txt
数组操作.txt
数组递归退出.txt
数组递归退出2.txt
文件加密.txt
文件复制.txt
文件连接.txt
无向图.txt
时间陷阱.txt
杨辉三角形.txt
栈单元加.txt
栈操作.txt
桃子猴.txt
桶排序.txt
检出错误.txt
检测鼠标.txt
汉字字模.txt
汉诺塔.txt
汉诺塔2.txt
灯塔问题.txt
猴子和桃.txt
百鸡百钱.txt
矩阵乘法动态规划.txt
矩阵转换.txt
硬币分法.txt
神经元模型.txt
穷举搜索法.txt
符号图形.txt
简单数据库.txt
简单计算器.txt
简单逆阵.txt
线性顺序存储结构.txt
线索化二叉树.txt
绘制圆.txt
编随机数.txt
网络最短路径Dijkstra算法.txt
自我复制.txt
节点.txt
苹果分法.txt
螺旋数组1.txt
螺旋数组2.txt
试题.txt
诺汉塔画图版.txt
读写文本文件.txt
货郎担分枝限界图形演示.txt
货郎担限界算法.txt
质因子.txt
输出自已.txt
迷宫.txt
迷宫问题.txt
逆波兰计算器.txt
逆矩阵.txt
逆阵.txt
递堆法.txt
递归桃猴.txt
递归车厢.txt
递推.txt
逻辑移动.txt
链串.txt
链栈.txt
链表十五人排序.txt
链表(递归).txt
链队列.txt
队列.txt
阶乘递归.txt
阿姆斯特朗数.txt
非递归.txt
顺序栈.txt
顺序表.txt
顺序队列.txt
骑士遍历1.txt
骑士遍历2.txt
骑士遍历回逆.txt
黑白.txt
Java语言程序设计.进阶篇.原书第10版PDF
Java语言程序设计.进阶篇.原书第10版PDF,已经学过基础篇的可以下载学习。
HTML-3D相册
HTML-3D相册。可跟随鼠标360旋转。场面炫酷,可以自己学习或者修改。
HTML-3D旋转表白爱心
html-3D旋转表白爱心!适合向女神表白!可以直接修改,表白必备!
数据结构(java)第四版_叶核亚【全套】
数据结构Java版全套详细资料。包含电子课件、源代码、配套资料、习题解答等详细资料。强烈推荐!!!
Sublime Text3 中文破解版(附一些常用插件和安装说明)【适合新手】
Sublime Text3 Build3126 中文破解版 下载解压后,直接安装即可(有详细的安装说明)。 已经配置好了一些常用的小插件,非常适合新手!!!
Sublime Text3中文破解版(附带一些常用的插件)安装包
Sublime Text3 Build3126 中文破解版 下载直接安装即可。
已经配置好了一些常用的小插件,非常适合新手。