在线判题系统hustoj的搭建

[云服务器6] 使用HustOJ搭建一个在线OJ系统 至此,你已经成功搭建了一个HustOJ在线评测系统。你可以根据需要进一步配置和优化系统,加上自己的题目等。希望这篇博客能帮助到你,祝你在编程的道路上越走越远! 阅读详情
AI摘要

本文详细介绍Hustoj在线判题系统的搭建流程,包括系统与软件环境配置、项目下载及安装配置等步骤,并针对搭建过程中的常见问题提供了解决方案。此外,还深入探讨了OJ系统的安全性问题。

摘要:ACM/ICPC程序设计竞赛,越来越受到各个高校的重视,是程序设计竞赛中的奥林匹克。Hustoj是搭建在linux系统上的判题系统。能够判断代码的正确性。会及时返回通过或者不通过,如果不通过会返回具体原因。所以这个系统很适合ACM队员在上面做一些练习。每个学校有必要有自己的OJ,hustoj虽说是开源,有搭建教程。但是在搭建过程中还是会有一些问题。所以针对这些问题,给出了我的解决办法。

ACM/ ICPC programming competition, more and more attention by variouscolleges and universities, is the design competition in the OlympicGames. Hustoj is built on the linux system on the problem system.Able to determine the correctness of the code. Will be returned intime or not through, if not passed will return to specific reasons.So this system is very suitable for ACM players in the above to dosome practice. Each school need to have their own OJ, hustoj althoughit is open source, there are structures tutorial. But in the processof building or there will be some problems. So for these questions,given my solution.


关键字:在线判题系统hustoj搭建OJlinux搭建OJ


引言


ACM比赛越来越受到高校重视,这是一个能够提高大学生编程能力的好平台。各个学校的ACM队员都需要在自己的OJ上刷题,做练习,还需要出题,因为出题能够很好的锻炼一个人,思维能力。如果你能出题说明你对这个知识点理解比较透彻,而不是直接敲的模板(照着代码抄上去的)。除此之外,每个高校也会不定期的举办校赛,什么的,举办校赛,很多比赛普遍用的是PC^2,对于用过PC^2的人来讲,还可以。不过这个用软件容易不小心交错文件。在线判题系统这类问题会相对比较少,其次,在线判题系统的搭建过程也比PC2简单一点。流程少,如果懂一点php还可以添加一些小功能。Hustoj是开源项目。举办比赛是没什么问题的。大型比赛也没什么问题。因为他有远程判题,多台机器进行判题任务。虽说网上博客也很多,但是实际在弄的过程也会出现很多问题。所以本文主要说说搭建hustoj过程,以及常见问题。以及简单的说说如何使用。让学校举办比赛变得容易一点。目前没找到hustoj的开发文档,这样不利于二次开发,说一说该项目结构,一边后人开发有所参考。



  1. 安装流程

1.1系统要求

该项目是运行在linux系统上的,所以必要的环境是需要一台linux电脑。对于没有linux电脑的,可以将一台windows装成ubuntu系统,具体如何装可以参考百度上面的教程,推荐使用hustoj的镜像,方便易用。装系统就不多说了,网上教程很多。随便找一个。

1.2软件环境需要

到此,假设系统已经装好了。现在需要安装一些hustoj的一些必须的软件。因为hustoj的开发者是使用php+mysql,所以这些环境是必须需要的。由于linux文件的权限比较安全,如果是新手会遇到很多问题,如果只是短期比赛,局域网的比赛那么用root账户是没什么大问题的。如果是搭建公网上面的OJ,还是建议将用户的文件权限设置好,文件的所属用户设置好,解决安全性的问题。

下面以ubuntu14.04为例,服务可以选择apache或者nginx。

首先切换到root账户,如果root没有设置,请用你装系统时用的账户修改密码

sudopasswd root

根据提示修改密码后


suroot

切换到root,安装相应软件

apt-getinstall update

apt-getinstall php5.0

apt-getinstall apache2

apt-getinstall mysql-server

apt-getinstall mysql-client

apt-get-f install

我们装好了必要的软件。

1.3下载项目

到github上找到hustoj下载下来。

下载地址https://github.com/zhblue/hustoj[1]。

解压后或得到几个文件

                                       图1


解压后文件如图1。Wiki是该项目的说明。我们需要的文件是trunk这个文件夹里面的。进入文件夹trunk会有图3这些东西。Install里面是安装的脚本,core是判题服务的代码,web是前端的文件。


1.4web配置


因为我们装的是apache,所以我们把web文件夹里面的东西放到/var/www/html/                                          

所以,我们进入删除 html目录                                   

                         图2

rm-r /var/www/html/

mvweb/ /var/www/html

chown-R www-data:www-data /var/www/html/                                           

用浏览器进入看看web是否安装成功。如果如图2所示就代表前端安装成功了。

图3

下面就是修改配置文件,配置文件在/var/www/html/include/db_info.inc.php

用vim打开他修改它对应的信息。


static$DB_HOST="localhost";数据库的服务器地址

static$DB_NAME="jol";数据库名

static$DB_USER="root";数据库用户名

static$DB_PASS="root";数据库密码//connect db

static$OJ_NAME="HUSTOJ";OJ的名字,将取代页面标题等位置HUSTOJ字样。

static$OJ_HOME="./";OJ的首页地址

static$OJ_ADMIN="root@localhost";管理员email

static$OJ_DATA="/home/judge/data";测试数据所在目录,实际位置。

static$OJ_BBS="discuss";//"bbs"论坛的形式,discuss为自带的简单论坛,bbs为外挂论坛,参考bbs.php代码。

static$OJ_ONLINE=false;是否使用在线监控,需要消耗一定的内存和计算,因此如果并发大建议关闭

static$OJ_LANG="cn";默认的语言,中文为cn

static$OJ_SIM=true;是否显示相似度检测的结果。

static$OJ_DICT=false;是否启用在线英字典

static$OJ_LANGMASK=1008;//1mC2mCPP 4mPascal 8mJava 16mRuby 32mBash 1008 for security reason tomask all other language 用掩码表示的OJ接受的提交语言,可以被比赛设定覆盖。

static$OJ_EDITE_AREA=true;//是否启用高亮语法显示的提交界面,可以在线编程,无须IDE。

static$OJ_AUTO_SHARE=false;//true:自动分享代码,启用的话,做出一道题就可以在该题的Status中看其他人的答案。

static$OJ_CSS="hoj.css";默认的css,可以选择dark.css和gcode.css,具有有限的界面制定效果。

static$OJ_SAE=false;//是否是在新浪的云平台运行web部分

static$OJ_VCODE=true;是否启用图形登录、注册验证码。

static$OJ_APPENDCODE=false;是否启用自动添加代码,启用的话,提交时会参考$OJ_DATA对应目录里是否有append.c一类的文件,有的话会把其中代码附加到对应语言的答案之后,巧妙使用可以指定main函数而要求学生编写main部分调用的函数。

static$OJ_MEMCACHE=false;是否使用memcache作为页面缓存,如果不启用则用/cache目录

static$OJ_MEMSERVER="127.0.0.1";memcached的服务器地址

static$OJ_MEMPORT=11211;memcached的端口

static$OJ_RANK_LOCK_PERCENT=0;//比赛封榜时间的比率,如5小时比赛设为0.2则最后1小时封榜。

static$OJ_SHOW_DIFF=false;//显示WrongAnswer时的对比[2]



1.5判题服务的搭建

进入图3的core目录里面,找到make.sh。首先chmod+x make.sh 然后运行这个文件.接着编译好后会出现两个可执行程序分别把这两个程序放在/usr/bin里面。

#!/bin/bash

#beforeinstall check DB setting in

# judge.conf

# hustoj-read-only/web/include/db_info.inc.php

# and downhere

#and runthis with root


#CENTOS/REDHAT/FEDORAWEBBASE=/var/www/html APACHEUSER=apache

WEBBASE=/var/www/html

APACHEUSER=www-data

DBUSER=root

DBPASS=root


#try installtools

sudo apt-getinstall make flex g++ clang libmysql++-dev php5 apache2 mysql-serverphp5-mysql php5-gd php5-cli mono-gmcs subversion

sudo/etc/init.d/mysql start


sudo yum -yupdate

sudo yum -yinstall php httpd php-mysql mysql-server php-xml php-gd gcc-c++ mysql-devel php-mbstring glibc-static flex

sudo/etc/init.d/mysqld start


sudo svncheckout https://github.com/zhblue/hustoj/trunk/trunkhustoj-read-only


#create userand homedir

sudo /usr/sbin/useradd -m -u 1536 judge




#compile andinstall the core

cdhustoj-read-only/core/

sudo./make.sh

cd ../..

#install weband db

sudo cp -Rhustoj-read-only/web $WEBBASE/JudgeOnline

sudo chmod-R 771 $WEBBASE/JudgeOnline

sudo chown-R $APACHEUSER $WEBBASE/JudgeOnline

sudo mysql-h localhost -u$DBUSER -p$DBPASS < db.sql


#create workdir set default conf

sudo   mkdir /home/judge

sudo   mkdir /home/judge/etc

sudo   mkdir /home/judge/data

sudo   mkdir /home/judge/log

sudo   mkdir /home/judge/run0

sudo   mkdir /home/judge/run1

sudo   mkdir /home/judge/run2

sudo   mkdir /home/judge/run3

sudo cpjava0.policy  judge.conf /home/judge/etc

sudo chown-R judge /home/judge

sudo chgrp-R $APACHEUSER /home/judge/data

sudo chgrp-R root /home/judge/etc /home/judge/run?

sudo chmod775 /home/judge /home/judge/data /home/judge/etc /home/judge/run?


#boot upjudged

sudo cpjudged /etc/init.d/judged

sudo chmod+x  /etc/init.d/judged

sudo ln -s/etc/init.d/judged /etc/rc3.d/S93judged

sudo ln -s/etc/init.d/judged /etc/rc2.d/S93judged

sudo/etc/init.d/judged start

sudo/etc/init.d/apache2 restart

sudo/etc/init.d/httpd restart


执行完这些语句,重启之后就可以了。

1.6添加超级管理员


然后在浏览器上进入注册界面。注册一个账户,之后进入数据库修改数据库,添加超级管理员。意思就是将那个用户插入到表privilege。图4是表privilege的结构。在数据库执行执行插入sql语句。

insert intoprivilege(user_id,rightstr) values('admin','administrator');

图4

如果一切正常这就代表你的OJ搭建好了。但是在搭建的过程中总不是一帆风顺的。


2搭建过程中常见问题

2.1搭建好web后在浏览器不能访问

首先有可能是apache没有正常运行,或者没有给web正确的文件权限。看看web配置文件是否修改正确。打开配置文件看看,经常填错的数据库用户名和数据库名,再或者就是将配置文件改坏了,比如删掉了双引号,导致代码编译错误。这些问题解决办法,很简单我就不再多说了。所以在安装apache的时候我们可以一个一个排除问题。先看看apache是否在正常运行。可能是apache没有正常打开用命令查看apache是否正常运行。

/etc/init.d/apache2status

如果出问题了就得去apache官网查查帮助文档。解决了这个问题,看看php和apache有没有弄好,看看apache能不能解析运行php代码。可以在/var/www/html/index.php写上一段测试代码,试试能不能输出helloworld,如果不能说明apache没有加载php模块。

问题一个一个排除,这几个问题排除之后还不能运行,就很可能文件在下载或者解压的过程中文件有所损坏。

2.2不判题可能原因

首先看看判题机的配置文件写好了没,配置文件

目录为:/home/judge/etc/judge.conf


OJ_HOST_NAME=127.0.0.1如果用mysql连接读取数据库,数据库的主机地址

OJ_USER_NAME=root数据库帐号

OJ_PASSWORD=root数据库密码

OJ_DB_NAME=jol数据库名称

OJ_PORT_NUMBER=3306数据库端口

OJ_RUNNING=4judged会启动judge_client判题,这里规定最多同时运行几个judge_client

OJ_SLEEP_TIME=5judged通过轮询数据库发现新任务,轮询间隔的休息时间,单位秒

OJ_TOTAL=1老式并发处理中总的judged数量

OJ_MOD=0老式并发处理中,本judged负责处理solution_id按照TOTAL取模后余数为几的任务。

OJ_JAVA_TIME_BONUS=2Java等虚拟机语言获得的额外运行时间。

OJ_JAVA_MEMORY_BONUS=512Java等虚拟机语言获得的额外内存。

OJ_SIM_ENABLE=0是否使用sim进行代码相似度的检测

OJ_HTTP_JUDGE=0是否使用HTTP方式连接数据库,如果启用,则前面的HOST_NAME等设置忽略。

OJ_HTTP_BASEURL=http://127.0.0.1/JudgeOnline使用HTTP方式连接数据库的基础地址,就是OJ的首页地址。

OJ_HTTP_USERNAME=admin使用HTTP方式所用的用户帐号(HTTP_JUDGE权限),该帐号登录时不能启用VCODE图形验证码,但可以登录成功后启用。

OJ_HTTP_PASSWORD=admin密码

OJ_OI_MODE=0是否启用OI模式,即无论是否出错都继续判剩余的数据,在ACM比赛中一旦出错就停止运行。

OJ_SHM_RUN=0是否使用/dev/shm的共享内存虚拟磁盘来运行答案,如果启用能提高判题速度,但需要较多内存。

OJ_USE_MAX_TIME=1是否使用所有测试数据中最大的运行时间作为最后运行时间,如果不启用则以所有测试数据的总时间作为超时判断依据。[3]


这个是配置文件的注释,按照你想要的,数据库密码正确填写,这里写配置文件不需要添加引号.重启判题机,由于有很多依赖kill命令不能够干掉这个进程,所以需要用到-9这个参数。题目的测试数据如果不能够上传,可能是/home/judge/data/这个目录文件读写权限有点问题,我们可以直接把他设为777

chmod -R 777/home/judge/data/


3 hustoj的文件结构

3.1前台文件结构

                                      图5

后台管理的相关文件admin,管理的相关php文件;

bbs是讨论版的相关代码;

template是前台的一些模板,flat-ui,bs,bs3。

其他是一些插件的包含文件。

3.2判题部分的文件结构

data  etc log  run0  run1  run2  run3

判题部分,文件,data是放测试数据的文件夹,里面还是文件夹,文件夹名字是题目的id,每个题目一个文件夹,文件夹里面是输入输出,可以是多组测试数据。多组测试数据文件名字相同的看的是后缀.in是输入文件。同样的文件名对应的.out文件是输出文件。如果不是特判就是简单对比文件是否一样,如果是特判,那么特判需要自己写一个特判的规则,放在当前的文件夹。etc/文件夹是放判题的配置文件以及判题的服务程序,和主程序。Run0~3 对应的文件夹是编译用户提交代码并运行的地方。里面是一个小的linux环境,边沟编译运行代码。



4.OJ安全性问题

评测鸡的实现,已经有了很多不考虑安全问题的版本。因此这里只讨论安全问题。


我大概把评测攻击分为两部分:编译时攻击、运行时攻击。


编译时攻击


编译时攻击是很多评测鸡并没有防范的。例如下面几种攻击情况:


编译超时


#include</dev/random>      # Linux

#include<CON>              # Windows


这种攻击方式的原理是,让编译器读一个永远也读不完的文件,把评测鸡卡死在编译阶段。BZOJ已经被这段代码卡掉很多次了。


示例:提交记录#3019- PYOJ

解决办法:设置编译的时间限制,或者用vfk的办法,把编译器监控起来。


输出巨大文件


我们在做数论题的时候玩过这种事情:inta[10000000]={1,0},这样编译出来的文件会特别大。在我的机器上,它的大小是39MB。


我们想到,让编译器生成一个极大的文件。下面是一个针对gcc的编译炸弹,从wikicoding.org蒯来的。全文如下:


main[-1u]={1};

编译这段代码之后,会生成16GB的文件。


示例:提交记录#2912- PYOJ

解决办法:设置编译出来的可执行文件的大小限制。


include攻击

include攻击同时被vfleaking(UOJ)和李扬(QDUOJ)描述。向二位致敬。


include攻击是指:用C/C++代码include网站的配置文件,然后通过返回的编译错误信息,读取密码。


例如。对于hustoj,可以采用下面的代码:


#include"/var/www/JudgeOnline/include/db_info.inc.php"


这份代码将会include数据库的配置文件。上交这份代码,将会返回如下的编译信息:



事发后,hustoj的这个漏洞已经在一年前修复。


示例:提交记录#3020- PYOJ

我的解决方法:


评测鸡和服务鸡必须隔离。

设置好文件权限(hustoj就是这样修复漏洞的)。

最好不要告诉用户编译错误的信息。

vfk的解决办法:把编译器监视起来。


另外riteme提出了另一种鬼畜的解决办法。见[漏洞报告]include攻击&middot;Issue #14 &middot; hzxie/voj 。


需要注意的一点:不要想着用检查用户代码的形式规避攻击。C/C++的define功能可以轻易绕过这些检查。



运行时攻击


运行时攻击,已经有比较好而且通用的解决方案。解决这个问题难度并不大。


运行系统指令


system("shutdownnow");


这种攻击方式很早就被解决了。


示例:提交记录#3021- PYOJ

解决方法:用沙箱跑评测,可以采用ptrace。但是我准备用一种更暴力的方案。直接把程序扔进docker里面跑,它爱玩成什么样就玩成什么样吧233。


fork炸弹

曾经有OJ被选手程序不停地fork()搞炸了。


我没有拿到代码,因此这里没法分析。


故意运行超时


while(1):pass

然后突然交一大堆这种程序,以达到类似DDOS的效果&hellip;&hellip;


这种东西很没技术含量。下面是一份针对hustoj的脚本:


https://gist.github.com/Ruanxingzhi/9f0caba5e2d8a690ae1e89bcfb92abba

效果是用1000个账号,每个账号提交10次,每个账号在提交之后休息11s。

体现为:两分钟内,OJ上面多了一万份提交。


解决方法:注册的时候设置验证码,如果一个账号短时间内多次提交,在这个账号下一次提交的时候也需要验证码。


请注意,注册的时候,只用邮箱验证,不用验证码是不行的!

总结


我玩了这么久的OJ,一共也就发现这几种攻击方式&hellip;&hellip;

但是好像很多OJ对编译时攻击防范并不好。

点蜡烛。希望OJ做得越来越好吧。[4]

以上是知乎大神总结的,还有就是通过插件的漏洞进行攻击,比如kindedit之前的漏洞,可以绕过cookie上传文件。对了,最好把配置文件弄成judge用户不可以操作的权限。这样数据库密码免得泄露了。


时间、资源的限制:

内存:我使用了rlimit进行控制,同时也方便在运行结束后获得内存使用情况的数据,不过有一个&ldquo;缺点&rdquo;就是如果是声明了一个超大的空间但从未访问使用就不会被统计进来(经过观察发现很多ACM或者OI比赛也都是这么处理的,所以应该不算是一个问题)。

时间:首先同样也是使用rlimit进行CPU时间控制。注意它只能控制CPU时间,不能控制实际运行时间,所以像是sleep或者IO阻塞之类的情况是没有办法的,所以还在额外添加了一个alarm来进行实际时间的限制。按照大部分比赛的管理,最终统计的时间是CPU时间。

文件句柄:同样可以通过rlimit来实现,以保证程序不要打开太多文件。不过其实文件这一块问题是比较多的,如果可行的话最好还是使用stdio然后管道重定向,完全禁止程序的文件IO操作。

访问控制:

通过chroot建立一个jail,将程序限制在指定目录中运行。由于是比赛程序,使用的动态链接库很有限,所以直接静态编译,从而使得运行目录中连.so都不需要。

进行必要的权限控制,例如将输入文件和程序文件本身设置为程序的运行用户只读不可写。

权限控制:

监控程序使用root权限运行,完成必要准备后 fork并切换为受限用户(比如nobody)来运行程序。

rlimit 设置的都是hardlimit ,非root无法修改。

正确设置运行用户之后,之前由root创造的jail受限用户是无法逃出的。

系统调用控制:

上面这些(尤其是第一步)是有很大问题,就算不是root,也还能做到很多事情。且不说fork之类的,光是那个alarm,就可以很轻松的把计时器取消了或者干脆主动接收这个信号。所以最根本的还是需要使用ptrace之类的调试器附着上程序,监控所有的系统调用,进行白名单+计数器(比如exec和open)过滤。这一步其实是最麻烦的(不同平台的系统调用号不一样,我们使用的是strace项目里头整理的调用号)。

更进一步:

如果你对操作系统更熟悉,那么还有一些更有趣的事情可以做。比如Linux下的seccomp功能(seccomp- Wikipedia ,ChromeLinux 版就在沙盒中使用了这个技术),尤其是后期加入了seccomp-bpf之后变得更加易用。还比如SELinux也可以作为defend-by-depth的一环。另外,cgroup其实也可以用得上。

结束语

搭建了hustoj,只会这些还不够,最好自己写一下判题机什么的,要深入了解学习才有收获。如果只是按照教程弄一下,并不会有很大的收获。作为了名ACM理解判题原理是很有用的,这样对解题也是很有用的。学无止境。


参考文献

[1]ZHBLUE,HUSTOJWIKI,https://github.com/zhblue/

[2]LIUXINGDEBLOG,hustoj永久等待或编译并评判解决方法hustoj,https://www.myvary.cn/index.php/2016/05/11/hustoj-ing/,2016-05-11

[3]OMG_BY,在linux上ubuntu搭建hustOJ系统,http://www.cnblogs.com/OMG-By/p/5978831.html

[4]RUANXINGZHI,OJ技术思考:评测安全,https://zhuanlan.zhihu.com/p/26984739

【笔记】HUSTOJ开源在线评测系统使用心得 本人使用HUSTOJ开源在线评测系统已经有一些时间了,下面和大家分享一下本人的一些使用心得,读者们如果有其它的使用心得,可以在评论区和大家一起分享。 一、搭建网站 (1)关于如何在云服务器搭建HUSTOJ网站,在百度上有很多教程,可以参考下面这个网址中的操作进行搭建: https://github.com/zhblue/hustoj (2)如果想在本地自己的服务器搭建网站,可以关注hust... 阅读详情

相关推荐

最新版HUSTOJ本地及云端服务器搭建

HUSTOJ是现在使用较多的开源OJ之一,而且最近HUSTOJ也在一直改版,一直更新,最近也更新了最新版本 其实HUSTOJ搭建还是比较简单的,搭建的时候首先要明确所使用的系统,建议使用Ubuntu 14.04系统,不建议使用Ubuntu 16.04 ,更新之前使用16.04搭建O不能使用,更新之后不太清楚了,所以还是使用14.04,比较稳妥 HUSTOJ所使用的环境是Ubuntu系统,Apa...

Boss_Xie的博客 9017

HUSTOJ 使用手册和功能介绍 hustoj 部署搭建步骤 常见问题117问 自动在线评测系统

添加题目时,可以在test input/test output添加一组测试数据,大规模的数据(10kb+)和更多的数据,可以在添加完题目后,通过ftp/sftp,上传到题目对应目录,通常是 /home/judge/data/题号。另外,比赛题目如果在比赛还没开始的时候,就在练习中出现,则会有漏题的嫌疑,类似某网络原题赛。题目添加后,默认是停用状态,以防比赛提前漏题,后台中点击ProblemList,找到题目,点击Reserved 切换为Available启用题目,或者组织比赛,比赛中的题目将自动启用。

星卯教育-信奥教练tony 1万+

hustoj - 流行的OJ系统,跨平台、易安装、有题库

hustoj -- 流行的OJ系统,跨平台、易安装、有题库

hustoj在线判题平台详细搭建二开及美化过程(ubuntu20.04 / centos7.9)常见问题解决

阿里云 腾讯云 华为云 镜像选Ubuntu22.04LTS,物理机安装Ubuntu22.04 Server。

星卯教育-信奥教练tony 5297

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 811

Qt Creator菜单栏消失的终极修复指南:从快捷键冲突到设置恢复

本文详细解析了Qt Creator菜单栏消失的常见原因及修复方法,包括快捷键冲突排查、配置文件重置和界面模式切换等解决方案。特别针对Qt开发者遇到的菜单栏显示问题,提供了从简单快捷键操作到深度配置修改的全方位指南,帮助用户快速恢复Qt Creator的正常使用。

weixin_27240351的博客 338

HUSTOJ(2019)在线判题系统的搭建

  最新的2019踩坑搭建过程请看这里 -->  点这里       2018-记一次基于Ubuntu 16.04的HUSTOJ在线判题系统的搭建 关于hustoj的搭建教程 网上有很多很多  而且开源的hustoj现在已经 几乎是 傻瓜式安装   但是今天早上还是搞了四个多小时...

xiaonuolen 1906

一文了解ECU软件刷写的2种方法:Bootloader刷写和调试器刷写

分为刷写前、刷写中和刷写后三个阶段,如下示意:下面我们来详细了解一下Bootloader收到外部请求后开始刷写的三个阶段1)刷写前进行刷写的准备,一是确保刷写阶段总线通信的稳定性,二是避免刷写阶段出现非预期的故障,三是读取车辆数据供刷写前的一些检查等,如下所示:首先进行会话控制,通过功能寻址方式进入扩展会话模式,为后面的信息访问及其他指令做准备;然后检查刷写的前提条件,通过物理寻址方式发送历程控制请求。比如车确实处于静止状态,供电电压稳定等条件下才允许刷写;

menghuyouyou的博客 5786

HUSTOJ(2019)在线判题系统的从零开始搭建过程

目录 HUSTOJ(2019)在线判题系统的搭建 一:配置LAMP环境 二:安装HUSTOJ 三:管理数据库: 四:配置oj 五:oj优化 六:将web文件夹内容放入文件夹/var/www/html 中(最重要) 七:其他操作(此处无需用到) 八.博客参考 HUSTOJ(2019)在线判题系统的搭建 注意:此为2019年1月版本,最新版本安装以官网为准 一:配置LAMP环...

smile吖 9892

Spring AI Alibaba Skill 实战:定义、注册与渐进式披露的企业级落地

摘要:很多团队在接入大模型时,第一步做到的是“能对话”,第二步遇到的瓶颈却是“不能可靠执行”。Skill 的本质不是给模型多几个函数,而是把企业系统中的可控能力,以可治理、可审计、可扩展的方式交给 Agent。本文围绕 Spring AI Alibaba Skill 的定义、注册与渐进式披露,结合电商客服与售后场景,系统讲清楚其底层原理、架构设计、生产级实现、高并发治理与工程实践。@Component@Tool(description = "根据订单号查询订单状态、支付状态和物流状态")扫描包含。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 623

YOLO格式数据集划分

YOLO格式的数据集划分 标题标签格式txt import os import cv2 import random from PIL import Image # os.makedirs('labels_train') # os.makedirs('labels_val') img_train_path ='./img_train/' #图片训练集保存路径 img_val_path = './img_val/' #图片验证集保存路径 labels_train_path = './labels_t

weixin_51154380的博客 3308

2019最新超详细HUSTOJ在线判题系统及Virtual Judge的搭建

一、HUSTOJ的安装 为了熟悉linux系统及各种命令,最近在电脑上装了Ubuntu16.04,在尝试安装HUSTOJ的过程中碰到各种问题,分享一下。 在网上查博客也有2019安装OJ的,关于HUSTOJ的搭建教程,网上真的是有很多很多,而且现在开源的HUSTOJ的搭建已经几乎是傻瓜式的安装。 但我还是推荐官方的HUSTOJ安装说明:https://github.com/zhblue/husto...

ityanger的技术栈 2万+

YOLOv8改进,YOLOv8添加DCNv3可变性卷积,无需编译

DCNv3在DCNv2版本上进行了改进,上一期我们在YOLOv8中添加了DCNv2,这一期我们将添加DCNv3,DCNv3代码详解可以参考链接:代码详解——可变形卷积(DCNv3)

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 5021

基于Ubuntu 16.04的HUSTOJ在线判题系统的搭建

打开Ubuntu终端键入sudo apt-get update此命令为了升级Ubuntu软件库接下来键入sudo apt-get install subversion安装subversion然后从svn获取hustoj 键入sudo svn co https://github.com/zhblue/hustoj/trunk/trunk/install hustoj 进入hustoj目录cd hus...

LadonDU的博客 2257

机器人环境仿真软件:Gazebo_(6).传感器仿真

通过 Gazebo 和 ROS,我们可以方便地配置和使用多种传感器,进行机器人环境的仿真和调试。传感器仿真不仅帮助我们验证和测试机器人的感知能力,还可以在真实部署前发现和解决潜在的问题。本节详细介绍了如何在 Gazebo 中配置激光雷达、摄像头、IMU、声纳和 GPS 传感器,并展示了如何在 ROS 中接收和处理这些传感器数据。此外,还介绍了多传感器融合的基本方法和调试工具,希望这些内容能对你的机器人仿真工作有所帮助。

kkchenjj的博客 1389

计算机视觉学习路线图:从入门到专家

计算机视觉学习路线图:从入门到专家​ ,人工智能,计算机视觉,大模型,AI,计算机视觉学习路线图从七方面展开。先强调数学基础,含线性代数、概率统计和微积分;接着介绍 Python、OpenCV 等编程语言与工具;涵盖边缘检测、特征提取等经典算法;阐述深度学习中 CNN 结构、经典模型及实现;涉及目标检测、图像分割等高级专题;包含图像分类、目标检测和人脸识别等项目实战;最后提及科研进阶的论文阅读、项目参与和论文发表,助学习者从入门到专家。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7万+

基于hustoj的在线判题系统的搭建

hust网站源码链接:https://github.com/zhblue/hustojLinux系统版本:ubuntu-14.04.5-server-amd64安装方法:wget https://raw.githubusercontent.com/zhblue/hustoj/php7/trunk/install/install-ubuntu16.04.sh chmod +x install-ubu...

你身后的人 1774

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

在Ubuntu22.04桌面版搭建hustoj编程在线判题系统详细教程

(ii)/home分区的大小往往与用户自身对程序代码、数据等的需求相关,即用户需要在该分区下放哪些相关的资源,不少应用的默认下载地址就在/home/Username/programming_name等。分区安装与普通安装的区别,就是和window系统一样,设置 C、D、E、F磁盘,当然Linux系统也类似,这样子的好处就是当Ubunut系统崩溃后重装系统,我们还可以保留Home用户数据区,避免用户数据(代码和文档)丢失。安装时选择"其他安装",删除原来的分区后重新分区。Ext4日志文件系统。

hcj1880855的博客 1370

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

HUSTOJ平台的搭建

HUSTOJ平台的搭建 公网网址:http://39.97.249.103/test.html(2020.11.20左右白嫖服务器到期) 首先,你要有一个服务器,本次记录的是阿里云Ubuntu18.04平台下的搭建 搭建LAMP环境(LAMP指的Linux(操作系统)、ApacheHTTP服务器,MySQL(有时也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建立web应用平台。) 键入 sudoapt-...

weixin_46428419的博客 1691

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

hustoj搭建

一,背景 Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。Hustoj 作为一个开源的项目,帮助到了很多学校建立起了属于自己的在线ACM 评测系统,在这里我将各方面资料以及我实际安装运行中的各种问题,汇总起来,供大家参考 二,环境搭建 由于husto...

qq_42896005的博客 1219

腾讯云服务器 Ubuntu 16.04 搭建 HUSTOJ 在线判题系统

1,购买服务器,选择阿里云或者腾讯云都可以,我选择的是腾讯云,因为有学生优惠,好像阿里云也有。 2.配置服务器,按照我的配置就行。 登录云服务器,云产品-云服务器-登录 输入密码登录服务器。 3.配置 HustOj 在 GitHUb 地址是:https://github.com/zhblue/hustoj 下载 wget https://raw.githubusercont...

larry1648637120的博客 1195

2019最新最全HUSTOJ本地及云端服务器搭建(基于腾讯云服务器)

  在刚接触ACM的时候,对于那些在线测评的网站很感兴趣,就在网上搜索了一下,在Github上发现了一个有趣的项目,然后在Github 上获取 了HUST OJ 的开源项目代码,根据网上的教程踩了无数的坑终于安装成功了!!!!! 接下来就和大家分享一下我的安装过程,请务必看完这几段话在动手安装,看完保证你能成功安装~ 若你想在本地搭建HUSTOJ:Ubuntu14.04STL+Apach...

weixin_33897722的博客 1056
上一篇: deepin软件中文乱码
下一篇: DFS序+线段树(bzoj 4034)
Code--Dream
博客等级 码龄11年 53粉丝 100原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值