Java 知识点 Part21 主要涵盖了 MySQL 数据库中的两种引擎 InnoDB 和 MyIASM 的比较、SQL 查询技巧、Java 异常处理以及事务管理的相关概念。下面将逐一详细阐述这些知识点。 1. **MySQL 引擎对比**: - **InnoDB**:支持事务处理,提供行级锁定,允许外键约束。由于行级锁定,InnoDB 在高并发场景下表现优秀,不会锁定整个表。但是,进行 `select count(*)` 查询时,由于不保留行数,需要扫描全表。 - **MyIASM**:不支持事务和行级锁定,但支持全文检索。MyIASM 保留行数,因此 `select count(*)` 操作不需要全表扫描。适合读操作频繁的场景。MyIASM 的索引是非聚集索引,存储的是数据地址,而 InnoDB 的索引是聚集索引,存储实际数据。 2. **SQL 查询示例**: - 要求查询出至少选修两门课程且分数低于60的学生学号,可以使用以下 SQL: ```sql select 学号 from tabA where 分数<60 group by 学号 having count(学号) >=2; ``` 3. **Java ArrayList 删除元素**: - 当你需要从 ArrayList 中删除元素时,可以使用迭代器进行删除,以避免 ConcurrentModificationException。示例如下: ```java Iterator<String> it = list.iterator(); while (it.hasNext()) { String str = it.next(); if ("b".equals(str)) { it.remove(); } } ``` 4. **Java 异常体系**: - Java 异常分为两大类:`Error` 和 `Exception`。 - `Error` 是程序无法处理的错误,如 `OutOfMemoryError` 或 `ThreadDeath`,会导致 JVM 终止线程。 - `Exception` 可以被程序处理,包括运行时异常(如 `NullPointerException`, `ArrayIndexOutOfBoundsException`)和非运行时异常(如 `IOException`, `SQLException`)。 5. **自定义异常**: - 自定义异常类通常继承 `Exception` 或其子类,以便于在程序中抛出和捕获特定的错误情况。 6. **防止 SQL 注入**: - 使用预编译语句,如 MyBatis 中的 "#" 代替 "$"。 - 过滤用户输入,通过正则表达式或关键词检查。 7. **事务管理**: - **ACID** 原则:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 - **事务隔离级别**:串行化、可重复读(MySQL 默认)、读已提交、读未提交。 - **事务问题**:脏读、不可重复读、幻读。 - **Spring 事务管理**: - 隔离级别:与标准 SQL 相同,外加“使用数据库默认隔离级别”。 - 事务传播行为:`REQUIRED`、`SUPPORTS`、`MANDATORY`、`REQUIRES_NEW`、`NOT_SUPPORTED`、`NEVER`、`NESTED`。 以上就是关于 Java 知识点 Part21 的详细解释,涵盖了数据库引擎选择、SQL 查询、异常处理和事务管理等多个方面,这些知识点对于 Java 开发者来说至关重要。
- 粉丝: 29
- 资源: 296
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0