在线OJ平台项目
一、项目源码
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目录
未完待续……
相关文章:
在线OJ平台项目
一、项目源码 Online_Judge yblhlk/Linux课程 - 码云 - 开源中国 (gitee.com) 二、所用技术与开发环境 1.所用技术: MVC架构模式 (模型-视图-控制器) 负载均衡系统设计 多进程、多线程编程 C面向对象编程 & C 11 & STL 标准库 C Boost 准标…...
go语言kafka入门
消息队列:一种基于异步通信的解耦机制,用于在应用程序或系统组件之间传递消息和数据 消息队列相关概念: 生产者(Producer):生成并发送消息到消息队列中的应用程序或系统组件。 消费者(Consumer&…...
自定义拖拽功能,上下拖拽改变盒子高度
核心在于监听鼠标的move来改变div的高度,抽成了组件 <template><div ref"container" class"drag"><z-tooltip v-if"isShowIcon" effect"dark" content"格式化" placement"top-start"&…...
JavaScript Es6_4笔记
JavaScript 进阶 文章目录 JavaScript 进阶深浅拷贝浅拷贝深拷贝递归实现深拷贝js库lodash里面cloneDeep内部实现了深拷贝JSON序列化 异常处理throwtry ... catchdebugger 处理this普通函数箭头函数改变this指向callapplybind 防抖节流 深浅拷贝 浅拷贝 首先浅拷贝和深拷贝只…...
Python“牵手”易贝(Ebay)商品列表数据,关键词搜索ebayAPI接口数据,ebayAPI接口申请指南
Ebay平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范, EbayAPI接口是指通过编程的方式,让开发者能够通过HTTP协议直接访问Ebay平台的数据,包括商品信息、店铺信息、物流信息等,从而实现Ebay平…...
C语言:选择+编程(每日一练Day8)
目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:字符个数统计 思路一: 题二:多数元素 思路一: 本人实力有限可能对一些…...
使用 uniapp 适用于wx小程序 - 实现移动端头部的封装和调用
图例:红框区域,使其标题区与胶囊对齐 一、组件 navigation.vue <template><view class"nav_name"><view class"nav-title" :style"{color : props.color, padding-top : toprpx,background : props.bgColor,he…...
ARM Linux 系统稳定性分析入门及渐进 13 -- gdb 反汇编 disassemble 命令详细介绍及举例】
文章目录 1.1 gdb 调试回顾1.1.1 gdb list 命令介绍 1.2 反汇编命令 dis 介绍1.2.1 如何设置 gdb 汇编代码的格式 1.1 gdb 调试回顾 在GNU调试器(GDB)中,有许多命令可以帮助我们调试应用程序。 gdb: 这是一个强大的Unix下的程序调试工具。以…...
python连接Microsoft SQL Server 数据库
python代码 Author: tkhywang 2810248865qq.com Date: 2023-08-21 11:22:24 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-08-21 11:29:30 FilePath: \PythonProject02\Microsoft SQL Server 数据库.py Description: 这是默认设置,请设置customMade, 打开koroFi…...
docker可视化工具
安装Portainer 官方安装说明:https://www.portainer.io/installation/ [rootubuntu1804 ~]#docker pull portainer/portainer[rootubuntu1804 ~]#docker volume create portainer_data portainer_data [rootubuntu1804 ~]#docker run -d -p 8000:8000 -p 9000:90…...
MySQL 用户管理操作
目录 一、用户管理概述 二、用户管理 1、创建用户 2、删除用户 三、账户密码管理 1、root用户修改自己的密码 2、ROOT用户修改其他普通用户密码 3、普通用户修改自己的密码 4、ROOT用户密码忘记解决办法 1)Linux系统 2)windows系统 四、用户权…...
【python办公自动化】PysimpleGUI中的popup弹窗中的按钮设置居中
PysimpleGUI中的popup弹窗中的按钮设置居中 背景问题解决背景 默认的popup弹窗中的OK按钮是在最下面偏左侧一些,有时需要将按钮放置居中 问题解决 首先找到pysimplegui源代码文件中popup的部分 然后定位到19388行,源文件内容如下 关于popup弹窗OK按钮的设置,将pad属性…...
postgresql 同步流复制两个相关参数synchronous_commit 和 synchronous_standby_names
一:synchronous_commit 1.synchronous_commit参数含义 这个参数用来设置事务提交返回客户端之前,一个事务是否需要等待 WAL 记录被写入磁盘。合法的值是{local,remote_write,remote_apply,on,off}。默认设置是on。 2.各可选值含义 2.1 local 当事务…...
运算放大器发展史
在内部集成了一个补偿电容 MPS公司OP07推出后,大受欢迎。各家厂商都推出了自己的 这4款都是可以替换的...
LVS+Keepalived 实验
Keepalived 是什么 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题的一款检查工具 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器…...
FreeSWITCH 1.10.10 简单图形化界面1 - docker/脚本/ISO镜像安装
FreeSWITCH 1.10.10 简单图形化界面1 - docker/脚本/ISO镜像安装 0. 界面预览1. Docker安装1.1 下载docker镜像1.2 启动docker镜像1.3 登录 2. 脚本安装2.1 下载2.2 安装2.3 登录2.4 卸载程序 3. 镜像安装3.1 下载镜像3.2 安装镜像3.3 登录 0. 界面预览 http://myfs.f3322.net…...
内网渗透神器CobaltStrike之权限提升(七)
Uac绕过 常见uac攻击模块 UAC-DLL UAC-DLL攻击模块允许攻击者从低权限的本地管理员账户获得更高的权限。这种攻击利用UAC的漏洞,将ArtifactKit生成的恶意DLL复制到需要特权的位置。 适用于Windows7和Windows8及更高版本的未修补版本 Uac-token-duplication 此攻…...
使用haproxy搭建web架构
haproxy HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。 HAProxy提供了可以在七层和四层两种负载均衡能力,它可以提供高可用性、负载均衡、及基于TCP和HTTP应用的代理。适用于负载大的Web站点,在运行在硬件上可…...
Java基础之IO流File类创建及删除
1.File类概述及构造方法 2.File类创建功能 文件创建成功! 如果文件不存在,就创建文件,并返回true 如果文件存在,就不创建文件,并返回false 如果文件夹不存在,就创建文件夹,并返回true 如果文件…...
高速道路监控:工业路由器助力高速监控远程管理与维护
工业路由器在物联网应用中扮演着重要的角色。物联网的发展使得大量设备和传感器能够互联互通,而工业路由器作为连接这些设备和网络的中间桥梁,承担着数据传输和安全管理的重要责任。 工业路由器能够为高速监控提供网络功能,实现户外无线网络部…...
11.0592MHz晶振在51单片机串口通信中的优势解析
1. 为什么11.0592MHz晶振成为单片机工程师的首选在嵌入式系统设计中,晶振的选择往往决定了整个系统的稳定性和精度。作为一名从事单片机开发多年的工程师,我发现11.0592MHz的晶振在51单片机项目中出现的频率异常高。这绝非偶然,而是由一系列精…...
nRF52与RFX2401C的PA+LNA优化方案:基于SoftDevice的高效驱动实现
1. 为什么需要PA和LNA优化方案 如果你正在用nRF52开发BLE设备,可能会遇到这样的困扰:明明参数配置没问题,但通信距离就是达不到预期。这时候就该请出我们今天的主角——RFX2401C这颗PA/LNA芯片了。我去年做智能牧场项⽬时就踩过这个坑&#…...
2025.12晶晨S905L3S-L3SB安卓9通刷实战:当贝桌面加持,解锁多品牌盒子新玩法
1. 晶晨S905L3S-L3SB通刷包的前世今生 第一次听说晶晨S905L3S-L3SB芯片能通刷时,我正对着家里三台不同品牌的电视盒子发愁。这些盒子有的来自运营商赠送,有的是二手市场淘来的,虽然硬件配置相近,但系统体验天差地别。直到发现这个…...
Argos Translate:5分钟掌握开源离线翻译API的全面集成方案
Argos Translate:5分钟掌握开源离线翻译API的全面集成方案 【免费下载链接】argos-translate Open-source offline translation library written in Python 项目地址: https://gitcode.com/GitHub_Trending/ar/argos-translate Argos Translate是一款基于Ope…...
别再手动改daemon.json了!1Panel面板里一键配置Docker国内镜像源(附最新可用源列表)
1Panel面板实战:3分钟搞定Docker国内镜像加速配置 刚部署完1Panel的新用户总会遇到一个经典问题——Docker拉取镜像慢得像蜗牛爬。传统解决方案是手动编辑daemon.json文件,但如今有了更优雅的选择。作为一款现代化服务器管理面板,1Panel将复杂…...
UDS诊断服务-10例程控制服务(0x31)实战:从协议解析到车辆传感器校准
1. 从车辆抖动问题认识0x31服务的重要性 去年夏天,我遇到一辆行驶里程8万公里的SUV,车主反映急加速时发动机抖动明显。用诊断仪读取故障码显示"P0172 - 燃油修正系统过浓",但更换氧传感器和火花塞后问题依旧。这时候就需要请出我们…...
CogVideoX-2b多轮迭代技巧:基于首版视频反馈优化Prompt的实战方法
CogVideoX-2b多轮迭代技巧:基于首版视频反馈优化Prompt的实战方法 1. 从新手到导演的快速入门 如果你正在寻找一个简单好用的文字生成视频工具,CogVideoX-2b可能会成为你的新宠。这个基于智谱AI开源模型的工具,专门为AutoDL环境优化&#x…...
Pixel Couplet Gen部署案例:混合云架构(公有云API+私有云模型)方案
Pixel Couplet Gen部署案例:混合云架构(公有云API私有云模型)方案 1. 项目背景与价值 Pixel Couplet Gen是一款融合传统春节文化与现代像素艺术风格的AI春联生成器。该项目基于ModelScope大模型驱动,通过创新的8-bit像素游戏UI设…...
解决Android 12 NFC功能失效:PendingIntent.FLAG_MUTABLE的正确用法
Android 12 NFC开发实战:PendingIntent可变性标志的深度解析 在移动支付和门禁系统逐渐普及的今天,NFC技术已经成为现代智能手机不可或缺的功能之一。然而,随着Android系统的版本迭代,开发者们不得不面对各种兼容性挑战。特别是在…...
Hi3559平台ISP调试实战:从参数配置到画质优化
1. Hi3559平台ISP基础概念与工作原理 第一次接触Hi3559平台的ISP模块时,我完全被各种专业术语搞晕了。后来在调试车载摄像头项目时才发现,理解ISP的工作原理对画质优化有多重要。简单来说,ISP就像是我们手机里的美颜功能,只不过它…...
