GoJudge环境部署本地调用云服务器部署go-judge判题机详细部署教程go-judge多语言支持

前言

  本文基于go-judge项目搭建,由于go-judge官网项目GitHub - criyle/go-judge: Sandbox Server in REST / gRPC API. Based on Linux container technologies.,资料太少,而且只给了C++语言的调用样例,无法知道其他常见语言比如:Python、Java等;同时go-judge也没有给出鉴权方式如何设置与调用,内部原理是啥? 因此本文结合自己搭建OJ系统的实践经验,耗时一周,总结了这篇文章,你可以按照文章步骤快速搭建一个基于go-judge完善的判题系统,支持C++、C语言、Java、Python3、Python2。

本文同时借鉴参考了HOJ、QDUOJ等其他开源OJ。

注意,文章中如若涉及楼主公网IP或者其他私有信息,请务必保密!

阅读本文你将了解:

(1)如何使用云服务器单独部署go-judge,不使用docker;

(2)使用docker如何部署go-judge服务;

(3)go-judge官方各项目介绍,中文文档补充;

(4)go-judge请求接口举例,以C++、C语言、Java、Python3、Python2为例,如需其他环境也可自行根据样例探索;

(5)go-judge启动参数如何设置,如何调整限制内存、CPU等参数;

(6)流程基于Linux宝塔面板搭建,你不需要对linux特别了解。

(7)常见问题处理:sudo apt-get update apt install执行慢的解决方法、GoJudge官网源码压缩包无法下载,Chrome浏览器等均提示有病毒,或者无法解压;Docker内安装语言包等问题处理;

(8)多机部署建议;

(9)教你如何基于Docker构建多语言支持的镜像,文章给了dockerfile文件,你可以基于他构建自己的镜像,本文支持C++、C语言、Java、Python3、Python2语言。HOJ的Dockerfile过于复杂,本文进行了精简。

全文目录

1 官网
2 部署流程
2.1 服务器部署
2.2 Docker部署(推荐)
2.3 构建全新镜像
2.4 隐患
2.5 构建镜像和容器命令
3 启动参数设置
3.1 所有参数
3.2 常用参数设置
4 请求接口
4.1 全部接口
4.2 Run接口举例
5 请求参数样例
5.1 C语言
5.2 C++
5.3 Java
5.4 Python3
5.5 Python2
6 常见问题解决
6.1 sudo apt-get update apt install执行慢的解决方法,更换镜像源
6.2 apt install g++报Unable to locate package
6.3 CentOS7系统需要开启User命名空间才能使用Docker部署沙箱
6.4 GoJudge官网源码压缩包无法下载,Chrome浏览器等均提示有病毒,或者无法解压
6.5 Git Clone时报错
6.6 Docker内安装语言包
7 附录
7.1 HOJ language.yml配置

1、官网

go-judge官网:https://github.com/criyle/go-judge

官方中文文档:https://github.com/criyle/go-judge/blob/master/README.cn.md

go-sandbox 官网 https://github.com/criyle/go-sandbox

go-judge是由REST / gRPC API实现的go-sandbox,底层是go-sandbox
部署go-judge有两种方式:
(1)直接服务器部署,用官网给的可执行文件;
(2)Docker部署,用官网给的命令,会基于官网镜像生成docker容器。
以上两种方式都不需要额外安装go环境,但判题环境比如c++,python等需要安装。

官网也给出了使用go-judge的例子:https://github.com/criyle/go-judger-demo
在该例子中,可基于Dockerfile.exec,构建自己的镜像,本文后续将给出如何构建一个自己的go-judge镜像,如何支持多编译环境等。

二、服务部署流程

(1)下载官网给的可执行二进制文件

自行根据自己的服务器版本选择,一般情况下是选这个:

由于go-judge资料欠缺,楼主耗时3天将部署流程整理成了手册(40页),如您需要可访问:go-judge判题机详细部署教程go-judge多语言支持_UUID资料库 获取,或者CSDN资源:https://download.csdn.net/download/liuning940307/89212973

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/567823.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python基础06-日期和时间的操作方法

在Python中处理日期和时间是编程中常见的需求,无论是安排任务、记录日志还是分析数据。本文将介绍如何在Python中获取当前日期和时间、创建特定日期和时间、格式化日期和时间、解析字符串中的日期和时间、使用时间差、比较日期和时间、从日期/时间中提取组件、处理时…

uni-app开发canvas绘图画画,如何实现后退功能

在uni-app中使用canvas进行绘图时,实现后退功能通常意味着你需要保存用户的每一步操作,然后提供一个机制来撤销最近的步骤。下面是一个基本的实现思路: 保存绘图步骤: 每当用户在canvas上绘制时(比如通过touchMove事件…

出海不出局 | 小游戏引爆高线市场,新竞争态势下的应用出海攻略

出海小游戏,出息了! 根据 Sensor Tower 近期发布的“2024 年 3 月中国手游收入 TOP30”榜单,出海小游戏在榜单中成了亮眼的存在。 其中,《菇勇者传说》3 月海外收入环比增长 63%,斩获出海手游收入增长冠军&#xff0c…

学习经验分享【33】YOLOv5 / YOLOv7 / YOLOv8 / YOLOv9 / RTDETR 基于 Pyside6 的图形化界面

大论文可以写两章关于算法创新模型,最后一章可以写对前两章提出方法进行封装,利用PyQT5搭建YOLOv5可视化界面,并打包成exe程序,构建检测平台实现简单的应用。用来凑大论文的字数和工作量,是简单又快速的方法&#xff0…

《龙之谷》游戏(客户端+服务端+视频架设教程+工具),本人收集的8个版本,云盘下载

龙之谷这个游戏本人觉得挺好玩的。你们可以下载研究一下看看,有能力的话,可以提取服务端文件出来,做成外网,让大家一起玩。。。。 《龙之谷》游戏(客户端服务端视频架设教程工具),本人收集的8个…

WEB前端-笔记(三)

目录 一、事件 1.1类型 1.2对象 1.3页面加载事件 1.4滚动事件 1.5尺寸事件 1.6捕获&冒泡事件 1.7阻止表单提交 1.8全选案例 1.9事件委托 ​编辑 1.10client&offset 1.11换取元素的位置 1.12创建节点 1.13克隆节点 1.14删除节点 1.15setTimeout 1.16s…

【后端】PyCharm的安装指引与基础配置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、PyCharm是什么二、PyCharm安装指引安装PyCharm社区版安装PyCharm专业版 三、配置PyCharm:四、总结 前言 随着开发语言及人工智能工具的普及&am…

MS1000TA超声波测量模拟前端

产品简述 MS1000TA 是一款超声波测量模拟前端芯片,广 泛应用于汽车工业和消费类电子。该芯片具有高度 的灵活性,发射脉冲个数、频率、增益及信号阈值 均可配置。同时,接收通道参数也可以灵活配置, 从而适用于不同尺寸容器、不…

Java——继承与组合

和继承类似, 组合也是一种表达类之间关系的方式, 也是能够达到代码重用的效果。组合并没有涉及到特殊的语法 (诸如 extends 这样的关键字), 仅仅是将一个类的实例作为另外一个类的字段。 继承表示对象之间是is-a的关系,比如:狗是动物,猫是动…

ROM修改进阶教程------安卓7_____安卓13去除签名验证操作步骤解析

同类博文: 安卓玩机搞机技巧综合资源-----修改rom 制作rom 解包rom的一些问题解析【二十一】_qcn改区域锁-CSDN博客 安卓系列机型rom修改。如果你删减了系统相关的app。那么严重会导致开机系统卡米 定屏等问题。这类一般都是系统签名验证导致的。而破解签名验证一般都是修改…

计算机java项目|springboot校园一卡通

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…

【Linux】文件系统——那就浅聊一下吧

前言 在上一篇文件描述符详解中谈论的都是打开的文件,但是在我们的系统中不仅有打开的文件还有许多未打开的文件,那么这些未打开的文件又该如何理解呢?阅读完本篇文章相信你会得到答案。 如果觉得文章内容对你有所帮助的话,可以给博主一键三…

请编写函数fun,该函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

PLSQL数据库

目录 什么是PLSQL数据库 PL数据库的实现方法 PL数据库的基本语法 1.作用 2.语法 3.赋值输出 4.引用 5.异常处理 6.if 判断 7.loop循环 8.while循环 9.for循环 10.游标 11.参数游标 12.索引 13.分区表 什么是PLSQL数据库 PL/SQL(Procedure Language/…

Ansible 指定受控端使用Python的版本

最近在装Ansible,有一台受控端Ubuntu16的服务器,安装了Python2.7.12和Pyhon3.5。当用Ansible连接它时,显示使用的是Python3.5。最后看文档,发现Ansible可以在hosts的文件中指定受控服上运行的Python。 现象 受控端 查看Python版…

STM32 ADC转换器

一、ADC简介 ADC(Analog-Digital Converter,模拟-数字转换器),可以将引脚上连续变化的模拟量转换为内存中存储的数字量,建立模拟电路到数字电路的桥梁 模拟量:时间和幅值均连续的信号,例如&…

IDC首份中国数据安全市场图谱发布,天空卫士实力入选多个版块

IDC于近日发布了《Market Glance:中国数据安全市场图谱,2024》(Doc# CHC51544524,2024年3月)报告,展示了中国数据安全市场的构成和格局,遴选出不同细分市场领域的主要技术服务供应商&#xff0c…

大模型-入门小知识

大模型是什么 大量参数(上亿)深度学习模型 人工只能包含机器学习,深度学习,深度学习包括大模型 单个神经元的计算模型: 大模型是怎么训练的 之前是算法(神经网络)----> 训练(门槛降低&…

工业设备管理平台

在这个数字化、智能化的新时代,工业设备管理平台正成为推动工业转型升级的重要力量。在众多平台中,HiWoo Cloud以其卓越的性能、稳定的服务和创新的理念,赢得了广大用户的青睐。今天,就让我们一起走进HiWoo Cloud的世界&#xff0…

python与上位机开发day02

1.常见运算符 1.1 赋值运算符 赋值运算符主要用来对变量进行赋值,包括如下这些: 运算符描述赋值加等于-减等于*乘等于/除等于//整除等于%模等于**幂等于 实例如下: a 10 a 5 # 等价于 a a5 a *2 # 等价于 a a*21.2 比较运算符 比较运算符主要用来比较两个数据的大小…