3、如何监控服务运行状态
点 仪表盘 右侧展开页面记录了服务器CPU使用率和内存占用情况 ,内存占用90%以内正常,超过90%Linux 会启用磁盘交换内存。
重点关注 后端服务和 判题系统 健康状态, 出现走失情况, SSH连接服务器 执行 sudo reboot 或者 微信小程序或者网页登录腾讯云控制台 执行 重启 操作 5分钟内服务会全起来。
三、移动设备端界面
系统适配移动设备 支持手机和平板电脑 ,方便家长和老师根据学员做题情况,主要是排名和评测结果。
四、题目快速分类
五、工具箱管理
默认添加如下:可以自行修改
单词练习
模板练习
算法动画
智能白板
GESP官网
OI Wiki
用户管理 一、批量导入(从方便管理角度建议以 学生姓名 作为 用户名 )
用户数据导入仅支持csv格式的用户数据。
共七列数据:用户名和密码不能为空,邮箱、真实姓名、性别、昵称和学校可选填,否则该行数据可能导入失败。第一行不必写(“用户名”,“密码”,“邮箱”,"真实姓名",“性别”,“昵称”,“学校”)这7个列名性别为男请使用“male”或“0”,女请使用“female”或“1”,不填默认为“secrecy”。excel表格保存为 csv 文件 用记事本打开,另存为,保存为UTF-8编码的文件,否则中文可能会乱码。
二、批量生成临时用户 后期修改成需要的用户名和密码 (学生登录后修改密码)
三、用户自行注册(填写邮箱获取验证码)该方式不方便管理,建议使用前两种方式。 四、管理员角色说明
教师账号 用户角色 题目管理员
五、学生等级头衔动态管理
Emoji表情大全 头衔支持emoji标签文字 复制粘贴即可
常用设置-用户管理
头衔自定义客户样例:(点击放大看)
文曲星 AC: 510题及以上
大学士 AC: 480题及以上
侍郎 AC: 450题及以上
詹士 AC: 420题及以上
御史中丞 AC: 390题及以上
翰林学士 AC: 360题及以上
府丞 AC: 330题及以上
编修 AC: 300题及以上
状元 AC: 270题及以上
榜眼 AC: 240题及以上
探花 AC: 210题及以上
进士 AC: 180题及以上
同进士 AC: 150题及以上
会元 AC: 120题及以上
贡士 AC: 90题及以上
解元 AC: 70题及以上
举人 AC: 50题及以上
秀才 AC: 40题及以上
书生 AC: 30题及以上
书童 AC: 20题及以上
判题模式 一、普通判题 逐字符对比
普通模式是程序在线评测平台(OJ)通用的判题模式,主要的实现逻辑步骤如下:
1、选手程序读取题目标准输入文件的数据
2、判题机执行代码逻辑得到选手输出
3、再将选手输出与题目标准输出文件的数据进行对比,最终得到判题结果
二、文件读写 freopen 判题
管理员修改题目标题添加英文单词(方便确定 输入输出文件名)(仿真CSP NOIP复赛) 养成习惯避免复赛暴零。
修改读写模式 为 文件IO ,填写指定的读写文件名。
IO模式题目左上角有明显标签,提示需要写的读写文件名。
#include
using namespace std;
int main() {
freopen("power.in","r",stdin);
freopen("power.out","w",stdout);
fclose(stdin);
fclose(stdout);
return 0;
未正确文件读写,不能通过评测。
判题结果说明 AC WA PE
三、特殊判题
特殊判题(Special Judge)是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的,而不是单纯地看提交的程序的输出是否和标准输出一模一样。
一般使用Special Judge都是因为题目的答案不唯一,更具体一点说的话一般是两种情况:
用例模式
OJ的测试用例评测模式有以下几种:
ACM题目:默认(全部评测)、遇错止评(顺序评测)
OI题目:全部评测(得分加和)、子任务(最低得分)、子任务(平均得分)
一、ACM题目
1.默认(全部评测)
用户提交的代码将运行所有的测试用例,然后汇总结果。如果全部测试点都符合预期,则评测状态结果为Accepted,否则遍历所有测试点结果,将第一个非Accepted的测试点的状态作为最终结果。
2. 遇错止评(顺序评测)
用户提交的代码将顺序运行所有测试用例,如果遇到某个测试点的结果(非Accepted)不符合预期,则评测结束,将该测试点的评测结果作为最终结果;否则一直遍历全部测试用例评测直至结束。
二、OI题目
1.全部评测(得分加和)
用户提交的代码将运行所有的测试用例,然后汇总所有评测点的得分和结果。如果全部测试点都符合预期,则评测状态结果为Accepted,得分为该题目的满分;否则遍历所有测试点结果,加和所有测试点的得分,作为该评测的最终得分。
2. 子任务(最低得分)
将全部测试用例按照配置的组数分成多个子任务评测组,每个子任务求该组测试点的最低得分,作为该子任务的得分,然后汇总加和所有子任务组的得分,作为该评测的最终得分。
三、客观题
四、ACM赛制、OI赛制、IOI赛制区别
ACM赛制:每道题提交之后都有反馈,可以看到“通过”、“运行错误”、“答案错误”等等结果,但看不到错误的测试样例(leetcode周赛可以看到),每道题都有多个测试点,每道题必须通过了所有的测试点才算通过。每道题不限制提交次数,但没通过的话会有罚时,仅以最后一次提交为准。比赛过程中一般可以看到实时排名,通过题数相同的情况下按照答题时间+罚时来排名。
ACM赛制的比赛:ICPC、CCPC、codeforces比赛、leetcode周赛及全国编程大赛、牛客小白赛练习赛挑战赛、传智杯。
OI赛制:每道题提交之后都没有任何反馈,每道题都有多个测试点,根据每道题通过的测试点的数量获得相应的分数。每道题不限制提交次数,如果提交错误没有任何惩罚,仅以最后一次提交为准。比赛过程中看不到实时排名,赛后按照总得分来排名。
OI赛制的比赛:NOI全国青少年信息学奥林匹克竞赛、CCF CSP、考研机试、蓝桥杯、牛客OI赛、全国高校计算机能力挑战赛。
IOI赛制:每道题提交之后都有反馈,可以看到“通过”、“运行错误”、“答案错误”等等结果,甚至可以实时看到自己每道题得了多少分,但看不到错误的测试样例。每道题都有多个测试点,根据每道题通过的测试点的数量获得相应的分数。每道题不限制提交次数,如果提交错误没有任何惩罚,仅以最后一次提交为准。比赛过程中一般可以看到实时排名(如果是考试,一般看不到排名),按照总得分来排名。可以说,IOI赛制是结合了OI赛制和ACM赛制的特点。
IOI赛制的比赛:PAT、团体程序设计天梯赛、CCF CCSP、洛谷月赛。
题目管理 一、导入导出 1. 导出题目
用于题目备份和迁移。点击选择需要的题目,便可以批量导出成一个zip压缩包,分别对应一个json格式的题目数据,一个对应名字的文件夹存放评测数据文件,具体的文件结构如下:
+-- problem_1000.json
+-- problem_1000
| +-- 1.in
| +-- 1.out
| +-- ....
+-- problem_1001.json
+-- problem_1001
| +-- 1.in
| +-- 1.out
| +-- ....
2. 导入题目
选择需要导入的题目数据zip压缩包,如果是自己做的题目需要批量导入请注意不要多一层文件夹进行压缩,请保证题目json文件的名字与其对应的存放评测数据的文件夹名字一致。
二、导入QDUOJ、FPS格式
请严格按照青岛oj的后台导出的压缩文件来上传。
请使用标准的FPS格式的题目数据文件(.xml) (单个文件超过100MB建议分割)
三、样例输入 样例输出 (支持多组) 提示(样例解析 数据范围)
参考以下模板:
去掉支持语言前面的勾选,一般保留 c++ 和Python3, 在提交页面默认C++, 学生选择一次Python3提交后下次默认Python3 ,可以切换改变。
四、如何添加题解
添加后效果:
六、上传测试数据
上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式
一、手动输入(平时老师出题或者录入教案中题目)
每次点击添加用例就可以手动填入该用例的输入与输出,该方式比较适合题目数据简单的,同时手动输入的题目数据将记录进数据库,下次对该题目进行修改可以直接获取,然后进行测试数据的修改,同时也会在服务器对应的testcase文件夹生成对应的文件。
二、文件上传(用于样例较多,或已经有单独题面和测试数据包)
对于普通题目,测试用例文件包括in、out、ans、txt四种扩展名
例如有两组测试用例,则对于普通题目测试用例的文件名分别为*.in, *.out(*.ans),或者*input*.txt, *output*.txt,其他形式的文件后台均不识别。
压缩时,请将文件都放在压缩包的根目录,而不是包含在某一个文件夹中,比如正确的格式是:
├── 1.in
├── 1.out
├── 2.in
├── 2.out
然后压缩测试用例到一个zip中
注意:不要在这些文件外面套多一层文件夹,请全选.in和.out文件,右键 添加压缩文件, 直接压缩。
建议:尽量减少测试用例组数,这会一定程度上提高判题性能。日常练习测试样例在精不在多。
七、修改题目难度-简单 中等 困难
题目管理 —题目列表
八、添加选择题和判断题
oj是代码的自动评测,还无法实现选择题和判断题的评测,变通方式如下:
训练题单
训练分为公开训练与私有训练,同时可自定义训练分类
两种训练其实都是题单功能,区别在于私有训练拥有记录榜单
1. 公开训练 2. 私有训练
与公开训练的区别:
系统同步用户对应题目数据的情况如下:
用于留课后作业 可以方便看到每位学员题目完成情况。
创建比赛 一、ACM 比赛模式
该模式是按照ACM-ICPC的比赛规则来进行,Contest设置项中的Seal Time Rank即为是否封榜,封榜后将不再刷新排名。可选择比赛结束前半小时,比赛前一小时,比赛全程封榜。
如果开启封榜,则封榜期间的角色不同如下:
封榜期间,超级管理员与比赛创建者不受影响,正常可查看题目统计数据,提交数据等,排行榜需自行开启强制刷新,同时提交结果可以及时看到评测结果,但不会纳入排行榜!封榜期间,普通用户与非比赛创建者(包括其它管理员角色),可以及时看到自己的提交结果,但不可看到别人封榜后的提交,不能看到题目的统计情况,排行榜保持封榜前的排名数据。
注意:比赛一结束,默认所有数据变成正常显示,但后台可以设置比赛结束继续封榜!
打星用户:不参与比赛排名。
二、OI 比赛模式
在OI模式下,选手的提交将根据得分点来计分,多次提交以最后一次提交(或选择以最高得分的提交)为准,排名规则为多个题目的总分数。同样可以进行封榜操作,封榜时段,选手不能查看到实时的排行榜数据!
比赛一结束,默认所有数据变成正常显示,但后台可以设置比赛结束继续封榜!
比赛权限
后台比赛题目列表管理页面如下:
教师在从公共题库中选择题目当作比赛题目时需要注意:大部分题目均有“题解AC程序”,从公共题库选择后需要修改题目:
操作如下:先将选手程序前面的对勾 点取消,待比赛结束后,再勾选恢复。
三、查询和导出比赛成绩排名
比赛结束后,可以csv电子表格格式导出比赛成绩和图片形式保存榜单。
深绿色为运行用时最短的记录。
团队功能-班级
团队可以看做是一个独立的小OJ,里面包含了现有OJ的题目、训练、比赛、评测、讨论、公告、排名等功能,其中各个团队的数据与OJ主站的数据完全隔离,各个团队可以自定义属于自己的题目、比赛、训练等,支持团队中的题目申请公开到主题库。
团队分为公开团队、保护团队、私有团队
一、创建团队
以下限制只对非普通管理员、题目管理员、超级管理员的普通用户:
三、管理团队
团队角色分为:
申请中申请被拒绝普通成员管理员超级管理员(创建团队的Owner也是超管)
注意:主站的超级管理员与创建团队的Owner拥有同等最高权限,拥有解散团队的权限
四、团队中添加训练(从公共题库或者团队题库添加题目)
找到创建的训练,点右侧 查看训练题目列表
点击 从公共题库添加题目 或者 从团队题库添加题目
通知和公告发布 通知和公告都仅有超级管理员可操作通知是系统消息通知,每个小时推送一次到用户的站内消息系统
直接操作数据库
OJ使用mysql数据库,部署时为了避免工具扫描破解已经修改端口,账户密码已经二开双重加密。
一、安装Navicat 连接数据库
Navicat 16.0破解版下载
二、数据库图形化操作 1、批量隐藏题目
修改 auth 字段 1 公开题目 2 私有(隐藏)题目 3 比赛题目 添加道比赛中 自动修改比赛题目
2、修改难度等级
修改 difficulty字段 0 简单 1 中等 2 困难 根据题目前缀 或者题号范围 筛选后 批量修改。
需要get的技能 1、查看学员提交代码
进入首页,点击评测,点击 C++ / python 语言栏即可查看 学员提交的代码及测试点正确/错误情况 (OI题目) 包含编译错误,方便教师答疑。如果修改了题目测试点,可以点击 重新评测 进行对此代码重新评测。
学员可以选择 “ 我的” 只查看自己提交代码通过情况。 管理员可以 筛选 题目ID 或者 输入学生用户名,只查看某位学员评测情况。
2、训练题单给学员布置作业
把上方地址栏里面生成的链接 复制粘贴给学员。
推荐:根据 作业内容 和 班级 日期建立私有训练,方便检查作业和统计排名。
3、撤销作弊记录
4、查看未通过测试点、下载评测数据
如果有题目部分通过或者 超时 点开提交页面的 结果 就可以看到哪些测试点没有通过。
管理员权限账号 进入后台管理 -题目管理-题目列表 输入题号或者题目名称(支持模糊查询)
找到题目, 点击 中间图标 下载评测数据压缩包 解压缩 找到未通过的的评测点 选择记事本打开。
5、怎么设置自己的域名 页脚悬挂备案号?
购买域名并备案:
域名购买
域名备案指南
备案通过后管理后台填写域名信息和查询地址