在线OJ平台项目

 一、项目源码

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


二、所用技术与开发环境

1.所用技术:

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

B/S结构开发模式

负载均衡系统设计

多进程、多线程编程

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

C++  Boost 准标准库

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

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

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

mysql Connector/C  mysql官方库

Ace前端在线编辑器

html/css/js/jQuery/ajax

使用Postman进行网络服务测试

2.开发环境

CentOS 7.8 云服务器

VSCode

Google Chrome

Mysql Workbench


三、项目宏观结构

1. 项目核心模块介绍

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

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

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

2.项目宏观结构

3. 项目数据流图

3.1 顶层数据流图


3.2 一层数据流图


3.2 二层数据流图 

4.编写思路

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

1. 先编写 compile_server

2. 再编写 oj_server

3. 接着设计 文件版题库

4. 然后完成前端的页面设计

5. 最后实现 MySQL版题库

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


四、compiler_server目录

0.目录介绍

目录说明:保存提供在线编译服务核心的模块

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

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

3. compiler.hpp         (编译模块)

4. runner.hpp               (运行模块)


1.compiler.hpp


2.runner.hpp 

进程等待函数waitpid()的使用?

资源限制函数setrlimit()的使用?


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


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

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

5.1 Postman是什么?

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

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

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

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


5.2 Postman的安装

PostMan——安装使用教程

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


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


五、OJ_server目录

0.目录介绍

目录说明:提供OJ服务​​​​​​

1. oj_server.cc : 使用第三方开源库cpp-httplib,处理用户在网站发起的网络请求,通过处理好的html代码给用户构建网页。(目前能处理的请求: 4.1 申请题目列表 4.2 申请具体题目 4.3 判题请求。)


2. oj_control.hpp : 控制器模块,是后台开发的核心业务逻辑,其下有三个子模块:负载均衡模块,构建网页模块,判题模块。

2.1 负载均衡模块 : 选择出负载最低的主机。

2.2 构建网页模块 : 调用model模块和view模块来构建网页。

2.3 判题模块 :通过httplib库给负责编译运行的主机发送Josn串进行判题,并将判题的结果返回给上层


3. oj_model.hpp : 文件/数据库交互模块:直接跟文件与数据库进行数据交互的模块,对文件和数据库进行增删改查,将结果提交给上层。 


4. oj_view.hpp : 渲染网页模块:拿到数据之后,使用ctemplate库渲染网页,再将渲染好的网页代码返回。


1. oj_server.cc

2.  oj_control.hpp 

2.1 构建网页模块

2.2 负载均衡模块

2.3 判题模块

3. oj_model.hpp

3.1 文件版

3.2 数据库版

4. oj_view.hpp

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烛火萤辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值