暂无商品咨询信息 [发表商品咨询]
如果你熟悉Java的任何一个版本,这本经典实例将增进你的Java知识,让你了解Java的最新变化,包括如何在日常开发中运用这些知识。每个技巧都包含完整的代码解决方案,可以免费使用这些代码,另外每个技巧还讨论了如何做以及为什么可以这样做。本书的主要内容有:学习如何应用众多Java API,包括新老版本。使用最新Java版本的新语言性。理解所维护的代码。使用标准API和最佳实践开发代码。探索当前Java开发的全新世界。
Ian Darwin在软件行业积累了丰富的经验,从Java的第一版直到现在,从桌面版、企业版到移动版,他在很多平台和不同类型的软件上使用过Java。
目录
前言 1
第1 章 入门:编译和运行Java 17
10 引言17
11 编译和运行Java:标准JDK 18
12 用无类Main 实现Hello, World 20
13 下载和使用代码示例 24
14 用IDE 编译、运行和测试 30
15 用JShell 11 探索Java38
16 有效使用CLASSPATH 41
17 用Javadoc 建立类文档 43
18 超越Javadoc: 注解/ 元数据51
19 打包和运行JAR 文件53
110 创建支持多个Java 版本的JAR 56
111 将Web 层组件打包到WAR 文件 59
112 编译和运行Java:GraalVM 提高性能 61
113 获得环境、操作系统和运行时环境信息 64
第2 章 软件开发、测试与维护73
20 引言73
21 设计应用:包和模块 73
22 使用Java 模块系统76
23 使用JPMS 创建模块 81
24 用Apache Maven 自动管理编译、测试和部署86
25 用Gradle 自动管理编译、测试和部署 92
26 用Maven 和Gradle 自动实现依赖管理95
27 处理废弃警告 100
28 批量重构处理警告和迁移102
29 利用单元测试维护代码正确性:JUnit 105
210 用模拟对象和Mockito 隔离测试目标 109
211 日志:网络或本地 111
212 创建SLF4J 113
213 使用Log4j 生成网络日志 115
214 用javautillogging 生成网络日志 121
215 利用持续集成维护代码 126
216 性能测量(计时) 131
217 用jlink 创建定制JDK 发布包 135
218 用jpackage 创建平台定安装工具 137
第3 章 字符串相关问题 141
30 引言 141
31 利用子串、词法分析和修剪方法分解字符串 145
32 用Formatter 和printf 格式化字符串 148
33 用StringBuilder 建立字符串 155
34 逐字符处理字符串158
35 字符串对齐、缩进和取消缩进 160
36 Unicode 字符与字符串之间的转换 165
37 按单词或字符逆转字符串167
38 展开和压缩制表符169
39 控制大小写 174
310 为字符串增加不可打印字符 176
311 使用国际化资源创建消息 178
312 使用定的本地化环境 181
313 创建资源包183
314 程序:一个简单的文本格式化工具 184
第4 章 使用正则表达式实现字符串匹配 185
40 引言 185
41 正则表达式语法188
42 检查字符串是否与正则表达式匹配195
43 分组:指定正则表达式的部分 200
44 查找匹配文本 202
45 替换匹配文本 205
46 打印一个模式的所有匹配209
47 正则表达式中控制大小写 212
48 匹配重音或组合字符 214
49 匹配文本中的换行符 215
410 程序:完整的Grep217
第5 章 数字 219
50 引言 219
51 检查字符串是否是一个合法的数 222
52 数字与对象的转换224
53 直接使用分数而不使用浮点数 226
54 处理浮点数 227
55 格式化数字 232
56 二进制、八进制、十进制和十六进制间的转换238
57 处理整数序列 239
58 格式化为正确的复数形式241
59 生成随机数 243
510 矩阵乘法 247
511 用Vector 操作优化大数算术运算249
512 使用复数 253
513 处理非常大的数 256
514 程序:TempConverter 258
第6 章 日期和时间 261
60 引言 261
61 获得当天日期 265
62 格式化日期和时间266
63 日期/ 时间和纪元秒之间的转换 273
64 将字符串解析为日期 274
65 两个日期之差 277
66 日期加上或减去一个时间段279
67 计算重复事件 280
68 计算涉及时区的日期 282
69 与遗留Date 和Calendar 类交互284
第7 章 Java 数据结构 287
70 引言 287
71 用数组建立数据结构 288
72 调整数组大小 290
73 用Arrays 类简化数组处理 292
74 集合框架294
75 列表:类似数组,但更动态296
76 自己的类中使用泛型类型:堆栈演示301
77 如何迭代所有迭代方法306
78 用Set 避免重复值309
79 用Hashtable 和HashMap 建立映射 311
710 在Properties 和Preferences 中存储字符串 314
711 集合排序 319
712 在集合中查找对象 326
713 Collection 与数组的转换329
714 使自己的数据结构可迭代330
715 多维结构 333
第8 章 面向对象技术 337
80 引言 337
81 对象方法:用toString() 格式化对象,用equals 比较对象341
82 构造器简化:super() 前的语句349
83 使用内部类 350
84 用Record(或Lombok)简化数据对象 352
85 通过接口提供回调356
86 多态/ 抽象方法 360
87 用默认、静态和私有方法改进接口362
88 使用类型安全的枚举 364
89 使用类型模式匹配369
810 用“Optional”避免NPE 371
811 用密封类型控制派生374
812 强制单例模式 376
813 创建自己的异常 379
814 使用依赖注入 380
815 结合Java 性实现面向数据编程 383
第9 章 函数式编程技术:函数接口、流和并行集合 387
90 引言 387
91 使用Lambda/Closures 而不是内部类 390
92 使用lambda 预定义接口或创建自己的接口 396
93 用Stream 简化处理 398
94 用Collector 简化流 400
95 用流采集器简化流 404
96 用你自己的流采集器简化流 406
97 用并行流和集合提高吞吐量408
98 利用方法引用将已有代码用作为函数式接口 410
99 Java Mixins:方法混入 415
910 使用Flow 和响应式流实现函数式编程 417
第10 章 输入和输出:读、写和目录技巧 421
100 引言 421
101 发现文件系统路径 424
102 获取和设置文件与目录信息:Files 和Path 426
103 创建和删除文件或目录 438
104 改变文件名或其他属性 443
105 关于InputStream/OutputStream 和Reader/Writer446
106 读写文件 448
107 用StreamTokenizer、Scanner 和Parser 扫描输入 452
108 从标准输入或控制台/ 控制终端读取 461
109 复制文件 465
1010 重新分配标准流467
1011 写时复制流 468
1012 读/ 写不同的字符集 471
1013 讨厌的行尾字符472
1014 当心依赖平台的文件代码473
1015 读写JAR 或ZIP 归档474
1016 使用getResource() 和getResourceAsStream() 采用文件系统中立的
方式读取文件479
1017 创建瞬时/ 临时文件 483
1018 获得目录的根485
1019 使用文件监视器服务得到文件变更通知 487
1020 遍历文件树(类似Find) 489
第11 章 Java 线程 493
110 引言 493
111 在不同线程中运行代码 495
112 使用虚拟线程提高性能 502
113 交会和超时504
114 用synchronized 关键字同步线程505
115 用锁简化同步 509
116 用一个写者多个读者锁定 511
117 线程间共享数据—— ThreadLocal 和ScopedValue:结构化并发 514
118 用Queue 接口简化生产者/ 消费者 518
119 用Fork/Join 优化并行处理521
1110 调度任务:将来,编辑器的后台保存 526
第12 章 数据科学与R 531
120 引言 531
121 在Apache Spark 中使用数据532
122 交互式使用R 536
123 比较/ 选择R 实现 539
124 在Java 应用中使用R:Renjin540
125 从R 会话使用Java543
126 在Web 应用中使用R 544
第13 章 机器学习/ 人工智能 547
130 引言 547
131 一些主要AI 软件 550
132 直接使用ChatGPT555
133 通过LangChain4j 使用ChatGPT 558
134 用LangChain4j 建议AI 服务 560
135 用Shadows 转换 562
136 用LangChain4j 生成图像 564
137 混合媒体提示:使用LangChain4j 解释图像 566
138 使用ollama 本地运行AI568
第14 章 网络客户端 571
140 引言 571
141 HTTP/REST Web 客户端—— Modern API574
142 连接socket 服务器577
143 查找和报告网络地址578
144 处理网络错误 581
145 读写文本数据 583
146 读写二进制或串行化数据585
147 互联网的明信片:使用UDP 数据报589
148 URI, URL 还是URN592
149 程序:基于Socket 的聊天客户端 594
第15 章 服务器端Java 597
150 引言 597
151 打开服务器Socket598
152 查找网络接口 601
153 返回响应(字符串或二进制数据)603
154 处理多个客户端 607
155 提供HTTP 协议 611
156 用TLS(原来的SSL)和JSSE 保护Web 服务器615
157 用JAX-RS 创建REST 服务/ 微服务 618
158 UNIX 域Socket —— 甚至包括Windows ! 622
第16 章 处理JSON 数据 627
160 引言 627
161 直接生成JSON629
162 用Jackson 解析和写JSON630
163 用orgjson 解析和写JSON633
164 用JSON-B 解析和写JSON 636
165 用JSON Pointer 查找JSON 元素 637
第17 章 反射或“名为Class 的类” 641
170 引言 641
171 动态加载和实例化一个类642
172 打印类信息645
173 获得类描述符 647
174 查找和使用方法和字段 648
175 通过MethodHandle 调用类成员 653
176 列出一个包中的类 654
177 访问同一个类中的嵌套成员 657
178 通过反射访问私有方法和字段659
179 用ClassLoader 从头构造一个类 660
1710 用JavaCompiler 从头构造一个类662
1711 用Class-File API 构造或修改类文件 665
1712 使用和定义注解670
1713 通过注解查找类似插件的类 674
1714 一个计时程序677
1715 程序:CrossRef679
第18 章 结合使用Java 和其他语言 681
180 引言 681
181 从Java 运行外部程序 682
182 运行程序并捕获输出687
183 通过javaxscript 调用其他语言 691
184 用GraalVM 混合语言 695
185 用外部函数与内存API 在Java 和原生代码间来回调用697
186 通过原生代码(JNI) 调用其他语言701
187 从原生代码调用Java708
后记 711
附录 Java 前世今生 713
| 基本信息 | |
|---|---|
| 出版社 | 中国电力出版社 |
| ISBN | 9787523905333 |
| 条码 | 9787523905333 |
| 编者 | [加]伊恩·F. 达尔文(Ian F. Darwin) 著 苏钰涵 林琪 译 著 |
| 译者 | 苏钰涵,林琪 |
| 出版年月 | 2025-12-01 00:00:00.0 |
| 开本 | 16开 |
| 装帧 | 平装 |
| 页数 | 744 |
| 字数 | 860000 |
| 版次 | 1 |
| 印次 | 1 |
| 纸张 | |
暂无商品评论信息 [发表商品评论]
暂无商品咨询信息 [发表商品咨询]