Skip to content

XISSG/online-judge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

在线判题系统(online judge)后端

流程图

image

业务划分

用户模块、题目模块、题目提交、判题模块、代码沙箱、定时数据同步、定时爬虫、接口调用统计

使用技术

web框架gin

jwt身份认证

orm框架gorm

持久化存储mysql

数据缓存redis:缓存题目信息和用户提交信息。使用更改数据时删除缓存,查询时再同步缓存

消息队列rabbitmq:用户提交题目后通过rabbitmq传输提交的id信息给判题模块,判题模块通过id查询数据库获取提交信息和题目信息。

代码执行沙箱docker:负责编译和执行用户提交的代码,判题模块通过执行结果进行判断是否答题正确。

搜索功能elasticsearch:提供使用关键字搜索题目信息和提交信息。

爬虫功能chromedp:爬取某一个网站的图片作为头像,用于提供给用户生成头像的数据来源,仅测试用。

ai建议科大讯飞星火大模型:判题通过后,会将用户代码交给ai进行时间和空间复杂度分析以及提供代码优化建议。

定时任务cron: 定时爬虫和定时同步mysql数据到redis和elasticsearch,同步方式:增量同步。

业务功能

管理员:管理用户(查询用户,更新用户,禁用用户,删除用户)、管理题目(创建题目、更新题目、删除题目)、管理提交(删除提交)、查看接口调用情况。

普通用户:登录注册、获取题目列表、搜索题目列表、创建提交、获取提交列表、搜索提交列表、获取随机头像。

业务流程

管理员创建题目并发布,普通用户注册登录后通过搜索或查询获取到题目列表,做完题后提交后会返回给用户提交id,通过判题模块进行判题,判题成功则会交给ai进行时间复杂度和空间复杂度分析并给出代码优化建议,用户可以通过提交id查询到判题结果。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published