数据库课程设计大作业:从ER模型到SQL实现的完整指南
简介一套适用于数据库课程设计的平行志愿录取系统完整项目基于Java、Spring、MySQL与Vue.js技术栈构建面向高校计算机、软件工程及相关专业学生尤其贴合广东工业大学数据库课程作业要求。资源内含后端Java源码、SQL建库脚本、前端页面构建文件与各类配置文档共计195个文件其中包括40个Java程序、50个JavaScript和50个source map文件、27个CSS样式、5个XML配置文件、2个SQL脚本另有properties、yml、xlsx、字体图标等辅助资源压缩包大小仅9.4MB目录结构清晰便于按模块定位查阅。已有11475人学习下载是数据库大作业设计的高热度参考资料。通过对该项目的研读可以掌握平行志愿录取业务的数据表设计、后端接口开发、前端展示联调等完整流程同时借鉴其Spring与Vue前后端分离的整合方式、常见文件归类技巧也便于在本地环境运行验证为自己的课程设计提供从代码到文档的可靠范本。1. 数据库课程设计大作业拿到那个“超级完美精美版.zip”之前先弄明白它到底是什么数据库课程设计大作业超级完美精美版.zip这个标题在高校和培训班的资源群里反复出现几乎成了“高分作业”的代名词。但作为看过几十份课程设计、也帮人补过不少坑的一线开发者我得先泼一盆冷水真正值钱的从来不是这个 zip 本身而是它背后那一套“需求分析 → ER 模型 → 建表 SQL → 数据填充 → 界面展示 → 文档答辩”的完整链路。一份能拿高分的大作业本质是一个小型信息系统的最小可用原型它要有业务闭环、有数据约束、有查询价值、有可视化呈现还得能在答辩现场被老师问不倒。这篇文章不教你下载某个包而是把“超级完美、精美版”这几个字拆开讲清楚每一层应该怎么做、参数怎么设、坑在哪让你自己就能做出同等级甚至更好的交付物。适合正在选课设题目的学生也适合想快速搭一个数据库 Demo 的初级开发。2. 从选题到 ER 模型先定边界再动手画图2.1 选题的三条硬标准数据量可控、业务闭环、能讲出“亮点”很多人拿到课设题目第一反应是“选个大的”图书管理系统、超市管理系统、医院挂号系统名字越响越好。但我的经验恰好相反题目大小不重要数据量和业务闭环才是决定你能不能做完、做完能不能讲清楚的关键。一份课程设计的验收时间通常只有 10 到 15 分钟评审老师看的是你对自己系统的理解深度而不是功能数量。我一般会按三条标准筛题。第一数据量可控。核心实体表控制在 4 到 8 张每张表的数据量在几百到几千条量级这样既能体现设计能力又不会让你在数据填充阶段崩溃。第二业务闭环。系统要能讲出一个完整的故事——谁在什么场景下录入数据、谁查询什么、产生了什么结果。比如“学生选课系统”就是一个闭环学生选课 → 课程容量变化 → 成绩录入 → 统计排名。第三能讲出亮点。亮点不一定是分布式、并发这些大词一个存储过程、一个触发器、一个联合查询的视图就能在答辩时成为你的差异点。2.2 ER 图到关系模式的映射哪些联系要单独建表确定了选题之后第一步不是写代码而是画 ER 图。很多人跳过这一步直接建表结果表结构改到第三轮才开始怀疑人生。ER 图的核心是理清实体、属性和联系这三件事其中最容易出问题的是“联系”的映射规则。常见做法是分三类处理联系。一对一联系通常可以并入任意一端的实体表加一个外键即可比如“学生”和“学生证”就是一对一把外键放到任一侧都行。一对多联系在“多”的那一侧加外键比如“班级”和“学生”学生表里存班级编号这是最常规的操作。多对多联系必须单独建一张关联表这是课设里最基本的得分点。2.3 规范化检查3NF 的三个自查问题关于规范化我的建议是不要被 1NF、2NF、3NF、BCNF 的理论绕晕课设做到 3NF 就足够且必须会自查。所谓 3NF 规范化在实操中无非是三句话每一列都不可再分1NF非主键列完全依赖主键而不是依赖主键的一部分2NF非主键列之间不能有传递依赖即不能通过 A 推出 B、通过 B 推出 C3NF。举个例子一张选课表如果写成学号姓名课程号课程名成绩学号决定姓名、课程号决定课程名这就有部分依赖要把“姓名”拆到学生表、“课程名”拆到课程表选课表只留学号课程号成绩。自查时问三个问题表里有哪一列还在拆分某个非主键列是不是只由主键的一部分决定某两列非主键之间是否有依赖关系三个问题都回答“否”这张表就达标了。这一步做完后面写 SQL 的返工率至少降低一半。3. 建表 SQL 的完整范式约束、索引、自增主键3.1 一套可复用的建表模板以学生选课系统为例理论站稳了接下来进入真正动手的环节。我以最常见的“学生选课系统”为例子给你一套可以直接抄作业的建表 SQL。这里的关键不是把表建出来而是每个字段的类型、约束、默认值都要能说得出理由因为答辩时老师最喜欢对着字段定义提问。-- 学生表核心信息 必要的冗余字段 CREATE TABLE student ( student_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 学号自增主键, student_name VARCHAR(50) NOT NULL COMMENT 姓名不允许为空, gender TINYINT DEFAULT 0 COMMENT 性别 0-未知 1-男 2-女, birth_date DATE COMMENT 出生日期用于年龄统计, class_id BIGINT COMMENT 班级编号外键指向 class 表, phone VARCHAR(20) COMMENT 手机号可空, enroll_year YEAR DEFAULT 2024 COMMENT 入学年份默认当前年, status TINYINT DEFAULT 1 COMMENT 状态 1-在读 0-离校, create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;这段建表 SQL 里有几个参数值得注意。BIGINT做主键是因为课设数据量虽然小但自增主键用INT最大约 21 亿在演示时看不出问题在答辩追问“线上环境怎么设计”时会心虚直接用BIGINT一步到位。NOT NULL只加在真正必填的字段上比如姓名像电话、出生日期这类字段保留可空因为现实中就是可能没有。DEFAULT CURRENT_TIMESTAMP是 MySQL 的常用写法插入时不需要手动填时间。3.2 外键和触发器的使用边界什么时候加什么时候不加外键是课程设计里的一个高频争议点。我的立场很明确课设场景下务必加外键但要在加了外键之后把数据填充顺序想清楚。很多互联网公司的生产库确实禁用外键理由是分布式环境和分库分表下外键会拖垮性能、增加维护成本。但课设是单机、小数据量、强调规范性的教学场景外键的存在恰恰能体现你有没有理解参照完整性。-- 选课表联合主键 双外键约束 CREATE TABLE enrollment ( student_id BIGINT NOT NULL, course_id BIGINT NOT NULL, score DECIMAL(5,2) COMMENT 成绩保留两位小数可空, select_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT 选课时间, PRIMARY KEY (student_id, course_id), CONSTRAINT fk_enroll_student FOREIGN KEY (student_id) REFERENCES student(student_id) ON DELETE CASCADE, CONSTRAINT fk_enroll_course FOREIGN KEY (course_id) REFERENCES course(course_id) ON DELETE RESTRICT ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;这里展示了一个更细的决策同一张表的两个外键用了不同的删除策略。学生删除时选课记录级联删除ON DELETE CASCADE因为学生都没了选的课自然没有意义课程删除时如果还有人选着这门课就禁止删除ON DELETE RESTRICT防止出现“选了不存在的课”这种脏数据。这两个策略要在答辩时主动讲出来这是很明显的加分项。触发器方面我的建议是在课设中最多用 1 到 2 个且必须用真实业务场景驱动。比如“选课时如果课程容量已满则自动拒绝”这个用触发器实现就非常合适它把核心业务逻辑放在数据库层比放在前端 JS 里更有说服力。但触发器也会有坑——调试困难、出错时排查链路长用得太多反而容易在答辩时被老师问住。3.3 填充数据的顺序外键约束下避免插入失败的套路有了外键约束插数据就不是想插就插了得按照“主表在前、从表在后”的顺序来。不少同学在课设阶段最崩溃的事情就是SQL 脚本从头跑到尾跑到一半报Cannot add or update a child row: a foreign key constraint fails然后整个人开始怀疑数据库坏了。其实不是数据库坏了是插入顺序错了。我一般把数据填充分成三个文件01_department_class.sql、02_student_course.sql、03_enrollment.sql。第一个文件插班级、院系这类被依赖的基础表第二个文件插学生、课程这类业务主表第三个文件插选课记录这类关联表。每次执行时按文件名序号依次执行就不会撞上外键约束。另一个技巧是用set autocommit0;开启事务批量插入最后统一commit;万一中间出错直接rollback;回滚重来不用眼睁睁看着前几千条白插。4. 让“精美版”名副其实视图、存储过程与演示数据的编排4.1 用视图把复杂查询封装成“漂亮的接口”视图这个知识点很多教材把它放在很靠后的章节但课设里它非常出彩。视图的本质是把一段复杂的多表连接查询包装成一个虚拟表之后所有查询都从这个视图取数这既简化了前端页面的 SQL 复杂度也在逻辑上隔离了底层表结构变化的影响。-- 学生成绩总览视图三表连接 计算列 条件过滤 CREATE VIEW v_student_score_summary AS SELECT s.student_id, s.student_name, c.course_name, e.score, CASE WHEN e.score 60 THEN 及格 WHEN e.score IS NULL THEN 未考试 ELSE 不及格 END AS score_level FROM enrollment e JOIN student s ON e.student_id s.student_id JOIN course c ON e.course_id c.course_id WHERE s.status 1;创建这个视图后查询学生成绩只需要SELECT * FROM v_student_score_summary WHERE student_id 1001;前端不需要知道底层有 3 张表在连接。CASE WHEN生成计算列是为了体现“成绩等级”这个业务概念——在界面上展示时就不用再写一堆判断逻辑了。注意视图的名字要有清晰前缀v_建表时也用统一前缀如t_这样的命名规范在评审时很加分。4.2 存储过程的参数设计让批处理可配置视图解决了“查”的问题存储过程则解决“批量做”的问题。课程设计里常见的批处理场景包括批量录入成绩、按班级输出成绩单、学期末统一归档。我拿一个最简单的批量录入成绩的存储过程举例重点看参数的取舍。DELIMITER $$ CREATE PROCEDURE sp_batch_update_score( IN p_course_id BIGINT, -- 课程ID IN p_default_score DECIMAL(5,2), -- 默认成绩 IN p_pass_score DECIMAL(5,2) -- 及格线用于统计 ) BEGIN DECLARE v_count INT DEFAULT 0; -- 更新该课程所有 NULL 成绩的记录 UPDATE enrollment SET score p_default_score WHERE course_id p_course_id AND score IS NULL; -- 统计及格人数 SELECT COUNT(*) INTO v_count FROM enrollment WHERE course_id p_course_id AND score p_pass_score; -- 返回影响行数和及格人数 SELECT v_count AS pass_count; END$$ DELIMITER ;这个存储过程的三个入参都是有讲究的。p_default_score让你不用改代码就能调整默认值p_pass_score把及格线的判断逻辑参数化——如果哪天及格线从 60 分改成 55 分不需要重编译存储过程。DELIMITER $$是 MySQL 客户端的一个必要操作因为默认的分隔符是分号而存储过程体内部有大量分号不修改分隔符的话 MySQL 会把存储过程截断成很多段这是新手跑存储过程脚本失败的头号原因。执行时直接用CALL sp_batch_update_score(101, 65, 60);这个存储过程就能算出该课程的及格人数之后你可以在文档里写“本系统通过存储过程实现了批量批改与及格统计”。4.3 演示数据的设计数量、分布与“可讲的故事”界面做得再漂亮如果你的数据是“学生表 3 条、课程表 2 条”一查就露馅。演示数据的设计是“精美版”和“低分版”的分水岭。我一般遵循三档分布。第一档是数据量核心表至少 50 条以上关联表 200 条以上让列表页有滚动感、统计结果有差异感。第二档是分布要“有故事可讲”比如成绩表里要包含满分、不及格、缺考、缓考这些特殊值比如某个热门课程选课人数达到容量上限比如某位学生选了 8 门课、另一位只选了 1 门课。这些异常值和边界值是你答辩时展示“业务完整性”的最佳素材。第三档是时间维度日期字段不要全挤在同一天拉长到两个学年这样按年份分组的统计图才好看。用脚本生成这些数据是可行方案但生成后人工修正几条关键记录是必须的——因为完全随机的数据会让你讲不出业务故事。我见过一个课设的成绩数据从 50 到 99 均匀分布看起来很高大上但老师一问“挂科数据在系统里如何呈现”当场就愣住了。4.4 一个加分的前端展示模板:表格页与统计图怎样排布课设的前端不追求炫酷追求“信息层次清晰”。一个最稳妥的布局是左侧导航列出功能模块右侧主区分为上中下三层——上层放筛选条件中层放数据表格下层放统计图表。表格用于看明细统计图用于看趋势两者配合才能体现“数据库设计服务于业务分析”这个核心。!-- 前端展示层骨架表格统计图的最小结构 -- div classdashboard aside classsidebar ul li学生信息管理/li li课程信息管理/li li选课与成绩管理/li /ul /aside main classcontent div classfilter-bar select idcourseSelect/select input typedate idstartDate button onclickloadData()查询/button /div div classtable-wrap table idscoreTable/table /div div classchart-row canvas idscoreDistChart/canvas canvas idpassRateTrend/canvas /div /main /div画布canvas的图表建议用常见的开源图表库绘制柱状图展示成绩分布、折线图展示每学期及格率走势。这一层做出来“精美版”的视觉定位就站住了。前端与数据库的交互通过后端接口完成后端返回 JSON 数据前端负责渲染。至此整套系统的骨架已经闭环表结构支撑业务视图和存储过程支撑查询与处理前端界面呈现结果。5. 课程设计落地中的踩坑与排查五条血泪经验5.1 现象窗口打开就报“无法连接数据库”这是我见过最多人卡住的问题。原因 99% 是连接字符串里的主机地址、端口或密码与数据库实例不一致。最常见的坑是数据库装了 8.0 版本却沿用 5.x 的驱动包或者把localhost写成了某个不可达的 IP或者密码里带了特殊字符却没有做 URL 编码。解决方式很机械先用命令行客户端登录例如mysql -u root -p -h 127.0.0.1 -P 3306确认能够登进去再写代码。另外一旦确定代码里使用的是带时区参数的连接串比如在 JDBC 中加serverTimezoneAsia/Shanghai就能解决很多因时区设置导致的连接异常。5.2 现象数据插入了但查询结果对不上这个问题往往出在事务没有提交或者连接池缓存了旧数据。现象是直接敲 SQL 能查到新插入的行但页面查不到。此时优先检查隔离级别和事务边界。如果用的是默认的可重复读同一事务内多次查询结果是一致的新插入的数据对当前事务不可见这是符合预期的。应该检查插入操作后是否调用了commit()而不是直接排查 SQL 是否正确。另外一个隐蔽原因是ORDER BY 未指定排序字段——MySQL 在没有明确排序规则时返回顺序不保证页面刷新后数据顺序跳动很多同学误以为“数据乱了”其实只是查询没有排序条件。5.3 现象外键约束导致批量导入翻车批量导入上千条数据时Cannot add or delete a child row这类错误几乎必然出现。原因有三类一是插入顺序没有按主从关系排二是从表里引用的外键值在主表中确实不存在这往往是生成数据时用了两个独立的随机序列导致 ID 对不上三是主表用了批量生成的自增 ID但从表数据的 ID 区间是提前固定硬编码的。解决方案是数据导入统一走事务分批次提交每批次结束时做个快速验证统计主表和从表的 ID 差集。用下面的 SQL 快速找出孤立的从表记录SELECT e.student_id FROM enrollment e LEFT JOIN student s ON e.student_id s.student_id WHERE s.student_id IS NULL;执行结果返回空集才说明外键关系完好。这样一次就能定位到翻车根源不用肉眼逐行排查几千条数据。5.4 现象把整个工程打成 zip 之后别人打开却连不上数据库课程设计交的是 zip 压缩包但里面包含代码、SQL 脚本、文档接收方大概率没有和你一样的数据库密码或环境变量。根源在于环境依赖未声明。解决起来很简单在压缩包里放一个README.md或部署说明.txt里面写清楚数据库版本、账号密码、初始化脚本的执行顺序、必要的配置文件路径。同时把 SQL 脚本中的密码等相关敏感配置抽到独立的配置文件中保证任何人拿到包之后照着说明 5 分钟内能跑起来。很多“超级完美版”的课设包之所以被扣分就是因为缺少这份部署说明。5.5 现象答辩演示时 CRUD 反而卡顿课设在演示机器上运行往往比在开发同学的电脑上慢很多。原因是演示机器的数据库没有初始化索引或者查询时发生了全表扫描。你可以提前用EXPLAIN检查关键查询的执行计划EXPLAIN SELECT s.student_name, c.course_name, e.score FROM enrollment e JOIN student s ON e.student_id s.student_id JOIN course c ON e.course_id c.course_id WHERE e.course_id 101;如果type列出现ALL或index说明索引没有生效。此时添加索引的通用做法是在enrollment表的course_id上建单列索引在student表的class_id上建单列索引。另外演示机上数据库默认最大连接数可能只有 150如果前端页面多次刷新不释放连接也会造成堆积。课设规模下把连接池最大连接数调到 50 以下即可够用且不容易把演示机拖垮。6. 答辩前的最后检查从评审视角把整个作品扫一遍到这一步你的课设已经从“能跑”进化到“精美版”的形态了但距离高分还差最后一公里——评审视角的自查。我的习惯是在答辩前一天模拟一遍老师可能的提问链。从打开系统开始老师会怎么问第一问通常是“系统有哪些角色分别有哪些权限”这是校验你对需求的理解第二问通常是“这几张表为什么这么设计主键为什么用自增而不用 UUID”这是校验你的数据库基础第三问通常是“这个报表的统计口径是什么数据从哪几张表来的”这是校验你的视图和查询能力。针对这三问梳理出每个问题对应的文档页和系统截图并写一段两分钟的表达草稿在答辩说明.txt里。我还建议准备一张“系统数据结构总览表”用表格列出每张表的名称、用途、主要字段和表间关系这张表在提问时就是你回答的索引。最后一步删掉开发过程中遗留的所有临时文件重新从 zip 解压、按部署说明从零跑一遍。把数据库脚本清空重新执行全部初始化 SQL确认一键能从空库变成完整业务数据。我经历过一次很尴尬的翻车交上去的版本在打包时把数据库配置文件改成了本地绝对路径评审老师一解压就启动失败十几分钟的演示全花在现场改配置上。从那以后我每一步都按交付物标准自查再也不在最后关头赶工。做课设和做工程是一样的——真正的坑不在于技术多深而在于每个环节按规范落到地。把 ER 图、建表语句、数据填充、视图、存储过程、前端展示和文档串成一条线这套流程本身就是你最好的答辩稿。希望这份拆解能帮你少走点弯路。行文至此再补一个建议交上去之前找一个从来没看过你项目的同学让他照着部署说明独立跑一遍。如果他能不问你任何问题就打开系统看到完整数据这包就算真正“超级完美”了。祝你顺利。本文还有配套的精品资源点击获取

相关新闻

Vue 3 动态 ref 绑定指南:运行时获取元素与动态表单校验实践

Vue 3 动态 ref 绑定指南:运行时获取元素与动态表单校验实践

在 Vue 3 项目里&#xff0c;ref 绑定元素这件事&#xff0c;十个人里有九个都只在模板里写ref"xxx"&#xff0c;然后在<script setup>里用同名的 ref 接住。但真实业务不会一直这么规整。我最近就接了个需求&#xff1a;后台配置结构返回一串动态字段&#xf…

2026/10/9 11:47:53 阅读更多 →
在线图像风格迁移系统实战:从模型选型到并发部署

在线图像风格迁移系统实战:从模型选型到并发部署

简介&#xff1a;一份基于深度学习的图像风格在线迁移系统完整源码包&#xff0c;面向AI图像处理学习者和Web/小程序开发人员&#xff0c;解决将普通图片快速迁移为艺术风格的工程落地问题。后端基于fast-style-transfer算法&#xff0c;提供Flask接口&#xff0c;前端包含Vue2…

2026/10/9 11:47:53 阅读更多 →
Python EasyDict 配置管理实战:从嵌套字典痛点到工程化方案

Python EasyDict 配置管理实战:从嵌套字典痛点到工程化方案

1. 为什么一个字典模块值得单独写一篇第一次在项目里看到from easydict import EasyDict这行代码的时候&#xff0c;我的反应是&#xff1a;字典就字典&#xff0c;Python 自带的dict用了这么多年&#xff0c;为什么还要额外装一个第三方库&#xff1f;直到我在一个图像处理项目…

2026/10/9 11:46:51 阅读更多 →

最新新闻

以始为终学习MySQL的术语大全的庖丁解牛

以始为终学习MySQL的术语大全的庖丁解牛

根因 以始为终&#xff0c;和以终为始互为对照。以终为始是锁定终点目标反向倒推方案&#xff1b;而以始为终学习MySQL&#xff0c;核心含义&#xff1a;从最原始的底层起点出发&#xff0c;顺着知识本身的演化顺序&#xff0c;一层层向上搭建完整认知&#xff0c;从根源理解My…

2026/10/9 12:22:35 阅读更多 →
UltraEdit恢复初始化:删掉所有设置回到刚安装状态,TaoToken 配置前先做这一步

UltraEdit恢复初始化:删掉所有设置回到刚安装状态,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/9 12:22:35 阅读更多 →
【HCIA- AI(正课)】练习题和解析

【HCIA- AI(正课)】练习题和解析

判断题 PyTorch、MindSpore等Al开发框架通常提供内置的数据处理功能用于数据采集、数据清洗、特征选择和归一化等操作。✅LSTM是改进版RNN。序列很长的时候&#xff0c;RNN 记不住很早之前的信息。 LSTM 专门解决原生 RNN长序列训练时的梯度消失问题&#xff0c;擅长学习长距离…

2026/10/9 12:22:35 阅读更多 →
联辉科 LTK8833双通道H桥电机驱动芯片:12.5V/1.3A双路,覆盖POS打印机、安防摄像头、机器人三大应用场景

联辉科 LTK8833双通道H桥电机驱动芯片:12.5V/1.3A双路,覆盖POS打印机、安防摄像头、机器人三大应用场景

在嵌入式运动控制系统中&#xff0c;工程师常常面临一个选择&#xff1a;是用两颗单通道电机驱动芯片分别控制两个电机&#xff0c;还是寻找一颗能够同时驱动两个电机或一个步进电机的双通道驱动芯片&#xff1f;前者占用更多PCB面积和物料成本&#xff0c;后者则能在单颗芯片内…

2026/10/9 12:22:35 阅读更多 →
IP102害虫检测VOC数据校验与YOLO训练格式转换实战

IP102害虫检测VOC数据校验与YOLO训练格式转换实战

简介&#xff1a;IP102数据集的PASCAL VOC格式标注文件包&#xff0c;专门面向农业害虫识别、目标检测等计算机视觉方向的开发者与研究者。压缩包内共包含2000个XML文件&#xff0c;整体容量约408.18MB&#xff0c;每个XML文件对应一张害虫图片的标注信息&#xff0c;其中记录着…

2026/10/9 12:22:35 阅读更多 →
AWS EventBridge 事件驱动架构实战:从同步雪崩到事件路由解耦

AWS EventBridge 事件驱动架构实战:从同步雪崩到事件路由解耦

从一次凌晨三点的告警风暴说起。某个支付平台在上线前一天晚上&#xff0c;下游订单服务的状态变更像推倒了多米诺骨牌一样&#xff0c;一路击穿库存、账单、通知、对账等多个服务。所有团队都在抢修&#xff0c;但根因并不复杂&#xff1a;订单完成这个业务动作&#xff0c;被…

2026/10/9 12:21:34 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题&#xff0c;隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题&#xff0c;排查到最后发现是ZonedDateTime序列化后时区丢了&#xff0c;用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问&#xff1a;办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好&#xff0c;问题是工作场景经常要在几处环境之间来回切换&#xff0c;每次都先登录跳板机再层层代理&#xff0c;实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及&#xff0c;但真正动手搭过一套能跑起来的 Agent 系统的人都知道&#xff0c;从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地&#xff0c;从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

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/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/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/9 6:17:20 阅读更多 →