Oracle课设实战:2009年考勤系统拆解与避坑指南
简介本资源是一份完整的Oracle数据库课程设计实践报告面向高校计算机、软件工程等专业学习数据库原理与应用的学生聚焦学生考勤系统这一典型教学管理场景系统覆盖需求分析、E-R建模、数据字典、表结构设计、表空间与对象创建等核心开发环节助力初学者掌握Oracle数据库从逻辑设计到物理实现的全流程能力。压缩包为单个Word文档.doc大小227KB内容详实含背景分析、六类用户角色需求拆解、三大功能模块说明请假/考勤/后台管理、E-R图描述、10余张核心表字段定义及创建脚本结尾附心得体会与参考文献。已有964人学习下载适合作为课程设计参考范本、期末项目模板或Oracle实践入门的结构化学习材料。1. Oracle数据库课程设计一份2009年辽宁工大考勤系统实录为什么今天还值得拆这不是一份“过时”的课设报告——它是一份被时间验证过的、完整闭环的Oracle工程切片。2009年当多数高校还在用Excel手工统计出勤、用纸质假条层层审批时辽宁工程技术大学软件学院的学生已用Oracle 10g从表空间路径/u01/oracle/oradata/可推断落地了覆盖6类角色、含审批流状态机权限隔离的考勤系统。它没用Java Web框架没上Tomcat核心逻辑全压在数据库层12张表定义清晰、3类数据库对象存储过程/视图/触发器全部实现、连datetime字段类型都按当时Oracle主流写法虽然后来知道该用DATE或TIMESTAMP。你可能觉得“老”但恰恰是这份“老”暴露了现代课程设计最缺的东西不依赖中间件的纯数据库思维。学生要自己建表空间、手写外键约束、用CHECK限制性别值、用DBMS_OUTPUT做业务告警——没有ORM遮羞没有Spring Boot自动装配所有数据一致性、权限边界、状态流转都得靠SQL和PL/SQL硬刚。如果你正卡在“学完Oracle语法却不会搭真实系统”、或“课程设计只会增删改查三板斧”这份报告就是你的后悔药它把需求分析→E-R建模→表结构→对象实现→业务验证的全链路钉死在16页PDF里。新手能照着建库跑通熟手能从中抠出权限分层、审批状态机、跨院系数据隔离等实战范式。2. 从需求到E-R模型六类用户如何驱动12张表的设计决策2.1 六类用户不是功能罗列而是权限与数据边界的源头课程设计开篇就明确划分学生、任课老师、班主任、院系领导、学校领导、系统管理员六大角色。这不是为了凑数而是直接决定数据库的访问控制粒度和数据可见范围。比如学生只能查自己stu_no关联的考勤记录所以kaoqin_record表必须有stu_number外键指向student院系领导只能看本院学生所以collegeleader表需关联faculty院系而考勤视图rjxy的WHERE条件强制student.stu_faculty5学校领导要全局数据但schoolleader表本身不存院系ID说明其查询需跨faculty表JOIN权限控制靠应用层而非DB层。提示这种“用户角色→数据范围→表关联”的映射是避免后期加权限时推倒重来的关键。很多课程设计失败根源在于初期没把用户需求翻译成外键和视图。2.2 E-R图里的“n1”和“mn”不是画着玩的它决定了主外键怎么建报告第3页的E-R图看似简单但每个连线都对应着物理表的关键设计学生与请假条是“1对多”一个学生可多次请假所以qingjia表中stu_no是外键且允许重复班级与班主任是“1对1”一个班一个班主任但classes表中classtea_no是外键而classteacher表主键是classtea_no说明班主任身份需独立建表而非直接存在班级表里——这是为后续班主任轮岗留扩展性教师与课程是“m对n”一门课多个老师教一个老师教多门课但报告中未建关联表实际kaoqin_record表里有teacher_no和course_no说明考勤记录承担了“授课关系”的事实表功能。这是典型的关系型数据库权衡宁可让考勤表冗余承载关系也不额外建teacher_course关联表——因为考勤是高频操作减少JOIN更高效。2.3 数据字典不是文档摆设它是DDL语句的原始依据第4页数据字典定义了10个核心实体每个“定义”都直指建表语句请假条信息 请假代号 班级代号 学生学号 ...→ 对应qingjia表字段id,class_id,stu_no学生信息 学号 姓名 性别 专业 院系 班级→ 解释了student表为何有stu_major,stu_faculty,stu_class三个外键字段特别注意status字段的业务含义“0等待审批1同意2不同意”这直接决定qingjia表中class_tea_sp_status和coll_leader_sp_status的CHECK约束写法报告里没写但你应该补上CHECK (class_tea_sp_status IN (0,1,2))。2.4 表结构设计中的“Oracle味”字符长度、空值、约束的取舍逻辑第5页表结构设计暴露了Oracle初学者的真实思考admin_no char(5)用CHAR而非VARCHAR2因管理员编号固定5位CHAR定长存储更省IO虽然现代Oracle差异极小但2009年这是常识student.stu_class char(13)外键引用classes.class_no但classes表中class_no char(10)——长度不一致这是典型疏漏实际建表会报错。正确做法是统一为char(10)或改用VARCHAR2kaoqin_record.sk_time datetimeOracle无DATETIME类型此处应为DATE含时分秒或TIMESTAMP。这是报告硬伤但恰好提醒你课程设计必须验证每个数据类型是否Oracle原生支持。3. 表空间与建表脚本手敲DDL前必须搞清的四个物理层陷阱3.1 表空间创建linpeng_data不只是名字它定义了数据文件生命周期报告6.1节的建表空间语句create tablespace linpeng_datadatafile /u01/oracle/oradata/tab01.dbf size 100M default storage(initial 512K next 128K minextents 2 maxextents 999 pctincrease 0) online;这段代码藏着Oracle DBA的底层逻辑datafile路径/u01/oracle/oradata/表明这是Linux环境且Oracle安装在标准路径意味着你能直接用ls -l /u01/oracle/oradata/确认文件是否存在size 100M是初始大小但maxextents 999限制了最大扩展次数若数据暴增会报ORA-01653表无法扩展。课程设计虽数据量小但你要养成习惯建表空间必配AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITEDpctincrease 0关闭百分比增长强制每次扩展next 128K这是为避免碎片化——对考勤系统这种写多读少的场景很关键。3.2 建表语句里的外键陷阱报告中3处致命错误必须手动修复报告6.2节的建表脚本有硬伤不修复根本跑不起来学生表外键引用错误stu_class char(5) foreign key references classes(class_no)问题classes表名在报告中是classes第11张表但前面E-R图和数据字典都叫班级且classes表定义中class_no char(10)而此处stu_class char(5)长度不匹配。修复统一为char(10)并确认classes表存在。请假表字段拼写错误day_number nubmer not null -- 注意nubmer 是 typo问题nubmer应为numberOracle会直接报错ORA-00907: missing right parenthesis。修复day_number number not null考勤表时间字段类型错误sk_time datetime not null问题Oracle无datetime类型必须改为DATE。修复sk_time DATE not null注意这些错误不是“报告不严谨”而是课程设计的真实场景——你永远在和手误、版本差异、文档滞后搏斗。我的习惯是建表前先用DESCRIBE查目标表结构再逐字段比对。3.3 外键约束的隐性成本级联删除该开还是关所有外键如stu_major number foreign key references major(major_id)都没加ON DELETE CASCADE。这是刻意为之学生删了专业不能删major表是静态基础数据但请假记录删了学生记录不该删student是主实体。 所以报告选择不启用级联靠应用层保证数据完整性。但你要知道如果真要加级联语法是FOREIGN KEY (stu_major) REFERENCES major(major_id) ON DELETE CASCADE不过考勤系统里更稳妥的做法是用ON DELETE SET NULL如删除专业时学生专业字段置空避免误删。3.4 字符集与NLS设置为什么中文能存进去却查不出来报告所有char/varchar2字段都存中文如admin_name char(10)但没提数据库字符集。2009年Oracle 10g默认可能是ZHS16GBK若你用AL32UTF8建库char(10)只能存5个中文UTF8下中文占3字节。验证方法连接后执行SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER IN (NLS_CHARACTERSET, NLS_NCHAR_CHARACTERSET);若字符集不兼容建表时必须用NVARCHAR2存中文例如admin_name NVARCHAR2(10) NOT NULL否则插入张三会报ORA-01401: inserted value too large for column。4. 数据库对象实战存储过程、视图、触发器如何协同完成业务闭环4.1 存储过程getMessage不是炫技是为解决“统计性能瓶颈”报告6.3.1节的存储过程create or replace procedure getMessage(stu_no in varchar2, course_no in varchar2, total_times out number) as absence_times number; begin select count(*) into absence_times from kaoqin_record where stu_numberstu_no and course_nocourse_no; total_timesabsence_times; end;表面看只是查个数量但深挖三层价值参数化封装学生查自己某门课缺勤不用每次拼SQL调用CALL getMessage(0820980113, ORCL101, ?)即可性能预编译PL/SQL块在数据库端编译比应用层拼SQL少一次网络传输和SQL解析可扩展性埋点现在只返回总数但absence_times变量可扩展为计算“缺勤率总数/总课时”只需加一行SELECT COUNT(*) FROM course_schedule WHERE course_no:course_no。提示课程设计常犯的错是把存储过程写成“SQL搬运工”。真正的好过程要像这个一样——输入明确、输出单一、逻辑内聚。4.2 视图rjxy用WHERE student.stu_faculty5实现数据权限的物理隔离报告6.3.2节的视图create view rjxy as select kaoqin_record.kaoqin_id, kaoqin_record.sk_time, ... from kaoqin_record, student where student.stu_nokaoqin_record.stu_number and student.stu_faculty5;这是典型的行级安全RLS雏形。院系领导登录后查SELECT * FROM rjxy自动过滤出软件学院ID5学生数据。但要注意两个坑性能隐患视图里用FROM kaoqin_record, student是旧式逗号JOIN易漏WHERE条件导致笛卡尔积。应改写为显式INNER JOINCREATE VIEW rjxy AS SELECT k.kaoqin_id, k.sk_time, k.stu_number, k.stu_status, ... FROM kaoqin_record k INNER JOIN student s ON k.stu_number s.stu_no WHERE s.stu_faculty 5;权限绕过风险视图只限制查询但院系领导若直接查kaoqin_record表仍能看到全部数据。必须配合GRANT SELECT ON rjxy TO collegeleader_role并REVOKE SELECT ON kaoqin_record FROM collegeleader_role。4.3 触发器alertMessage用AFTER INSERT实现业务规则的强一致性报告6.3.3节的触发器create or replace trigger alertMessage after insert on kaoqin_record for each row declare current_times number; begin select count(*) into current_times from kaoqin_record where stu_number:new.stu_number and course_no:new.course_no; if(current_times 3) then dbms_output.put_line(学号为 || :new.stu_number || 的学生该门课程被取消考试资格); end if; end;这是课程设计里最“硬核”的部分——它把业务规则缺勤3次禁考固化在数据库层任何应用Web/APP/命令行插入考勤记录都会触发。但必须处理三个现实问题并发安全若两个老师同时给同一学生录缺勤COUNT(*)可能查到旧值。应改用SELECT COUNT(*) INTO current_times FROM kaoqin_record WHERE ... FOR UPDATE加行锁输出不可见DBMS_OUTPUT.PUT_LINE在SQL*Plus里需先SET SERVEROUTPUT ONWeb应用根本看不到。生产环境应写入日志表alert_log状态持久化触发器只提示没更新学生状态。应追加UPDATE student SET exam_statusDISABLED WHERE stu_no:new.stu_number。5. 避坑指南运行这份2009年课设时90%的人会栽在这5个坑里5.1 现象建表时报ORA-00907: missing right parenthesis原因报告中qingjia表的day_number nubmer not null拼写错误nubmer不是合法类型另外kaoqin_record.sk_time datetime中datetime非Oracle类型。解决全文搜索替换nubmer为numberdatetime为DATE用DESCRIBE确认所有引用表如classes,student已存在且字段名匹配。5.2 现象插入学生数据时报ORA-02291: integrity constraint violated - parent key not found原因外键约束要求父表记录必须存在。例如插入student时stu_major101但major表里没有major_id101的记录。解决按依赖顺序建表——先建faculty院系再建major专业再建classes班级最后建student插入数据也按此顺序或用INSERT /* APPEND */批量导入时加ENABLE NOVALIDATE跳过约束检查仅测试用。5.3 现象执行SELECT * FROM rjxy返回空结果但kaoqin_record里有数据原因视图rjxy的WHERE student.stu_faculty5条件严格而student表中stu_faculty存的是院系名称如软件学院而非ID5。报告数据字典说stu_faculty是“所属学院”但表结构定义为number类型矛盾解决统一数据类型——要么stu_faculty改为VARCHAR2(20)存名称视图条件改为s.stu_faculty软件学院要么建faculty表student.stu_faculty存faculty_id确保faculty表中有faculty_id5的记录。5.4 现象存储过程getMessage编译成功但调用时报PLS-00306: wrong number or types of arguments原因过程有3个参数2个IN1个OUT但调用时没声明OUT变量。例如EXEC getMessage(0820980113, ORCL101);缺少接收total_times的变量。解决用匿名块调用DECLARE v_total NUMBER; BEGIN getMessage(0820980113, ORCL101, v_total); DBMS_OUTPUT.PUT_LINE(缺勤次数 || v_total); END;5.5 现象触发器alertMessage不触发或触发后报ORA-04091: table is mutating原因触发器里SELECT COUNT(*) FROM kaoqin_record试图查询正在被INSERT的表Oracle禁止这种“变异表”查询。解决改用复合触发器Oracle 11g或用PRAGMA AUTONOMOUS_TRANSACTION新建事务CREATE OR REPLACE TRIGGER alertMessage AFTER INSERT ON kaoqin_record FOR EACH ROW DECLARE PRAGMA AUTONOMOUS_TRANSACTION; current_times NUMBER; BEGIN SELECT COUNT(*) INTO current_times FROM kaoqin_record WHERE stu_number :NEW.stu_number AND course_no :NEW.course_no; IF current_times 3 THEN INSERT INTO alert_log VALUES (:NEW.stu_number, :NEW.course_no, SYSDATE, 取消考试资格); COMMIT; END IF; END;6. 进阶验证用3个SQL证明你的考勤系统真的跑通了业务流6.1 验证请假审批流从提交到生效的全链路追踪考勤系统的核心是“请假影响考勤结果”。我们用一条SQL验证学生A请假3天任课老师录课时系统是否自动判为“请假”而非“旷课”首先插入一条请假记录假设学生学号0820980113班级SJ08-1请假3天INSERT INTO qingjia(id, class_id, stu_no, leave_reason, start_time, end_time, day_number, qingjia_time, class_tea_id, class_tea_sp_status, class_tea_sp_time, coll_leader_sp_status, coll_leader_id, coll_leader_sp_time) VALUES(1, SJ08-1, 0820980113, 感冒, SYSDATE, SYSDATE3, 3, SYSDATE, CT001, 1, SYSDATE, 1, CL001, SYSDATE);然后模拟任课老师录入考勤stu_status应为请假而非旷课INSERT INTO kaoqin_record(kaoqin_id, sk_time, stu_number, stu_status, teacher_no, course_no) VALUES(KQ2024001, SYSDATE, 0820980113, 请假, T001, ORCL101);最后用以下SQL验证逻辑是否自洽-- 查看该学生当天考勤确认状态为请假 SELECT k.stu_number, k.stu_status, q.leave_reason, q.day_number FROM kaoqin_record k LEFT JOIN qingjia q ON k.stu_number q.stu_no AND SYSDATE BETWEEN q.start_time AND q.end_time WHERE k.stu_number 0820980113 AND k.sk_time TRUNC(SYSDATE); -- 查看该学生本学期所有考勤统计请假次数 SELECT COUNT(CASE WHEN stu_status 请假 THEN 1 END) AS 请假次数, COUNT(CASE WHEN stu_status 旷课 THEN 1 END) AS 旷课次数, COUNT(*) AS 总考勤次数 FROM kaoqin_record WHERE stu_number 0820980113 AND sk_time ADD_MONTHS(SYSDATE, -6);若第一条SQL返回leave_reason感冒第二条返回请假次数 0说明请假与考勤已打通。6.2 验证权限隔离用同一套数据不同角色看到不同视图创建三个测试用户赋予不同权限-- 创建院系领导用户 CREATE USER college_leader IDENTIFIED BY leader123; GRANT CONNECT, SELECT ON rjxy TO college_leader; -- 创建学校领导用户可查所有 CREATE USER school_leader IDENTIFIED BY leader456; GRANT CONNECT, SELECT ON kaoqin_record TO school_leader; GRANT SELECT ON student TO school_leader; -- 创建学生用户 CREATE USER student_user IDENTIFIED BY stu123; GRANT CONNECT TO student_user; -- 授予只查自己考勤的权限通过视图 CREATE VIEW my_kaoqin AS SELECT * FROM kaoqin_record WHERE stu_number 0820980113; GRANT SELECT ON my_kaoqin TO student_user;然后分别用各用户登录执行-- college_leader用户执行 SELECT COUNT(*) FROM rjxy; -- 应只返回软件学院学生考勤数 -- school_leader用户执行 SELECT COUNT(*) FROM kaoqin_record; -- 应返回全部考勤数 -- student_user用户执行 SELECT COUNT(*) FROM my_kaoqin; -- 应只返回该学生自己的考勤数若三者结果符合预期如rjxy返回120行kaoqin_record返回500行my_kaoqin返回8行证明权限模型落地成功。6.3 验证触发器业务规则缺勤3次自动禁考的实时性这是最考验数据库功底的环节。我们需要制造“第3次缺勤”观察触发器是否立即响应-- 先查该学生当前缺勤次数 SELECT COUNT(*) FROM kaoqin_record WHERE stu_number 0820980113 AND stu_status 旷课; -- 插入第1次旷课 INSERT INTO kaoqin_record VALUES(KQ2024002, SYSDATE, 0820980113, 旷课, T001, ORCL101); -- 插入第2次旷课 INSERT INTO kaoqin_record VALUES(KQ2024003, SYSDATE, 0820980113, 旷课, T001, ORCL101); -- 插入第3次旷课此时触发器应报警 INSERT INTO kaoqin_record VALUES(KQ2024004, SYSDATE, 0820980113, 旷课, T001, ORCL101);在SQL*Plus中执行最后一条INSERT后若看到学号为0820980113的学生该门课程被取消考试资格则触发器生效。但生产环境需将DBMS_OUTPUT改为写表因此建议同步创建日志表CREATE TABLE alert_log ( stu_no VARCHAR2(10), course_no VARCHAR2(13), alert_time DATE, message VARCHAR2(200) );并在触发器中改为INSERT INTO alert_log VALUES (:NEW.stu_number, :NEW.course_no, SYSDATE, 取消考试资格);从那以后我每次部署课程设计都强制走一遍这三步验证先跑通业务流请假→考勤再验权限隔离不同角色查不同数据最后压测触发器临界点行为。不是为了交作业而是训练一种肌肉记忆——当未来面对ERP、CRM等复杂系统时你能一眼看出哪个表是主实体哪个视图是权限出口哪个触发器在守业务红线。这份2009年的课设没有高大上的架构图只有扎进泥土的SQL和PL/SQL但它教会我的是数据库工程师最朴素的信仰数据在哪里规则就在哪里表建好了系统就活了。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

张正友标定法+OpenCV实战:相机内参标定与畸变校正指南

张正友标定法+OpenCV实战:相机内参标定与畸变校正指南

简介:这份资源是张正友相机标定法的OpenCV完整实现工程,面向计算机视觉初学者、图像处理课程学习者以及需要快速搭建标定实验的开发者,用于解决相机内参、外参求解与镜头畸变矫正问题。压缩包共93个文件、约13.83MB,包含2个cpp源码…

2026/10/12 0:43:22 阅读更多 →
Obsidian AI格式修复技能包:本地化Markdown标准化方案

Obsidian AI格式修复技能包:本地化Markdown标准化方案

1. 项目概述:当AI遇上Obsidian,笔记整理的“最后一公里”终于被打通 你有没有过这种体验:刚用AI把会议纪要、读书摘录、调研素材一股脑儿生成出来,兴冲冲复制进Obsidian,结果——标题层级塌了,代码块变成普…

2026/10/12 0:43:22 阅读更多 →
Cursor 实战:从 VS Code 迁移到 AI 辅助编程的工程实践

Cursor 实战:从 VS Code 迁移到 AI 辅助编程的工程实践

1. 为什么我要把 Cursor 当成主力开发工具第一次认真用 Cursor 是在一个跨平台图像处理的小项目上,当时手里已经有一套跑了两年的 VS Code 配置,插件装了几十个,快捷键肌肉记忆也定型了。换工具这件事我向来很谨慎,因为迁移成本不…

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

最新新闻

ERP数据库文档实战指南:从结构解析到增删改查与数据同步

ERP数据库文档实战指南:从结构解析到增删改查与数据同步

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 1:34:51 阅读更多 →
openJiuwen agent-core 工作流工具组件 ToolComponent 完全指南:从 Runner 工具注册到统一输出封装

openJiuwen agent-core 工作流工具组件 ToolComponent 完全指南:从 Runner 工具注册到统一输出封装

人工智能AI AgentAgent 框架大模型工具调用RAG提示工程强化学习 【免费下载链接】agent-core openJiuwen agent-core可提供AI Agent开发、运行、调优与演进相关的全套SDK能力 项目地址: https://gitcode.com/openJiuwen/agent-core 点击查看 免费下载 openjiuwen.c…

2026/10/12 1:34:51 阅读更多 →
Kun Tool Router 工具路由技能深度解析:在 Kun 中把请求路由到最窄的真实工具族

Kun Tool Router 工具路由技能深度解析:在 Kun 中把请求路由到最窄的真实工具族

人工智能AI Agent自主智能体桌面应用MCP Clients 【免费下载链接】Kun Local-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI. 项目地址: https://gitcode.com/gh_mirrors/de/Kun 点击查…

2026/10/12 1:34:51 阅读更多 →
从LED看STM32寄存器编程:地址、位运算与外设配置

从LED看STM32寄存器编程:地址、位运算与外设配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 1:34:51 阅读更多 →
LeetCode 884|两句话中的不常见单词:用哈希表统计词频的典型解法(InterviewGuide 题解)

LeetCode 884|两句话中的不常见单词:用哈希表统计词频的典型解法(InterviewGuide 题解)

文档教程知识库 【免费下载链接】InterviewGuide 🔥🔥「InterviewGuide」是阿秀从校园->职场多年计算机自学过程的记录以及学弟学妹们计算机校招&秋招经验总结文章的汇总,包括但不限于C/C 、Golang、JavaScript、Vue、操作系统、数据结…

2026/10/12 1:34:51 阅读更多 →
xdma驱动2019版本实战:编译、调优与避坑指南

xdma驱动2019版本实战:编译、调优与避坑指南

简介:这份资源为2019版XDMA驱动,面向使用Xilinx FPGA进行高速数据传输开发的工程师与学习者,可解决PCIe DMA通道搭建与驱动适配问题。XDMA驱动具备高吞吐量、低延迟特性,通常与Vivado 2019.2配合使用,也有搭配Vivado 2…

2026/10/12 1:33:50 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器: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 阅读更多 →