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 清华大学

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914581.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914581.shtml
英文地址,请注明出处:http://en.pswp.cn/news/914581.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux操作系统从入门到实战(十)Linux开发工具(下)make/Makefile的推导过程与扩展语法

Linux操作系统从入门到实战(十)Linux开发工具(下)make/Makefile的推导过程与扩展语法前言一、 make/Makefile的推导过程1. 先看一个完整的Makefile示例2. make的工作流程(1)寻找Makefile文件(2&…

NFS磁盘共享

步骤:注意事项‌:确保服务端防火墙关闭,或者允许2049端口通信,客户端需具备读写权限。服务器端安装NFS服务器:sudo apt-get install nfs-kernel-server # Debian/Ubuntu sudo yum install nfs-utils # Ce…

ORA-06413: 连接未打开

System.Data.OracleClient.OracleException:ORA-06413: 连接未打开 oracle 报错 ORA-06413: 连接未打开 db.Open();的报错链接未打开,System.Data.OracleClient.OracleException HResult0x80131938 MessageORA-06413: 连接未打开 关于ORA-06413错误(…

【PCIe 总线及设备入门学习专栏 5.1.2 -- PCIe EP core_rst_n 与 app_rst_n】

文章目录 app_rst_n 和 core_rst_n 的作用1. core_rst_n — PCIe 控制器内部逻辑复位作用控制方式2. app_rst_n — 应用层/用户逻辑复位作用特点两者关系图示:示例流程(Synopsys EP)rst_sync[3] 的作用详解(复位同步逻辑)为什么使用 rst_sync[3]?图示说明Synopsys 官方手…

Python初学者笔记第二十期 -- (文件IO)

第29节课 文件IO 在编程中,文件 I/O(输入/输出)允许程序与外部文件进行数据交互。Python 提供了丰富且易用的文件 I/O 操作方法,能让开发者轻松实现文件的读取、写入和修改等操作。 IO交互方向 从硬盘文件 -> 读取数据 -> 内…

Java JUC包概述

Java 的 java.util.concurrent(简称 JUC)包是 JDK 5 及以后引入的并发编程工具包,旨在解决传统线程模型(如 synchronized、wait/notify)的局限性,提供更灵活、高效、可扩展的并发编程组件。它极大简化了多线…

LeetCode--44.通配符匹配

前言:不知不觉又断更一天了,其实昨天就把这道题写得差不多了,只是刚好在力扣里面看见了一种新的解法,本来想写出来的,但是我把它推到今天了,因为太晚了,但是今天又睡懒觉了,所以我直…

WHAT - 依赖管理工具 CocoaPods

文章目录1. 什么是 CocoaPods?2. 如何安装 CocoaPods?(1) 确保已安装 Ruby(macOS 默认自带)(2) 安装 CocoaPods(3) 验证安装3. 在 React Native 项目中使用 CocoaPods(1) 进入 iOS 目录(2) 初始化 Podfile(如果不存在&…

C++ Boost Aiso TCP 网络聊天(服务端客户端一体化)

代码功能说明: 程序模式: 主动连接模式:当用户指定对端 IP 和端口时,尝试连接到对端被动监听模式:当用户未指定对端 IP 时,等待其他节点连接线程模型: 主线程:处理用户输入和消息发送接收线程:后台接收并显示对端消息关键组件: std::atomic<bool> connected:原…

WeakAuras 5.12.9 Ekkles lua

3.45猎人宝宝狼 技能恢复宏已知3.45BUG RL技能位会清空&#xff0c;小退大退 BB技能全部激活&#xff0c;修复以前可用宏一键恢复状态-------方法一&#xff1a;宏命令---------------------------------------------------------#showtooltip 狂怒之嚎 /petautocaston [btn:1]…

对于编写PID过程中的问题

当stm32RCT6使用位置环pid控制麦轮转动一定路程时&#xff0c;在这个时间段内想让一边轮胎速度加大应该怎么做&#xff1f;比如我pid的目标脉冲值为9000&#xff0c;在运行到3000的时候车偏左了&#xff0c;那我应该怎样让他回正&#xff0c;我想到的办法是增加其最大的脉冲值&…

LeetCode|Day13|88. 合并两个有序数组|Python刷题笔记

LeetCode&#xff5c;Day13&#xff5c;88. 合并两个有序数组&#xff5c;Python刷题笔记 &#x1f5d3;️ 本文属于【LeetCode 简单题百日计划】系列 &#x1f449; 点击查看系列总目录 >> &#x1f4cc; 题目简介 题号&#xff1a;88. 合并两个有序数组 难度&#xf…

【C++】初识C++(1)

个人主页&#xff1a;我要成为c嘎嘎大王 希望这篇小小文章可以让你有所收获&#xff01; 目录 前言 一、C的第一个程序 二、命名空间 2.1 namespace 的价值 2.2 namespace 的定义 2.2.1 正常的命名空间定义 2.2.2 命名空间可以嵌套 2.2.3 匿名命名空间 2.2.4 同名的name…

在新闻资讯 APP 中添加不同新闻分类页面,通过 ViewPager2 实现滑动切换

在新闻资讯 APP 中添加不同新闻分类页面&#xff0c;通过 ViewPager2 实现滑动切换 核心组件的作用 ViewPager2&#xff1a;是 ViewPager 的升级版&#xff0c;基于RecyclerView实现&#xff0c;支持水平 / 垂直滑动、RTL&#xff08;从右到左&#xff09;布局&#xff0c;且修…

vuex操作state为什么要使用mutations作为规范而不是直接修改state

1. 状态变更的可追踪性 (Trackable Changes)Devtools 集成&#xff1a;Vue Devtools 可以捕获每次 mutation 的执行记录&#xff0c;记录变更前后的 state 快照、参数和调用栈。直接修改 state&#xff1a;Devtools 无法检测到变更来源&#xff0c;导致调试困难&#xff08;如无…

Spring AI 系列之九 - RAG-入门

之前做个几个大模型的应用&#xff0c;都是使用Python语言&#xff0c;后来有一个项目使用了Java&#xff0c;并使用了Spring AI框架。随着Spring AI不断地完善&#xff0c;最近它发布了1.0正式版&#xff0c;意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

【数据结构】基于顺序表的通讯录实现

目录 1 顺序表的概念及结构 1.1 线性表 1.2 顺序表分类 1.2.1 静态顺序表 1.2.2 动态顺序表 2 顺序表的实现 2.1 顺序表的初始化 2.2 顺序表中数据的增加和修改 2.2.1 顺序表的头插 2.2.2 顺序表的尾插 2.2.3 顺序表的头删 2.2.4 顺序表的尾删 2.2.5 顺序表指定位置…

C语言与汇编混合编程

一、GCC 扩展语法与MSVC约束 &#xff08;一&#xff09;GCC&#xff08;GNU Compiler Collection&#xff09;内联汇编语法 asm("汇编指令");#或者 __asm__("汇编指令");#使用更复杂的语法来指定输入、输出操作数和修改的寄存器&#xff1a; asm volatile…

WPF中的ListBox详解

文章目录简介ListBoxItem选中项目动态列表简介 【ListBox】是列表控件&#xff0c;其内部可包含多个【ListBoxItem】&#xff0c;用户可以从列表中选择一个或多个项&#xff0c;若Item个数超过指定高度&#xff0c;则右侧会自动出现滚动条&#xff0c;非常便捷。尽管逻辑上来说…

【历史人物】【李白】生平事迹

目录 一、李白个人简历 二、个人主要经历 三、个人成就及影响 1、诗 2、词 3、书法 4、剑术 5、理想 四、历史评价 五、趣事 1、李白搁笔 2、赠汪伦 一、李白个人简历 基本信息‌ 姓名&#xff1a;李白&#xff0c;字太白&#xff0c;号青莲居士 性别&#xff1…