2026-03-21 星期天
今日收获
回顾昨日情况
👌
Daily English Dictation 13 14
- [Daily English Dictation 13](......\English Learning\Daily English Dictation\011-020\Dictation-013.md)
- [Daily English Dictation 14](......\English Learning\Daily English Dictation\011-020\Dictation-014.md)
提交作业
- 离散数学第一章: 做了一道比较难理解的证明题。关于 析取范式、合取范式、真值表 概念的证明题
- 概率统计第 1 次作业:之前就做好了
- 中教制作简历
算法题
- 1143. 最长公共子序列 - 力扣(LeetCode)
框架了解
- Swagger: API 文档自动生成 + 接口调试工具。现在的名字: SpringDoc
- 主流的 API 接口管理方式:1. SpringDoc 2. Postman 3. Apifox
编码格式使用科普
数据库编码注意事项:
utf8mb3:早期 MySQL 的 utf8 别名,阉割版 utf8 。每个字符最多占用 3 个字节。存储包括常用汉字、英文、数字等。
utf8mb4:(标准 utf8)每个字符最多占用 4 个字节。!包括 BMP 字符和补充字符(如 emoji、生僻字、甲骨文等)。
优先选择
utf8mb4:现代应用(如社交、聊天、内容平台)常需存储 emoji 或特殊字符,utf8mb4兼容性更好核心原则:统一用
utf8mb4+ 显式配置(指定字符集) + 全链路一致。在 JDBC 中配置数据库驱动时,指定的编码格式
characterEncoding=utf8是传输编码,只是声明用 utf8 进行解码,与数据库原始编码格式无关,并且这里的 utf8 是标准编码,4 个字节。建议一一对应,utf8mb4 就是 utf8mb4。utf8mb3 跟 utf8mb4 是 MySQL 独有的 (?)
企业级开发的唯一通用选择是标准 UTF-8,禁止多编码混用。补充:有些为了数据安全,会对编码进行额外处理
关联查询索引失效:两张表的关联字段排序规则不一致(一个
utf8mb4_general_ci,一个utf8mb4_unicode_ci),会导致索引失效、查询性能暴跌,必须全库排序规则统一。数据迁移乱码:备份时未指定字符集,使用了默认的 latin1,导入后全量乱码且无法恢复,必须备份 / 导入双端显式指定
utf8mb4。
常见编码的边界与适用场景:
| 编码格式 | 字节长度 | 核心能力 | 企业级适用场景 | 禁用场景 |
|---|---|---|---|---|
| ASCII | 1 字节 | 仅支持英文、数字、基础符号 | 底层协议兼容 | 任何中文 / 多语言场景 |
| ISO-8859-1(Latin-1) | 1 字节 | 兼容 ASCII,覆盖西欧字符 | HTTP 头、URL 协议底层、老系统兼容 | 中文 / 多语言存储与传输 |
| GB2312/GBK/GB18030 | 2-4 字节 | 中文专属编码,GB18030 为国标强制标准 | 仅对接强制要求 GBK 的老国企 / 政务系统 | 所有新系统、新业务 |
| UTF-8(标准) | 1-4 字节变长 | 兼容 ASCII,覆盖完整 Unicode 字符集 | 全链路强制默认编码 | 无 |
- Windows 默认 GBK
- Linux 默认 UTF-8
- Tomcat 老版本默认 ISO-8859-1
经典乱码特征定位:
- 中文变成
???:中文被 ISO-8859-1 编码,信息永久丢失,无法恢复。CPP - 中文变成
å¼ ä¸类乱码:UTF-8 编码的字节被 GBK 解码,编码不匹配,可通过正确编码恢复。 - 中文变成
????????:MySQL 的 utf8mb3 存储了 4 字节字符,被截断丢弃。 - 一个中文变成两个问号:GBK 编码的中文被 ISO-8859-1 解码,信息丢失。
换行符科普
换行符本质:
换行符是控制文本换行的不可见控制字符,核心有两个基础字符:
CR(Carriage Return):ASCII 码
0x0D,转义表示\r,本义是 “回车”(让光标回到行首)。return \rLF(Line Feed):ASCII 码
0x0A,转义表示\n,本义是 “换行”(让光标下移一行)。next line \n
不同操作系统的默认换行符(90% 跨系统问题的根源)
| 操作系统 / 环境 | 默认换行符 | 转义表示 | 说明 |
|---|---|---|---|
| Windows | CRLF | \r\n | 继承自 DOS 系统,需同时用 CR+LF 实现 “回车 + 换行”。 |
| Linux/macOS(OS X 10.0+) | LF | \n | Unix 系系统统一使用 LF,简洁高效。 |
| 老版 macOS(OS 9 及以前) | CR | \r | 已淘汰,仅极老系统可能遇到。 |
| HTTP 协议、邮件协议(SMTP/POP3) | CRLF | \r\n | 协议强制规范,必须使用 CRLF,否则会导致协议解析失败。 |
常见场景:
- Git 默认会根据操作系统自动转换换行符
- 代码中硬编码换行符:跨平台运行异常
// 硬编码\r\n,仅Windows正常,Linux/macOS会显示多余的\r
String content = "第一行\r\n第二行";- 所有代码、配置、文档、日志文件统一使用 LF(\n) 作为换行符,禁止使用 CRLF 或 CR。
项目进度
- commit × 3
异常处理规范
- 一句话总结:Service 层主动 throw 业务异常,全局处理器被动 catch 所有异常,Controller 层什么都不管
- Controller 层通过参数校验异常(Validation 等注解)自动抛出异常
- Service 层做条件判断,主动抛出不同类型的异常(违反业务规则、数据状态异常、权限不足)
- 其余统一自动拦截,基本属于全局异常
- 企业常用:断言工具类,简化手动抛出
经验分享
在 ide 中快速编辑多行:长按 alt ,鼠标点击其他行,标记要同时编辑的位置;vscode 中鼠标中键选择,编辑多行
牛客 prompt 提示词练习:https://www.nowcoder.com/exam/oj/ta?tpId=408&channelPut=pc_jgw
大模型测评网站(!!!国内外大模型任君挑选!!!):https://arena.ai/
明日期望
- 复习课程知识点
- 大创项目
- 背 3 条面试题