数据库系统概论经典三表:student、sc、course建表与SQL练习全解析
简介这是一份数据库系统概论课程的SQL练习表资源面向正在学习数据库原理与SQL操作的高校学生。文档围绕学生选课经典场景提供了创建sql_test数据库以及student、course、sc三张表的完整建表代码分别定义了学号、姓名、性别、年龄、系别和课程号、课程名、预修课程、学分以及选课成绩等字段涉及主键、外键、唯一约束、默认值等设计并按参照完整性要求给出了数据插入与更新的顺序说明。包体为单个PDF大小48KB内容紧凑目前已获1907人浏览学习。借助该文档读者可直接复制运行建表及示例数据语句快速搭建练习环境也可通过course自关联外键和sc双外键的示例理解关系模型中的完整性约束对数据操作顺序的影响。该PDF适合数据库课程上机练习、期末复习或自学入门使用。1. 数据库系统概论的经典练习表student、sc、course 到底能练什么刚学数据库系统概论的人最容易卡在找练习数据这一步网上的建表脚本五花八门不是缺外键就是数据对不上书上的例子。这份 PDF 给的是教材最经典的 student、sc、course 三张表配套《数据库系统概论》里几乎所有 SQL 练习场景。别小看这三张表它同时覆盖了主键、外键、自引用外键、联合主键、唯一约束还有一个很多人第一次会翻车的插入顺序问题。适合考前突击、课设前练手以及想快速搭一套干净练习数据的从业者。2. 建表语句拆开看主键、外键与唯一约束是怎么互相咬合的很多人在网上复制建表语句复制完就建建完就插数据从没想过每一行约束在干什么。这套表的好处是三张表把数据库系统概论里最核心的完整性约束全演示了一遍。先别急着执行把表结构读明白后面插入数据时你会少踩一半的坑。2.1 student 表学号用 char(20) 而不是 int主键和唯一键各管一件事CREATE TABLE student ( Sno char(20) NOT NULL, Sname char(20) DEFAULT NULL, Ssex char(2) DEFAULT NULL, Sage smallint DEFAULT NULL, Sdept char(20) DEFAULT NULL, PRIMARY KEY (Sno), UNIQUE KEY Sname (Sname) );这段建表语句里最值得琢磨的是 Sno 为什么用 char(20) 而不是 int。学号不参与任何算术运算还可能带前导零比如 021501 这种编号用 int 存会把前导零吃掉。char 是定长类型等值查询时比 varchar 略快代价是固定占满 20 个字符的空间这是教材为了演示常见工程写法给的余量不是随便拍的。Sage 用 smallint范围是 -32768 到 32767存年龄绰绰有余。真正有意思的是 UNIQUE KEYSname这一行——姓名在真实业务里根本不可能唯一重名是常态这里纯粹是为了演示“除了主键之外还能给普通列加唯一约束”。你可以在插入数据时故意再插一个李勇会收到 duplicate entry 报错那一下你对唯一约束的记忆会非常深刻。2.2 course 表Cpno 自引用外键把“先修课”关系画成一棵树CREATE TABLE course ( Cno char(4) NOT NULL, Cname char(40) NOT NULL, Cpno char(4) DEFAULT NULL, Ccredit smallint DEFAULT NULL, PRIMARY KEY (Cno), KEY Cpno (Cpno), CONSTRAINT course_ibfk_1 FOREIGN KEY (Cpno) REFERENCES course (Cno) );course 表里最容易看懵的是最后一行外键约束Cpno 引用的是 course 自己的 Cno。这叫做自引用外键语义是“先修课”。比如课程 1 是数据库它的 Cpno 指向 5数据结构意思就是“学数据库之前必须先修数据结构”。课程和先修课的关系像一棵树根节点是那些没有先修课的课程Cpno 为 NULL。MySQL 的 InnoDB 引擎允许外键引用同一个表的被索引列主键自带索引所以这个自引用约束能成立。但这里藏着一个大坑插入数据时如果你急着把 Cpno 一起写进去比如直接 INSERT 一条 (1, 数据库, 5, 4)而表里还没有 Cno5 的行外键检查会直接拒绝。这正是很多人在 PDF 配套练习里第一次报错的地方。注意这份建表语句没有写 ENGINEInnoDB。MySQL 8 默认就是 InnoDB没问题但如果你用的是旧版本且默认引擎是 MyISAM外键约束会被静默忽略甚至直接报错。建议建表时显式补上 ENGINEInnoDB。2.3 sc 表联合主键 (Sno, Cno) 挡住重复选课两个外键维持引用完整性CREATE TABLE sc ( Sno char(20) NOT NULL, Cno char(4) NOT NULL, Grade smallint DEFAULT NULL, PRIMARY KEY (Sno,Cno), KEY Cno (Cno), CONSTRAINT sc_ibfk_1 FOREIGN KEY (Sno) REFERENCES student (Sno), CONSTRAINT sc_ibfk_2 FOREIGN KEY (Cno) REFERENCES course (Cno) );sc 是成绩表联合主键 (Sno, Cno) 的意思很直白同一个学生同一门课只能有一条成绩记录你想插两条一模一样的选课记录进不来。这是数据完整性的典型设计防止业务层重复提交。两个外键约束分别指向 student 和 course也就是说 sc 表的数据依赖两张父表的数据。外键列上各加了一个 KEY这是 MySQL 的硬性要求——被外键引用的列和引用别人的列都必须有索引否则建表会报错。Grade 允许为 NULL这也合理学生可能选了课但还没考试或者缓考了Sno 和 Cno 先占位。到这里三张表的关系已经清楚了student 和 course 是父表sc 是子表course 自己引用自己。理解了这一层下一章的数据插入顺序就不是靠背而是靠推。3. 数据插入的两段式操作course 自引用外键的插入顺序与参数细节数据插入顺序是有依赖关系的不能想当然地从上往下执行。sc 引用 student 和 coursecourse 又引用自己的 Cno所以正确顺序只能是先建库建表再插 student然后 course 先插基础行再补外键列最后才轮到 sc。这个顺序理不清报错就是连环的。3.1 依赖顺序梳理student 先行、course 分两段、sc 收尾-- 第一步创建数据库指定字符集 CREATE DATABASE IF NOT EXISTS sql_test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE sql_test;先创建名为 sql_test 的数据库。IF NOT EXISTS 是个后悔药脚本重复执行不会报错适合学生反复练习的场景。字符集指定 utf8mb4 是为了让中文能正常存储如果你用的是这个语句却没指定字符集在部分 MySQL 版本上中文插入后可能直接变成问号。数据库创建完就执行第 2 章的三段 CREATE TABLE。全部建成功后插入顺序是先插 student 的四行数据再插 course 的基础行然后执行 course 的批量 UPDATE最后插入 sc 的成绩数据。course 必须拆成两步这一步卡住的人最多下面单独讲。3.2 course 两段式插入先造父行再补自引用外键列course 的插入在原文里被拆成了两段分段原因不是语句太长而是自引用外键的约束。第一段只插入 Cno 和 Cname让七门课的“父行”全部存在INSERT INTO course(Cno, Cname) VALUES (1, 数据库), (2, 数学), (3, 信息系统), (4, 操作系统), (5, 数据结构), (6, 数据处理), (7, PASCAL语言);这段执行后course 表里有七行但 Cpno 和 Ccredit 全是 NULL外键列是空的不参与约束检查所以不会报错。第二段再用 UPDATE 逐行把先修课编号和学分补上UPDATE course SET Cpno 5, Ccredit 4 WHERE Cno 1; UPDATE course SET Cpno 4, Ccredit 2 WHERE Cno 2; UPDATE course SET Cpno 1, Ccredit 4 WHERE Cno 3; UPDATE course SET Cpno 6, Ccredit 3 WHERE Cno 4; UPDATE course SET Cpno 7, Ccredit 4 WHERE Cno 5; UPDATE course SET Cpno 5, Ccredit 2 WHERE Cno 6; UPDATE course SET Cpno 6, Ccredit 4 WHERE Cno 7;为什么不能用一条 INSERT 带全字段搞定因为自引用外键要求被引用的行必须已存在。假设你第一条 INSERT 就写 (1, 数据库, 5, 4)此时表里还没有 Cno5 的课程 5外键检查当场失败。血泪经验是凡是自引用表先插不带外键列的基础行再回头 UPDATE 外键列这个思路可以通吃所有自引用场景。提示原文注释里说“此表含有 student 表的外键”这是笔误。course 表里没有 student 的任何字段它的外键是自引用指向 course.Cno。核对脚本时要以约束定义为准别被注释带偏。3.3 student 与 sc 的插入细节VALUES 列表语法、全角字符与字符集student 的数据原文用了四行单独的 INSERT可以合并成一条多值插入INSERT INTO student VALUES (201215121, 李勇, 男, 20, CS), (201215122, 刘晨, 女, 19, CS), (201215123, 王敏, 女, 19, MA), (201215125, 张立, 男, 19, IS);多值 INSERT 比逐行执行快也更适合放在脚本里一次性跑。注意性别和第二行“刘晨”的“女”字如果从 PDF 直接复制这两个字符可能是全角或异体字跟普通输入法打出来的“女”看起来一模一样但 MySQL 可能不认我在第 5 章会专门讲这个坑。sc 表的插入要放在最后因为它的外键依赖 student 和 course 的现有数据INSERT INTO sc(Sno, Cno, Grade) VALUES (201215121, 1, 92), (201215121, 2, 85), (201215121, 3, 88), (201215122, 2, 90), (201215122, 3, 80);这里五条记录里的学号和课号都必须真实存在。尤其是课号course 表里是 1、2 这种单字符字符串如果你写成 01MySQL 会认为这是一个不存在的课程外键检查直接报 1452 错误。char 类型存的是定长字符串比较时补空格逻辑容易让人产生“可能匹配上”的错觉实际一点余地都不给。4. 基于三张表的 SQL 查询练习从单表筛选到多表连接的常用题型三张表的数据量不大学生 4 人、课程 7 门、成绩 5 条但能练的查询一个都不少。我把练习按难度拆成三组每组都是先给 SQL 再讲逻辑。建议你自己先敲一遍再对照下面的说明真卡住了再来看答案。4.1 单表查询筛选、排序与模糊匹配-- 查询计算机系CS全体学生的学号、姓名和年龄 SELECT Sno, Sname, Sage FROM student WHERE Sdept CS;WHERE 子句筛选是 SQL 最基础的能力。Sdept 是 char(20)等值比较时 MySQL 会自动处理尾部空格所以 CS 能正确匹配。注意这里查询列只挑了三列Ssex 没查select 指定列的习惯值得从入门就养成少用 SELECT *。-- 查询年龄小于 20 岁的学生按年龄升序排列 SELECT Sname, Sage FROM student WHERE Sage 20 ORDER BY Sage ASC;ORDER BY 默认就是升序ASC 可写可不写但写出来能让别人一眼看懂你的意图。排序发生在筛选之后先 WHERE 取出满足条件的行再对结果排序这个执行顺序理解清楚写复杂查询时不会逻辑混乱。-- 查询姓“刘”的学生 SELECT Sno, Sname, Sdept FROM student WHERE Sname LIKE 刘%;LIKE 配合通配符 % 是模糊查询的入门操作。% 代表任意长度的任意字符刘% 匹配所有以刘开头的名字。如果换成 _刘% 表示第二个字是刘。这类模糊查询在刷题时出现频率很高值得多写几遍。4.2 多表连接把三张表串起来查成绩-- 查询每个学生的选课成绩显示学号、姓名、课程号和成绩 SELECT student.Sno, student.Sname, sc.Cno, sc.Grade FROM student JOIN sc ON student.Sno sc.Sno;JOIN 是多表查询的骨架。INNER JOIN 只返回两边都匹配的行这里 student 里的张立没有选课记录连接后不会出现他的行——这个细节是理解内连接和外连接的关键差异。我在第 6 章会给一条 LEFT JOIN 的版本你可以对比着看。-- 三表连接查询学号、姓名、课程名、成绩 SELECT student.Sno, student.Sname, course.Cname, sc.Grade FROM student JOIN sc ON student.Sno sc.Sno JOIN course ON sc.Cno course.Cno;三表连接是两个两表连接串起来的student 先和 sc 连接得到有成绩的学生中间结果再和 course 连接把课号换成课程名。写多表连接时JOIN 顺序会影响执行计划但对这套小数据量来说先把逻辑写对比优化更重要。-- 查询选修了“数据库”课程的学生姓名和成绩 SELECT student.Sname, sc.Grade FROM student JOIN sc ON student.Sno sc.Sno JOIN course ON sc.Cno course.Cno WHERE course.Cname 数据库;这个题型是考试高频先连接再 WHERE 过滤。执行顺序是先拿三张表做连接连接结果里筛选课程名为数据库的行最后 SELECT 出姓名和成绩。理解“连接在前、过滤在后”的执行逻辑比死记 SQL 顺序有用得多。4.3 分组聚合与子查询去重、计数和限定条件-- 统计每门课的选课人数和平均成绩 SELECT Cno, COUNT(*) AS 选课人数, AVG(Grade) AS 平均分 FROM sc GROUP BY Cno;GROUP BY 把 sc 表按课程分组COUNT(*) 统计每组行数AVG 算平均分。需要注意 AVG 会忽略 NULL 成绩如果一门课有学生没考试成绩平均分只算有成绩的人这个陷阱在面试里经常被拿来挖坑。-- 查询选课超过 1 门的学生学号和选课门数 SELECT Sno, COUNT(*) AS 选课数 FROM sc GROUP BY Sno HAVING COUNT(*) 1;HAVING 和 WHERE 的区别是常见考点WHERE 在分组前过滤行HAVING 在分组后过滤组。这里 COUNT(*) 1 选出选了不止一门课的学生结果里有 201215121 和 201215122 两个人。刷题的时候记得把 WHERE 和 HAVING 的执行顺序想清楚能少走很多弯路。-- 查询没有选课的学生姓名子查询 NOT IN SELECT Sname FROM student WHERE Sno NOT IN (SELECT Sno FROM sc);子查询先查出所有选过课的学生学号外层再查不在这个集合里的学生。这个写法在数据量小的时候没问题但子查询结果集很大时性能不理想可以用 NOT EXISTS 改写两者语义略有差异值得对比练习。-- 查询每门课程的课程名及其先修课名自连接 SELECT a.Cname AS 课程, b.Cname AS 先修课 FROM course a JOIN course b ON a.Cpno b.Cno;自连接是这套表最有价值的练习点。course 表自己跟自己连接a 是“当前课程”b 是“先修课”ON 条件把 a.Cpno 指向 b.Cno就查出了每门课的先修课。没有先修课的课程Cpno 为 NULL不会出现在内连接结果里想看完整列表得把 JOIN 换成 LEFT JOIN下一章会用到这个技巧。5. 常见问题排查外键失败、唯一键冲突与 PDF 复制语句的坑这一章是踩坑记录每条都是照着这份 PDF 练习时真会遇到的报错。我按现象、原因、解决三段式写你执行时报什么错直接对号入座。5.1 外键约束失败course 表带 Cpno 一起插入直接报错现象执行INSERT INTO course VALUES (1, 数据库, 5, 4)MySQL 报Cannot add or update a child row: a foreign key constraint fails。原因course 表的 Cpno 是自引用外键指向 course.Cno。插入这条记录时表里还没有 Cno5 的行外键检查认为你引用了一个不存在的父行直接拒绝。解决拆成两段。先用INSERT INTO course(Cno, Cname)把七门课的基础行都插进去再逐条UPDATE course SET Cpno ..., Ccredit ... WHERE Cno ...。UPDATE 时所有 Cno 都已存在外键检查必然通过。5.2 外键检查失败sc 表插不进去先查父表数据现象插入 sc 成绩时报 1452 错误提示a foreign key constraint fails但表里明明有学生也有课程。原因sc 的外键引用 student.Sno 和 course.Cno只要你插入的学号或课号在父表里不存在哪怕只差一个字符也会报错。常见诱因学号复制时带了不可见空格或者课号把 1 写成了 01。解决先执行SELECT Sno FROM student和SELECT Cno FROM course核对现有数据再逐条检查待插入的 sc 记录。用 TRIM(Sno) 对比能排除不可见空格干扰。养成插入前先查父表的习惯能省掉一大半外键报错。5.3 唯一键冲突student 表的 Sname 重复现象再次执行INSERT INTO student VALUES (201215126, 李勇, 男, 20, CS)报Duplicate entry 李勇 for key student.Sname。原因建表语句里写了UNIQUE KEY Sname (Sname)姓名字段被加了唯一约束重复值插不进去。解决确认业务上是否需要这个唯一约束。教材里加它是为了演示唯一键的用法实际生产环境学生表绝不应该对姓名做唯一约束。练习时要么换一个名字再插要么用ALTER TABLE student DROP INDEX Sname把约束去掉。5.4 中文乱码建库没指定字符集现象插入李勇、刘晨这些中文后查询结果显示???或者直接报Incorrect string value: \xC0\xEE...。原因数据库或表的字符集不是 utf8mb4MySQL 无法正确存储中文字符。旧版本 MySQL 的默认字符集可能还是 latin1中文根本存不进去。解决建库时显式指定字符集CREATE DATABASE IF NOT EXISTS sql_test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;如果库已经建了可以ALTER DATABASE sql_test CHARACTER SET utf8mb4再把表也转换一下。连接层面执行SET NAMES utf8mb4能避免客户端写入和库端编码不一致的问题。5.5 从 PDF 复制语句全角逗号、全角括号和异体字现象从 PDF 里复制建表语句到 MySQL 执行报错位置莫名其妙比如在某个逗号或括号附近syntax error。原因PDF 里的标点经常被排版成全角字符——全角逗号“”、全角括号“”、智能引号换成左右单引号还有原文里那个“⼥”康熙部首并不是真正的“女”。这些字符肉眼几乎分辨不出来但 MySQL 的语法解析器不认。解决复制后先做字符清洗。我在本地一般用一段简短的 Python 脚本处理import re with open(raw.sql, encodingutf-8) as f: sql_text f.read() sql_text sql_text.replace(, ,).replace(, ;) sql_text sql_text.replace(, ().replace(, )) sql_text re.sub(r[“”], , sql_text) sql_text re.sub(r[‘’], , sql_text) sql_text sql_text.replace(⼥, 女) with open(clean.sql, w, encodingutf-8) as f: f.write(sql_text)清洗完再打开编辑器看一眼重点检查字符串字面量里的引号是否成对。这个脚本花不了两分钟但能把一整天的排查时间省下来。从那以后我每次拿到 PDF 里的 SQL都先强制走一遍清洗再执行。6. 把练习表用得更顺批量造数、自连接自测与一个排错习惯6.1 批量生成选课数据用笛卡尔积把 sc 表补全这套练习表初始只有 5 条选课记录练聚合和连接勉强够用但想体验慢 SQL 优化或者测索引效果数据量根本不够看。常见的做法是用笛卡尔积批量造数据INSERT INTO sc(Sno, Cno, Grade) SELECT s.Sno, c.Cno, 60 FLOOR(RAND() * 40) FROM student s CROSS JOIN course c WHERE NOT EXISTS ( SELECT 1 FROM sc WHERE sc.Sno s.Sno AND sc.Cno c.Cno );CROSS JOIN 把 4 个学生和 7 门课两两组合出 28 种选课可能NOT EXISTS 过滤掉已经存在的 5 条只补缺失的组合。成绩用60 FLOOR(RAND() * 40)生成 60 到 99 之间的随机整数。注意 MySQL 的 RAND() 是按行计算的每次执行结果不同想固定成绩可以先把随机值写入临时表再插入。如果你用的是 SQL Server语法要换成ABS(CHECKSUM(NEWID())) % 40 60这类随机函数是各数据库差异最明显的地方。6.2 一条自连接 SQL 验证你对表结构的理解第 4 章给了自连接的内连接版本这里用 LEFT JOIN 再验证一次SELECT a.Cname AS 课程, b.Cname AS 先修课 FROM course a LEFT JOIN course b ON a.Cpno b.Cno;LEFT JOIN 以左表 course a 为基准即使某门课没有先修课Cpno 为 NULL也会显示出来只是右边先修课列是 NULL。执行后对照一下数据库的先修课是数据结构操作系统的先修课是数据处理PASCAL 语言没有先修课右边是 NULL。这跟建表时设置的 Cpno 完全对应说明你对自引用外键的理解到位了。如果结果跟预期对不上别急着改 SQL先回过头查 Cpno 的 UPDATE 是不是漏了行——这类问题 90% 出在数据上不是 SQL 上。从拆这份 PDF 到今天我每次拿到别人给的 SQL 脚本都强制自己先理一遍表间外键依赖再动手执行这个习惯帮我挡掉了不少插入顺序的坑。三张表看起来简单真能吃透它们数据库系统概论的完整性约束和连接查询这两块基本功基本就过关了。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Maestro 移动端 E2E 自动化实战指南:5 分钟跑通第一个 YAML 测试流程

Maestro 移动端 E2E 自动化实战指南:5 分钟跑通第一个 YAML 测试流程

Maestro 移动端 E2E 自动化实战指南:5 分钟跑通第一个 YAML 测试流程 【免费下载链接】Maestro Painless E2E Automation for Mobile and Web 项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro 移动端 UI 测试长期被框架、驱动和平台代码绑架&…

2026/10/12 1:52:01 阅读更多 →
深度学习毕设指南:非接触式掌静脉识别原理与PyTorch实战

深度学习毕设指南:非接触式掌静脉识别原理与PyTorch实战

简介:面向计算机视觉与生物识别方向的毕业设计,一套完整的非接触式掌静脉识别系统包含Python源码、论文文档与训练好的模型权重,可直接作为本科毕设或课程设计项目落地。包内共2000个文件,其中约1980张bmp格式掌静脉图像构成训练样…

2026/10/12 1:52:01 阅读更多 →
MFC集成MQTT实战:基于mosquitto C API的线程安全接入方案

MFC集成MQTT实战:基于mosquitto C API的线程安全接入方案

简介:本资源是一个基于MFC框架实现MQTT通信的完整Windows桌面应用工程,面向物联网开发初学者、C桌面应用开发者及嵌入式上位机工具编写者,解决在传统Windows GUI程序中集成轻量级物联网协议的实际需求。压缩包共30个文件,含8个头文…

2026/10/12 1:51:01 阅读更多 →

最新新闻

VHD本地缓存故障全解析:更新失败与磁盘膨胀的排查修复指南

VHD本地缓存故障全解析:更新失败与磁盘膨胀的排查修复指南

VHD跑久了,最烦人的不是系统崩了,而是你明明没装多少东西,C盘却莫名其妙红了。更头疼的是,任务栏弹个下载更新失败的提示,甚至应用商店、驱动更新都跟着罢工。我前后给好几台用VHD做多系统启动的机器排查过这类问题&am…

2026/10/12 2:44:34 阅读更多 →
PHP项目集成以太坊:web3.php从RPC连接到ERC20转账实战

PHP项目集成以太坊:web3.php从RPC连接到ERC20转账实战

简介:面向PHP开发者的以太坊区块链交互资源,以web3.php库为主线,讲解在PHP环境中操作以太坊私链的完整方法,包括读取区块、发送交易、调用智能合约、监听事件等典型场景,适合需要对接私链RPC节点、开展智能合约测试或搭…

2026/10/12 2:44:34 阅读更多 →
Java网上商城源码:从环境配置到跑通完整下单链路

Java网上商城源码:从环境配置到跑通完整下单链路

简介:一份针对网上商城业务的完整 Java Web 项目源码,适合 Java 初学者、毕业设计学生以及需要快速搭建商城原型的开发者。资源覆盖商品展示、购物车、用户登录、后台管理等典型模块,既可作为课程设计与毕设参考,也能用于理解 Ser…

2026/10/12 2:44:34 阅读更多 →
汽车制造JavaWeb图纸上传:分片与文件夹上传方案实战解析

汽车制造JavaWeb图纸上传:分片与文件夹上传方案实战解析

做汽车制造企业的JavaWeb系统,图纸上传这件事看着简单,做起来全是坑。尤其到了设计端、工艺端大面积推CATIA数模、AutoCAD底图、装配爆炸图的时候,单个文件动辄几十MB到几百MB,一个总成件装配树文件夹拖进来,大小轻易超…

2026/10/12 2:44:34 阅读更多 →
单链表操作实战:指针移动、增删反转与高频面试题全解析

单链表操作实战:指针移动、增删反转与高频面试题全解析

单链表这东西,我在面试别人和带新人时见过太多翻车现场。明明课本上都背过,一上手写就丢链、死循环、空指针三连。这篇我不想按教科书顺序讲,而是把链表操作里最容易出问题的地方、指针到底怎么动、代码怎么写才不崩,结合图文拆开…

2026/10/12 2:44:34 阅读更多 →
2026远程桌面选型指南:绕过NAT、低延迟、免客户端的实战方案

2026远程桌面选型指南:绕过NAT、低延迟、免客户端的实战方案

1. 这不是选软件,是选“第二台电脑”的使用权“远程桌面软件哪个好?”——这句话背后藏着的,根本不是技术参数对比,而是一个更现实的问题:我能不能把家里的主力电脑,当成随身携带的笔记本用?我试…

2026/10/12 2:43:33 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →