一个在线判题、在线比赛的小型微服务项目,能够根据预先设定的测试用例,编译、运行用户提交的代码进行判断,给予用户是否正确的结果。 其中,判题服务是自主实现的代码评测服务,可以作为独立的服务给予其他用户调用使用。支持在线比赛模式,支持查看实时Ranking排名、 submit提交记录等。
- 支持ACM模式
- 支持本地C、C++、Java判题(安全性、内存管理困难)
- 支持docker的Java判题
后续计划:
- 调整Ranking排名的表格样式。
- 支持go判题
- ……
前端:
Vue3 + Arco Design组件库 + bytemd MarkDown语法编辑器 + monaco code edit代码编辑器
后端:
开发框架:
SSM + Spring Boot + Spring Cloud Alibaba
中间件:
Spring Cloud Gateway + Rabbit MQ
数据库:
MySQL
v-judge-common 公共常量类模块
v-judge-model 公共实体类模块
v-judge-service-client 内部调用接口暴露
用户服务暴露:
User getById(@RequestParam("userId") long userId)
List<User> listByIds(@RequestParam("idList") Collection<Long> idList)
default User getLoginUser(HttpServletRequest request)
default boolean isAdmin(User user)
default UserVO getUserVO(User user)
判题服务暴露:
QuestionSubmit doJudge(submitId)
v-judge-gateway-service 网关服务 端口 9000
v-judge-user-service 用户服务 端口 9001
v-judge-question-service 题目服务 9002
v-judge-contest-service 比赛服务(包括比赛、赛题)9003
v-judge-judge-service 判题服务 9004
v-judge-codesandbox 代码沙箱 9005(负责执行代码,给出执行时间、内存、输出用例)
部分截图
做题页面
提交列表
创建题目
个人中心
用户管理
比赛中心