在线OJ平台项目

news2024/11/24 22:30:54

一、项目源码

Online_Judge · yblhlk/Linux课程 - 码云 - 开源中国 (gitee.com)


二、所用技术与开发环境

1.所用技术:

MVC架构模式 (模型-视图-控制器)

负载均衡系统设计

多进程、多线程编程

C++面向对象编程 & C++ 11 & STL 标准库

C++  Boost 准标准库

jsoncpp     第三方开源序列化、反序列化库

cpp-httplib 第三方开源网络通信库

ctemplate  第三方开源前端网页渲染库

Ace前端在线编辑器

html/css/js/jQuery/ajax

使用Postman进行网络服务测试

2.开发环境

Centos 7.8 云服务器

VSCode

Google Chrome

Mysql Workbench


三、项目宏观结构

I. 项目模块介绍

我们的项目核心是两个模块:

1. compile_server : 编译与运行模块。

2. oj_server : 文件/数据库交互,网页渲染,负载均衡,其他功能。

II.项目宏观结构图

III.编写思路

采取从后端向前端实现的思路

1. 先编写 compile_server

2. oj_server

3. version1 基于文件版的在线OJ

4. 前端的页面设计

5. version2 基于 MySQL 版的在线OJ

先编写整体结构(需要什么函数),然后再实现函数细节(包括返回值和参数的调整)


四、compiler_server目录

 1.compiler.hpp (编译模块)

 2.runner.hpp (运行模块)

 3.compile_run.hpp(编译、运行的整合模块)

 

 4.compile_server.cc (处理编译运行代码的网络请求)

 

 5.使用Postman对compile_server进行整体测试

Postman是一款功能强大的网页调试、HTTP请求发送及接口测试用例运行的工具

能够模拟各种HTTP Request如GET、POST 、header、 PUT、 DELETE…等等

请求中还可以发送文件(图片、文本文件等)、额外的header等,实现特定的接口测试

能够高效的帮助后端开发人员独立进行接口测试

PostMan——安装使用教程

也可以在chrome里面安装Postman插件

如何在 Postman 中进行 HTTPS 请求 (baidu.com)


五、OJ_server目录

        未完待续……

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

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

相关文章

建议收藏|软考机构推荐看这一篇就够了

需要最近因为软考改革成机考,大家都在问还有没有必要找机构学?本来已经进入自学阶段的考生,也纷纷开始慌张机考改革会不会影响考试难度?今天胖圆给大家总结一下软考要不要报机构?市面上的软考培训机构如何选择&#xf…

高手速成|数据库脚本生成工具

高手速成|数据库脚本生成工具 文章目录 高手速成|数据库脚本生成工具前言1、软件的安装及使用2、建立新工程3、创建Conceptual Data Model(概念数据模型)4、将E-R图转化为其他数据库模型5、导出DBMS代码(Sql执行脚本)6、执行sql脚…

【boost网络库从青铜到王者】第六篇:asio网络编程中的socket异步读(接收)写(发送)

文章目录 1、简介2、异步写 void AsyncWriteSomeToSocketErr(const std::string& buffer)3、异步写void AsyncWriteSomeToSocket(const std::string& buffer)4、异步写void AsyncSendToSocket(const std::string& buffer)5、异步读void AsyncReadSomeToSocket(cons…

Java 8 Stream 之 collect() 的奇技淫巧

来源:blog.csdn.net/qq_35387940/ article/details/127008965 前言 正文 第一个小玩法 第二个小玩法 前言 本身我是一个比较偏向少使用Stream的人,因为调试比较不方便。 但是, 不得不说,stream确实会给我们编码带来便捷。 所以还是忍…

python开发环境搭建

1、安装python 下载地址:https://www.python.org/downloads/windows/ 双击安装。 安装完验证: 2、安装IDE 下载地圵:https://www.jetbrains.com/zh-cn/pycharm/download/?sectionwindows 免费版本 3、安装依赖包 在项目的根目录下…

【RuoYi移动端】HBuild工具插件安装和系统配置manifest.json

一、点【工具】-【插件安装】安装如下工具 二、点【manifest.json】

搭建Tomcat HTTP服务:在Windows上实现外网远程访问的详细配置与设置教程

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器,不仅名字很有趣&#xff0…

数据库概况

数据的基本概念: ①数据 描述事物的符号记录,包括数字,文字,图形,图形,声音,档案记录等以“记录”形式按统一的格式进行存储。 ②表 将不同的记录组织在一起 用来存储具体数据 ③数据库 表的…

I/O多路复用 select 、poll

前言 套接字通信并发如果我们服务器端想实现并发,有两种处理方式,第一种是通过多进程的方式来处理并发,第二种是通过多线程的方式来处理服务器端的并发。 【问题】如果服务器端的程序只有一个线程,或者说只有一个进程&#xff0…

腾讯云新老用户优惠券免费领取方法分享

腾讯云优惠券是腾讯云的一种优惠方式,领券之后购买腾讯云相关产品可以享受优惠,下面给大家分享腾讯云新老用户优惠券免费领取方法,助力大家轻松上云! 一、腾讯云优惠券领取方法 腾讯云新用户优惠券:点此领取 腾讯云老…

ERP系统解析:全面了解企业资源规划系统

在当今快节奏的商业环境中,有效的企业资源计划(Enterprise Resource Planning,简称ERP)系统对于组织的成功运营至关重要。ERP系统是一种集成管理软件,通过整合各个部门的信息和流程,实现资源的高效利用和运…

11.redis持久化

1.redis持久化 Redis的所有数据都是保存在内存中,因此redis重启后数据就丢失了,所以需要不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);或者把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。 …

Exploring Lottery Prompts for Pre-trained Language Models

Exploring Lottery Prompts for Pre-trained Language Models 文章链接 清深的工作,比较有意思的一篇。作者先给出假设,对于分类问题,在有限的语料空间内总能找到一个prompt让这个问题分类正确,作者称之为lottery prompt。为此&…

Rust常用加密算法

哈希运算(以Sha256为例) main.rs: use crypto::digest::Digest;use crypto::sha2::Sha256;fn main() { let input "dashen"; let mut sha Sha256::new(); sha.input_str(input); println!("{}", sha.result_str());} Cargo.toml: [package]n…

Python中实例方法、类方法、静态方法的区别与作用

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 Python中至少有三种比较常见的方法类型,即实例方法,类方法、静态方法。 它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文。 首先&#xf…

pdf.js构建时,报Cannot read property ‘createChildCompiler‘ of undefined #177的解决方法

在本地和CI工具进行构建时,报如下错误。 Cannot read property createChildCompiler of undefined #177解决方法: 找到vue.config.js,在 module.exports {parallel: false, //新增的一行chainWebpack(config) {....config.module.rule(&…

MySQL数据库管理高级语句

数据表高级操作 复制表及内容 #复制表及内容create table copy1 like zh1 ; #复制格式,通过LIKE方法,复制zh1表结构生成copy1表 insert into copy1 select * from zh1; #备份内容 克隆表 克隆表,将数据表的数据记录生成到新的表中C…

5个能提高效率的在线设计工具,真的很好用!

随着设计工作的不断变化,能在线使用的设计工具就成了设计师更需要的设计工具,它体量小,使用方便,不尽能帮助设计师完成正常的设计工作,还可以给设计师带来舒适的使用体验,今天本文收集整理了5款好用的在线设…

免费照片转绘画风格软件-FotoSketcher

FotoSketcher一款免费照片转绘画风格软件,只需点击几下鼠标即可自动将照片转换为艺术作品。支持从铅笔素描到水彩画或油画、钢笔画、墨水画、抽象艺术和卡通画,有 20 多种不同的风格可供选择,工具还可以修改原始照片增强对比度、锐化、简化图…

hive问题总结

往往用了很久的函数却只知道其单一的应用场景,本文将不断完善所遇到的好用的hive内置函数。 1.聚合函数或者求最大最小值函数搭配开窗函数使用可以实现滑动窗口 例: SELECT event,time,session_id,COLLECT_LIST(event) OVER (PARTITION BY session_id …