学生信息管理系统MySQL版V1.0源码解析:从数据模型到生产级避坑指南
简介这份资源是面向Java初学者与课程设计学习者的学生信息管理系统MySQL版V1.0完整源码基于Java GUI与MySQL数据库开发适合用来练习桌面端增删改查、数据库连接与界面布局等核心技能。压缩包共246个文件以176个class编译文件与49个java源码为主另含8个png界面素材、7个xml配置、1个jar依赖、1个sql建库脚本及properties配置文件整体约1.74MB结构完整便于直接导入运行与二次修改。系统功能覆盖学校信息与状态栏设置、用户登录注册与密码修改以及学生记录的学号、姓名、性别、年龄、系部、班级、联系电话等字段的增改查询支持按学号、姓名、班级、系部检索删除可按学号、班级、系部批量操作统计则能按性别、班级、系部汇总人数。目前已有1327人学习下载配合帮助文档与SQL脚本读者可快速理解DAO分层与Swing窗体协作方式并在此基础上完成课程设计或功能扩展。1. 学生信息管理系统(MySQL版)V1.0源码.rar一个压缩包背后藏着多少能跑起来的细节拿到一个名为「学生信息管理系统(MySQL版)V1.0源码.rar」的压缩包很多人的第一反应是解压、找 SQL 文件、导入数据库、改连接串然后跑起来看界面。但真正在一线做过交付的人会先问三个问题这套系统的数据模型能不能撑住真实教务场景它的权限边界是不是只做了「登录」这一层V1.0 这个版本号意味着它缺了哪些生产环境必备的东西这个标题指向的不是一个玩具 Demo而是一类典型的「中小规模 CRUD 教务系统」的起点——它适合课程设计、内部工具原型、二次开发底座也适合拿来练手数据库设计与前后端联调。但它离「能直接上线」还有一段距离这段距离恰恰是本文要拆开讲的东西。MySQL 版意味着数据持久化走的是关系型数据库而不是内存或文件这决定了你必须关心字符集、索引、事务和连接池而不是只关心页面能不能打开。2. 先看清数据模型学生信息管理系统的表结构决定了后面所有代码2.1 从「学生」这个核心实体往外扩别一上来就建十张表学生信息管理系统的数据模型有一个很典型的陷阱新手容易把「学生」「班级」「院系」「专业」「课程」「成绩」「用户」全部平铺成独立表然后用一堆外键串起来结果查询一个学生列表要 JOIN 五六张表。实际落地时我一般会先确认三件事学生和班级是不是多对一、课程和成绩是不是一对多、登录账号和学生记录是不是一对一。这三个关系定下来表结构基本就稳了。常见做法是保留五张核心表student、class、course、score、sys_user。student表里冗余一个class_id和class_name牺牲一点范式换查询性能score表里同时存student_id、course_id和score_value并加唯一索引防止同一学生同一课程重复录入。sys_user单独放账号密码和角色不和student混在一起这样后续加教师、教务管理员角色时不用改学生表。下面是一个可以直接抄的最小建表脚本字符集统一用utf8mb4排序规则用utf8mb4_0900_ai_ciMySQL 8.0 默认如果是 5.7 就换成utf8mb4_general_ci。-- 学生信息管理系统核心表结构MySQL 8.0 CREATE DATABASE IF NOT EXISTS student_mgr DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_0900_ai_ci; USE student_mgr; -- 班级表先建因为学生表要引用 CREATE TABLE class ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, class_name VARCHAR(64) NOT NULL, grade_year SMALLINT NOT NULL COMMENT 入学年份如2023, PRIMARY KEY (id), UNIQUE KEY uk_class_name (class_name) ) ENGINEInnoDB; -- 学生表核心实体class_id 允许为空方便先导入再分班 CREATE TABLE student ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, student_no VARCHAR(20) NOT NULL COMMENT 学号业务主键, name VARCHAR(32) NOT NULL, gender TINYINT NOT NULL DEFAULT 0 COMMENT 0未知 1男 2女, birth_date DATE DEFAULT NULL, phone VARCHAR(20) DEFAULT NULL, class_id INT UNSIGNED DEFAULT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_student_no (student_no), KEY idx_class_id (class_id), CONSTRAINT fk_student_class FOREIGN KEY (class_id) REFERENCES class(id) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINEInnoDB; -- 课程表 CREATE TABLE course ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, course_code VARCHAR(20) NOT NULL, course_name VARCHAR(64) NOT NULL, credit DECIMAL(3,1) NOT NULL DEFAULT 0.0, PRIMARY KEY (id), UNIQUE KEY uk_course_code (course_code) ) ENGINEInnoDB; -- 成绩表学生和课程的多对多关系带分数 CREATE TABLE score ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, student_id INT UNSIGNED NOT NULL, course_id INT UNSIGNED NOT NULL, score_value DECIMAL(5,2) DEFAULT NULL COMMENT 允许空表示缺考, exam_time DATETIME DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY uk_student_course (student_id, course_id), KEY idx_course_id (course_id), CONSTRAINT fk_score_student FOREIGN KEY (student_id) REFERENCES student(id) ON DELETE CASCADE, CONSTRAINT fk_score_course FOREIGN KEY (course_id) REFERENCES course(id) ON DELETE CASCADE ) ENGINEInnoDB; -- 系统用户表登录和角色分离 CREATE TABLE sys_user ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(32) NOT NULL, password_hash VARCHAR(100) NOT NULL COMMENT 存哈希不存明文, role VARCHAR(16) NOT NULL DEFAULT student COMMENT student/teacher/admin, student_id INT UNSIGNED DEFAULT NULL COMMENT 学生角色时关联学生, PRIMARY KEY (id), UNIQUE KEY uk_username (username), KEY idx_student_id (student_id) ) ENGINEInnoDB;这段脚本的逻辑说明class和course是基础字典表先建student通过class_id外键关联班级ON DELETE SET NULL保证删班级不会连带删学生score用(student_id, course_id)唯一索引挡住重复录入这是血泪经验——没有这个索引批量导入成绩时会出现同一学生同一课程两条记录后面统计平均分直接翻车。参数上DECIMAL(5,2)能存 0.00 到 999.99足够覆盖百分制和绩点password_hash长度给 100 是为了兼容 bcrypt 的 60 字符和未来换算法。2.2 索引不是越多越好这三个位置必须加学生信息管理系统最常见的性能问题不是数据量大而是查询模式固定但索引没跟上。根据我见过的多个类似系统下面三个索引位置必须加其他按需。位置索引类型原因student.student_no唯一索引学号是业务主键登录、查询、导入都靠它score(student_id, course_id)联合唯一索引挡住重复成绩同时加速按学生查成绩student.class_id普通索引按班级筛选学生是高频操作不要给student.name加索引除非你确定要做姓名模糊搜索且数据量超过十万。LIKE %张%这种前置通配符用不上 B 树索引加了也是白占空间。如果确实要做姓名搜索常见做法是上全文索引或者交给外部搜索引擎V1.0 阶段先不做。2.3 初始化数据别用明文密码也别用弱哈希很多源码包里的sys_user初始化数据直接写admin/123456明文这是最容易被忽略的坑。正确做法是导入时只插哈希值。下面这段 Python 用bcrypt生成哈希然后拼成 SQL 插入。# 生成 sys_user 初始化数据的哈希密码 import bcrypt def make_hash(plain: str) - str: # gensalt 默认 rounds12V1.0 阶段够用再高会拖慢登录 return bcrypt.hashpw(plain.encode(utf-8), bcrypt.gensalt()).decode(utf-8) if __name__ __main__: for user, pwd, role in [ (admin, Admin2024, admin), (teacher01, Teach2024, teacher), ]: print(fINSERT INTO sys_user(username, password_hash, role) fVALUES({user}, {make_hash(pwd)}, {role});)逻辑说明bcrypt.gensalt()每次生成不同盐值所以同一密码两次哈希结果不同这是正常的。参数上rounds12是 2024 年比较平衡的选择登录耗时大约 200 到 300 毫秒再高到 14 会让登录明显变慢。注意不要把哈希结果硬编码进源码应该放在初始化 SQL 文件里部署时执行一次。3. 把源码跑起来连接配置、启动顺序和第一个能用的接口3.1 数据库连接串的四个参数错一个就连不上拿到源码后第一件事是找配置文件。常见位置是application.properties、config.py、db.php或jdbc.properties取决于技术栈。不管哪种核心参数就四个host、port、database、username/password。下面以 Java Spring Boot 的application.yml为例其他栈对照改。# application.yml 数据库连接配置 spring: datasource: url: jdbc:mysql://127.0.0.1:3306/student_mgr?useUnicodetruecharacterEncodingutf8mb4serverTimezoneAsia/ShanghaiuseSSLfalseallowPublicKeyRetrievaltrue username: app_user password: AppUser2024 driver-class-name: com.mysql.cj.jdbc.Driver hikari: maximum-pool-size: 10 minimum-idle: 2 connection-timeout: 30000逻辑说明characterEncodingutf8mb4必须写否则中文姓名和生僻字会变问号serverTimezoneAsia/Shanghai不写会在 MySQL 8.0 上报时区错误useSSLfalse在本地开发可以生产环境要开allowPublicKeyRetrievaltrue是 MySQL 8.0 默认加密插件导致的不加会报Public Key Retrieval is not allowed。连接池maximum-pool-size给 10 是 V1.0 阶段的保守值学生信息管理系统并发不高给太大反而浪费数据库连接。3.2 启动顺序先库后服务别反过来正确的启动顺序是启动 MySQL 服务 → 执行建表脚本 → 执行初始化数据 → 改连接配置 → 启动应用 → 访问登录页。很多人反过来先启动应用再建库结果应用启动时报Unknown database然后去改代码绕一大圈。如果用的是 Docker下面这段docker-compose.yml可以一键起 MySQL省去本地安装的麻烦。# docker-compose.yml 只起 MySQL应用本地跑 version: 3.8 services: mysql: image: mysql:8.0 container_name: student-mgr-mysql environment: MYSQL_ROOT_PASSWORD: Root2024 MYSQL_DATABASE: student_mgr MYSQL_USER: app_user MYSQL_PASSWORD: AppUser2024 ports: - 3306:3306 volumes: - ./sql:/docker-entrypoint-initdb.d - mysql_data:/var/lib/mysql command: --character-set-serverutf8mb4 --collation-serverutf8mb4_0900_ai_ci volumes: mysql_data:逻辑说明./sql目录挂到/docker-entrypoint-initdb.d容器首次启动会自动执行里面的.sql文件建表和初始化一步到位。command里指定字符集避免容器默认 latin1 导致中文乱码。注意mysql_data卷要保留删了容器数据就没了这是后悔药。3.3 第一个能用的接口按学号查学生应用起来后先别急着测登录直接测一个最简单的查询接口确认数据库连通和 ORM 映射没问题。下面以 Spring Boot 的 Controller 为例。// StudentController.java 按学号查询学生 RestController RequestMapping(/api/student) public class StudentController { Autowired private StudentMapper studentMapper; GetMapping(/by-no/{studentNo}) public ResponseEntityStudent getByNo(PathVariable String studentNo) { // 参数校验学号长度固定避免全表扫描 if (studentNo null || studentNo.length() 20) { return ResponseEntity.badRequest().build(); } Student s studentMapper.selectByStudentNo(studentNo); if (s null) { return ResponseEntity.notFound().build(); } return ResponseEntity.ok(s); } }逻辑说明PathVariable拿路径参数先做长度校验再查库避免恶意长字符串拖慢查询。selectByStudentNo走的是uk_student_no唯一索引命中后回表一次性能没问题。返回 404 而不是空对象前端好判断。参数上学号长度限制 20 和建表时的VARCHAR(20)对齐改一处要改两处这是常见疏漏。4. 避坑与排查学生信息管理系统 MySQL 版最容易翻车的五个地方4.1 中文乱码现象是姓名显示问号原因是字符集没对齐现象导入学生数据后姓名列显示???或者乱码。原因通常有三层数据库字符集不是utf8mb4、连接串没写characterEncoding、表字段用了utf8三字节存不下 emoji 和部分生僻字。解决建库时指定utf8mb4连接串加characterEncodingutf8mb4已有表用ALTER TABLE student CONVERT TO CHARACTER SET utf8mb4;转换。注意转换前备份大表转换会锁表。4.2 外键约束导致删不掉数据现象是删班级报错原因是学生还在引用现象删除一个班级时MySQL 报Cannot delete or update a parent row。原因student.class_id外键默认是RESTRICT有学生引用就删不了。解决建表时把外键行为改成ON DELETE SET NULL或者先手动把该班级学生的class_id置空再删。我一般选前者因为教务场景里班级撤销后学生记录要保留只是暂时不分班。4.3 成绩重复录入现象是同一学生同一课程两条记录原因是没加唯一索引现象批量导入成绩后统计平均分偏高或偏低。原因score表没有(student_id, course_id)唯一索引导入脚本重复执行就插两条。解决加联合唯一索引导入脚本用INSERT ... ON DUPLICATE KEY UPDATE score_value VALUES(score_value)做幂等。注意加索引前先清理已有重复数据否则索引建不上。4.4 登录慢现象是点登录转圈好几秒原因是密码哈希轮数太高或没走索引现象登录接口响应超过 2 秒。原因bcrypt轮数设到 14 以上或者sys_user.username没加唯一索引导致全表扫描。解决轮数降到 12username加唯一索引。如果用户量上万登录慢还可能是连接池太小maximum-pool-size调到 20 试试但别超过数据库max_connections的 80%。4.5 时区差八小时现象是创建时间比实际早八小时原因是连接串没指定时区现象created_at存进去的时间比北京时间少八小时。原因MySQL 服务端时区是 UTC应用端没指定serverTimezone。解决连接串加serverTimezoneAsia/Shanghai或者把 MySQL 全局时区改成08:00。注意DATETIME和TIMESTAMP行为不同TIMESTAMP会随时区转换DATETIME不会建表时想清楚用哪个。5. 从 V1.0 往上走分页查询、软删除和导出这三个技巧最值得先加V1.0 源码通常只做了基础增删改查但真实使用中下面三个功能加得越早越省事。第一个是分页查询。学生列表不分页数据过千页面就卡。MySQL 分页用LIMIT offset, size但offset很大时性能差常见优化是记住上一页最后一条的id用WHERE id last_id LIMIT size。下面这个 Mapper 方法同时支持两种模式。!-- StudentMapper.xml 分页查询支持游标模式 -- select idselectPage resultTypeStudent SELECT id, student_no, name, gender, class_id, created_at FROM student where if testclassId ! null AND class_id #{classId} /if if testlastId ! null AND id gt; #{lastId} /if /where ORDER BY id ASC LIMIT #{size} /select逻辑说明lastId为空时走传统分页不为空时走游标分页。ORDER BY id ASC必须和游标方向一致否则会漏数据。参数size建议不超过 100前端一次展示太多反而没人翻。第二个是软删除。学生信息不能真删加一个is_deleted TINYINT DEFAULT 0字段查询时带AND is_deleted 0。这样误删了还能恢复也满足教务数据留存要求。注意所有查询都要记得加这个条件漏一处就会把已删学生查出来这是最容易犯的错。第三个是导出 Excel。教务场景经常要导出班级成绩单用Apache POI或EasyExcel都行。关键点是流式写出别把几万行数据全塞内存。下面这段用EasyExcel写每 1000 行刷一次。// 导出学生成绩流式写避免 OOM public void exportScore(HttpServletResponse response) throws IOException { response.setContentType(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet); response.setHeader(Content-Disposition, attachment;filenamescores.xlsx); try (ExcelWriter writer EasyExcel.write(response.getOutputStream(), ScoreRow.class).build()) { WriteSheet sheet EasyExcel.writerSheet(成绩).build(); int page 0, size 1000; while (true) { ListScoreRow rows scoreMapper.selectPage(page * size, size); if (rows.isEmpty()) break; writer.write(rows, sheet); page; } } }逻辑说明try-with-resources保证 writer 关闭while循环分页查、分页写内存里始终只有 1000 行。参数size给 1000 是经验值太小数据库查询次数多太大内存涨得快。注意导出接口要加权限校验别让学生角色也能导出全班成绩。最后一个习惯每次改完表结构把sql目录下的建表脚本同步更新别只改数据库不更新脚本。下次换环境部署时脚本就是唯一的后悔药。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

楼教主成长路径解析:从信息学竞赛到三国杀设计的算法思维迁移

楼教主成长路径解析:从信息学竞赛到三国杀设计的算法思维迁移

1. 从一张泛黄的奖状说起:这个被竞赛圈封神的人到底是谁第一次听到“楼教主”这个称呼,是在一个算法交流群里。有个刚上大一的小伙子问:“有没有人知道楼教主现在在做什么?”底下瞬间冒出十几条回复,有说“神一样的存在…

2026/10/9 23:57:36 阅读更多 →
基于Spark的电商推荐系统:从ALS协同过滤到离线推荐实战

基于Spark的电商推荐系统:从ALS协同过滤到离线推荐实战

简介:一套用于电商推荐系统方向毕业设计或课程设计的完整项目,基于Apache Spark的分布式计算与MLlib机器学习库,重点覆盖协同过滤、ALS交替最小二乘、相似度计算、离线统计和结果评估等环节,适合大数据相关专业学生及推荐系统入门…

2026/10/9 23:56:36 阅读更多 →
PHP性能优化大全(php.ini)

PHP性能优化大全(php.ini)

前言 必须先给"php.ini 性能优化"划一条边界:它优化的是 PHP 自身的固定开销,也就是每个请求都要重复付的那部分成本——比如把源码重新解析编译一遍、把相对路径重新解析成绝对路径、为每个请求重新建一次数据库连接。它完全管不了算法复杂度…

2026/10/9 23:56:36 阅读更多 →

最新新闻

Oracle 19c Solaris x86-32 客户端安装包解析与实战避坑指南

Oracle 19c Solaris x86-32 客户端安装包解析与实战避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 4:59:23 阅读更多 →
PCA9422与STM32G071RB低功耗电源管理方案设计

PCA9422与STM32G071RB低功耗电源管理方案设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 4:59:23 阅读更多 →
金融风控智能欺诈检测:数据、规则与模型的三重博弈

金融风控智能欺诈检测:数据、规则与模型的三重博弈

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 4:59:23 阅读更多 →
广义S变换与逆变换实现:时频分析参数选型及信号重构

广义S变换与逆变换实现:时频分析参数选型及信号重构

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 4:59:23 阅读更多 →
PCA9422与PIC18F86K22协同实现高可靠性电源管理

PCA9422与PIC18F86K22协同实现高可靠性电源管理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 4:59:23 阅读更多 →
Linux上Redis源码编译安装与systemd托管避坑指南

Linux上Redis源码编译安装与systemd托管避坑指南

在Linux上安装Redis,最迷惑人的地方往往不是步骤本身,而是你五分钟跑起来之后,后面几天陆陆续续暴露出来的问题。yum install redis或者apt install redis-server确实快,但当你需要固定版本、自定义存储目录、把日志和数据分开放的…

2026/10/10 4:58:23 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →