-
内容大纲
本书是作者十多年教学经验的总结,汇集了学员在学习过程中或认证考试中遇到的关于概念、实验、应用等方面的问题及解决方案。
本书基于Servlet 4.0/Java SE 15,对代码进行了重新审查与更新,涵盖Java 15 - 17的文本块、模式比对、record/sealed等新特性,并介绍OWASP TOP 10、CWE、CVE,讨论注入攻击、会话安全、密码管理、Java EE安全机制、CSRF等Web安全概念。必要时从Java SE API的源代码开始分析,介绍各种语法在Java SE API中的应用。本书还添加了关于Spring的内容,包含Spring DI/AOP、Spring MVC、Spring Security等,以及Spring Boot快速开发方案的使用,涵盖中文处理、图片验证、自动登录、验证过滤器、压缩处理、在线资料管理、邮件发送等领域的实用案例。此外,本书还提供丰富的练习示例,让你更好地掌握学习重点,并详细介绍IDE的使用,使你可以快速将所学知识应用于工作中。
本书适合Java的初、中级读者以及广大Java应用开发人员阅读。 -
作者介绍
林信良(网名:良葛格),毕业于台湾大学电机工程学系。擅长技术写作、翻译与教育培训。喜好研究程序语言、框架、社群,从中学习设计、典范及文化,并利用闲暇之余记录所学技术,涵盖C/C++、Java、Ruby/Rails、Python、JavaScript、Haskell、OpenSCAD等领域。目前出版的著作有《JSP & Servlet学习笔记(第2版)》《Spring技术手册》《Java JDK 8学习笔记》等,译作有《Ajax实战手册》《jQuery实战手册(第2版)》。 -
目录
第1章 Java平台概述
1.1 Java不只是语言
1.1.1 Java的前世今生
1.1.2 三大平台
1.1.3 JCP与JSR
1.1.4 Oracle JDK与OpenJDK
1.2 JVM/JRE/JDK
1.2.1 什么是JVM
1.2.2 JRE与JDK
1.2.3 下载并安装JDK
1.2.4 了解JDK安装内容
第2章 从JDK到IDE
2.1 从“Hello,World”开始
2.1.1 编写Java源代码
2.1.2 PATH是什么
2.1.3 JVM(java)与CLASSPATH
2.1.4 编译器(javac)与CLASSPATH
2.2 管理源代码和字节码文件
2.2.1 编译器(javac)与SOURCEPATH
2.2.2 通过package对类进行管理
2.2.3 使用import简化操作
2.3 初识模块平台系统
2.3.1 JVM(java)与module-path
2.3.2 编译器(javac)与module-path
2.3.3 编译器(javac)与module-source-path
2.4 使用IDE
2.4.1 IDE项目管理基础
2.4.2 使用了哪个JRE
2.4.3 类文件版本
第3章 基础语法
3.1 类型、变量和运算符
3.1.1 类型
3.1.2 变量
3.1.3 运算符
3.1.4 处理类型
3.2 流程控制
3.2.1 if...else条件表达式
3.2.2 switch条件表达式
3.2.3 for循环
3.2.4 while循环
3.2.5 break和continue
课后练习
第4章 认识对象
4.1 类与实例
4.1.1 定义类
4.1.2 使用标准类
4.1.3 对象赋值与相等性
4.2 基本类型包装器
4.2.1 包裹基本类型
4.2.2 自动装箱与拆箱
4.2.3 自动装箱与拆箱的内幕
4.3 数组对象
4.3.1 数组基础
4.3.2 操作数据对象
4.3.3 复制数组
4.4 字符串对象
4.4.1 字符串基础
4.4.2 字符串特性
4.4.3 文本块
4.4.4 源代码编码
4.4.5 Java与Unicode
4.5 查询Java API文档
课后练习
第5章 对象封装
5.1 什么是封装
5.1.1 封装对象初始流程
5.1.2 对象封装的操作流程
5.1.3 封装对象的内部数据
5.2 类的语法细节
5.2.1 public权限设定
5.2.2 关于构造函数
5.2.3 构造函数与方法重载
5.2.4 使用this
5.2.5 static类成员
5.2.6 变长参数
5.2.7 内部类
课后练习
第6章 继承与多态
6.1 什么是继承
6.1.1 继承共同行为与实现
6.1.2 多态与从属
6.1.3 重新定义实现
6.1.4 抽象方法、抽象类
6.2 继承语法细节
6.2.1 protected成员
6.2.2 覆盖的细节
6.2.3 再看构造函数
6.2.4 再看final关键字
6.2.5 java.lang.Object
6.2.6 关于垃圾收集
6.2.7 再看抽象类
课后练习
第7章 接口与多态
7.1 什么是接口
7.1.1 使用接口定义行为
7.1.2 行为的多态
7.1.3 解决需求变化
7.2 接口的语法细节
7.2.1 接口的默认设定
7.2.2 匿名内部类
7.2.3 使用enum列举常量
课后练习
第8章 异常处理
8.1 语法与继承架构
8.1.1 使用try、catch
8.1.2 异常继承架构
8.1.3 要抓还是要抛
8.1.4 贴心还是制造麻烦
8.1.5 了解堆栈跟踪
8.1.6 关于assert
8.2 异常与资源管理
8.2.1 使用finally
8.2.2 自动尝试关闭资源
8.2.3 java.lang.AutoCloseable接口
课后习题
第9章 Collection与Map
9.1 使用Collection收集对象
9.1.1 认识Collection架构
9.1.2 带有索引的List
9.1.3 内容不重复的Set
9.1.4 支持队列操作的Queue
9.1.5 使用泛型
9.1.6 Lambda表达式简介
9.1.7 Iterable与Iterator
9.1.8 Comparable与Comparator
9.2 键值对与Map
9.2.1 常用Map实现的类
9.2.2 遍历Map键值
9.3 不可变的Collection与Map
9.3.1 不可变特性简介
9.3.2 Collections的unmodifiableXXX()方法
9.3.3 List、Set、Map的of()方法
课后练习
第10章 输入/输出
10.1 InputStream与OutputStream
10.1.1 流设计概念
10.1.2 流继承架构
10.1.3 流处理包装器
10.2 字符处理类
10.2.1 Reader与Writer继承架构
10.2.2 字符处理装饰器
课后练习
第11章 线程与并行API
11.1 线程
11.1.1 线程简介
11.1.2 Thread与Runnable
11.1.3 线程生命周期
11.1.4 关于ThreadGroup
11.1.5 synchronized与volatile
11.1.6 等待与通知
11.2 并行API
11.2.1 Lock、ReadWriteLock与Condition
11.2.2 使用Executor
11.2.3 并行Collection简介
课后练习
第12章 Lambda
12.1 认识Lambda语法
12.1.1 Lambda语法概览
12.1.2 Lambda表达式与函数式接口
12.1.3 当Lambda遇上this与final时
12.1.4 方法与构造函数引用
12.1.5 接口默认方法
12.2 Functional与Stream API
12.2.1 使用Optional取代null
12.2.2 标准API的函数式接口
12.2.3 使用Stream进行管道操作
12.2.4 对Stream进行reduce与collect
12.2.5 关于flatMap()方法
12.2.6 与Stream相关的API
12.2.7 活用Optional与Stream
12.3 Lambda、并行化与异步处理
12.3.1 Stream与并行化
12.3.2 Arrays与并行化
12.3.3 通过CompletableFuture进行异步处理
课后练习
第13章 时间与日期
13.1 认识时间与日期
13.1.1 衡量时间
13.1.2 年历简介
13.1.3 认识时区
13.2 认识Date与Calendar
13.2.1 时间轴上瞬间的Date
13.2.2 处理时间与日期的Calendar
13.3 新时间与日期API
13.3.1 机器时间观点的API
13.3.2 人类时间观点的API
13.3.3 对时间的运算
13.3.4 年历系统设计
课后练习
第14章 NIO与NIO
14.1 认识NIO
14.1.1 NIO概述
14.1.2 Channel架构与操作
14.1.3 Buffer架构与操作
14.2 NIO2文件系统
14.2.1 NIO2架构
14.2.2 操作路径
14.2.3 属性读取与设定
14.2.4 操作文件与文件夹
14.2.5 读取、访问文件夹
14.2.6 过滤、搜索文件
课后练习
第15章 通用API
15.1 日志
15.1.1 日志API简介
15.1.2 指定日志层级
15.1.3 使用Handler与Formatter
15.1.4 自定义Handler、Formatter与Filter
15.1.5 使用logging.properties
15.2 HTTP Client API
15.2.1 浅谈URI与HTTP
15.2.2 HTTP Client API入门
15.2.3 发送请求信息
15.3 正则表达式
15.3.1 正则表达式简介
15.3.2 quote()与quoteReplacement()
15.3.3 Pattern与Matcher
15.3.4 Unicode正则表达式
15.4 处理数字
15.4.1 使用BigInteger
15.4.2 使用BigDecimal
15.4.3 数字的格式化
15.5 再谈堆栈跟踪
15.5.1 获取StackTraceElement
15.5.2 Stack-Walking API
课后练习
第16章 整合数据库
16.1 JDBC入门
16.1.1 JDBC简介
16.1.2 连接数据库
16.1.3 使用Statement、ResultSet
16.1.4 使用PreparedStatement、CallableStatement
16.2 JDBC高级应用
16.2.1 使用DataSource取得连接
16.2.2 使用ResultSet查看、更新数据
16.2.3 批量更新
16.2.4 Blob与Clob
16.2.5 事务简介
16.2.6 metadata简介
课后练习
第17章 反射与类加载器
17.1 使用反射
17.1.1 Class与.class文件
17.1.2 使用Class.forName()
17.1.3 从Class创建对象
17.1.4 从Class获得信息
17.1.5 操作对象的方法与成员
17.1.6 动态代理
17.1.7 反射与模块
17.1.8 使用ServiceLoader
17.2 了解类加载器
17.2.1 类加载器层级
17.2.2 创建ClassLoader实例
课后练习
第18章 自定义泛型、列举与标注
18.1 自定义泛型
18.1.1 使用extends与
18.1.2 使用super与
18.2 自定义列举
18.2.1 成员的细节
18.2.2 构造函数、方法与接口
18.3 record与sealed
18.3.1 深入了解record类
18.3.2 sealed的类型层级
18.4 关于标注
18.4.1 常用标准标注
18.4.2 自定义标注类型
18.4.3 运行时读取标注信息
课后练习
第19章 深入了解模块化
19.1 使用模块
19.1.1 模块的种类
19.1.2 requires、exports与opens的细节说明
19.1.3 补丁模块
19.1.4 放宽模块封装与依赖
19.2 模块API
19.2.1 使用Module
19.2.2 使用ModuleDescriptor
19.2.3 浅谈ModuleLayer
19.3 打包模块
19.3.1 使用jar打包
19.3.2 使用JMOD进行打包
19.3.3 使用jlink建立运行时镜像
附录 如何使用本书项目
同类热销排行榜
- 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年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
