-
内容大纲
随着Java继续发展和演进,这本书也在不断修订和改版。利用这本指南,你会快速掌握数百个实战技巧,内容涵盖诸多Java主题。作者Ian Darwin将帮助开发人员快速上手,掌握从字符串处理、函数式编程到网络通信和AI等一切有用的技术。
如果你熟悉Java的任何一个版本,这本经典实例将增进你的Java知识,让你了解Java的最新变化,包括如何在日常开发中运用这些知识。每个技巧都包含完整的代码解决方案,可以免费使用这些代码,另外每个技巧还讨论了如何做以及为什么可以这样做。
所有代码示例都可以从GitHub下载。更新的这一版涵盖了直到Java 23的全部内容和Java 24的部分内容,并列出直到Java 24的所有主要变化。 -
作者介绍
伊恩·F.达尔文(Ian Darwin)在软件行业积累了丰富的经验,从Java的第d一版直到现在,他在很多平台和不同类型的软件上使用过Java。作为Sun/Oracle Java Champions的创始成员,Ian还是《Android Cookook》和其他一些书的作者。他一直在为计算机科学专业本科生以及Learning Tree International(一家领l先的职业发展培训公司)编写教材和讲授课程。 -
目录
前言
第1章 入门:编译和运行Java
1.0 引言
1.1 编译和运行Java:标准JDK
1.2 用无类Main实现Hello, World 21P
1.3 下载和使用代码示例
1.4 用IDE编译、运行和测试
1.5 用JShell 11探索Java 11
1.6 有效使用CLASSPATH
1.7 用Javadoc建立类文档
1.8 超越Javadoc:注解/元数据
1.9 打包和运行JAR文件
1.10 创建支持多个Java版本的JAR
1.11 将Web层组件打包到WAR文件
1.12 编译和运行Java:GraalVM提高性能
1.13 获得环境、操作系统和运行时环境信息
第2章 软件开发、测试与维护
2.0 引言
2.1 设计应用:包和模块
2.2 使用Java模块系统
2.3 使用JPMS创建模块
2.4 用Apache Maven自动管理编译、测试和部署
2.5 用Gradle自动管理编译、测试和部署
2.6 用Maven和Gradle自动实现依赖管理
2.7 处理废弃警告
2.8 批量重构处理警告和迁移
2.9 利用单元测试维护代码正确性:JUnit
2.10 用模拟对象和Mockito隔离测试目标
2.11 日志:网络或本地
2.12 创建SLF4J
2.13 使用Log4j生成网络日志
2.14 用java.util.logging生成网络日志
2.15 利用持续集成维护代码
2.16 性能测量(计时)
2.17 用jlink创建定制JDK发布包
2.18 用jpackage创建平台特定安装工具
第3章 字符串相关问题
3.0 引言
3.1 利用子串、词法分析和修剪方法分解字符串
3.2 用Formatter和printf格式化字符串
3.3 用StringBuilder建立字符串
3.4 逐字符处理字符串
3.5 字符串对齐、缩进和取消缩进
3.6 Unicode字符与字符串之间的转换
3.7 按单词或字符逆转字符串
3.8 展开和压缩制表符
3.9 控制大小写
3.10 为字符串增加不可打印字符
3.11 使用国际化资源创建消息
3.12 使用特定的本地化环境
3.13 创建资源包
3.14 程序:一个简单的文本格式化工具
第4章 使用正则表达式实现字符串匹配
4.0 引言
4.1 正则表达式语法
4.2 检查字符串是否与正则表达式匹配
4.3 分组:指定正则表达式的部分
4.4 查找匹配文本
4.5 替换匹配文本
4.6 打印一个模式的所有匹配
4.7 正则表达式中控制大小写
4.8 匹配重音或组合字符
4.9 匹配文本中的换行符
4.10 程序:完整的Grep
第5章 数字
5.0 引言
5.1 检查字符串是否是一个合法的数
5.2 数字与对象的转换
5.3 直接使用分数而不使用浮点数
5.4 处理浮点数
5.5 格式化数字
5.6 二进制、八进制、十进制和十六进制间的转换
5.7 处理整数序列
5.8 格式化为正确的复数形式
5.9 生成随机数
5.10 矩阵乘法
5.11 用Vector操作优化大数算术运算 22C
5.12 使用复数
5.13 处理非常大的数
5.14 程序:TempConverter
第6章 日期和时间
6.0 引言
6.1 获得当天日期
6.2 格式化日期和时间
6.3 日期/时间和纪元秒之间的转换
6.4 将字符串解析为日期
6.5 两个日期之差
6.6 日期加上或减去一个时间段
6.7 计算重复事件
6.8 计算涉及时区的日期
6.9 与遗留Date和Calendar类交互
第7章 Java数据结构
7.0 引言
7.1 用数组建立数据结构
7.2 调整数组大小
7.3 用Arrays类简化数组处理
7.4 集合框架
7.5 列表:类似数组,但更动态
7.6 自己的类中使用泛型类型:堆栈演示
7.7 如何迭代?所有迭代方法
7.8 用Set避免重复值
7.9 用Hashtable和HashMap建立映射
7.10 在Properties和Preferences中存储字符串
7.11 集合排序
7.12 在集合中查找对象
7.13 Collection与数组的转换
7.14 使自己的数据结构可迭代
7.15 多维结构
第8章 面向对象技术
8.0 引言
8.1 对象方法:用toString()格式化对象,用equals比较对象
8.2 构造器简化:super(...)前的语句 22P
8.3 使用内部类
8.4 用Record(或Lombok)简化数据对象
8.5 通过接口提供回调
8.6 多态/抽象方法
8.7 用默认、静态和私有方法改进接口
8.8 使用类型安全的枚举
8.9 使用类型模式匹配
8.10 用“Optional”避免NPE
8.11 用密封类型控制派生 17
8.12 强制单例模式
8.13 创建自己的异常
8.14 使用依赖注入
8.15 结合Java特性实现面向数据编程
第9章 函数式编程技术:函数接口、流和并行集合
9.0 引言
9.1 使用Lambda/Closures而不是内部类
9.2 使用lambda预定义接口或创建自己的接口
9.3 用Stream简化处理
9.4 用Collector简化流
9.5 用流采集器简化流 22P
9.6 用你自己的流采集器简化流 22P
9.7 用并行流和集合提高吞吐量
9.8 利用方法引用将已有代码用作为函数式接口
9.9 Java Mixins:方法混入
9.10 使用Flow和响应式流实现函数式编程
第10章 输入和输出:读、写和目录技巧
10.0 引言
10.1 发现文件系统路径
10.2 获取和设置文件与目录信息:Files和Path
10.3 创建和删除文件或目录
10.4 改变文件名或其他属性
10.5 关于InputStream/OutputStream和Reader/Writer
10.6 读写文件
10.7 用StreamTokenizer、Scanner和Parser扫描输入
10.8 从标准输入或控制台/控制终端读取
10.9 复制文件
10.10 重新分配标准流
10.11 写时复制流
10.12 读/写不同的字符集
10.13 讨厌的行尾字符
10.14 当心依赖平台的文件代码
10.15 读写JAR或ZIP归档
10.16 使用getResource()和getResourceAsStream()采用文件系统中立的方式读取文件
10.17 创建瞬时/临时文件
10.18 获得目录的根
10.19 使用文件监视器服务得到文件变更通知
10.20 遍历文件树(类似Find)
第11章 Java线程
11.0 引言
11.1 在不同线程中运行代码
11.2 使用虚拟线程提高性能
11.3 交会和超时
11.4 用synchronized关键字同步线程
11.5 用锁简化同步
11.6 用一个写者多个读者锁定
11.7 线程间共享数据——ThreadLocal和ScopedValue:结构化并发
11.8 用Queue接口简化生产者/消费者
11.9 用Fork/Join优化并行处理
11.10 调度任务:将来,编辑器的后台保存
第12章 数据科学与R
12.0 引言
12.1 在Apache Spark中使用数据
12.2 交互式使用R
12.3 比较/选择R实现
12.4 在Java应用中使用R:Renjin
12.5 从R会话使用Java
12.6 在Web应用中使用R
第13章 机器学习/人工智能
13.0 引言
13.1 一些主要AI软件
13.2 直接使用ChatGPT
13.3 通过LangChain4j使用ChatGPT
13.4 用LangChain4j建议AI服务
13.5 用Shadows转换
13.6 用LangChain4j生成图像
13.7 混合媒体提示:使用LangChain4j解释图像
13.8 使用ollama本地运行AI
第14章 网络客户端
14.0 引言
14.1 HTTP/REST Web客户端——Modern API 11
14.2 连接socket服务器
14.3 查找和报告网络地址
14.4 处理网络错误
14.5 读写文本数据
14.6 读写二进制或串行化数据
14.7 互联网的明信片:使用UDP数据报
14.8 URI, URL还是URN
14.9 程序:基于Socket的聊天客户端
第15章 服务器端Java
15.0 引言
15.1 打开服务器Socket
15.2 查找网络接口
15.3 返回响应(字符串或二进制数据)
15.4 处理多个客户端
15.5 提供HTTP协议
15.6 用TLS(原来的SSL)和JSSE保护Web服务器
15.7 用JAX-RS创建REST服务/微服务
15.8 UNIX域Socket——甚至包括Windows! 16
第16章 处理JSON数据
16.0 引言
16.1 直接生成JSON
16.2 用Jackson解析和写JSON
16.3 用org.json解析和写JSON
16.4 用JSON-B解析和写JSON
16.5 用JSON Pointer查找JSON元素
第17章 反射或“名为Class的类”
17.0 引言
17.1 动态加载和实例化一个类
17.2 打印类信息
17.3 获得类描述符
17.4 查找和使用方法和字段
17.5 通过MethodHandle调用类成员
17.6 列出一个包中的类
17.7 访问同一个类中的嵌套成员
17.8 通过反射访问私有方法和字段
17.9 用ClassLoader从头构造一个类
17.10 用JavaCompiler从头构造一个类
17.11 用Class-File API构造或修改类文件 22P
17.12 使用和定义注解
17.13 通过注解查找类似插件的类
17.14 一个计时程序
17.15 程序:CrossRef
第18章 结合使用Java和其他语言
18.0 引言
18.1 从Java运行外部程序
18.2 运行程序并捕获输出
18.3 通过javax.script调用其他语言
18.4 用GraalVM混合语言 21
18.5 用外部函数与内存API在Java和原生代码间来回调用 22
18.6 通过原生代码(JNI)调用其他语言
18.7 从原生代码调用Java
后记
附录 Java前世今生
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-

孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-

时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-

本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
