鱼皮直播带做 OJ 在线判题系统,详解概念、流程与实现方案

2024-08-06
来源:网络整理

大家好,我是Yupi。

本周四,一个新的项目预告片发布,称计划对整个过程进行直播,向大家展示如何构建 OJ 在线评分系统。

当天晚上我开始直播,原本计划2个小时就播完第一集,但因为小伙伴们学习热情太高,我坚持直播了3个半小时,最后因为身体原因不得不停播。

直播过程截图:

以下章节摘要是自动生成的,请忽略错别字

可见在很多同学的印象中,实施OJ系统并不是一件容易的事情。所以在第一期中,我重点讲解了OJ系统的概念,实施重点,核心业务流程,以及5种主流的OJ系统实施方案。

直播间绘制的核心业务流程序列图:

以上就是给大家分享的5种主流的OJ系统实现方案,看完这些你可能不会觉得OJ系统很难实现,动手能力强的同学可以自己尝试一下~

主流OJ系统实现方案

首先要明确的是,一个成熟的OJ系统往往需要支持多种不同的编程语言,独立实现需要花费很多精力、技术和考虑,所以核心原则是:能用别人现成的就不要自己写!

解决方案 1:使用现有的 OJ 系统

网上有很多开源的OJ项目,比如青岛OJ等,可以直接下载开源代码自行部署。

更加推荐的是这是一个非常成熟的商业OJ项目,支持超过60种编程语言!

代码:

支持免费自行部署、公有云、私有云部署等:

解决方案 2:使用现有服务

如果你不想部署整套大而全的代码,而只是想复用别人已经实现的最复杂的判断逻辑,那么可以直接使用现成的判断API,或者现成的代码沙箱等服务。

比如提供的判断API就非常方便易用,你只需要通过HTTP调用判断接口,将用户的代码、输入的值、预期的执行结果作为请求参数发送到服务器,它就会自动帮你编译执行程序并返回程序的运行结果。

如下图所示,发送一个打印“ ”的程序,并获取程序执行时间、状态等:

地址:

选项三:独立开发

这种方法就不多说了,评判服务和代码沙箱都要自己实现,适合学习,不适合做商业项目,这次给大家看的OJ系统是独立开发的,以学习为主。

解决方案4:利用AI实现代码沙盒

现在AI足够强大了,我们可以直接把各种复杂的功能交给AI去实现。

比如说,如果我们把AI当成一个代码沙箱,我们可以直接把一段代码和输入参数扔给它,问它能不能得到预期的结果,这样就实现了在线的判断逻辑!

如下所示:

之前我带领大家做的智能BI项目,就是利用AI作为智能数据分析师,生成图表和分析结论。

只要你有足够大的想象力,AI+编程=无限可能~

解决方案 5:嫁接

这种方法是最有意思的,也是最“不道德”的,很多同学可能都想不到。

也就是让程序运行模拟的浏览器,利用别人开发的OJ系统来帮助我们判断题目。

比如使用无头浏览器,我们可以像人一样把我们系统用户提交的代码输入到别人的OJ网页中,让程序点击提交按钮,等待别人的OJ系统返回判断结果,再将结果返回给我们自己的用户。

这种方式的缺点就是你把核心流程交给别人,别人的服务失败了,你的服务也会失败,而且如果别人的OJ系统不支持这个,你也不一定能支持。

其他内容

讲解完OJ体系之后,接下来我带着大家从0到1开发了一套简单易用的前端通用初始项目模板,可惜现在还没开发出来,所以本周六(今天晚上)八点,会加开一场公开直播,计划分享以下内容:

完成前端项目初始化模板开发,搭建后端项目基本框架。自动生成前后端联调

这个时期我们会争取完成所有的前期工作,然后才会正式开始业务代码的编写,开发问题判断服务和代码沙箱。

分享