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

 

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

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

相关文章

java 校验排序是否有交叉

import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date;public class TimeOverlapChecker {public static void main(String[] args) {// 1. 获取待判断的时间段列表ArrayList<Time…

API 渗透测试学习资源

API概述及其分类 API&#xff0c;即应用程序编程接口&#xff0c;是一组规则和协议&#xff0c;允许不同的软件应用程序相互通信。它定义应用程序可用于请求和交换信息的方法和数据格式。API 用于实现不同系统之间的集成&#xff0c;使它们能够无缝地协同工作。 如下是一些常见…

【Unity学习笔记】第十三 · tag与layer(运行时创建tag和layer)

参考&#xff1a; Unity手册 标签Unity手册 LayersIs it possible to create a tag programmatically?脚本自动添加tag和Layer 注&#xff1a;本文使用Unity版本是2022.3.23f1 转载引用请注明出处&#xff1a;&#x1f517;https://blog.csdn.net/weixin_44013533/article/de…

【JavaScriptthreejs】对于二维平面内的路径进行扩张或缩放

目标 对指定路径 [{x,y,z},{x,y,z},{x,y,z},{x,y,z}.........]沿着边缘向内或向外扩张&#xff0c;达到放大或缩小一定范围的效果&#xff0c;这里我们获取每个点&#xff08;这里是Vector3(x,y,z)&#xff09;,获取前后两个点和当前点的坐标&#xff0c;计算前后两点的向量&a…

Ubuntu 安装 Harbor

一、安装 docker 原文参考传送门 1st 卸载系统自带的 docker 应用 for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done 2nd 设置Docker 的apt源 # Add Dockers official GPG key: sudo…

【AI面试】工作和面试过程中,经常遇到的其他问题汇总一(持续更新)

在与面试官在面对面进行交流的过程中,面试官不仅仅会针对简历中记录的内容进行深入的了解,还会进行一些发散性的提问。 目前也就很明显,就是要看看对方: 对于常见的问题是如何思考的?有没有在持续性的学习本领域的新知识?对于不知道的问题,是如何思考的?迁移能力咋样。…

漫谈-AI 时代的信息模型

模型化- 数字化转型的重要基石 在各行各业推行数字化转型过程中&#xff0c;构建信息化模型十分重要&#xff0c;它是数字化转型的基石。事实上&#xff0c;数字化转型的核心是“万物皆模型”&#xff0c;在工业领域&#xff0c;以德国为主导的工业4.0 发展进程中&#xff0c;…

条件编译 #和##运算符

目录 1. #运算符2. ##运算符3. 条件编译4. 题目分享总结 正文开始 前言: 本章为C语言语法完结撒花, 下文将进行C语言中#和##操作符以及条件编译的讲解, 来进一步让我们了解C语言. 作者主页: 酷酷学!!! 1. #运算符 #运算符将宏的⼀个参数转换为字符串字⾯量。它仅允许出现在带…

海外仓系统能做什么?提升仓库盈利能力,不再低效经营!

海外仓管理系统和机械设备不同&#xff0c;这句话看似有点矛盾&#xff0c;但是还真就是这么回事儿。 当机械设备出现故障的时候&#xff0c;你会明确的知道他无法运转&#xff0c;已经影响到你的生产效率了。但是海外仓系统不会&#xff0c;它看似还可以运转&#xff0c;但是…

洛基计划project loki加速器推荐 免费低延迟联机加速器分享

洛基计划project loki加速器推荐 免费低延迟联机加速器分享 《洛基计划》是一款团队PVP游戏&#xff0c;融合有动作、英雄设计、大逃杀等元素&#xff0c;由前拳头游戏、Bungie和暴雪娱乐员工创立的新工作室Theorycraft Games共同发布。《洛基计划》汇集了一些大型团队PVP游戏…

基于51单片机的数码管显示的proteus仿真

文章目录 一、数码管二、单个数码管显示0~F仿真图仿真程序 三、数码管静态显示74HC138译码器74HC245缓冲器仿真图仿真程序 四、数码管动态显示仿真图仿真程序 三、总结 一、数码管 数码管&#xff0c;也称作辉光管&#xff0c;是一种可以显示数字和其他信息的电子设备。它的基…

浅谈如何学习微信小程序

这是一篇干巴巴的文章&#xff0c;有兴趣的可以继续往下阅读。本人毕业已经三年多了&#xff0c;从实习到现在接触了java、javascript、html、vue、MySQL、jquery、微信小程序等&#xff0c;经验也算是有一点&#xff0c;感觉不多&#xff0c;属于全栈开发吧&#xff0c;本次就…

mmclassification 训练自己的数据集

文章目录 从源码安装数据集准备config文件训练附录 从源码安装 git clone https://github.com/open-mmlab/mmpretrain.git cd mmpretrain pip install -U openmim && mim install -e .下面是我使用的版本 /media/xp/data/pydoc/mmlab/mmpretrain$ pip show mmcv mmpr…

实现游戏地图读取与射击运行

射击代码来源自2D 横向对抗射击游戏&#xff08;by STF&#xff09; - CodeBus 地图读取改装自 瓦片地图编辑器 解决边界检测&#xff0c;实现使用不同像素窗口也能移动不闪退-CSDN博客 // 程序&#xff1a;2D RPG 地图编辑器改游戏读取器 // 作者&#xff1a;民用级脑的研发…

qt;lt;等xml|Html转义字符

在写Android布局文件时&#xff0c;左右尖括号<>&#xff0c;括号在XML中没办法直接使用&#xff0c;需要进行转义&#xff0c;收集一些转义符&#xff0c;以便查询使用。 常用表&#xff1a; **对于文章出现的任何问题请大家批评指出&#xff0c;一定及时修改 **可联系…

挂在Avalon总线上的AD7656芯片驱动verilog程序实现

AD7656是一款16位同步采样双极ADC转换器&#xff0c;本文中用状态机方式实现了AD7656芯片的Verilog驱动&#xff0c;并且将驱动直接挂在了altera芯片的Avalon总线上&#xff0c;使其altera芯片能够通过总线直接控制ADC芯片&#xff0c;其代码如下&#xff1a; module AD7656_d…

QT中使用QTableView控件

1.与数据库连接&#xff0c;读取数据库内容到UI界面显示 // 连接SQLite数据库db QSqlDatabase::addDatabase("QSQLITE","second");db.setDatabaseName("./testitem.db"); // 替换为你的数据库文件路径if (!db.open()) {qDebug() << &quo…

工作中常用到的一些sql脚本

– 存储过程查询&#xff08;存储过程/函数 关键词查询&#xff09; select * from pg_proc where lower(prosrc) like ‘%关键字%’; – 复制表数据 insert into 表(字段) select 字段 from 表 where 条件; – 查询重复数据 select COUNT(0),字段名 from 表名 where state …

黑马Minio(对象存储服务MinIO)

3.1 MinIO简介 MinIO基于Apache License v2.0开源协议的对象存储服务&#xff0c;可以做为云存储的解决方案用来保存海量的图片&#xff0c;视频&#xff0c;文档。由于采用Golang实现&#xff0c;服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单&#xff0c;基本是…

Spectre-v2 以及 Linux Retpoline技术简介

文章目录 前言一、Executive Summary1.1 Spectre-v2: Branch Predictor Poisoning1.2 Mitigating Spectre-v2 with Retpolines1.3 Retpoline Concept 二、BackgroundExploit Composition 三、(Un-)Directing Speculative Execution四、Construction (x86)4.1 Speculation Barri…