https://space.bilibili.com/700332132?spm_id_from=333.788.0.0
- 实验内容
- 爬虫
- Web系统设计
- 数据分析
- 实验指导
- 爬虫
- Web系统设计
- 自然语言处理与信息检索
- 数据可视化
- 评分标准
- FAQ
- 实验二:在线评测系统
- 实验概述
- 实验内容
- Step1:题目管理
- Step2:题目评测
- Step3:评测列表
- Step4:用户管理
- Step5:日志与权限
- Step6:持久化存储
- Adv1:特殊题目评测
- Adv2:前端交互
- Adv3:安全机制
- Adv4:代码查重
- API 文档
- 评分标准
- FAQ
- 仓库拉取教程
- 附录:本地 Git 安装与配置指南
目录
- 实验目标
- 技术要求
- 基础模块(必做,共30分)
- 进阶模块(选做,最多加10分)
- API 文档
- 评分标准
- 学习资源
- 致谢
OJ 系统实验说明¶
本实验作业参考了清华大学韩文弢老师 Rust 程序设计训练 OJ 大作业(作业背景)。
实验目标¶
构建一个小型但功能完整的 Online Judge (OJ) 系统,分阶段实现,逐步掌握系统设计、API开发、安全控制等核心能力。
快速入门可参考快速入门文档。
技术要求¶
异步编程实践:本次作业要求使用 FastAPI 的异步接口(async def)完成所有 API 开发,目的是让大家初步体验异步编程的概念和用法。异步编程是现代 Web 开发的重要技术,有助于提高应用程序的并发性能。不使用异步编程接口将拿不到本次作业分数,请同学们务必注意。
项目规模:为了让大家初步体验较大项目的开发,本次作业代码行数预计在两千行左右,请同学们合理规划时间,做好进度管理。
提交规范:要求按照 Conventional Commits 规范编写 Git 提交信息,不符合规范的提交将酌情扣分。
基础模块(必做,共30分)¶
Step名称主要功能描述详细文档Step1配置解析题目配置加载、字段校验、异常处理step1.mdStep2评测控制程序执行、资源限制、输出比对、动态注册语言step2.mdStep3用户系统用户注册/更新、权限管理、人工判题接口step3.mdStep4任务状态管理评测任务流转、调度、APIstep4.mdStep5评测日志日志结构化记录、日志接口、权限step5.mdStep6数据持久化数据存储、备份恢复、持久化结构与接口step6.md
进阶模块(选做,最多加10分)¶
Advance名称主要功能描述Adv1Special Judge特殊题目评测,支持多种评测方式Adv2前端交互极简前端界面(如 Streamlit),与后端交互Adv3安全机制Docker 容器控制、命令过滤、资源限制Adv4代码查重查重算法实现、抄袭检测
API 文档¶
所有接口、参数、异常、状态码等详见 api.md。
评分标准¶
参见 requirements.md
学习资源¶
- 技术教程:
- 系统设计基础
- Python 异步编程
- Docker 容器技术
- 参考项目:
- Codeforces - 知名OJ平台
- LeetCode - 编程练习平台
- HackerRank - 技术评测平台
程序设计训练(Python)keg-course 清华大学