Просмотр исходного кода

fix: 修复复习/JavaSE阶段文档中markdown表格无法解析问题——为全部9个文档共56处表格块前后补上空行(表格前缺空行导致GitHub/Gitee渲染器无法识别为表格,涉及JavaSE重点核心编程题手册及阶段00~阶段07知识点总纲)

WanJL 1 неделя назад
Родитель
Сommit
7ede07bb19

+ 7 - 0
复习/JavaSE阶段/阶段01-Java语言基础.md

@@ -13,6 +13,7 @@
 - 三种注释:单行 `//`、多行 `/* */`、文档 `/** */`(生成 API 文档)
 
 ### 2. 基本数据类型(4 类 8 种,必背)
+
 | 类型 | 位数 | 字节 | 范围 |
 |------|------|------|------|
 | byte | 8 | 1 | -2⁷ ~ 2⁷-1 |
@@ -28,6 +29,7 @@
 - 存储单位:1B = 8bit;1KB=1024B;1MB=1024KB;1GB=1024MB;1TB=1024GB
 
 ### 3. 基本类型 vs 引用类型(四大区别必背)
+
 | 维度 | 基本类型 | 引用类型 |
 |------|---------|---------|
 | 存什么 | 直接存"值" | 存空间地址值 |
@@ -60,6 +62,7 @@
 - **浮点精度陷阱**:`0.1 + 0.2 == 0.3` 为 false,用 printf 或误差范围比较
 
 ### 3. 逻辑运算符(必背真值表)
+
 | 运算符 | 名称 | 短路特性 |
 |--------|------|---------|
 | `&` | 与 | 无 |
@@ -70,6 +73,7 @@
 | `^` | 异或 | 相同 false、不同 true |
 
 ### 4. 位运算符(操作整型二进制位)
+
 | 运算符 | 规律 |
 |--------|------|
 | `&` / `\|` / `^` / `~` | 按位与/或/异或/取反 |
@@ -89,6 +93,7 @@
 - 增强 switch(JDK17+):`case 值 ->` 自带 break、多值匹配 `case "1","2" ->`、switch 表达式必须有 default
 
 ### 2. 三种循环对比(必背)
+
 | 循环 | 判断时机 | 最少执行次数 |
 |------|---------|------------|
 | for | 先判断后执行 | 0 |
@@ -120,6 +125,7 @@
 `sort()`、`toString()`、`copyOf()`、`copyOfRange(arr, from, to)`、`binarySearch()`(**必须先排序**)
 
 ### 3. 三种排序算法(必会手写,必背对比)
+
 | 特性 | 冒泡 | 选择 | 插入 |
 |------|------|------|------|
 | 思想 | 相邻比较大的后冒 | 每轮选最小交换 | 插入已排序区正确位置 |
@@ -141,6 +147,7 @@
 ## 五、方法与 Random(对应 07-17)
 
 ### 1. 方法四种声明方式(必背)
+
 | 类型 | 格式 | 场景 |
 |------|------|------|
 | 无参无返回值 | `void 方法名()` | 输出固定内容 |

+ 4 - 0
复习/JavaSE阶段/阶段02-面向对象编程.md

@@ -14,6 +14,7 @@
 - 创建对象:`类名 对象名 = new 类名();`;调用成员:`对象名.成员`
 
 ### 2. 成员变量 vs 局部变量(四大区别必背)
+
 | 维度 | 成员变量 | 局部变量 |
 |------|---------|---------|
 | 位置 | 类内方法外 | 方法内(含参数) |
@@ -98,6 +99,7 @@
 - 抽象类不一定有抽象方法,但抽象方法必须在抽象类中
 
 ### 2. final 关键字(必背)
+
 | 修饰 | 作用 |
 |------|------|
 | final 类 | **不能被继承**(String、Math、Integer) |
@@ -121,6 +123,7 @@
 - **抽象类 vs 接口**:抽象类可有构造/任意成员/单继承;接口无构造/只常量抽象方法/多实现
 
 ### 6. 接口 JDK 版本演进(必背)
+
 | 版本 | 新增 | 说明 |
 |------|------|------|
 | JDK8 | **默认方法 default** | 有方法体,实现类不强制重写,重写时去掉 default |
@@ -156,6 +159,7 @@
 
 ### 2. String 字符串(必背)
 **内存模型:**
+
 | 创建方式 | 位置 | 特点 |
 |----------|------|------|
 | 直接赋值 | 字符串常量池 | 序列相同则同一对象 |

+ 3 - 0
复习/JavaSE阶段/阶段03-异常处理与集合框架.md

@@ -36,6 +36,7 @@ Throwable
 3. 无参构造 + 有参构造(String message)
 
 ### 6. throw vs throws(必背)
+
 | 维度 | throw | throws |
 |------|-------|--------|
 | 位置 | 方法体内 | 方法声明后 |
@@ -64,6 +65,7 @@ Throwable
 - 常用方法:`Integer.parseInt(String)`、`valueOf()`、`intValue()`、`MAX_VALUE`
 
 ### 2. 集合 vs 数组(必背)
+
 | 维度 | 数组 | 集合 |
 |------|------|------|
 | 长度 | 不可变 | 可变 |
@@ -83,6 +85,7 @@ Collection(单列)            Map(双列)
 ```
 
 ### 4. 四种线性表结构(必背)
+
 | 结构 | 特点 | 实现 |
 |------|------|------|
 | 栈 | **先进后出 LIFO** | LinkedList |

+ 9 - 0
复习/JavaSE阶段/阶段04-Java8新特性-Lambda与Stream.md

@@ -9,6 +9,7 @@
 ## 一、比较器排序(对应 08-03)
 
 ### 1. 有序集合的两种排序方式(必背)
+
 | 排序方式 | 实现 | 场景 |
 |----------|------|------|
 | **自然排序 Comparable** | 实体类实现 `Comparable`,重写 `compareTo(T o)` | 类设计期确定默认规则 |
@@ -18,6 +19,7 @@
 - 能存入条件:实现 Comparable **或** 构造传入 Comparator
 
 ### 2. 返回值规则(必背,两种排序共用)
+
 | 返回值 | 含义 | 处理结果 |
 |--------|------|----------|
 | 负数 | 当前元素小 | 存左边 |
@@ -31,6 +33,7 @@
 **交换 compare/compareTo 两个参数的位置即可降序**:`Double.compare(o.getSalary(), this.salary)` = 薪资降序。
 
 ### 4. Collections 工具类(必背)
+
 | 方法 | 作用 |
 |------|------|
 | `sort(List)` | 自然升序(元素必须 Comparable) |
@@ -55,6 +58,7 @@
 **只有一个抽象方法的接口**叫函数式接口。Lambda 只能用于函数式接口。
 
 **JDK 内置函数式接口(java.util.function 包):**
+
 | 接口 | 形态 |
 |------|------|
 | `Supplier<T>` | 无参有返回值 |
@@ -93,6 +97,7 @@ TreeSet<Employee> set = new TreeSet<>(Comparator.comparing(Employee::getName));
 | **终结方法** | 最后一个操作 | **只能有一个**,调用后流结束 |
 
 ### 1. 生成 Stream 的四种方式(必背)
+
 | 数据来源 | 生成方式 |
 |----------|----------|
 | Collection 集合 | `集合.stream()` |
@@ -103,6 +108,7 @@ TreeSet<Employee> set = new TreeSet<>(Comparator.comparing(Employee::getName));
 > Map 不是 Collection 体系,需先转 Set/Collection 再 stream()。
 
 ### 2. 中间操作方法(必背)
+
 | 方法 | 作用 |
 |------|------|
 | `filter(Predicate)` | 过滤 |
@@ -115,6 +121,7 @@ TreeSet<Employee> set = new TreeSet<>(Comparator.comparing(Employee::getName));
 > `limit + skip` 组合实现**分页**:`skip((pageNo-1)*pageSize).limit(pageSize)`。
 
 ### 3. 方法引用(四种形式必背)
+
 | 形式 | 写法 | 示例 |
 |------|------|------|
 | 类的静态方法 | `类名::静态方法名` | `String::valueOf` |
@@ -126,12 +133,14 @@ TreeSet<Employee> set = new TreeSet<>(Comparator.comparing(Employee::getName));
 > `类名::方法名` 形式下,抽象方法**第一个参数**就是调用成员方法的对象。
 
 ### 4. 终结操作方法(必背)
+
 | 方法 | 作用 |
 |------|------|
 | `forEach(Consumer)` | 遍历(参数是有参无返回值) |
 | `count()` | 计数(**返回 long**) |
 
 ### 5. 收集操作方法(必背)
+
 | 方法 | 收集目标 |
 |------|----------|
 | `Collectors.toList()` | List(**不可变**) |

+ 3 - 0
复习/JavaSE阶段/阶段05-IO流与文件操作.md

@@ -23,6 +23,7 @@ new File(File parent, String child)
 - 绝对路径:从盘符/根目录开始(快递地址);相对路径:相对某位置(前后左右)
 
 ### 常用方法(必背)
+
 | 分类 | 方法 |
 |------|------|
 | 创建 | `createNewFile()`(抛 IOException)/ `mkdir()` / `mkdirs()`(多级) |
@@ -33,6 +34,7 @@ new File(File parent, String child)
 ## 二、IO 流基础概念(对应 08-06)
 
 ### 分类(两个维度必背)
+
 | 维度 | 类别 |
 |------|------|
 | 按数据流向 | 输入流(读)、输出流(写) |
@@ -124,6 +126,7 @@ Writer(输出字符流抽象类)→ FileWriter
 - 构造可指定字符集(Charset)解决乱码
 
 ### 6. 字符缓冲流(必背)
+
 | 流 | 特有方法 | 说明 |
 |----|----------|------|
 | `BufferedWriter` | `newLine()` | 写**跨平台行分隔符** |

+ 11 - 0
复习/JavaSE阶段/阶段06-多线程与并发编程.md

@@ -9,6 +9,7 @@
 ## 一、多线程入门(对应 08-08)
 
 ### 1. 基本概念(必背)
+
 | 概念 | 说明 |
 |------|------|
 | **程序** | 硬盘中的文件,静态代码 |
@@ -19,6 +20,7 @@
 - 进程三大特性:独立性、动态性、并发性
 
 ### 2. 并行 vs 并发(必背)
+
 | 概念 | 含义 | 类比 |
 |------|------|------|
 | **并行** | 同一时刻多指令在**多个 CPU** 上同时执行 | 3 灶台 3 厨师 |
@@ -46,6 +48,7 @@ t.start();
 - `FutureTask` 是"中间人";`get()` 阻塞等待计算结果
 
 **三种方式对比:**
+
 | 维度 | 继承 Thread | 实现 Runnable | 实现 Callable |
 |------|------------|--------------|---------------|
 | 返回结果 | 无 | 无 | **有** |
@@ -74,6 +77,7 @@ t.start();
 - 经典场景:GC 线程、心跳检测、后台日志
 
 ### 4. 线程 6 种状态(必背)
+
 | 状态 | 枚举 | 触发 |
 |------|------|------|
 | 新建 | NEW | new Thread() 未 start() |
@@ -87,6 +91,7 @@ t.start();
 - OS 5 状态(就绪/运行分开)vs Java 6 状态(就绪+运行合并为 RUNNABLE)
 
 ### 5. 线程操作方法(必背)
+
 | 方法 | 作用 |
 |------|------|
 | `join()` / `join(ms)` | 当前线程等待目标线程结束 / 限时等待 |
@@ -112,6 +117,7 @@ t.start();
 3. **读-改-写复合操作**(count++、tickets--)
 
 ### 4. 线程安全三大特性(必须背)
+
 | 特性 | 含义 | 解决方案 |
 |------|------|----------|
 | **原子性** | 操作不可分割 | synchronized、Lock、Atomic 类 |
@@ -127,6 +133,7 @@ t.start();
 - **锁粒度尽量小**(只锁共享数据代码,不锁整个方法)
 
 **三种写法:**
+
 | 写法 | 锁的是什么 |
 |------|-----------|
 | 同步实例方法 `synchronized void m()` | 当前对象 **this** |
@@ -148,6 +155,7 @@ t.start();
 - volatile 解决"程序永不退出"
 
 ### 3. volatile vs synchronized
+
 | 对比 | volatile | synchronized |
 |------|----------|--------------|
 | 本质 | 轻量、不加锁 | 锁机制(Monitor Lock) |
@@ -178,6 +186,7 @@ finally { lock.unlock(); }
 `lock()` / `unlock()` / `tryLock()`(拿不到立即返回 false)/ `tryLock(timeout, unit)`(限时)/ `lockInterruptibly()`(可中断)
 
 ### 4. synchronized vs Lock 七维对比(面试常考)
+
 | 维度 | synchronized | ReentrantLock |
 |------|--------------|---------------|
 | 语法 | 简单(关键字) | 复杂(try-finally) |
@@ -199,6 +208,7 @@ finally { lock.unlock(); }
 4. **循环等待**:你等我、我等你形成环
 
 ### 避免死锁 3 方法
+
 | 方法 | 打破的条件 |
 |------|-----------|
 | **固定锁顺序**(所有线程按相同顺序加锁) | 打破"循环等待" |
@@ -217,6 +227,7 @@ finally { lock.unlock(); }
 **解决方案:【线程复用 + 任务排队 + 动态扩容 + 上限保护】**
 
 ### 2. ThreadPoolExecutor 7 个参数(必背)
+
 | 参数 | 说明 |
 |------|------|
 | corePoolSize | 核心线程数(常驻) |