Spring Boot + MyBatis 学生信息管理系统实战:从数据库设计到登录鉴权与分页查询
简介本资源是一套基于Java与MySQL开发的学生信息管理系统课程设计项目面向计算机相关专业学生、Java Web初学者及需要完成课程设计或毕业设计的开发者。项目在IntelliJ IDEA 2020.3.3环境下开发采用JavaBean、Servlet与DAO分层架构通过Servlet处理请求并配置过滤器实现权限控制数据持久化使用MySQL数据库。系统按角色划分功能学生端支持成绩查询、课程平均成绩查询、班级开课查询与教学计划查询教师端涵盖成绩录入、成绩查询及任课情况查询管理员端则包含学生、教师、课程、成绩、学院、专业与班级等多项信息管理模块。压缩包共551个文件约17.88MB包含32个java源文件、36个jsp页面、52个html页面、44个css样式、112个js脚本、28个xml配置及64个class编译文件另附png、jpg图片与jar依赖结构完整便于二次开发。目前已有568人学习下载适合作为Java Web综合实践与课程设计参考。1. 从一份课程设计说起学生信息管理系统到底该怎么做才不像玩具每年毕业季总有学弟学妹拿着「基于 JavaMySQL 实现学生信息管理系统」这个题目来找我。说实话这个题目本身不新鲜网上能搜到的源码一抓一大把但真正能拿得出手、经得起老师追问「你这个并发怎么处理」「密码怎么存的」「分页是内存分页还是数据库分页」的少之又少。大部分所谓的 Web 学生信息管理系统本质就是一个 Servlet 堆出来的表单增删改查连事务边界都没搞清楚。我写这篇东西不是要再给你一份「能跑就行」的代码而是想把我自己从零搭一套学生信息管理系统时踩过的坑、做过的选型、以及那些面试官和答辩老师最爱问的点按落地顺序讲清楚。这套系统麻雀虽小但五脏俱全用户登录鉴权、学生档案 CRUD、课程与成绩关联、分页查询、Excel 导入导出每一个模块背后都有值得抠的细节。如果你正在做课程设计、毕业设计或者想拿一个完整的 Web 项目练手 Spring Boot MyBatis这篇笔记应该能帮你少走至少两周弯路。2. 技术选型与数据库设计为什么我最终选了 Spring Boot MyBatis 而不是 JSP JDBC2.1 从「能跑」到「能维护」的选型逻辑很多人做学生信息管理系统第一反应是打开 Eclipse 新建一个 Dynamic Web Project然后开始写 Servlet。这么做不是不行但你会很快发现几个致命问题每写一个功能就要配一次 web.xml数据库连接到处 new事务控制基本靠手动 commit。一旦功能超过五个代码就会变成一团乱麻。我一般会直接上 Spring Boot MyBatis MySQL 这套组合。理由很直接Spring Boot 把 Tomcat 内嵌了你不需要单独装 Web 服务器main方法一跑就是一个 Web 应用MyBatis 比 JPA 更贴近 SQL学生信息管理系统这种查询条件多、关联关系明确的场景手写 SQL 反而更可控。前端不用搞太复杂Thymeleaf 或者直接静态 HTML Fetch 调接口都行重点是后端逻辑要清晰。这里有个选型细节值得说为什么不用 MyBatis-PlusMyBatis-Plus 确实能省掉大量单表 CRUD 代码但学生信息管理系统里成绩查询往往涉及多表关联和动态条件MyBatis-Plus 的 Wrapper 写复杂查询反而别扭。我的习惯是单表用 MyBatis-Plus 的BaseMapper复杂查询手写 XML两者混用不冲突。2.2 数据库表结构五个核心表与三个容易忽略的字段学生信息管理系统的数据库设计说简单也简单但有几个字段如果一开始没加后面改起来会很痛苦。下面是我实际用的表结构直接给建表 SQL。-- 学生表 CREATE TABLE student ( id BIGINT NOT NULL AUTO_INCREMENT COMMENT 主键, student_no VARCHAR(20) NOT NULL COMMENT 学号唯一, name VARCHAR(50) NOT NULL COMMENT 姓名, gender TINYINT DEFAULT 0 COMMENT 性别 0未知 1男 2女, class_id BIGINT DEFAULT NULL COMMENT 班级ID, phone VARCHAR(20) DEFAULT NULL COMMENT 联系电话, enroll_date DATE DEFAULT NULL COMMENT 入学日期, status TINYINT DEFAULT 1 COMMENT 状态 1在读 2休学 3毕业, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_student_no (student_no), KEY idx_class_id (class_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT学生信息表; -- 班级表 CREATE TABLE class ( id BIGINT NOT NULL AUTO_INCREMENT, class_name VARCHAR(50) NOT NULL COMMENT 班级名称, major VARCHAR(50) DEFAULT NULL COMMENT 专业, grade VARCHAR(10) DEFAULT NULL COMMENT 年级, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT班级表; -- 课程表 CREATE TABLE course ( id BIGINT NOT NULL AUTO_INCREMENT, course_name VARCHAR(50) NOT NULL, credit DECIMAL(3,1) DEFAULT NULL COMMENT 学分, teacher VARCHAR(50) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT课程表; -- 成绩表 CREATE TABLE score ( id BIGINT NOT NULL AUTO_INCREMENT, student_id BIGINT NOT NULL, course_id BIGINT NOT NULL, score DECIMAL(5,2) DEFAULT NULL, exam_time DATE DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY uk_student_course (student_id,course_id), KEY idx_course_id (course_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT成绩表; -- 用户表登录用 CREATE TABLE sys_user ( id BIGINT NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(100) NOT NULL COMMENT BCrypt加密后的密码, role VARCHAR(20) DEFAULT STUDENT COMMENT ADMIN/TEACHER/STUDENT, student_id BIGINT DEFAULT NULL COMMENT 关联学生ID学生角色用, PRIMARY KEY (id), UNIQUE KEY uk_username (username) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT系统用户表;这段 SQL 里有三个字段是我血泪经验换来的第一student_no必须加唯一索引否则导入 Excel 时重复学号会直接污染数据第二score表的(student_id, course_id)联合唯一索引防止同一个学生同一门课出现两条成绩记录第三sys_user的password字段长度给到 100因为 BCrypt 加密后的字符串长度是 60留足余量。注意MySQL 5.7 和 8.0 在默认字符集和排序规则上有差异建库时统一用utf8mb4和utf8mb4_general_ci避免中文乱码和 emoji 存储问题。2.3 Spring Boot 项目骨架与依赖配置项目骨架我一般用 Maven 多模块或者单模块分层课程设计级别单模块足够。pom.xml核心依赖如下dependencies !-- Web 场景启动器内嵌 Tomcat -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- MyBatis 整合 -- dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version2.3.1/version /dependency !-- MySQL 驱动 -- dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependency !-- 密码加密别再用 MD5 了 -- dependency groupIdorg.springframework.security/groupId artifactIdspring-security-crypto/artifactId /dependency !-- Excel 导入导出 -- dependency groupIdcom.alibaba/groupId artifactIdeasyexcel/artifactId version3.3.2/version /dependency /dependenciesapplication.yml里几个关键配置spring: datasource: url: jdbc:mysql://localhost:3306/student_mgr?useUnicodetruecharacterEncodingutf8mb4serverTimezoneAsia/Shanghai username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver servlet: multipart: max-file-size: 10MB # Excel 导入文件大小限制 mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.entity configuration: map-underscore-to-camel-case: true # 下划线转驼峰省掉大量 resultMapmap-underscore-to-camel-case这个配置一定要开否则student_no映射不到studentNo你会写一堆无意义的resultMap。数据库连接 URL 里的serverTimezone也别漏MySQL 8.0 不配这个会报时区错误。3. 核心功能落地登录鉴权、分页查询与成绩关联的完整实现3.1 登录鉴权从 Session 到 JWT 的取舍与代码实现学生信息管理系统的登录常见做法有两种Session Cookie或者 JWT。课程设计里用 Session 完全够但如果你想让前端和后端彻底分离或者以后想接小程序JWT 更合适。我一般用 JWT因为无状态部署多实例不用考虑 Session 共享。登录接口的核心逻辑接收用户名密码 → 查sys_user→ BCrypt 校验 → 生成 JWT 返回。代码示例如下PostMapping(/login) public Result login(RequestBody LoginDTO dto) { // 1. 根据用户名查用户 SysUser user userMapper.selectByUsername(dto.getUsername()); if (user null) { return Result.fail(用户名或密码错误); // 不提示用户不存在防止枚举 } // 2. BCrypt 校验密码 if (!BCrypt.checkpw(dto.getPassword(), user.getPassword())) { return Result.fail(用户名或密码错误); } // 3. 生成 JWTpayload 里放 userId 和 role String token JwtUtil.generate(user.getId(), user.getRole()); // 4. 返回 token 和角色前端根据角色控制菜单 MapString, Object data new HashMap(); data.put(token, token); data.put(role, user.getRole()); return Result.success(data); }这里有几个参数和逻辑说明BCrypt.checkpw的第一个参数是明文密码第二个是数据库里存的哈希值顺序别搞反。JWT 的过期时间我一般设 2 小时课程设计可以设 24 小时方便调试。Result是统一返回体包含code、msg、data三个字段前端根据code判断成功失败。拦截器里校验 JWT把用户信息塞进ThreadLocal后续业务代码直接取当前用户不用每个接口都传 userId。这个ThreadLocal记得在afterCompletion里remove()否则线程池复用时会串数据这是很多人翻车的地方。3.2 分页查询数据库分页与内存分页的边界学生列表查询必须分页不然数据一多页面直接卡死。分页有两种做法内存分页查全部再subList和数据库分页LIMIT offset, size。数据量小于一千条时两者差别不大但超过一万条内存分页就是灾难。我一般直接用 MyBatis 的LIMIT配合COUNT查总数。select idselectPage resultTypeStudentVO SELECT s.*, c.class_name FROM student s LEFT JOIN class c ON s.class_id c.id where if testkeyword ! null and keyword ! AND (s.name LIKE CONCAT(%, #{keyword}, %) OR s.student_no LIKE CONCAT(%, #{keyword}, %)) /if if testclassId ! null AND s.class_id #{classId} /if /where ORDER BY s.create_time DESC LIMIT #{offset}, #{size} /selectoffset的计算方式是(pageNum - 1) * pageSize这个计算放在 Service 层别在 SQL 里写表达式否则 MyBatis 参数绑定容易出问题。keyword模糊查询用了CONCAT注意 MySQL 的LIKE以%开头会导致索引失效数据量大时需要考虑全文索引或者搜索引擎但课程设计级别不用管。提示分页查询一定要同时返回total和list前端分页组件需要总数来计算总页数。COUNT查询的WHERE条件必须和列表查询完全一致否则会出现「总数对不上列表」的玄学问题。3.3 成绩关联查询多表 JOIN 与 N1 问题的规避成绩查询是学生信息管理系统里最容易写出性能问题的模块。常见需求是查某个学生的所有成绩包含课程名和学分。新手容易写成先查成绩列表再循环查课程这就是典型的 N1 问题——一个学生十门课就是十一次数据库查询。正确做法是一次 JOIN 查完select idselectScoreByStudent resultTypeScoreVO SELECT sc.score, sc.exam_time, c.course_name, c.credit, c.teacher FROM score sc INNER JOIN course c ON sc.course_id c.id WHERE sc.student_id #{studentId} ORDER BY sc.exam_time DESC /selectINNER JOIN保证只返回有课程记录的成绩如果用了LEFT JOIN课程被删除时会出现course_name为 null 的记录前端展示会出问题。ORDER BY按考试时间倒序最近考的排前面符合使用习惯。如果还要查班级平均分、课程及格率这类统计直接在 SQL 里用AVG、COUNT加GROUP BY搞定别在 Java 里循环算。数据库的计算能力比你想象中强把计算下推到数据库是基本原则。4. 避坑与排查那些让我熬夜到凌晨三点的常见问题4.1 中文乱码从数据库到前端的三层排查现象学生姓名存进去是「??」或者页面显示「æå」。 原因字符集不统一。数据库、连接 URL、Tomcat、前端页面任何一层不是 UTF-8 都会乱码。 解决按顺序检查——建库建表用utf8mb4JDBC URL 加characterEncodingutf8mb4application.yml里server.servlet.encoding.charsetUTF-8前端 HTMLmeta charsetUTF-8。四层全对齐乱码必消。4.2 事务不生效Transactional失效的三种场景现象成绩录入时学生表更新成功但成绩表插入失败数据不一致。 原因Transactional失效。常见三种情况方法不是public同类内部方法直接调用没走代理异常被catch了没重新抛出。 解决确保注解方法public内部调用通过AopContext.currentProxy()或者拆到另一个 Service捕获异常后throw new RuntimeException(e)触发回滚。我一般会在Transactional里指定rollbackFor Exception.class默认只回滚RuntimeException受检异常不回滚这个坑很深。4.3 Excel 导入学号重复唯一索引报错与批量插入优化现象导入 Excel 时遇到重复学号直接抛DuplicateKeyException整个导入失败。 原因没有做去重和异常处理一条脏数据毁掉整批。 解决导入前先查一遍已存在的学号集合过滤掉重复的或者用INSERT ... ON DUPLICATE KEY UPDATE做更新插入。批量插入时用 MyBatis 的foreach拼批量 SQL别循环单条插入一千条数据循环插入要几十秒批量插入一秒搞定。4.4 分页总数对不上COUNT查询条件遗漏现象列表显示 10 条但总数显示 100 条翻到第二页数据重复。 原因COUNT查询的WHERE条件和列表查询不一致比如列表查了status1COUNT没加这个条件。 解决把WHERE条件抽成公共 SQL 片段用sql标签定义列表和COUNT都引用同一个片段。这是最稳妥的做法改条件时只改一处。4.5 前端时间格式Date转 JSON 变成时间戳现象接口返回的enroll_date是1698768000000前端显示不了。 原因Jackson 默认把Date序列化成时间戳。 解决application.yml里加spring.jackson.date-formatyyyy-MM-dd HH:mm:ss和spring.jackson.time-zoneGMT8。如果字段是LocalDate需要在字段上加JsonFormat(pattern yyyy-MM-dd)因为全局配置对LocalDate不生效。5. 进阶技巧用 EasyExcel 做导入导出与接口压测验证5.1 三行代码搞定 Excel 导出EasyExcel 的导出简单到离谱定义好实体类加注解然后一行write就完事。// 实体类字段加注解 public class StudentExcelVO { ExcelProperty(学号) private String studentNo; ExcelProperty(姓名) private String name; ExcelProperty(班级) private String className; // 省略 getter/setter } // Controller 里导出 GetMapping(/export) public void export(HttpServletResponse response) throws IOException { ListStudentExcelVO list studentService.listAllForExport(); response.setContentType(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet); response.setHeader(Content-Disposition, attachment;filenamestudents.xlsx); EasyExcel.write(response.getOutputStream(), StudentExcelVO.class) .sheet(学生信息) .doWrite(list); }ExcelProperty的 value 就是表头名称顺序和字段声明顺序一致。doWrite传入 List 即可EasyExcel 会自动处理流关闭。注意Content-Disposition里的文件名如果包含中文需要 URL 编码否则某些浏览器会乱码。5.2 导入时的校验与错误回显导入比导出麻烦的地方在于校验。我的做法是先用 EasyExcel 的AnalysisEventListener逐行读取每行校验学号格式、姓名非空、班级存在校验不通过就记录行号和错误原因全部读完后再决定是全部入库还是返回错误报告。public class StudentImportListener extends AnalysisEventListenerStudentExcelVO { private ListStudentExcelVO successList new ArrayList(); private ListString errorMsgList new ArrayList(); private SetString existStudentNos; // 提前查好的已存在学号 Override public void invoke(StudentExcelVO data, AnalysisContext context) { int rowIndex context.readRowHolder().getRowIndex() 1; if (data.getStudentNo() null || data.getStudentNo().trim().isEmpty()) { errorMsgList.add(第 rowIndex 行学号为空); return; } if (existStudentNos.contains(data.getStudentNo())) { errorMsgList.add(第 rowIndex 行学号已存在); return; } successList.add(data); } Override public void doAfterAllAnalysed(AnalysisContext context) { // 全部解析完后successList 批量入库 } }context.readRowHolder().getRowIndex()返回的是从 0 开始的行号加 1 才是 Excel 里看到的行号。existStudentNos在监听器构造时传入避免每行都查一次数据库。doAfterAllAnalysed里做批量插入用 MyBatis 的foreach拼 SQL一千条数据一秒内完成。5.3 用 JMeter 或 Postman 做接口压测验证功能写完不代表没问题分页查询在数据量上来后是否还快登录接口能不能扛住并发这些需要压测验证。我一般用 JMeter 建一个线程组100 个线程循环 10 次调学生列表接口看响应时间和错误率。如果平均响应超过 500ms就要检查 SQL 索引和连接池配置。连接池用 HikariCPSpring Boot 默认maximum-pool-size默认 10课程设计够用。如果压测时出现Connection is not available说明连接池太小或者连接泄漏检查有没有手动getConnection没关闭的地方。5.4 一个我坚持了三年的习惯每次写完一个模块我会把对应的接口用 Postman 存到集合里标注好请求参数和预期返回。这样下次改代码时一键跑完所有接口五分钟就能确认没有回归问题。学生信息管理系统这种 CRUD 密集的项目接口回归测试比单元测试性价比高得多。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

基于SpringBoot的新能源汽车个性化推荐系统设计与实现

基于SpringBoot的新能源汽车个性化推荐系统设计与实现

如果你今年也在为毕业设计选题目发愁,看到“基于SpringBoot的新能源汽车个性化推荐系统”这种标题,第一反应估计跟我当时一样:这不就是做个网站,然后把数据库里的汽车列表随便查出来展示吗?真动手之后才发现&#xff0…

2026/10/8 20:18:29 阅读更多 →
爬虫技术全链路解析:从请求策略到数据清洗的工程化实践

爬虫技术全链路解析:从请求策略到数据清洗的工程化实践

爬虫这事,我一直觉得是被低估了的一门手艺。很多人一听到“爬虫”两个字,要么觉得是黑客干的事,要么以为就是写个脚本去复制粘贴网页。实际上,一个成熟的数据采集方案,背后涉及网络请求、解析策略、反爬对抗、数据清洗…

2026/10/8 20:18:29 阅读更多 →
仿百度网盘JavaWeb小型云盘系统:从部署到实现核心功能

仿百度网盘JavaWeb小型云盘系统:从部署到实现核心功能

简介:一套基于Java Web实现的轻量级云盘系统,面向正在学习Java后端与Web开发的初学者、以及需要快速搭建在线存储演示项目的开发者。项目模仿百度网盘的核心交互,涵盖文件上传、下载、分享、删除、重命名等常用操作,并包含用户认证…

2026/10/8 20:18:29 阅读更多 →

最新新闻

COMSOL电池热管理建模实战:从电化学耦合到参数标定的全流程解析

COMSOL电池热管理建模实战:从电化学耦合到参数标定的全流程解析

1. 为什么今年大家都在折腾电池热管理建模做锂电仿真的人应该都有同感:这两年热管理问题的权重明显变高了。动力电池能量密度往上走,快充功率往4C甚至6C冲,热失控安全标准也越来越严,单纯靠试验试错已经扛不住了——成本高、周期长…

2026/10/8 20:51:29 阅读更多 →
括号匹配与动态规划:统计合法括号子串的线性DP解法

括号匹配与动态规划:统计合法括号子串的线性DP解法

1. 先把题目读懂:什么是“永远在一起”上个月我们这边打了一场月赛,T2 就是这道 P15445,题面起了个非常文艺的名字叫“永远在一起”。我当时看到这个名字愣了一下,读完题意才发现,它本质上是在问括号匹配的问题&#x…

2026/10/8 20:51:29 阅读更多 →
C# IOCP高并发Socket实战:完成端口与SocketAsyncEventArgs解析

C# IOCP高并发Socket实战:完成端口与SocketAsyncEventArgs解析

简介:面向需要构建高并发、大容量网络服务端的C#开发人员,这份例子围绕完成端口(IOCP)与SocketAsyncEventArgs展开,提供完整的通讯封装、服务端日志查看、SOCKET在线列表、上传下载、远程文件流和吞吐量协议实现&#…

2026/10/8 20:51:26 阅读更多 →
Flask+SQL招聘数据可视化系统:毕业设计实战指南

Flask+SQL招聘数据可视化系统:毕业设计实战指南

简介:这是一套面向计算机专业毕业生与Python Web初学者的可视化求职分析系统,基于Flask框架与SQL数据库搭建,可用于毕业设计选题、课程实践或求职数据研究。系统围绕职位、公司、行业、地区等维度组织数据,通过SQL查询与聚合完成岗…

2026/10/8 20:51:17 阅读更多 →
FPGA三模冗余资源账本:TMR不只是复制三分逻辑

FPGA三模冗余资源账本:TMR不只是复制三分逻辑

三模冗余(TMR)这词,搞FPGA的应该都不陌生,尤其做星载、航空、轨交、工控这些对可靠性要求高的项目,几乎绕不开。我最早接触TMR是在一个卫星载荷的控制器项目里,当时领导一句话"这块逻辑必须三模"…

2026/10/8 20:51:03 阅读更多 →
GUI学习第二天:从事件驱动到布局管理,用Tkinter打造交互工具

GUI学习第二天:从事件驱动到布局管理,用Tkinter打造交互工具

1. 从"看得见"到"用得动":GUI学习第二天的核心转变 第一天接触GUI,大多数人干的事情其实都差不多:装好环境,照着教程拖几个按钮,跑起来一个窗口,然后成就感维持了大概十分钟&#xff0…

2026/10/8 20:50:02 阅读更多 →

日新闻

抖音用户主页视频数据爬虫详解:点赞、收藏、分享字段抓取与 TaoToken 统一 Key 配置

抖音用户主页视频数据爬虫详解:点赞、收藏、分享字段抓取与 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/8 0:00:03 阅读更多 →
AI 编程 Trae 国内版与国际版一篇讲透:TaoToken 统一 Key 接入实测

AI 编程 Trae 国内版与国际版一篇讲透: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/8 0:00:06 阅读更多 →
Claude Desktop 配置第三方推理接口教程:用 TaoToken 统一 Key 打通 API 调用

Claude Desktop 配置第三方推理接口教程:用 TaoToken 统一 Key 打通 API 调用

/* 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 0:00:07 阅读更多 →

周新闻

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/8 15:26:40 阅读更多 →
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/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 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/7 14:34:12 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/7 13:34:55 阅读更多 →