领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

《Java核心技术·卷 Ⅱ》知识点总结

nixiaole 2025-09-29 09:19:38 知识剖析 3 ℃

如果说卷 I 是Java的“内功心法”,那么卷 II 就是Java的“兵器谱”和“实战手册”。它专注于Java平台提供的各种高级API,教你如何利用这些工具来构建功能强大、与外部世界交互的应用程序。

这份总结将带你领略Java在I/O、网络、数据库、安全等领域的强大能力。


《Java核心技术·卷 II》知识点精粹总结

引言:为什么需要这本书?

当你掌握了卷 I 的核心语言特性后,你会发现实际的应用开发远不止于此。你需要读写文件、连接网络、操作数据库、处理XML数据等等。卷 II 就是为此而生,它全面介绍了Java标准库中用于解决这些实际问题的高级API


第一部分:文件与I/O (Input/Output)

这部分是构建任何非“Hello World”应用的基石,因为程序总是需要与数据源打交道。

1. 流 (Streams) 与java.io

  • 核心概念:Java I/O 基于“流”模型,数据像水流一样单向流动。
  • 两大类流字节流 (Byte Streams):以字节(8位)为单位处理数据。基类是 InputStreamOutputStream。适用于处理任何类型的数据,如图片、视频、二进制文件。字符流 (Character Streams):以字符(16位 Unicode)为单位处理数据。基类是 ReaderWriter。专门用于处理文本数据,能正确处理各种字符编码。
  • 装饰器模式 (Decorator Pattern):这是 java.io 的精髓。通过将一个流“包装”或“链接”到另一个流,来动态地增加功能。示例new DataInputStream(new BufferedInputStream(new FileInputStream("data.bin")));FileInputStream:提供从文件读取字节的基本功能。BufferedInputStream:增加了缓冲功能,提高读取效率。DataInputStream:增加了读取基本数据类型(如readInt(), readDouble())的功能。

2. 新I/O (NIO.2 -java.nio)

  • 为什么需要NIO?java.io 的API存在一些局限,如阻塞I/O、对文件系统属性的访问有限等。NIO(New I/O)提供了更现代化、更高效的解决方案。
  • 核心组件PathFiles:这是现代文件操作的入口。Path 是一个表示文件或目录路径的接口,Files 是一个包含大量静态工具方法的类。优点:提供了更强大、更直观的文件操作,如 Files.copy(), Files.move(), Files.walkFileTree()(遍历目录树),并且能更好地处理符号链接和文件属性。通道 (Channels) 和 缓冲区 (Buffers)概念:数据总是从通道读入缓冲区,或从缓冲区写入通道。这是NIO的核心数据传输方式。优势:支持非阻塞I/O (Non-blocking I/O)。一个线程可以管理多个通道,当某个通道有数据可读/可写时,Selector(选择器)会通知线程,极大地提高了服务器处理大量并发连接的效率。内存映射文件 (Memory-mapped Files):一种将文件或文件的一部分直接映射到内存中的技术,可以像操作内存数组一样读写文件,对于大文件的处理非常高效。

第二部分:网络编程 (Networking)

这部分讲解了如何让你的Java程序通过网络进行通信。

3. 基础网络编程

  • InetAddress:代表一个IP地址,用于主机名和IP地址之间的转换。
  • 套接字 (Sockets):网络通信的基础。Socket:客户端使用的类,用于连接到指定的服务器和端口。ServerSocket:服务器端使用的类,用于监听客户端的连接请求。工作流程:服务器创建一个ServerSocket并调用accept()方法阻塞等待连接。客户端创建一个Socket尝试连接。连接成功后,双方通过各自SocketInputStreamOutputStream进行通信。
  • URLURLConnectionURL 类用于表示一个统一资源定位符。URLConnection 允许你打开一个到URL的连接,并读取其内容、发送数据(如POST请求)、获取头信息等。HttpURLConnection是其针对HTTP协议的子类。现代替代方案:书中可能主要讲URLConnection,但自Java 11起,java.net.http.HttpClient 提供了更现代、更易用、功能更强的API(支持HTTP/2和异步操作)。

第三部分:数据库编程 (JDBC)

这部分是Java后端开发的核心技能,讲解如何与关系型数据库交互。

4. JDBC (Java Database Connectivity)

  • 核心思想:提供一套统一的Java API,用于连接和操作各种不同的数据库,而无需关心底层数据库的具体实现细节(由数据库厂商提供的驱动程序负责转换)。
  • 核心步骤加载驱动Class.forName("com.mysql.cj.jdbc.Driver"); (现在通常可以省略)建立连接Connection conn = DriverManager.getConnection(url, user, password);创建语句Statement stmt = conn.createStatement(); (用于执行静态SQL)PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?"); (强烈推荐,用于执行带参数的SQL,可以防止SQL注入,并且性能更好)执行SQLResultSet rs = pstmt.executeQuery(); (执行查询)int count = pstmt.executeUpdate(); (执行增、删、改)处理结果:使用 while (rs.next()) { ... } 遍历 ResultSet关闭资源务必finally 块或使用try-with-resources语句关闭 ResultSet, Statement, 和 Connection

第四部分:高级主题与企业特性

这部分涵盖了企业级应用中常见的各种技术。

5. XML处理

  • 背景:XML曾是数据交换和配置文件的主要格式。
  • 两大解析模型DOM (Document Object Model):将整个XML文件加载到内存中,形成一棵树状结构。优点是方便随机访问和修改,缺点是内存消耗大。SAX (Simple API for XML):基于事件的流式解析器。它顺序读取XML,每当遇到开始标签、结束标签、文本等时,会触发相应的回调方法。优点是内存占用小,速度快,适合处理大文件。
  • JAXB (Java Architecture for XML Binding):一种更高级的技术,可以将Java对象自动与XML文档进行相互转换(编组/解组),大大简化了XML处理。

6. 国际化 (Internationalization - I18N)

  • 目标:让你的程序能够适应不同的语言和地区,而无需修改源代码。
  • 核心组件Locale:一个代表特定地理、政治或文化区域的对象(如 Locale.US, Locale.CHINA)。资源包 (ResourceBundle):用于存储本地化文本。通常是一系列.properties文件(如 messages_en.properties, messages_fr.properties),程序会根据当前Locale自动加载正确的文件。格式化DateFormatNumberFormat 用于根据Locale格式化日期、时间和数字,以符合当地习惯(如日期格式MM/dd/yyyy vs dd/MM/yyyy,货币符号$ vs EUR)。

7. 安全 (Security)

  • Java安全模型:基于“沙箱”(Sandbox)概念,限制不可信代码(如下载的Applet)的权限,保护本地系统。
  • 主要内容类加载器:通过不同的类加载器隔离来自不同来源的代码。代码签名:使用数字证书为代码签名,证明其来源和完整性,从而获得更多权限。加密与解密:介绍了Java加密体系结构(JCA),包括:MessageDigest:用于生成哈希值(如MD5, SHA-256)。Cipher:用于对称加密(AES)和非对称加密(RSA)。KeyStore:用于安全地存储密钥和证书。

8. 其他高级主题

  • 脚本API (javax.script):允许在Java程序中嵌入和执行脚本语言(如JavaScript),实现动态逻辑。
  • 注解处理 (Annotation Processing):讲解了如何编写注解处理器,在编译时扫描源代码中的注解,并自动生成代码(Lombok就是一个典型应用)。
  • Java本地接口 (JNI - Java Native Interface):一座连接Java世界和本地代码(C/C++)世界的桥梁。用于调用已有的C/C++库,或在性能要求极高的场景下使用。使用起来非常复杂,需要小心管理内存。

总结

《Java核心技术·卷 II》是一本实践性极强的宝库。它告诉你,当基础语法和面向对象思想不足以解决问题时,Java平台为你准备了哪些强大的“官方武器”。读完这本书,你将:

  1. 精通文件I/O,无论是传统的流式处理还是现代的NIO。
  2. 具备网络编程能力,能编写客户端/服务器应用。
  3. 熟练使用JDBC,安全、高效地与数据库进行交互。
  4. 理解企业级应用中的常见需求,如XML处理、国际化和安全性。
  5. 了解Java与其他技术(如C++、脚本语言)集成的可能性

这本书是从一个“Java语言使用者”转变为一个“Java平台开发者”的必经之路。

Tags:

最近发表
标签列表