毕业生就业管理系统实战:从Excel痛点分析到架构设计
先交代一个背景我当时接到的任务是给某高校就业办做一个毕业生就业状况管理系统从需求调研到部署上线前后大概三周。做这个系统之前就业办的老师一直用Excel汇总全校毕业生的就业数据——这件事听起来简单实际操作过的人都知道那有多痛苦每个院系交上来的表格格式不统一字段对不齐学生去向一变就要手动改一堆关联表年底统计就业率的时候还得靠人工核对出了错也没法追溯。所以这个项目的核心目标很明确把就业数据的录入、更新、查询、统计全部线上化让就业办和院系辅导员在同一个系统里维护一份干净、实时、可追踪的就业状态数据。这套系统看起来只是普通的“信息管理类”项目但真正动手做之后发现它的难点根本不在增删改查而在于三件事就业状态的建模方式、统计口径的统一、以及高并发场景下数据一致性的保障。这篇文章我就围绕这三点把整个设计与实现过程拆开讲透文中涉及的技术方案和踩坑记录都是我实际做完之后沉淀下来的经验。1. 为什么就业办需要一个独立的管理系统从Excel到线上化的痛点拆解1.1 Excel管理方式的三宗罪先说说就业办原来的工作流。每个院系的辅导员负责维护本院毕业生的就业信息包括学生的毕业去向、签约单位、单位性质、是否升学、档案迁移情况等。辅导员把这些信息填在一张统一的Excel模板里定期发给就业办。就业办汇总之后再用数据透视表做统计。这套流程的问题在三个地方。第一是字段口径不统一有的院系把“签约单位”填成公司全称有的填简称有的干脆写“待定”第二是状态更新滞后学生从“待就业”变成“已签约”辅导员可能隔了一两周才更新第三是无法审计追踪一个毕业生的就业状态改了三次谁改的、什么时候改的、之前填的是什么完全没有记录。这三点放在Excel里就是天然的缺陷不是老师不认真而是工具本身就不支持细粒度的流程管理。所以系统上线之前我先跟就业办的老师聊了一个下午把 Excel 里每一个列字段都过了一遍最终确定了一张包含基础信息、去向信息、签约信息、审核信息四大部分的字段清单。这张清单后来直接变成了数据库表结构设计的依据。1.2 系统的目标用户与核心使用场景我梳理了一下这个系统最终会被三类角色日常使用辅导员维护自己名下学生的就业状态批量导入学生名单跟进未就业学生。院系管理员查看本院所有毕业生的就业进展审核辅导员的录入数据导出本院报表。校级就业办面向全校做实时统计按学院、专业、学历、性别等维度查看就业率按时段生成上报数据。每一类角色的页面侧重完全不一样。辅导员要的是“录入快、搜人快、改动少”院系管理员要的是“能看到本院整体进度、能发现问题学生”校级就业办要的是“全校一张表、随时可下钻”。所以这个系统虽然是同一套后台但前端菜单和功能权限是按角色动态渲染的我在设计权限模型时没有搞复杂的RBAC而是直接用角色枚举 数据归属过滤把每个角色能看到的“数据边界”卡死避免出现辅导员看到其他学院数据这种越权问题。1.3 业务流程梳理一份数据是怎么“走到”统计报表里的在做功能开发之前我先把业务链路画了出来辅导员从系统下载名单模板通过批量导入把毕业生基础信息录入系统。每位毕业生进入“未采集”状态辅导员逐个或批量更新就业状态。学生就业状态发生变化时系统自动记录变更日志同时更新对应字段的“最后更新时间”。院系管理员可以审核审核通过后数据进入“已确认”队列。校级就业办从“已确认”队列读取数据进行统计和导出。这套链路里最关键的设计是“审核”这一环。最初我的设想是所有数据录完就直接进统计但跟老师确认需求后发现就业办每年上报数据之前都要做一次全校核查如果辅导员录进去的数据不经过院系审核就直接参与统计那统计结果的质量没保障。所以我在数据表里加了一个状态字段——audit_status控制数据是否参与统计。这个字段后面帮了大忙。2. 模块划分与数据表设计业务流直接决定功能流2.1 四大核心业务域的确定毕业生就业状况管理系统表面上功能很多但归纳起来只有四个业务域学生档案域、就业过程域、统计报表域、系统管理域。我在设计时没有按传统的“用户管理、就业管理、报表管理”来划分模块而是按业务流程重新拆学生档案域学生基础信息、学籍属性、批量导入。就业过程域就业状态登记、变更记录、审核确认、未就业跟踪。统计报表域就业率统计、去向分布分析、自定义筛选导出。系统管理域用户管理、角色配置、数据字典维护。这个拆法和常规的CRUD式模块划分最大的区别是它把“就业状态变更”作为一个独立的业务对象来设计而不是简单地往学生表里塞一个“就业状态”字段。因为一个毕业生的就业状态在毕业季可能变好几次——先签A公司后来毁约签B公司再后来考上研究生放弃签约。每一次变更都是一条记录而不只是改一个字段。2.2 核心表结构与字段设计要点我选的是关系型数据库主流技术栈搭配后端用 Spring Boot前端用 Vue数据库用 MySQL统计查询部分接了 Redis 做缓存。核心的几张表设计思路如下。学生基础信息表student_info字段名类型说明student_novarchar学号业务主键namevarchar姓名college_codevarchar学院编码major_codevarchar专业编码edu_levelvarchar学历层次graduate_yearyear毕业年份statusvarchar学生状态在读/已毕业就业状态表employment_status字段名类型说明idbigint自增主键student_novarchar学号关联学生表status_codevarchar状态编码destination_typevarchar去向类型company_namevarchar签约单位名称company_typevarchar单位性质signed_datedate签约日期effective_timedatetime本条状态生效时间expired_timedatetime本条状态失效时间audit_statusvarchar审核状态这里我想强调一个容易忽视的设计点状态表没有只存“当前状态”而是采用了区间版本化的设计。每一次状态变更就插入一条新记录原来的记录通过expired_time标记失效effective_time标记生效时间。这样做有个直接好处——统计某时间点的就业率时可以按时间切片去查而不是只能看最新状态。后来就业办要“跟去年同期对比”的时候这个设计直接派上了用场。2.3 数据字典到底意味着什么我单独说一个点数据字典。就业管理系统的业务枚举非常多——去向类型签就业协议、灵活就业、升学、出国、待就业、暂不就业等、单位性质机关、事业单位、国有企业、三资企业、私营企业等、生源地区域划分等。这些枚举如果全部硬编码在前端后续调整一次就要改代码重新发版太痛苦了。我的做法是建了一张data_dict表存储编码和名称的映射关系前端页面上所有的下拉选项都从接口动态读取。比如“单位性质”这一项就业办老师说今年要新增“新型研发机构”这个类别我只用在数据字典表里插一条记录刷新页面就能出现在下拉列表里完全不需要动代码。这个对业务侧的友好度提升非常明显。3. 技术选型逻辑与核心接口实现细节3.1 技术栈取舍没有盲目上新框架说到技术栈我直接用了一套非常“常规但稳妥”的组合后端 Spring Boot 2.7 MyBatis-Plus数据库 MySQL 8.0缓存 Redis前端 Vue 3 Element Plus。为什么不用更“新潮”的微服务或者重型权限框架原因很实际这个系统用户量不大并发峰值也就是毕业季几百人同时录入数据一套单体应用绰绰有余引入微服务只会增加部署和运维成本对就业办的老师来说完全没有收益。但我也没有完全放弃高性能的考虑。毕业季高峰时段就业办会集中导出全校几千人的报表如果实时跑 SQL 统计数据库压力会比较大。所以我把高频统计的 SQL 加了 Redis 缓存设置 60 秒过期时间让同一时间段的反复查询直接请求缓存效果非常明显。3.2 就业登记接口异步处理与批量导入的取舍就业登记是整个系统最核心的写操作。前端表单包含学生学号、去向类型、单位名称、单位性质、签约日期等十来个字段如果每个学生都一次接口调用辅导员录入几十个学生就要点几十次体验很差。我提供了两个入口单条登记接口POST /api/employment/record和批量导入接口POST /api/employment/batch-import。单条登记走实时校验校验学号存在、状态合法、签约单位非空等。批量导入走 Excel 文件解析——前端上传 .xlsx 文件后端用 EasyExcel 解析逐行校验后批次插入。这里有个关键细节批量导入不能直接在接口里同步解析因为大文件解析很慢动辄几秒。我把它改成先存文件返回一个taskId后台线程异步解析解析完把结果存到import_log表前端通过轮询接口获取导入进度和失败行数。这样前端不会一直转圈用户体感好很多。3.3 权限控制与数据隔离的实现系统有三类角色前端菜单按角色渲染这个不难。真正麻烦的是数据隔离。以辅导员为例他只能看到自己名下的学生如果按用户表单独维护“辅导员-学生”的关联关系维护成本太高。我的做法是在学生表里直接加一个counselor_username字段辅导员登录后所有查询条件默认带上这个字段。院系管理员则通过college_code过滤本学院数据校级就业办不过滤学院条件。这个方案简单但有边界问题如果学生转院了辅导员的归属要怎么变我在学生表里加了college_code和counselor_username两个字段转院时由院系管理员提交变更申请校级就业办审核后统一变更。虽然多了一道流程但至少不会出现“学生已经转院了原辅导员还在录他的数据”这种混乱状况。3.4 变更日志与操作审计的实现前面说过这个系统必须能回答“这个学生的就业状态是怎么一步步变成现在的”这个问题。我建了一张status_change_log表记录每次就业状态的变更包含操作人、操作时间、变更前状态、变更后状态、变更原因。实现上就是一个简单的切面逻辑在EmploymentStatusService的更新方法里统一写入日志不分散在业务代码里。这张表最初只被看作一个“保险”但后来有个场景让它变得非常关键——一次就业率统计的数字与院系自己报的数字对不上就业办老师想查数据明细系统直接把某学院所有学生的历史状态变更记录导出来很快就查出是有几名学生从“已签约”被误操作改为“待就业”但辅导员忘了改回来。如果没这张日志表这个问题基本无解。4. 就业率统计口径一个比功能开发更“磨人”的环节4.1 “就业率”到底怎么算先统一分母和分子做统计功能之前我一直以为就业率就是“已就业人数 ÷ 毕业生总数”直到就业办老师给我看了一份上报文件才发现这件事没那么简单。分母的确定是“应届毕业生总人数”还是“已经填报就业状态的人数”两者可能差很多因为很多学生毕业前没有填报任何去向。如果拿后者当分母就业率会虚高。跟老师确认后最终定的口径是分母是当年应届毕业生总数含未填报的学生分子是“已就业且审核通过”的人数。同时页面上单独展示“未填报去向人数”让老师一眼看出数据覆盖率。4.2 动态维度的下钻从全校到个人如果只是算一个总就业率那用一条 SQL 就能搞定根本不需要单独设计。真正的复杂度在下钻——就业办老师要看“某某学院某某专业女生党员这样的群体就业率是多少”这是一个多维度交叉统计的问题。我用的是预聚合加动态拼接的思路统计接口接收一组筛选条件学院、专业、学历、性别、政治面貌、去向类型、单位性质等后端根据条件动态拼接 WHERE 子句用 GROUP BY 做分组统计返回一个嵌套结构。例如public ListMapString, Object statisticsByDimension(StatQuery query) { // 动态拼接条件 LambdaQueryWrapperEmploymentStatus wrapper Wrappers.lambdaQuery(); if (StringUtils.hasText(query.getCollegeCode())) { wrapper.eq(StudentInfo::getCollegeCode, query.getCollegeCode()); } if (StringUtils.hasText(query.getMajorCode())) { wrapper.eq(StudentInfo::getMajorCode, query.getMajorCode()); } // 关联学生表、状态表按目标维度分组统计 // ... }这套方案的优点是灵活缺点是每次统计都要 join 两张表。对几千条数据来说只要索引建得好响应时间几十毫秒完全够用。但为了稳妥我还是给student_no、college_code、status_code这几个高频查询字段建了组合索引。4.3 图表数据从后端一次性聚合前端只负责渲染刚开始我图省事让后端分别返回“按学院统计”“按去向类型统计”几个接口前端分开拉取。结果页面加载的时候要发五六个请求每个请求都做一次独立的聚合计算慢且乱。后来我重构了一遍后端提供一个GET /api/report/overview接口一次返回所有图表的数据源格式是一个包含多组数据的 JSON。前端 ECharts 拿到数据之后直接渲染不需要做二次计算。这样一个页面一次请求就能完成加载毕业季打开统计页面的速度提升非常明显。4.4 就业统计的缓存策略别把所有查询都往数据库怼统计页面的热点查询是全校就业率总览、各学院就业率排行、去向类型分布这三类。这些指标都是基于全量数据聚合出来的SQL 的开销再优化也有上限。所以我在服务层加了 Redis 缓存缓存 key 包含筛选条件的所有维度例如stats:overview:all:2024:all。缓存过期时间设为 60 秒意味着用户重复刷新页面时绝大多数请求直接命中缓存。还有一个小技巧数据更新时不做主动缓存淘汰而是依赖过期自然失效。因为这个系统的数据一致性要求是“分钟级”不是“秒级”60 秒的延迟对就业办老师来说完全感知不到反而简化了缓存更新逻辑避免了缓存与数据库的数据同步问题。5. 部署与实测那些不跑一次绝对发现不了的问题5.1 批量导入Excel的性能瓶颈与逐行校验的取舍系统做完之后我找了就业办老师做了一次全流程实测。第一个暴露问题的地方是批量导入。一张包含全校 3000 个学生的 Excel 文件导入到一半程序报错了。查看日志发现EasyExcel 解析本身没问题问题出在校验逻辑——我按行同步调用数据库查询学号是否存在每条学生记录需要一两次数据库查询3000 条记录累积起来就是几千次查询数据库连接池直接被打满。解决方式是把校验改成分批处理先用SELECT student_no FROM student_info WHERE student_no IN (...)一次性查出这批学号是否存在于数据库中然后在内存里做对比避免逐行查库。另一个优化是把事务拆分3000 条记录不再作为一个整体事务而是每 500 条作为一个批次提交这样即使中途失败也能定位到具体批次不至于全部回滚导致前功尽弃。5.2 统计接口慢查询执行计划里的秘密统计页面第一次上线测试的时候我点了“全校就业率总览”等了两秒多才出数据。排查时我先在 MySQL 里手动执行了统计 SQL发现查询计划里student_info表走了全表扫描原因是我建组合索引时把student_no放第一位但实际查询条件里经常使用的是college_code和graduate_year。我调整了索引策略额外新建一个联合索引(college_code, graduate_year, status_code)让学院 年份维度的统计查询直接走索引覆盖。调整之后同样的接口从两秒多压缩到一百毫秒以内。这件事让我意识到统计系统的性能问题往往不是 SQL 写法问题而是索引顺序与查询模式不匹配的问题。5.3 并发场景下的重复登记问题毕业季高峰期辅导员老师们会集中在同一天批量登记学生就业信息。实测时我发现如果两个辅导员同时给同一个学生登记不同的就业单位后提交的数据会直接覆盖前者而且没有告警提示。排查之后定位到原因更新逻辑是“先查当前状态再插入新状态”两个事务并发时没有做乐观锁控制。修复方案是在student_info表加一个version字段更新前校验版本号不一致则提示“该学生就业状态已被其他用户更新请刷新后再操作”。虽然这个问题的触发概率不高但不处理的话会造成数据错乱而且事后极难追溯。6. 系统上线后的真实反馈与后续扩展方向6.1 就业办老师最认可的三个细节系统上线运行了一周后我回访了就业办的老师收集到的一些反馈让我印象很深。第一个是“时间切片对比”功能老师可以从时间维度看某个学院就业率的增长曲线比以前只能看静态表格直观太多第二个是“未就业学生台账”系统自动把临近毕业季仍未登记去向的学生按学院分组辅导员可以直接下载名单逐人跟进第三个是“变更日志审计”查数据问题的时候再也不用靠微信聊天记录回忆了。这三个功能没有一个是当初需求文档里明确写了的都是在沟通和实测过程中被挖掘出来的。我把它们做进去的原因其实很简单多跟用户聊业务听听他们“最头疼的事是什么”往往就是系统最有价值的切入口。6.2 数据质量保障从一次数据核对事故说开去上线后的第二周发生了一次小事故。某个学院反馈系统里的就业人数比他们自己统计的多了两个人。排查后发现问题根源在于该学院有一名退学的学生和一名休学的学生学籍变更信息没有同步到就业系统导致这两位同学一直在学生名单里统计就业率时被计入了分母。这件事让就业办下决心建立“数据源同步机制”——在系统管理域里增加学籍异动同步入口由教务处每周导出学籍异动明细系统自动比对并更新学生状态。这也让我意识到就业管理系统不能只做“就业”这一环它还依赖学籍数据、教务数据等上游数据的准确性。数据质量是系统的生命线功能做得再花哨如果基础数据不可靠一切白搭。6.3 如果再做一次三个我觉得要重新考虑的地方如果现在让我重新做这个项目我会在三个地方做改动。第一统计模块应该一开始就做成配置化的多维分析而不是在固定页面上叠需求。就业办的统计维度会随着政策变化而变化每次都硬编码页面后期维护成本太高。第二批量导入的前端交互应该支持断点续传大文件解析失败后重新解析的成本太高应该记录解析中断位置。第三通知预警机制应该提前做比如学生临近毕业仍未填报去向系统自动发消息提醒辅导员而不是让辅导员每天手动查台账。我用这个系统的数据显示上线后未就业学生的跟进效率提升了将近三成很大程度就靠了这部分提醒能力。6.4 个人经验漫谈这类系统最容易忽略的往往不是技术最后说点个人体会。毕业生就业状况管理系统这种项目技术难度真的不高CRUD 占了八成的工作量真正吃功夫的是业务口径的确认和数据质量的控制。我踩过的最大的坑就是一开始过于相信“需求文档写得够清楚了”结果开发到统计模块才发现同一个“就业率”在不同老师的口中可能有完全不同的含义。所以我现在的习惯是拿到任何管理类系统需求先跟业务方把每一个统计指标的口径、每一个状态字段的取值、每一次状态流转的前置条件全部确认一遍宁可多问十句也不要返工一次。这个系统从需求调研到上线部署用了不到一个月上线至今运行稳定。如果你想做类似的毕业生管理系统或者正在写相关的课程设计我的建议是把一半的时间花在业务梳理上把状态变化建模和统计口径搞清楚你的系统就已经成功了八成。技术方案反而是水到渠成的事选一套自己熟悉的、稳定的组合比什么都重要。

相关新闻

MCP协议实战:握手协商、多Server路由与生产排障

MCP协议实战:握手协商、多Server路由与生产排障

1. 这不是又一个“AI协议科普”,而是你真正用得上的 MCP 实战切片最近在几个技术群和开源项目 Slack 频道里,反复看到有人问:“MCP 到底是不是 LangChain 的替代品?”“LangGraph 跑多 Server 为啥总卡在 handshake 阶段&#xff…

2026/10/10 8:00:34 阅读更多 →
CSP-J/S初赛1000页资料集高效使用指南:从知识模块到错题归因

CSP-J/S初赛1000页资料集高效使用指南:从知识模块到错题归因

简介:这份资料集面向备战NOIP CSP-J(入门级)与CSP-S(提高级)初赛第一轮的青少年选手及信奥教练,系统梳理了初赛所需的核心知识体系。内容围绕计算机结构与组成、进制转换、原反补码、操作系统与网络基础展开…

2026/10/10 7:59:34 阅读更多 →
AI 代理技能模块实战:用自然语言生成可交互架构图

AI 代理技能模块实战:用自然语言生成可交互架构图

昨天在 GitHub 上刷到一个很有意思的仓库,名字叫 archify。项目定位很直白:给 AI 代理用的技能模块(skill module),让你用自然语言描述系统,AI 自动生成一张可以点击、缩放、带信息面板的可交互架构图。这个…

2026/10/10 7:59:34 阅读更多 →

最新新闻

Linux内核学习:先建立心智模型,再读懂设计哲学

Linux内核学习:先建立心智模型,再读懂设计哲学

1. 专栏开篇:为什么学内核先要学“心智模型”很多朋友问我,Linux内核那么大,几千万行代码,从哪儿读起?我通常给的答案会让他们意外:不要急着去读代码,先花时间建立心智模型。你可以把内核理解成…

2026/10/10 11:08:47 阅读更多 →
为OpenClaw自建即时通信软件:从微信/钉钉/飞信接入到专属IM的规划路线图(TaoToken统一通道)

为OpenClaw自建即时通信软件:从微信/钉钉/飞信接入到专属IM的规划路线图(TaoToken统一通道)

/* 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 11:08:47 阅读更多 →
风电光伏与废弃矿井抽蓄互补调度:Matlab建模与仿真

风电光伏与废弃矿井抽蓄互补调度:Matlab建模与仿真

风电、光伏与储能(含废弃矿井小型抽水蓄能)互补调度运行研究,这个方向近几年在新型电力系统领域讨论度一直很高。原因不复杂:风电光伏装机上得飞快,但出力不稳定这个老问题始终绕不开,单纯靠电网调度去平衡…

2026/10/10 11:08:47 阅读更多 →
ccswitch 里获取 deepseek 用量代码:把 endpoint 改到 TaoToken 的实操大纲

ccswitch 里获取 deepseek 用量代码:把 endpoint 改到 TaoToken 的实操大纲

/* 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 11:08:47 阅读更多 →
从工具到伙伴:OpenClaw Agent 28小时进化实录,TaoToken 统一 Key 打通 Playwright 与 HEARTBEAT.md

从工具到伙伴:OpenClaw Agent 28小时进化实录,TaoToken 统一 Key 打通 Playwright 与 HEARTBEAT.md

/* 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 11:08:46 阅读更多 →
刷题复盘:字符串反转、滑动窗口与动态规划的共性思维与三大坑点

刷题复盘:字符串反转、滑动窗口与动态规划的共性思维与三大坑点

1月15号,力扣刷题打卡照常进行。今天给自己排了三道题:一道字符串模拟、一道滑动窗口、一道二维动态规划,难度控制在简单加两个中等。字符串题考察的是边界细节,滑动窗口考察的是指针维护的节奏感,动态规划则是老生常谈…

2026/10/10 11:07:46 阅读更多 →

日新闻

卫星轨道分类全解析:从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/10 5:23:50 阅读更多 →
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/10 10:38:42 阅读更多 →