HOJ项目部署(Windows版)

        不久前,因毕设选的OJ判题相关的题目,在网上找了许多优秀的Java开源项目,其中详细学习了HOJ。

        相信看到这篇内容的读者,大都和我最初学这个项目时一样,不清楚怎样在Windows上部署(网上现有资源基本都只是对数据端运行在windows,判题服务运行在虚拟机、Docker或者服务器中),这样对学习判题服务实现或者条件不允许的同学不是很友好!这篇文章将详细介绍一种纯windows部署方式(仅开发过程使用——go-judge运行在windows会存在运行空间占用大等情况)

项目准备

项目拉取地址:

https://gitee.com/himitzh0730/hoj.git

后端包结构:

  • api包为项目所需pojo
  • DataBackup包为后端业务
  • JudgeServer包为判题业务

 Nacos安装

        在Nacos官网下载相关安装包(建议下载与作者相同版本,不然数据库配置会出现相关问题)或采用Docker安装 。(下载安装过程自行百度,不过多赘述)

配置修改(naocs/conf/application.properties)

在(nacos/bin)下启动后在浏览器访问:
localhosticon-default.png?t=N7T8http://localhost:8848/nacos

     账号密码均为nacos,出现页面则访问成功! 

 Nacos中密码加密后数据(nacos)

$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu

 下载配置完成的版本(⭐推荐):

        在学习过程中,我配置过新版本Nacos(新版nacos的数据库与作者给的不一致,需要更改表),可直接下载使用,相关放在个人公众号【HC Spaces】上,有需要的可直接获取。

Redis、MySQL安装

自行百度······

Databackup

        该部分为项目数据端,所有前端请求均发送至此。本部分主要修改bootstrap.yml、application-dev(prod).yml、Constant.java几个文件。

bootstrap.yml:只用修改nacos配置

application-dev(prod).yml:修改MySQL、Redis、邮箱、VJ账号

Constant.java(top/hcode/hoj/utils/Constants.java)

修改完成后即可启动项目。

JudgeServer

该部分为判题服务相关实现,需要修改bootstrap.yml、language.yml、Constant.java、LanguageConfigLoader.java、SandboxRun.java。

bootstrap.yml

language.yml:语言配置

此配置以C++、Java为例,其他类似!

---
language: C++
src_path: main.cpp
exe_path: main.exe
compile:
  command: E:/tools/gcc/mingw64/bin/g++.exe  -fmax-errors=1 -std=c++14 {src_path} -lm -o {exe_path}
  env: default
  maxCpuTime: 10s
  maxRealTime: 20s
  maxMemory: 512mb
run:
  env: default
  command: ./{exe_path}


---
language: Java
src_path: Main.java
exe_path: Main.jar
compile:
  env: java_compile
  command: C:\\Windows\\System32\\cmd /c E:/java/JDK/bin/javac -encoding utf-8 {src_path} && E:/java/JDK/bin/jar -cvf {exe_path} *.class
  maxCpuTime: 10s
  maxRealTime: 20s
  maxMemory: 512mb
run:
  env: java_run
  command: E:/java/jDK/bin/java.exe -Dfile.encoding=UTF-8 -cp ./{exe_path} Main

Constant.java(top/hcode/hoj/util/Constants.java)

LanguageConfigLoader.java(top/hcode/hoj/judge/LanguageConfigLoader.java):配置语言路径        

SandboxRun.java(top/hcode/hoj/judge/SandboxRun.java)

        默认开发环境无需修改。

SandBox

        可Docker部署或前往go-judge官网下载windows版本!同时也可前往个人公众号【HC Spaces】上直接下载获取。

前端

        前端部分无需修改内容,可直接下载运行,建议与作者相关软件版本一致!

也可尝试在配置文件添加:SET NODE_OPTIONS=--openssl-legacy-provider (版本问题),不一定能解决!

        到此为止,hoj后端以全部配置完成,可成功运行!初次写相关文章,若在文章存在问题请指正,同时文章为一时兴起所写,可能存在忽略的位置!后期会逐渐完善。

HC Spaces支持题目获取、个人优化项目hcoj源码获取、安装部署等技术支持~

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SpringBoot+SpringCloud+Vue的在线代码评委系统(OJ)源码+数据库+项目说明.zip # README-CN # OJ系统 开始开发 ## 环境准备 ​ 运行此程序必须要有**Ubuntu**系统, ​ Linux 内核本 >= 3.10 ​ jdk1.8本, ​ mysql8.0, ​ redis。 ### go-judge系统运行 **gojudge所需要的端口是5050** <a href="">go_judge手册</a>. 在Docker上运行 ~~~bash docker run -it --rm --privileged --shm-size=256m -p 5050:5050 criyle/executorserver ~~~ #### c/c++语言环境测试 **接下来我们打开postman进行测试已post形式发送请求http://IP:5050/run携带参数** ~~~java { "cmd": [{ "args": ["/usr/bin/g++", "Main.cc", "-o", "a"], "env": ["PATH=/usr/bin:/bin"], "files": [{ "content": "" }, { "name": "stdout", "max": 10240 }, { "name": "stderr", "max": 10240 }], "cpuLimit": 10000000000, "memoryLimit": 104857600, "procLimit": 50, "copyIn": { "Main.cc": { "content": "#include <iostream>\nusing namespace std;\nint main() {\nint a, b;\ncin >> a >> b;\ncout << a + b << endl;\n}" } }, "copyOut": ["stdout", "stderr"], "copyOutCached": ["Main.cc", "a"], "copyOutDir": "1" }] } ~~~ **我们服务器会给我们返回** ~~~bash [ { "status": "Accepted", "exitStatus": 0, "time": 726910000, "memory": 55812096, "runTime": 787566071, "files": { "stderr": "", "stdout": "" }, "fileIds": { "Main.cc": "4EK46KIB", "a": "LR567VHA" } } ] ~~~ **接下来我们根据Main的Id对他进行run** ~~~bash { "cmd": [{ "args": ["a"], "env": ["PATH=/usr/bin:/bin"], "files": [{ "content": "1 1" }, { "name": "stdout", "max": 10240 }, { "name": "stderr", "max": 10240 }], "cpuLimit": 10000000000, "memoryLimit": 104857600, "procLimit": 50, "strictMemoryLi

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值