图灵程序设计丛书:Java进阶高手
首页 白天 夜间 下载 阅读记录
  • 书签 我的书签
  • 添加书签 添加书签 移除书签 移除书签

第 11 章 探究并发数据结构和同步工具

来源 网络 浏览 1 扫码 打印 2026-05-15 10:06:41
上一篇:
下一篇:
  • 书签
  • 添加书签 移除书签
  • 总目录
  • 版权信息
  • 目录
  • 版权声明
  • 对本书上一版的赞誉
  • 前言
  • 致谢
  • 关于本书
  • 本书结构
  • 关于封面图片
  • 第一部分 基础知识
  • 第 1 章 Java 8、9、10以及11的变化
  • 1.1 为什么要关心Java的变化
  • 1.2 Java怎么还在变
  • 1.3 Java中的函数
  • 1.4 流
  • 1.5 默认方法及Java模块
  • 1.6 来自函数式编程的其他好思想
  • 1.7 小结
  • 第 2 章 通过行为参数化传递代码
  • 2.1 应对不断变化的需求
  • 2.2 行为参数化
  • 2.3 对付啰唆
  • 2.4 真实的例子
  • 2.5 小结
  • 第 3 章 Lambda表达式
  • 3.1 Lambda管中窥豹
  • 3.2 在哪里以及如何使用Lambda
  • 3.3 把Lambda付诸实践:环绕执行模式
  • 3.4 使用函数式接口
  • 3.5 类型检查、类型推断以及限制
  • 3.6 方法引用
  • 3.7 Lambda和方法引用实战
  • 3.8 复合Lambda表达式的有用方法
  • 3.9 数学中的类似思想
  • 3.10 小结
  • 第二部分 使用流进行函数式数据处理
  • 第 4 章 引入流
  • 4.1 流是什么
  • 4.2 流简介
  • 4.3 流与集合
  • 4.4 流操作
  • 4.5 路线图
  • 4.6 小结
  • 第 5 章 使用流
  • 5.1 筛选
  • 5.2 流的切片
  • 5.3 映射
  • 5.4 查找和匹配
  • 5.5 归约
  • 5.6 付诸实践
  • 5.7 数值流
  • 5.8 构建流
  • 5.9 概述
  • 5.10 小结
  • 第 6 章 用流收集数据
  • 6.1 收集器简介
  • 6.2 归约和汇总
  • 6.3 分组
  • 6.4 分区
  • 6.5 收集器接口
  • 6.6 开发你自己的收集器以获得更好的性能
  • 6.7 小结
  • 第 7 章 并行数据处理与性能
  • 7.1 并行流
  • 7.2 分支/合并框架
  • 7.3 Spliterator
  • 7.4 小结
  • 第三部分 使用流和Lambda进行高效编程
  • 第 8 章 Collection API的增强功能
  • 8.1 集合工厂
  • 8.2 使用List和Set
  • 8.3 使用Map
  • 8.4 改进的ConcurrentHashMap
  • 8.5 小结
  • 第 9 章 重构、测试和调试
  • 9.1 为改善可读性和灵活性重构代码
  • 9.2 使用Lambda重构面向对象的设计模式
  • 9.3 测试Lambda表达式
  • 9.4 调试
  • 9.5 小结
  • 第 10 章 基于Lambda的领域特定语言
  • 10.1 领域特定语言
  • 10.2 现代Java API中的小型DSL
  • 10.3 使用Java创建DSL的模式与技巧
  • 10.4 Java 8 DSL的实际应用
  • 10.5 小结
  • 第四部分 无所不在的Java
  • 第 11 章 用Optional取代null
  • 11.1 如何为缺失的值建模
  • 11.2 Optional类入门
  • 11.3 应用Optional的几种模式
  • 11.4 使用Optional的实战示例
  • 11.5 小结
  • 第 12 章 新的日期和时间API
  • 12.1 LocalDate、LocalTime、LocalDateTime、Instant、Duration以及Period
  • 12.2 操纵、解析和格式化日期
  • 12.3 处理不同的时区和历法
  • 12.4 小结
  • 第 13 章 默认方法
  • 13.1 不断演进的API
  • 13.2 概述默认方法
  • 13.3 默认方法的使用模式
  • 13.4 解决冲突的规则
  • 13.5 小结
  • 第 14 章 Java模块系统
  • 14.1 模块化的驱动力:软件的推理
  • 14.2 为什么要设计Java模块系统
  • 14.3 Java模块:全局视图
  • 14.4 使用Java模块系统开发应用
  • 14.5 使用多个模块
  • 14.6 编译及打包
  • 14.7 自动模块
  • 14.8 模块声明及子句
  • 14.9 通过一个更复杂的例子了解更多
  • 14.10 小结
  • 第五部分 提升Java的并发性
  • 第 15 章 CompletableFuture及反应式编程背后的概念
  • 15.1 为支持并发而不断演进的Java
  • 15.2 同步及异步API
  • 15.3 “线框–管道”模型
  • 15.4 为并发而生的CompletableFuture和结合器
  • 15.5 “发布–订阅”以及反应式编程
  • 15.6 反应式系统和反应式编程
  • 15.7 路线图
  • 15.8 小结
  • 第 16 章 CompletableFuture:组合式异步编程
  • 16.1 Future接口
  • 16.2 实现异步API
  • 16.3 让你的代码免受阻塞之苦
  • 16.4 对多个异步任务进行流水线操作
  • 16.5 响应CompletableFuture的completion事件
  • 16.6 路线图
  • 16.7 小结
  • 第 17 章 反应式编程
  • 17.1 反应式宣言
  • 17.2 反应式流以及Flow API
  • 17.3 使用反应式库RxJava
  • 17.4 小结
  • 第六部分 函数式编程以及Java未来的演进
  • 第 18 章 函数式的思考
  • 18.1 实现和维护系统
  • 18.2 什么是函数式编程
  • 18.3 递归和迭代
  • 18.4 小结
  • 第 19 章 函数式编程的技巧
  • 19.1 无处不在的函数
  • 19.2 持久化数据结构
  • 19.3 Stream的延迟计算
  • 19.4 模式匹配
  • 19.5 杂项
  • 19.6 小结
  • 第 20 章 面向对象和函数式编程的混合:Java和Scala的比较
  • 20.1 Scala简介
  • 20.2 函数
  • 20.3 类和trait
  • 20.4 小结
  • 第 21 章 结论以及Java的未来
  • 21.1 回顾Java 8的语言特性
  • 21.2 Java 9的模块系统
  • 21.3 Java 10的局部变量类型推断
  • 21.4 Java的未来
  • 21.5 让Java发展得更快
  • 21.6 写在最后的话
  • 附录 A 其他语言特性的更新
  • A.1 注解
  • A.2 通用目标类型推断
  • 附录 B 其他类库的更新
  • B.1 集合
  • B.2 并发
  • B.3 Arrays
  • B.4 Number和Math
  • B.5 Files
  • B.6 Reflection
  • B.7 String
  • 附录 C 如何以并发方式在同一个流上执行多种操作
  • C.1 复制流
  • C.2 性能的考量
  • 附录 D Lambda表达式和JVM字节码
  • D.1 匿名类
  • D.2 生成字节码
  • D.3 用InvokeDynamic力挽狂澜
  • D.4 代码生成策略
  • 版权信息
  • 目录
  • 版权声明
  • 前言
  • 涵盖的内容
  • 需要什么
  • 为谁而写
  • 排版约定
  • 致谢
  • 第 1 章 Java虚拟机
  • 1.1 JVM实现
  • 1.2 为何要在JVM上开发
  • 1.3 常见的用途
  • 1.4 JVM概念
  • 1.5 Java版本
  • 1.6 其他JVM语言
  • 1.7 小结
  • 第 2 章 Java虚拟机开发
  • 2.1 JDK
  • 2.2 使用包组织类
  • 2.3 Java类库
  • 2.4 从命令行运行JVM应用程序
  • 2.5 Eclipse IDE
  • 2.6 小结
  • 第 3 章 Java
  • 3.1 Java 中的面向对象编程功能
  • 3.2 编写Java代码
  • 3.3 编程风格指南
  • 3.4 小测验
  • 3.5 小结
  • 第 4 章 Java编程
  • 4.1 配置Eclipse IDE
  • 4.2 使用Java创建Web服务
  • 4.3 小结
  • 第 5 章 Scala
  • 5.1 安装Scala
  • 5.2 Scala的REPL shell
  • 5.3 函数式编程和命令式编程
  • 5.4 Scala语法和规则
  • 5.5 Scala的OOP功能
  • 5.6 Scala标准库
  • 5.7 Scala的函数式编程功能
  • 5.8 小测验
  • 5.9 小结
  • 第 6 章 Scala编程
  • 6.1 Scala IDE for Eclipse插件
  • 6.2 SBT
  • 6.3 创建Akka项目
  • 6.4 小结
  • 第 7 章 Clojure
  • 7.1 安装Clojure
  • 7.2 Clojure的交互式shell(REPL)
  • 7.3 Clojure语言
  • 7.4 使用Java类
  • 7.5 使用代理管理状态
  • 7.6 风格指南
  • 7.7 小测验
  • 7.8 小结
  • 第 8 章Clojure编程
  • 8.1 Eclipse IDE插件Counterclockwise
  • 8.2 构建工具Leiningen
  • 8.3 创建可执行的Clojure程序
  • 8.4 新建Counterclockwise项目
  • 8.5 以测试驱动开发的方式探索monad
  • 8.6 Web框架Luminus
  • 8.7 小结
  • 第 9 章 Kotlin
  • 9.1 安装Kotlin
  • 9.2 Kotlin的REPL交互式shell
  • 9.3 Kotlin语言基础
  • 9.4 Kotlin的OOP功能
  • 9.5 Kotlin过程性编程
  • 9.6 风格指南
  • 9.7 小测验
  • 9.8 小结
  • 第 10 章 Kotlin编程
  • 10.1 Eclipse IDE Kotlin插件
  • 10.2 Apache Maven
  • 10.3 创建JavaFX桌面GUI应用程序
  • 10.4 小结
  • 第 11 章 Groovy
  • 11.1 安装Groovy
  • 11.2 Groovy语言
  • 11.3 Groovy开发包(GDK)
  • 11.4 动态和静态编程
  • 11.5 小测验
  • 11.6 小结
  • 第 12 章 Groovy编程
  • 12.1 安装Groovy Eclipse插件
  • 12.2 Apache Ivy和IvyDE
  • 12.3 创建并配置项目
  • 12.4 Java Database Connectivity(JDBC)
  • 12.5 使用MarkupBuilder生成XML
  • 12.6 微服务平台Vert.x
  • 12.7 小结
  • 附录 A 其他JVM语言
  • A.1 Oracle Nashorn
  • A.3 JRuby(Ruby)
  • A.4 Frege(Haskell)
  • A.5 Ceylon
  • A.6 小结
  • 附录 B 小测验答案
  • 版权信息
  • 目录
  • 版权声明
  • O'Reilly Media, Inc. 介绍
  • 业界评论
  • 推荐序
  • 前言
  • 读者对象
  • 排版约定
  • 使用代码示例
  • Safari® Books Online
  • 联系我们
  • 致谢
  • 第 1 章 导论
  • 1.1 概述
  • 1.2 平台版本约定
  • 1.3 全面的性能调优
  • 1.4 小结
  • 第 2 章 性能测试方法
  • 2.1 原则1:测试真实应用
  • 2.2 原则2:理解批处理流逝时间、吞吐量和响应时间
  • 2.3 原则3:用统计方法应对性能的变化
  • 2.4 原则4:尽早频繁测试
  • 2.5 小结
  • 第 3 章 Java 性能调优工具箱
  • 3.1 操作系统的工具和分析
  • 3.2 Java监控工具
  • 3.3 性能分析工具
  • 3.4 Java任务控制
  • 3.5 小结
  • 第 4 章 JIT 编译器
  • 4.1 JIT编译器:概览
  • 4.2 调优入门:选择编译器类型(Client、Server或二者同用)
  • 4.3 Java和JIT编译器版本
  • 4.4 编译器中级调优
  • 4.5 高级编译器调优
  • 4.6 逆优化
  • 4.7 分层编译级别
  • 4.8 小结
  • 第 5 章 垃圾收集入门
  • 5.1 垃圾收集概述
  • 5.2 GC调优基础
  • 5.3 垃圾回收工具
  • 5.4 小结
  • 第 6 章 垃圾收集算法
  • 6.1 理解Throughput收集器
  • 6.2 理解CMS收集器
  • 6.3 理解G1垃圾收集器
  • 6.4 高级调优
  • 6.5 小结
  • 第 7 章 堆内存最佳实践
  • 7.1 堆分析
  • 7.2 减少内存使用
  • 7.3 对象生命周期管理
  • 7.4 小结
  • 第 8 章 原生内存最佳实践
  • 8.1 内存占用
  • 8.2 针对不同操作系统优化JVM
  • 8.3 小结
  • 第 9 章 线程与同步的性能
  • 9.1 线程池与ThreadPoolExecutor
  • 9.2 ForkJoinPool
  • 9.3 线程同步
  • 9.4 JVM线程调优
  • 9.5 监控线程与锁
  • 9.6 小结
  • 第 10 章 Java EE 性能调优
  • 10.1 Web容器的基本性能
  • 10.2 线程池
  • 10.3 EJB会话Bean
  • 10.4 XML和JSON处理
  • 10.5 对象序列化
  • 10.6 Java EE网络API
  • 10.7 小结
  • 第 11 章 数据库性能的最佳实践
  • 11.1 JDBC
  • 11.2 JPA
  • 11.3 小结
  • 第 12 章 Java SE API 技巧
  • 12.1 缓冲式I/O
  • 12.2 类加载
  • 12.3 随机数
  • 12.4 Java原生接口
  • 12.5 异常
  • 12.6 字符串的性能
  • 12.7 日志
  • 12.8 Java集合类API
  • 12.9 AggressiveOpts标志
  • 12.10 Lambda表达式和匿名类
  • 12.11 流和过滤器的性能
  • 12.12 小结
  • 附录 A 性能调优标志摘要
  • 作者简介
  • 关于封面
  • 看完了
  • 版权信息
  • 目录
  • 版权声明
  • 译者序
  • 致
  • 前言
  • 本书内容
  • 阅读前提
  • 本书读者
  • 排版约定
  • 读者反馈
  • 第 1 章 第一步:并发设计原理
  • 1.1 基本的并发概念
  • 1.2 并发应用程序中可能出现的问题
  • 1.3 设计并发算法的方法论
  • 1.4 Java并发API
  • 1.5 并发设计模式
  • 1.6 设计并发算法的提示和技巧
  • 1.7 小结
  • 第 2 章 使用基本元素:Thread和Runnable
  • 2.1 Java中的线程
  • 2.2 第一个例子:矩阵乘法
  • 2.3 第二个例子:文件搜索
  • 2.4 小结
  • 第 3 章 管理大量线程:执行器
  • 3.1 执行器简介
  • 3.2 第一个例子:k-最近邻算法
  • 3.3 第二个例子:客户端/服务器环境下的并发处理
  • 3.4 小结
  • 第 4 章 充分利用执行器
  • 4.1 执行器的高级特性
  • 4.2 第一个例子:高级服务器应用程序
  • 4.3 第二个例子:执行周期性任务
  • 4.4 有关执行器的其他信息
  • 4.5 小结
  • 第 5 章 从任务获取数据:Callable接口与Future接口
  • 5.1 Callable接口和Future接口简介
  • 5.2 第一个例子:单词最佳匹配算法
  • 5.3 第二个例子:为文档集创建倒排索引
  • 5.4 小结
  • 第 6 章 运行分为多阶段的任务:Phaser类
  • 6.1 Phaser类简介
  • 6.2 第一个例子:关键字抽取算法
  • 6.3 第二个例子:遗传算法
  • 6.4 小结
  • 第 7 章 优化分治解决方案:Fork/Join框架
  • 7.1 Fork/Join框架简介
  • 7.2 第一个例子:k-means聚类算法
  • 7.3 第二个例子:数据筛选算法
  • 7.4 第三个例子:归并排序算法
  • 7.5 Fork/Join框架的其他方法
  • 7.6 小结
  • 第 8 章 使用并行流处理大规模数据集:MapReduce模型
  • 8.1 流的简介
  • 8.2 第一个例子:数值综合分析应用程序
  • 8.3 第二个例子:信息检索工具
  • 8.4 小结
  • 第 9 章 使用并行流处理大规模数据集:MapCollect模型
  • 9.1 使用流收集数据
  • 9.2 第一个例子:无索引条件下的数据搜索
  • 9.3 第二个例子:推荐系统
  • 9.4 第三个例子:社交网络中的共同联系人
  • 9.5 小结
  • 第 10 章 异步流处理:反应流
  • 10.1 Java反应流简介
  • 10.2 第一个例子:面向事件通知的集中式系统
  • 10.3 第二个例子:新闻系统
  • 10.4 小结
  • 第 11 章 探究并发数据结构和同步工具
  • 11.1 并发数据结构
  • 11.2 同步机制
  • 11.3 小结
  • 第 12 章 测试与监视并发应用程序
  • 12.1 监视并发对象
  • 12.2 监视并发应用程序
  • 12.3 测试并发应用程序
  • 12.4 小结
  • 第 13 章 JVM中的并发处理:Clojure、带有GPars库的Groovy以及Scala
  • 13.1 Clojure的并发处理
  • 13.2 Groovy及其GPars库的并发处理
  • 13.3 软件事务性内存
  • 13.4 Scala的并发处理
  • 13.5 小结
  • 看完了
  • 版权信息
  • 目录
  • 版权所有
  • O'Reilly Media
  • 业界评论
  • 前言
  • 为什么要阅读本书
  • 本书读者对象
  • 怎样阅读本书
  • 本书排版规范
  • 使用代码示例
  • Safari® Books Online
  • 联系我们
  • 致谢
  • 第 1 章 简介
  • 1.1 为什么需要再次修改Java
  • 1.2 什么是函数式编程
  • 1.3 示例
  • 第 2 章 Lambda表达式
  • 2.1 第一个Lambda表达式
  • 2.2 如何辨别Lambda表达式
  • 2.3 引用值,而不是变量
  • 2.4 函数接口
  • 2.5 类型推断
  • 2.6 要点回顾
  • 2.7 练习
  • 第 3 章 流
  • 3.1 从外部迭代到内部迭代
  • 3.2 实现机制
  • 3.3 常用的流操作
  • 3.4 重构遗留代码
  • 3.5 多次调用流操作
  • 3.6 高阶函数
  • 3.7 正确使用Lambda表达式
  • 3.8 要点回顾
  • 3.9 练习
  • 3.10 进阶练习
  • 第 4 章 类库
  • 4.1 在代码中使用Lambda表达式
  • 4.2 基本类型
  • 4.3 重载解析
  • 4.4 @FunctionalInterface
  • 4.5 二进制接口的兼容性
  • 4.6  默认方法
  • 4.7 多重继承
  • 4.8 权衡
  • 4.9 接口的静态方法
  • 4.10 Optional
  • 4.11 要点回顾
  • 4.12 练习
  • 4.13 开放练习
  • 第 5 章 高级集合类和收集器
  • 5.1 方法引用
  • 5.2 元素顺序
  • 5.3 使用收集器
  • 5.4 一些细节
  • 5.5 要点回顾
  • 5.6 练习
  • 第 6 章 数据并行化
  • 6.1 并行和并发
  • 6.2 为什么并行化如此重要
  • 6.3 并行化流操作
  • 6.4 模拟系统
  • 6.5 限制
  • 6.6 性能
  • 6.7 并行化数组操作
  • 6.8 要点回顾
  • 6.9 练习
  • 第 7 章 测试、调试和重构
  • 7.1 重构候选项
  • 7.2 Lambda表达式的单元测试
  • 7.3 在测试替身时使用Lambda表达式
  • 7.4 惰性求值和调试
  • 7.5 日志和打印消息
  • 7.6 解决方案:peak
  • 7.7 在流中间设置断点
  • 7.8 要点回顾
  • 第 8 章 设计和架构的原则
  • 8.1 Lambda表达式改变了设计模式
  • 8.2 使用Lambda表达式的领域专用语言
  • 8.3 使用Lambda表达式的SOLID原则
  • 8.4 进阶阅读
  • 8.5 要点回顾
  • 第 9 章 使用Lambda表达式编写并发程序
  • 9.1 为什么要使用非阻塞式I/O
  • 9.2 回调
  • 9.3 消息传递架构
  • 9.4 末日金字塔
  • 9.5 Future
  • 9.6 CompletableFuture
  • 9.7 响应式编程
  • 9.8 何时何地使用新技术
  • 9.9 要点回顾
  • 9.10 练习
  • 第 10 章 下一步该怎么办
  • 封面介绍
  • 看完了
  • 版权信息
  • 目录
  • 版权声明
  • O'Reilly Media, Inc. 介绍
  • 业界评论
  • 前言
  • 编写理念
  • 面向对象编程
  • 附录
  • 使用代码示例
  • 排版约定
  • Safari® Books Online
  • 联系我们
  • 致谢
  • 第 1 章 编程之道
  • 1.1 何为编程
  • 1.2 何为计算机科学
  • 1.3 编程语言
  • 1.4 Hello World程序
  • 1.5 显示字符串
  • 1.6 转义序列
  • 1.7 设置代码格式
  • 1.8 调试代码
  • 1.9 术语表
  • 1.10 练习
  • 第 2 章 变量和运算符
  • 2.1 声明变量
  • 2.2 赋值
  • 2.3 状态图
  • 2.4 显示变量
  • 2.5 算术运算符
  • 2.6 浮点数
  • 2.7 舍入误差
  • 2.8 字符串运算符
  • 2.9 组合
  • 2.10 错误类型
  • 2.11 术语表
  • 2.12 练习
  • 第 3 章 输入和输出
  • 3.1 System类
  • 3.2 Scanner类
  • 3.3 程序结构
  • 3.4 英寸到厘米的转换
  • 3.5 字面量和常量
  • 3.6 设置输出的格式
  • 3.7 厘米到英寸的转换
  • 3.8 求模运算符
  • 3.9 整合
  • 3.10 Scanner类的bug
  • 3.11 术语表
  • 3.12 练习
  • 第 4 章 void 方法
  • 4.1 Math类的方法
  • 4.2 再谈组合
  • 4.3 添加方法
  • 4.4 执行流程
  • 4.5 形参和实参
  • 4.6 多个形参
  • 4.7 栈图
  • 4.8 阅读文档
  • 4.9 编写文档
  • 4.10 术语表
  • 4.11 练习
  • 第 5 章 条件和逻辑
  • 5.1 关系运算符
  • 5.2 逻辑运算符
  • 5.3 条件语句
  • 5.4 串接和嵌套
  • 5.5 标志变量
  • 5.6 return语句
  • 5.7 验证输入
  • 5.8 递归方法
  • 5.9 递归栈图
  • 5.10 二进制数
  • 5.11 术语表
  • 5.12 练习
  • 第 6 章 值方法
  • 6.1 返回值
  • 6.2 编写方法
  • 6.3 方法组合
  • 6.4 重载
  • 6.5 boolean方法
  • 6.6 Javadoc标签
  • 6.7 再谈递归
  • 6.8 姑且相信
  • 6.9 再举一个例子
  • 6.10 术语表
  • 6.11 练习
  • 第 7 章 循环
  • 7.1 while语句
  • 7.2 生成表格
  • 7.3 封装和泛化
  • 7.4 再谈泛化
  • 7.5 for语句
  • 7.6 do-while循环
  • 7.7 break和continue
  • 7.8 术语表
  • 7.9 练习
  • 第 8 章 数组
  • 8.1 创建数组
  • 8.2 访问元素
  • 8.3 显示数组
  • 8.4 复制数组
  • 8.5 数组的长度
  • 8.6 数组遍历
  • 8.7 随机数
  • 8.8 遍历和计数
  • 8.9 生成直方图
  • 8.10 改进的for循环
  • 8.11 术语表
  • 8.12 练习
  • 第 9 章 字符串
  • 9.1 字符
  • 9.2 字符串是不可修改的
  • 9.3 字符串遍历
  • 9.4 子串
  • 9.5 方法indexOf
  • 9.6 字符串比较
  • 9.7 设置字符串的格式
  • 9.8 包装类
  • 9.9 命令行实参
  • 9.10 术语表
  • 9.11 练习
  • 第 10 章 对象
  • 10.1 Point对象
  • 10.2 属性
  • 10.3 将对象用作参数
  • 10.4 将对象作为返回类型
  • 10.5 可修改的对象
  • 10.6 指定别名
  • 10.7 关键字null
  • 10.8 垃圾收集
  • 10.9 类图
  • 10.10 Java类库的源代码
  • 10.11 术语表
  • 10.12 练习
  • 第 11 章 类
  • 11.1 Time类
  • 11.2 构造函数
  • 11.3 再谈构造函数
  • 11.4 获取方法和设置方法
  • 11.5 显示对象
  • 11.6 方法toString
  • 11.7 方法equals
  • 11.8 时间相加
  • 11.9 纯方法和非纯方法
  • 11.10 术语表
  • 11.11 练习
  • 第 12 章 对象数组
  • 12.1 Card对象
  • 12.2 方法toString
  • 12.3 类变量
  • 12.4 方法compareTo
  • 12.5 Card对象是不可修改的
  • 12.6 Card数组
  • 12.7 顺序查找
  • 12.8 二分法查找
  • 12.9 跟踪代码
  • 12.10 递归版本
  • 12.11 术语表
  • 12.12 练习
  • 第 13 章 数组对象
  • 13.1 Deck类
  • 13.2 洗牌
  • 13.3 选择排序
  • 13.4 合并排序
  • 13.5 方法subdeck
  • 13.6 方法merge
  • 13.7 添加递归
  • 13.8 术语表
  • 13.9 练习
  • 第 14 章 包含其他对象的对象
  • 14.1 Deck和手里的牌
  • 14.2 CardCollection
  • 14.3 继承
  • 14.4 发牌
  • 14.5 Player类
  • 14.6 Eights类
  • 14.7 类之间的关系
  • 14.8 术语表
  • 14.9 练习
  • 附录 A 开发工具
  • A.1 安装DrJava
  • A.2 DrJava Interactions窗格
  • A.3 命令行界面
  • A.4 命令行测试
  • A.5 运行Checkstyle
  • A.6 使用调试器进行跟踪
  • A.7 用JUnit进行测试
  • A.8 术语表
  • 附录 B Java 2D 图形
  • B.1 创建图形
  • B.2 Graphics类的方法
  • B.3 绘图示例
  • B.4 术语表
  • B.5 练习
  • 附录 C 调试
  • C.1 编译时错误
  • C.2 运行时错误
  • C.3 逻辑错误
  • 作者简介
  • 封面简介
  • 看完了
  • 版权信息
  • 目录
  • 版权声明
  • O'Reilly Media, Inc. 介绍
  • 业界评论
  • 献给
  • 序
  • 前言
  • 第6版的变化
  • 本书内容
  • 相关书籍
  • 在线示例
  • 排版约定
  • 发表评论
  • Safari® Books Online
  • 致谢
  • 第一部分 Java 介绍
  • 第 1 章 Java 环境介绍
  • 1.1 Java语言、JVM和生态系统
  • 1.2 Java和JVM简史
  • 1.3 Java程序的生命周期
  • 1.4 Java的安全性
  • 1.5 Java和其他语言比较
  • 1.6 回应对Java的一些批评
  • 第 2 章 Java 基本句法
  • 2.1 Java程序概览
  • 2.2 词法结构
  • 2.3 基本数据类型
  • 2.4 表达式和运算符
  • 2.5 语句
  • 2.6 方法
  • 2.7 介绍类和对象
  • 2.8 数组
  • 2.9 引用类型
  • 2.10 包和Java命名空间
  • 2.11 Java文件的结构
  • 2.12 定义并运行Java程序
  • 2.13 小结
  • 第 3 章 Java 面向对象编程
  • 3.1 类简介
  • 3.2 字段和方法
  • 3.3 创建和初始化对象
  • 3.4 子类和继承
  • 3.5 数据隐藏和封装
  • 3.6 抽象类和方法
  • 3.7 修饰符总结
  • 第 4 章 Java 类型系统
  • 4.1 接口
  • 4.2 Java泛型
  • 4.3 枚举和注解
  • 4.4 嵌套类型
  • 4.5 lambda表达式
  • 4.6 小结
  • 第 5 章 Java 的面向对象设计
  • 5.1 Java的值
  • 5.2 java.lang.Object类的重要方法
  • 5.3 面向对象设计要略
  • 5.4 异常和异常处理
  • 5.5 Java编程的安全性
  • 第 6 章 Java 实现内存管理和并发编程的方式
  • 6.1 Java内存管理的基本概念
  • 6.2 JVM优化垃圾回收的方式
  • 6.3 HotSpot堆
  • 6.4 终结机制
  • 6.5 Java对并发编程的支持
  • 6.6 使用线程
  • 6.7 小结
  • 第二部分 使用 Java 平台
  • 第 7 章 编程和文档约定
  • 7.1 命名和大小写约定
  • 7.2 实用的命名方式
  • 7.3 Java文档注释
  • 7.4 可移植程序的约定
  • 第 8 章 使用Java集合
  • 8.1 介绍集合API
  • 8.2 在Java集合框架中使用lambda表达式
  • 8.3 小结
  • 第 9 章 处理常见的数据格式
  • 9.1 文本
  • 9.2 数字和数学运算
  • 9.3 在Java 8中处理日期和时间
  • 9.4 小结
  • 第 10 章 处理文件和 I/O
  • 10.1 Java处理I/O的经典方式
  • 10.2 Java处理I/O的现代方式
  • 10.3 NIO中的通道和缓冲区
  • 10.4 异步I/O
  • 10.5 网络
  • 第 11 章 类加载、反射和方法句柄
  • 11.1 类文件、类对象和元数据
  • 11.2 类加载的各个阶段
  • 11.3 安全的编程和类加载
  • 11.4 应用类加载知识
  • 11.5 反射
  • 11.6 动态代理
  • 11.7 方法句柄
  • 第 12 章 Nashorn
  • 12.1 介绍Nashorn
  • 12.2 在Nashorn中执行JavaScript代码
  • 12.3 Nashorn和javax.script包
  • 12.4 Nashorn的高级用法
  • 12.5 小结
  • 第 13 章 平台工具和配置
  • 13.1 命令行工具
  • 13.2 VisualVM
  • 13.3 Java 8配置
  • 13.4 小结
  • 作者简介
  • 封面介绍
  • 看完了
  • 版权信息
  • 空标题文档
  • 版权声明
  • O'Reilly Media, Inc. 介绍
  • 业界评论
  • 译者序
  • 序
  • 前言
  • 目标读者
  • 本书结构
  • 排版约定
  • 示例代码
  • O'Reilly Safari
  • 联系我们
  • 致谢
  • 第 1 章 基础知识
  • 1.1 lambda表达式
  • 1.2 方法引用
  • 1.3 构造函数引用
  • 1.4 函数式接口
  • 1.5 接口中的默认方法
  • 1.6 接口中的静态方法
  • 第 2 章 java.util.function 包
  • 2.1 Consumer接口
  • 2.2 Supplier接口
  • 2.3 Predicate接口
  • 2.4 Function接口
  • 第 3 章 流式操作
  • 3.1 流的创建
  • 3.2 装箱流
  • 3.3 利用reduce方法实现归约操作
  • 3.4 利用reduce方法校验排序
  • 3.5 利用peek方法对流进行调试
  • 3.6 字符串与流之间的转换
  • 3.7 获取元素数量
  • 3.8 汇总统计
  • 3.9 查找流的第一个元素
  • 3.10 使用anyMatch、allMatch与noneMatch方法
  • 3.11 使用flatMap与map方法
  • 3.12 流的拼接
  • 3.13 惰性流
  • 第 4 章 比较器与收集器
  • 4.1 利用比较器实现排序
  • 4.2 将流转换为集合
  • 4.3 将线性集合添加到映射
  • 4.4 对映射排序
  • 4.5 分区与分组
  • 4.6 下游收集器
  • 4.7 查找最大值和最小值
  • 4.8 创建不可变集合
  • 4.9 实现Collector接口
  • 第 5 章 流式操作、lambda表达式与方法引用的相关问题
  • 5.1 java.util.Objects类
  • 5.2 lambda表达式与效果等同于final的变量
  • 5.3 随机数流
  • 5.4 Map接口的默认方法
  • 5.5 默认方法冲突
  • 5.6 集合与映射的迭代
  • 5.7 利用Supplier创建日志消息
  • 5.8 闭包复合
  • 5.9 利用提取的方法实现异常处理
  • 5.10 受检异常与lambda表达式
  • 5.11 泛型异常包装器的应用
  • 第 6 章 Optional类
  • 6.1 Optional的创建
  • 6.2 从Optional中检索值
  • 6.3 getter和setter方法中的Optional
  • 6.4 Optional.flatMap与Optional.map方法
  • 6.5 Optional的映射
  • 第 7 章 文件I/O
  • 7.1 文件处理
  • 7.2 以流的形式检索文件
  • 7.3 文件系统的遍历
  • 7.4 文件系统的搜索
  • 第 8 章 java.time包
  • 8.1 Date-Time API中的基本类
  • 8.2 根据现有实例创建日期和时间
  • 8.3 调节器与查询
  • 8.4 将java.util.Date转换为java.time.LocalDate
  • 8.5 解析与格式化
  • 8.6 查找具有非整数小时偏移量的时区
  • 8.7 根据UTC偏移量查找地区名
  • 8.8 获取事件之间的时间
  • 第 9 章 并行与并发
  • 9.1 将顺序流转换为并行流
  • 9.2 并行流的优点
  • 9.3 调整线程池大小
  • 9.4 Future接口
  • 9.5 完成CompletableFuture
  • 9.6 多个CompletableFuture之间的协调(第1部分)
  • 9.7 多个CompletableFuture之间的协调(第2部分)
  • 第 10 章 Java 9 新特性
  • 10.1 Jigsaw中的模块
  • 10.2 接口中的私有方法
  • 10.3 创建不可变集合
  • 10.4 新增的Stream方法
  • 10.5 下游收集器:filtering与flatMapping
  • 10.6 新增的Optional方法
  • 10.7 日期范围
  • 附录 A 泛型与Java 8
  • A.2 众所周知的事实
  • A.3 容易忽略的事实
  • A.4 通配符与PECS
  • A.5 Java 8 API示例
  • A.6 小结
  • 作者简介
  • 封面介绍
  • 看完了
暂无相关搜索结果!

    本文档使用 BookStack 构建

    展开/收起文章目录

    思维导图备注

    文章二维码

    手机扫一扫,轻松掌上读

    文档下载

    请下载您需要的格式的文档,随时随地,享受汲取知识的乐趣!
    PDF文档 EPUB文档 MOBI文档

    书签列表

      阅读记录

      阅读进度: 0.00% ( 0/0 ) 重置阅读进度