前言 1
第1章 新I/O 1
1.1 缓冲器(Buffer)和通道(Channel) 1
1.1.1 缓冲器 2
1.1.2 通道 3
1.1.3 缓冲器操作 3
1.2 新I/O在文件操作中的应用 12
1.2.1 文件的读写 12
1.2.2 直接缓冲器(Direct Buffer) 13
1.2.3 文件映射(MappedByteBuffer) 16
1.2.4 文件锁定(lock) 18
1.3 非阻塞(non-blocking)I/O和多路(multiplexed)I/O 20
1.3.1 传统网络服务器的原始工作模式 21
1.3.2 传统服务器的多线程模式 21
1.3.3 新类介绍 22
1.3.4 实例 27
1.4 Charset 31
1.4.1 Charset的构造和使用 31
1.4.2 编码器(CharsetEncoder)和解码器(harsetDecoder) 33
1.5 总结 34
第2章 线程 36
2.1 概述 36
2.1.1 线程是什么 36
2.2.1 Thread类和Runnable接口 37
2.2 在Java中使用线程 37
2.1.2 Java对线程的支持 37
2.2.2 线程对象的状态和属性 40
2.2.3 ThreadGroup和线程池 43
2.3 管理线程 45
2.3.1 为什么要同步 45
2.3.2 Java中的线程同步方法 46
2.3.3 线程死锁 49
2.4 线程高级应用 51
2.4.1 Java的内存模型(Java Memory Model)介绍 51
2.4.2 Double-Checked Locking为什么在Java中不成立 53
2.4.3 对Java线程模型的增强 57
2.5 代码剖析 64
第3章 集合框架 70
3.1 概述 70
3.1.1 集合框架的继承层次 70
3.1.2 Collection接口 71
3.1.3 通用目的实现 73
3.1.4 遗留实现 75
3.2 List接口及实现 76
3.2.1 List接口 76
3.2.2 List实现 78
3.3 Map接口及实现 83
3.3.1 Map接口 83
3.3.2 Map实现 85
3.4.1 Set接口 88
3.4 Set接口及实现 88
3.4.2 Set实现 90
3.5 Collections、Arrays工具类 94
3.5.1 同步视图、只读视图 95
3.5.2 便利实现 99
3.5.3 算法 100
3.6 基础结构 104
3.6.1 Iterator 104
3.6.2 ListIterator 104
3.7 集合类型之间的联系与变换 105
3.7.1 Map与Set和Collection 105
3.7.2 数组与List的双向变换 106
4.1.1 复制和粘贴 109
第4章 高级GUI 109
4.1 高级AWT 109
4.1.2 拖放 119
4.1.3 打印 129
4.1.4 小结 147
4.2 Swing的高级组件——树 147
4.2.1 树的基本类和接口 147
4.2.2 树的渲染 151
4.2.3 节点编辑 153
4.2.4 有关树的事件 158
4.2.5 定制树模型 159
4.3.1 表的基本组件 160
4.3 Swing的高级组件——表 160
4.2.6 小结 160
4.3.2 示例:基本表实现 166
4.3.3 示例:表的渲染和编辑 170
4.4 小结 173
第5章 网络编程 174
5.1 Socket基础回顾 174
5.2 UDP套接字 175
5.2.1 利用UDP套接字实现服务器/客户端 175
5.2.2 消息广播的实现 178
5.3 Socket进阶 178
5.3.1 套接字与多线程 179
5.3.2 线程池的应用 181
5.3.3 套接字与NIO 185
5.3.4 异步套接字的实现 186
5.4 Tomcat中Socket应用分析 189
5.5 SSLSocket 191
5.5.1 安全通信 191
5.5.2 协议简介 192
5.5.3 SSL Socket API介绍 192
5.5.4 SSL Socket编程实现原理 195
5.5.5 一个完整的例子 196
5.6 Socket高级特性 197
第6章 JavaMail 199
6.1 JavaMail的基础知识 199
6.1.1 相关协议 199
6.1.2 JavaMail的结构框架 200
6.2 JavaMail API的核心类 201
6.3 发送邮件 203
6.3.1 发送第一个邮件 204
6.3.2 给邮件添加验证 204
6.3.3 发送带附件的邮件 205
6.3.4 发送HTML格式的邮件 206
6.4 接收邮件 208
6.4.1 接收普通邮件 208
6.4.2 接收带附件的邮件 209
第7章 JDBC 214
7.1 java.sql.*包 215
7.1.1 CallableStatement(存储过程) 215
7.1.2 ResultSet(结果集) 221
7.1.3 本地事务 228
7.1.4 批量更新 232
7.1.5 转义语法 234
7.2 iavax.sql.*包 238
7.2.1 池化技术 238
7.2.2 行集 243
第8章 XML处理 250
8.1 XML编程接口介绍 250
8.2 JAXP 251
8.2.1 JAXP API结构模型 251
8.2.2 使用SAX开发XML应用 251
8.2.3 使用DOM开发XML应用 257
8.2.4 使用XSLT开发XML应用 261
8.3.1 JDOM介绍 264
8.3 JDOM 264
8.3.2 JDOM的API模型 265
8.3.3 用JDOM解析XML文档 268
8.3.4 使用JDOM创建与输出XML文档 269
8.3.5 结合JDOM与XSLT实现XML转换 271
8.4 一个树形菜单的实例 272
8.4.1 简单的需求描述 272
8.4.2 在Swing中的菜单实现 272
8.4.3 在WEB上的菜单实现 274
8.4.4 关于这个例子扩展的讨论 276
9.1.1 国际化的概念 278
9.1.2 国际化的意义 278
9.1 18N 278
第9章 国际化 278
9.1.3 国际化的分类 279
9.1.4 国际化的内容 279
9.2 Java与I18N 280
9.3 Locale 281
9.3.1 Locale的概念 281
9.3.2 创建Locale对象 282
9.3.3 getAvailableLocales方法与getDefault方法 283
9.4 资源包 285
9.4.1 ResourceBundle类 285
9.4.3 使用资源文件 287
9.4.2 ListResourceBundle和PropertyResourceBundle子类 287
9.4.4 使用ListResourceBundle 288
9.4.5 MessageFormat类 289
9.4.6 关于资源包的组织 290
9.5 国际化的企业实践 290
9.5.1 国际化的思想 290
9.5.2 国际化的步骤 290
9.5.3 国际化的常见问题 291
9.6 源码分析 293
第10章 Java安全 296
10.1 Java的安全特性 296
10.1.1 信息系统的安全 296
10.1.2 加密 297
10.1.3 签名 299
10.1.4 数字证书 299
10.1.5 Java的安全 300
10.2 数字证书 305
10.2.1 X.509正书 305
10.2.2 X.509演变历史 307
10.2.3 Java实现创建证书 307
10.3 加密与签名 315
10.3.1 加密 315
10.3.2 数字签名 319
10.4 Applet的签名与发布 321
10.4.1 Applet的安全限制 321
10.4.2 Applet签名发布实例 322
10.5 JAAS 324
10.5.1 Java认证与授权 325
10.5.2 JAAS的基本使用 327
第11章 反射 334
11.1 对反射的支持 334
11.2 示例 336
11.3 小结 340
第12章 Java常用工具包 341
12.1 JDK提供的日志API——Logging 341
12.1.1 Java Logging API模型 341
12.1.2 用Java Logging API调试应用程序 344
12.1.3 创建自己的Handler和Filter 347
12.1.4 格式化输出成HTML 349
12.2 正则表达式的使用——Regex 350
12.2.1 正则表达式简要介绍 350
12.2.2 Java Regex API模型 352
12.2.3 正则表达式的应用示例 355
12.3 应用程序首选项——Preference 360
12.3.1 如何保存应用程序首选项 360
12.3.2 java.util.prefs API介绍 360
12.3.3 获得Preference对象实例的两种方法 361
12.3.4 操作应用程序配置数据 362
12.3.5 监视Preference的变化 363
12.3.6 XML文档的输入与输出 364
参考文献 366