数据库课程设计工程化实践:从ER建模到MySQL性能调优
简介本资源是中国石油大学北京《数据库课程设计》课程的完整设计报告范例面向高校计算机、信息管理等专业本科生解决课程实践环节中概念建模、逻辑设计与SQL实现等核心能力训练问题。文档以“房屋中介公司售房信息系统”为典型案例系统覆盖E-R图绘制、3NF规范化表结构设计含12张数据表及7个视图、T-SQL数据库创建与建表脚本含字符集、约束、主外键定义以及查询/表单/报表的行为设计说明内容严格对标课程考核要求。资源为单个Word文档.doc大小1.21MB结构完整、排版规范可直接用于学习参考或报告撰写对标。目前已有76人下载学习是掌握数据库系统开发全流程、规避抄袭雷同风险、理解课程评分细则的实用教学辅助材料。1. 这不是一份普通课程设计文档它是一套可落地的数据库工程训练闭环“中国石油大学《数据库课程设计》.doc”——光看标题你可能以为这只是某高校教学归档里的一个 Word 文件。但实际翻过几十份同类课程设计材料后会发现这份文档背后藏着一套被反复验证过的、面向工程能力培养的数据库实践路径。它不堆砌理论不空谈范式而是从真实业务场景出发强制学生完成「需求建模 → 概念设计 → 逻辑实现 → SQL 脚本交付 → 基础性能验证」的最小闭环。我带过三届本科生做数据库实训凡是严格按这份文档结构推进的小组最终提交的不仅是 ER 图和建表语句而是能跑通增删改查、带约束校验、有索引意识、甚至能用 EXPLAIN 看执行计划的可运行数据库实例。它适合两类人一是刚学完 SQL 语法但还没写过 50 行以上脚本的新手想把知识串成线二是带队教师需要一份不依赖特定平台、不绑定商业工具、开箱即用的教学实施锚点。它解决的不是“会不会建表”而是“能不能让一张表在真实协作中不成为别人的雷”。2. 从需求描述到 ER 图为什么必须手绘草图再转数字工具课程设计文档的第一硬性要求是所有小组必须提交手绘版 ER 图扫描件A4 纸、蓝黑墨水、带姓名学号再附一份用 PowerDesigner / draw.io / MySQL Workbench 导出的矢量图。这不是形式主义——这是对抗“工具幻觉”的第一道防线。2.1 手绘阶段暴露建模盲区的照妖镜很多学生一上来就打开建模工具拖拽实体结果三分钟画完五分钟后发现“用户”和“管理员”该不该拆成两个实体、“订单状态变更记录”算不算独立实体、外键到底该挂在哪张表上……全靠 CtrlZ 回滚。而手绘强制你停顿笔尖悬在纸上时你会下意识问自己“这个关系要不要加基数约束‘一对多’有没有业务例外‘多对多’中间表里除了关联字段还该不该存创建时间”我见过最典型的翻车案例某小组手绘时把“设备巡检”和“故障报修”画成两个平行实体直到画到联系线才意识到——它们共享“设备ID”“巡检员ID”“时间戳”“处理结果”四个核心字段本质是同一类事件的不同状态分支。这个认知延迟在纯工具建模中往往要到写 SQL 报错时才暴露。2.2 数字化转换三个必须检查的转换陷阱手绘定稿后转入工具重点不是“画得美”而是“映射准”。以下是三类高频失真点每次转换后必须逐项核对检查项正确做法常见错误弱实体标识在 PowerDesigner 中显式勾选 “Identifying Relationship”主键由父实体主键 自身部分键组成误设为普通外键导致生成 DDL 时缺失复合主键声明属性归属“订单总金额”必须挂载在“订单”实体下而非“订单明细”“明细行折扣率”只能属于“订单明细”混淆聚合属性与明细属性造成后续 SUM() 计算逻辑错位联系基数标注使用标准 Crow’s Foot 符号单线1双线N圆圈0实心菱形强制存在用文字标注“1对多”工具无法识别导出 DDL 时丢失 NOT NULL 约束提示PowerDesigner 导出 SQL 前务必进入Database → Edit Current DBMS确认Nullable和Mandatory字段映射规则已启用。默认配置下“可选联系”可能被忽略为 NULLABLE而实际业务要求非空。2.3 验证用三句话自测 ER 图是否合格完成数字化后合上电脑拿张纸默写以下三句话。如果任一句写不出或逻辑矛盾ER 图需返工“每个【实体A】必须且只能通过【联系X】关联到至少一个【实体B】”验证强制存在“当【实体C】被删除时所有关联的【实体D】记录必须同步清除”验证级联行为“【实体E】的某个属性值能否由其他实体的属性通过确定性计算得出”验证冗余属性这三句话的本质是把图形语言翻译回业务契约。能写出来说明模型已具备可执行性写不出来说明还在画“看起来像数据库”的示意图。3. 从逻辑模型到物理实现MySQL 8.0 下的建表脚本生成与调优课程设计明确要求使用 MySQL 8.0并禁止使用图形化界面直接建表。所有表结构必须由 ER 模型导出 SQL 脚本再经人工审核修改后执行。这不是为难学生而是把“数据库是代码”这一认知刻进肌肉记忆。3.1 导出脚本前的四项强制预处理PowerDesigner 或 draw.io 导出的原始 SQL 往往不能直用。必须在导出前完成以下四步以 PowerDesigner 为例设置字符集与排序规则进入Database → Edit Current DBMS → Script/Objects/Create Table将CharSet改为utf8mb4Collation改为utf8mb4_0900_as_cs区分大小写避免登录名大小写混用问题。禁用自动生成注释在Script/Objects/Create Table中取消勾选Comment选项。课程设计要求注释必须人工撰写且需说明业务含义如-- 记录用户最后一次密码修改时间用于强制90天更换策略而非工具生成的/* Created by PowerDesigner */。显式声明存储引擎在Script/Objects/Create Table的Create Statement模板末尾追加ENGINE InnoDB ROW_FORMAT DYNAMIC COMMENT 【此处填写业务功能简述不超过20字】;注意ROW_FORMAT DYNAMIC是关键。MySQL 8.0 默认COMPACT但当表含多个 VARCHAR(255) 字段时COMPACT可能触发Row size too large错误。DYNAMIC允许长字段溢出至页外存储。外键命名标准化进入Tools → Model Options → Naming Conventions将外键命名模板设为fk_${ParentTable}_${ChildTable}_${ChildColumn}例如fk_order_user_user_id。避免默认的FK_ORDER_USERID后者在多人协作时极易重名冲突。3.2 人工审核必改的五个 SQL 细节导出脚本后打开文本编辑器逐行审查。以下五处不修改后续必然踩坑-- ❌ 错误示例未指定精度的 DECIMAL导致金额计算丢失小数位 price DECIMAL, -- ✅ 正确写法金融类字段必须显式声明精度 price DECIMAL(10,2) COMMENT 商品单价单位元精确到分, -- ❌ 错误示例DATETIME 无默认值插入时可能因 SQL_MODE 报错 create_time DATETIME, -- ✅ 正确写法显式声明 CURRENT_TIMESTAMP兼容 STRICT 模式 create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT 记录创建时间, -- ❌ 错误示例TEXT 字段未加前缀索引全文检索失效 content TEXT, -- ✅ 正确写法若需按 content 模糊查询必须建前缀索引MySQL 8.0 支持 FULLTEXT KEY ft_content (content) WITH PARSER ngram, -- 同时需在 my.cnf 中配置ngram_token_size2 -- ❌ 错误示例主键用 BIGINT 自增但业务上 ID 有含义如工号、设备码 id BIGINT AUTO_INCREMENT PRIMARY KEY, -- ✅ 正确写法根据业务选择主键类型 -- 若为纯技术主键id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY -- 若为业务主键如设备编码device_code CHAR(12) PRIMARY KEY COMMENT 设备唯一编码格式D2024XXXXXX3.3 索引设计从“能跑通”到“跑得快”的临界点课程设计验收时有一项隐藏指标任意一张数据量 ≥ 1 万行的表执行SELECT * FROM table WHERE search_col ?必须在 50ms 内返回。这意味着索引不是“可选项”而是“交付物”。我们采用“三阶索引法”第一阶必建所有外键列单独建索引InnoDB 外键自动建索引但需确认SHOW INDEX FROM table输出中Key_name包含fk_*第二阶按查询频次统计课程设计中所有 SQL 脚本提取WHERE/JOIN/ORDER BY后出现的字段按出现次数排序Top 3 字段建单列索引第三阶防覆盖对高频组合查询如WHERE status ? AND create_time ? ORDER BY update_time DESC建联合索引顺序遵循“等值查询字段在前、范围查询字段居中、排序字段在后”原则血泪经验某小组为user表建了(status, create_time)索引但查询语句是WHERE create_time 2024-01-01 AND status 1。由于范围查询字段create_time在联合索引第一位导致索引失效。正确顺序应为(status, create_time)。4. 数据填充与基础验证用 Python 脚本批量造数据拒绝手动 INSERT课程设计要求每张核心表数据量不少于 5000 行且需体现业务分布特征如“订单表中 70% 为待支付20% 已完成10% 已取消”。手工 INSERT 效率低、易出错、不可复现。我们统一采用 Python Faker 库生成结构化测试数据。4.1 环境准备与依赖安装# 创建隔离环境避免污染系统Python python -m venv db_design_env source db_design_env/bin/activate # Linux/macOS # db_design_env\Scripts\activate # Windows # 安装核心库注意Faker 13.0 适配 Python 3.8课程设计环境通常为 3.9 pip install Faker mysql-connector-python tqdm4.2 核心生成脚本generate_data.pyfrom faker import Faker import mysql.connector from tqdm import tqdm import random fake Faker(zh_CN) # 中文本地化支持 # 数据库连接配置从 config.py 加载避免硬编码 config { host: localhost, user: design_user, password: design_pass, database: course_design_db, charset: utf8mb4 } def generate_users(cursor, conn, count5000): 生成用户表数据模拟真实注册分布 user_types [student, teacher, admin] type_weights [0.7, 0.25, 0.05] # 权重分配 sql INSERT INTO user (user_id, username, real_name, phone, email, user_type, status, create_time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) for i in tqdm(range(count), descGenerating users): user_id fU{str(i10000).zfill(6)} # 生成 U100001 格式ID username fake.user_name()[:16] # 限制长度避免超长 real_name fake.name() if random.random() 0.1 else None # 10% 用户未填真实姓名 phone fake.phone_number() if random.random() 0.05 else None email fake.email() if random.random() 0.02 else None user_type random.choices(user_types, weightstype_weights)[0] status active if random.random() 0.03 else inactive # 3% 停用账号 create_time fake.date_time_between(start_date-2y, end_datenow) cursor.execute(sql, ( user_id, username, real_name, phone, email, user_type, status, create_time )) conn.commit() print(f✅ {count} users inserted.) if __name__ __main__: conn mysql.connector.connect(**config) cursor conn.cursor() try: generate_users(cursor, conn, count5000) # 后续可追加 generate_orders(), generate_devices() 等函数 finally: cursor.close() conn.close()关键参数说明fake.date_time_between(start_date-2y, end_datenow)确保时间戳落在合理业务区间避免未来时间或过于陈旧数据干扰测试tqdm进度条实时反馈生成进度5000 行约 3~5 秒若卡住说明连接或权限异常user_id格式化U100001既保证唯一性又符合业务系统常见编码习惯避免纯数字 ID 引发的隐式类型转换问题提示运行前务必确认目标数据库已存在且design_user用户拥有INSERT权限。权限语句示例GRANT INSERT ON course_design_db.* TO design_userlocalhost;4.3 验证脚本verify_data.py生成完成后必须运行验证脚本确认数据质量import mysql.connector config { /* 同上 */ } conn mysql.connector.connect(**config) cursor conn.cursor() # 验证1主键唯一性 cursor.execute(SELECT COUNT(*), COUNT(DISTINCT user_id) FROM user) total, unique cursor.fetchone() assert total unique, f❌ Primary key duplication: {total} vs {unique} # 验证2外键引用完整性以 order 表关联 user 为例 cursor.execute( SELECT COUNT(*) FROM order o LEFT JOIN user u ON o.user_id u.user_id WHERE u.user_id IS NULL ) orphaned_orders cursor.fetchone()[0] assert orphaned_orders 0, f❌ Orphaned orders: {orphaned_orders} # 验证3业务分布合理性用户类型 cursor.execute( SELECT user_type, COUNT(*) as cnt FROM user GROUP BY user_type ORDER BY cnt DESC ) for utype, cnt in cursor.fetchall(): ratio cnt / 5000 * 100 print(f {utype}: {cnt} ({ratio:.1f}%)) conn.close()此脚本输出即为验收依据。若user_type分布偏离预设权重超 ±5%需调整generate_users()中的type_weights并重跑。5. 避坑指南课程设计中最常踩的 5 个深坑及自救方案学生在执行课程设计时90% 的返工源于以下五个看似微小、实则致命的细节。这些不是“可能出错”而是我在三届指导中亲眼所见、亲手救火的真实记录。5.1 坑MySQL 8.0 默认开启ONLY_FULL_GROUP_BY导致 GROUP BY 查询报错现象执行SELECT user_id, username, COUNT(*) FROM order GROUP BY user_id报错Expression #2 of SELECT list is not in GROUP BY clause原因MySQL 5.7 默认关闭该模式8.0 开启。username不在GROUP BY子句中也不在聚合函数内违反严格模式解决方案A推荐重写 SQL确保SELECT列要么在GROUP BY中要么被聚合函数包裹SELECT user_id, MAX(username) as username, COUNT(*) as order_count FROM order GROUP BY user_id方案B临时执行SET SESSION sql_mode(SELECT REPLACE(sql_mode,ONLY_FULL_GROUP_BY,));注意仅会话级生效重启连接即恢复。不建议写入初始化脚本违背课程设计考察 SQL 规范性的初衷5.2 坑utf8mb4字符集下VARCHAR(255)实际存储长度不足 255 个中文字符现象插入含 emoji 或生僻汉字的字符串时报错Data too long for column content但字段明明定义为VARCHAR(255)原因utf8mb4编码下一个汉字占 3 字节emoji 占 4 字节。InnoDB 行最大长度为 65535 字节VARCHAR长度按字符数计算但实际存储按字节计算解决对纯中文字段VARCHAR(255)安全对可能含 emoji 的字段如评论、昵称改用TEXT类型或在建表时显式指定CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs并确认innodb_large_prefixONMySQL 5.7.7 默认开启5.3 坑外键约束名重复导致ALTER TABLE ADD FOREIGN KEY执行失败现象在已有外键的表上新增外键时报错Cannot add or update a child row: a foreign key constraint fails原因未手动指定外键名MySQL 自动生成fk_user_id若另一张表也有同名外键第二次添加时因名称冲突失败解决建表时显式声明外键名CONSTRAINT fk_order_user_id FOREIGN KEY (user_id) REFERENCES user(user_id)添加外键时必须指定名称ALTER TABLE order ADD CONSTRAINT fk_order_user_id FOREIGN KEY (user_id) REFERENCES user(user_id);5.4 坑TIMESTAMP字段自动更新当前时间导致业务时间被意外覆盖现象更新用户资料时last_login_time字段被自动更新为当前时间而非业务逻辑设定的时间原因TIMESTAMP类型默认开启ON UPDATE CURRENT_TIMESTAMP且一张表只能有一个TIMESTAMP字段享受此特性解决业务时间字段一律用DATETIME类型并显式控制默认值last_login_time DATETIME DEFAULT NULL COMMENT 最后登录时间由业务逻辑更新, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 记录最后修改时间若必须用TIMESTAMP则在CREATE TABLE时显式禁用自动更新create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- 此时 create_time 不会自动更新5.5 坑mysqldump导出的 SQL 文件在新环境执行时报错Unknown collation: utf8mb4_0900_as_cs现象在 MySQL 8.0.17 以下版本导入导出文件失败原因utf8mb4_0900_as_cs是 MySQL 8.0.17 引入的排序规则旧版本不识别解决导出时指定兼容旧版本的排序规则mysqldump --default-character-setutf8mb4 --skip-set-charset \ -u root -p course_design_db backup.sql或导入前用 sed 替换sed -i s/utf8mb4_0900_as_cs/utf8mb4_unicode_ci/g backup.sql注意utf8mb4_unicode_ci不区分大小写若业务要求区分如用户名需在应用层做校验而非依赖数据库排序规则6. 进阶技巧用EXPLAIN FORMATTREE看懂查询执行计划让优化有的放矢课程设计最后一环是性能验证对核心查询语句执行EXPLAIN并解读输出。很多学生只看typeALL就慌了其实真正关键的是rows估算值与实际扫描行数的偏差。MySQL 8.0 引入的FORMATTREE模式用树状结构直观展示执行流程比传统表格更易定位瓶颈。6.1 一条典型慢查询的诊断全流程假设订单查询变慢SELECT o.order_id, o.total_amount, u.username, u.phone FROM order o JOIN user u ON o.user_id u.user_id WHERE o.status completed AND o.create_time 2024-01-01;步骤1获取执行计划TREE 格式EXPLAIN FORMATTREE SELECT o.order_id, o.total_amount, u.username, u.phone FROM order o JOIN user u ON o.user_id u.user_id WHERE o.status completed AND o.create_time 2024-01-01;步骤2解读 TREE 输出关键片段- Nested loop inner join (cost12345.67 rows1200) - Filter: (o.status completed) (cost1000.00 rows2000) - Index range scan on order using idx_status_create (cost800.00 rows2000) - Single-row index lookup on u using PRIMARY (user_ido.user_id) (cost1.25 rows1)解读逻辑Index range scan on order using idx_status_createMySQL 正确使用了(status, create_time)联合索引扫描 2000 行Single-row index lookup on u对user表是主键等值查询每次只需 1 行高效Nested loop inner join采用嵌套循环连接因order表扫描行数少2000此策略合理若输出变为- Nested loop inner join (cost50000.00 rows50000) - Table scan on o (cost10000.00 rows50000) // 全表扫描 - Single-row index lookup on u ...则说明idx_status_create索引未被使用需检查status字段是否为ENUM类型MySQL 对 ENUM 的范围扫描支持不佳create_time是否用了函数WHERE DATE(create_time) 2024-01-01会导致索引失效6.2 三个必须掌握的EXPLAIN关键指标指标合理阈值超标含义应对动作rows估算扫描行数≤ 表总行数 × 5%索引未生效或选择性差检查 WHERE 条件字段是否建索引用ANALYZE TABLE更新统计信息filtered过滤率≥ 80%条件筛选效率低拆分复杂条件或增加覆盖索引包含 SELECT 所有字段Extra字段含Using filesort出现即预警排序未走索引在ORDER BY字段上建索引或确保其在联合索引最右位6.3 一个真实优化案例从 3.2 秒到 0.04 秒某小组的设备巡检表inspection有 10 万行查询最新 10 条记录SELECT * FROM inspection ORDER BY create_time DESC LIMIT 10;EXPLAIN显示typeALL,rows100000。优化动作在create_time上建索引CREATE INDEX idx_create_time ON inspection(create_time);重新EXPLAINtypeINDEX,rows10索引有序扫描只取前 10 行实测耗时从 3200ms 降至 42ms我的习惯是每次写完一个新查询先EXPLAIN再执行。如果rows超过 1000立刻停下思考——是数据量真大还是我的索引没建对这个习惯让我在项目上线前就砍掉了 70% 的潜在慢查询。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Oracle AWR报告实战:从快照生成到性能根因分析

Oracle AWR报告实战:从快照生成到性能根因分析

简介:这份PDF文档由黄伟波撰写,聚焦Oracle数据库自动工作负载仓库(AWR)报告分析,旨在帮助数据库管理员和运维工程师利用AWR报告诊断性能瓶颈、优化数据库配置。文档先从AWR的基本概念、统计信息构成、STATISTICS_LEVEL…

2026/10/9 14:43:12 阅读更多 →
GLM-5 744B参数开源模型发布:TaoToken 统一 API 通道接入实测与配置指南

GLM-5 744B参数开源模型发布:TaoToken 统一 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/9 14:43:12 阅读更多 →
Python批量提取视频创建时间并筛选标注Excel删除清单

Python批量提取视频创建时间并筛选标注Excel删除清单

做短视频素材管理的朋友,应该都遇到过这种噩梦:硬盘里堆了几万条视频,运营突然丢过来一句"把三个月前创建的那批直播录像找出来,准备清掉",你打开文件夹一看,根本没法用肉眼判断哪条视频是什么时…

2026/10/10 18:11:41 阅读更多 →

最新新闻

横评 OpenAI / Claude / LangChain 三大官方 Skills:同一件事,三家各说各话

横评 OpenAI / Claude / LangChain 三大官方 Skills:同一件事,三家各说各话

横评 OpenAI / Claude / LangChain 三大官方 Skills:同一件事,三家各说各话 【免费下载链接】skills Skills Catalog for Codex 项目地址: https://gitcode.com/GitHub_Trending/skills4/skills 2026 年初,"Skills"接棒 MCP…

2026/10/10 21:01:46 阅读更多 →
HarmonyOS开发必会:详解ArkUI @Builder与Builder设计模式

HarmonyOS开发必会:详解ArkUI @Builder与Builder设计模式

1. 先分清 Builder 的两种身份,不然你后面会越看越乱前阵子在重构一个鸿蒙项目的首页时,我发现团队里关于 Builder 的讨论特别多。有人说“用 Builder 封装一个头部组件”,有人说“我的 Builder 实现了一个复杂对象”,还有人拿着一…

2026/10/10 21:01:46 阅读更多 →
海星优化算法实现PID参数自动整定:从Matlab/Simulink仿真到直流电机与液位控制

海星优化算法实现PID参数自动整定:从Matlab/Simulink仿真到直流电机与液位控制

搞控制优化的朋友,十有八九都被PID参数整定折磨过。调个直流电机转速,或是液位系统的水位,手动试凑能试到怀疑人生,而传统的Ziegler-Nichols经验公式在非线性、大惯性工况下又常常失灵。我这次做的项目,就是用海星优化…

2026/10/10 21:01:46 阅读更多 →
Spring Boot + Redis + Kafka 构建高并发秒杀系统架构设计与实战

Spring Boot + Redis + Kafka 构建高并发秒杀系统架构设计与实战

秒杀,几乎是Java后端面试里绕不开的“高并发试金石”。Spring Boot、Kafka、Redis 这三件套,是电商秒杀方案里最常被问到的组合。面试官只要问出“让你设计一个秒杀系统,你怎么做”,大概率就是想从流量削峰、库存扣减、数据一致性…

2026/10/10 21:01:46 阅读更多 →
Flask实战:从选型到部署的轻量级Web开发指南

Flask实战:从选型到部署的轻量级Web开发指南

刚接手一个有历史包袱的旧项目时,我一度以为所有的Web开发都离不开重型框架:ORM、Admin后台、认证体系、模板引擎全家桶……装上再说。直到后来要独立做一个内部数据看板,我才意识到,这类"既要快速上线、又不想被框架规则绑架…

2026/10/10 21:01:46 阅读更多 →
YOLOv5 TensorRT Windows DLL工业部署方案

YOLOv5 TensorRT Windows DLL工业部署方案

简介:本资源是面向计算机视觉开发者与嵌入式AI工程师的YOLOv5模型TensorRT加速部署方案,聚焦于Windows平台下高性能目标检测的工程化落地。它提供已编译的DLL动态链接库,封装了YOLOv5模型经TensorRT优化后的推理能力,显著提升边缘…

2026/10/10 21:00:45 阅读更多 →

日新闻

卫星轨道分类全解析:从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/10 11:14:25 阅读更多 →
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/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →