C++实战演练---负载均衡在线oj项目预热

server/2024/12/22 9:32:26/

顾得泉:个人主页

个人专栏:《Linux操作系统》 《C++从入门到精通》  《LeedCode刷题》

键盘敲烂,年薪百万!


前言

       学习准备了快一年时间,心心念念的实战演练终于可以开始了,话不多说,直接进入主题!!!


一、项目简介

       该项目是基于负载均衡的在线OJ平台,用户可以在浏览器访问各个题目,在编辑区编写代码提交,后端能够自动分配服务器资源,保持平衡的情况下为用户提供良好的编程运行环境,让代码快速运行和提交。

二、所需技术及开发环境

所需技术:

        C++ STL 标准库

        Boost 准标准库(字符串切割)

        cpp-httplib 第三方开源网络库

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

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

        负载均衡设计

        多进程、多线程

        MySQL C connect

        Ace前端在线编辑器(简单使用)

        html/css/js/jquery/ajax (简单使用)

开发环境:

        Centos 7 云服务器

        vscode

        Mysql Workbench

三、项目结构

我们的项目核心是三个模块

       1. comm : 公共模块

       2. compile_server : 编译与运行模块

       3. oj_server : 获取题目列表,查看题目编写题目界面,负载均衡,其他功能

一、leetcode结构

       我们只实现类似 leetcode 的题目列表+在线编程功能。

二、项目宏观结构

三、实现思路

       1. 先编写 compile_server

       2. oj_server

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

       4. 前端的页面设计

       5. version2 基于 MySQL 版的在线OJ

       目前所建立的结构树 :

四、预备工作

一、升级gcc

       用老的编译器,要么编译不通过,要么直接运行报错,大家可以自行百度搜索下载最新版的gcc,我当前的版本已经升级。

二、安装jsoncpp

   sudo yum install -y jsoncpp-devel

三、安装boost库

     sudo yum install -y boost-devel

       这个库安装稍慢,是我们所需要的开发库。


结语:关于该项目的简介这里就结束了,下篇文展将带大家深入实现项目部分功能,如果大家有什么问题,欢迎大家在评论区留言~~~ 


http://www.ppmy.cn/server/10289.html

相关文章

C语言进阶课程学习记录-第48课 - 函数设计原则

C语言进阶课程学习记录 - 函数设计原则 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程,图片全部来源于课程PPT,仅用于个人学习记录

机器学习和深度学习-- 李宏毅(笔记于个人理解)Day 21

Day 21 Self- Attention 选修部分 ​ 学完自适应 再回来看看 Sequence Labling 假如我们现在有一个需要读完全部句子才能解的问题, 那么red window 就需要变得是最大的(最长的句子); 其实这里大家有没有想过,这个玩意…

CODEFORCES --- 490A. Team Olympiad

490A. Team Olympiad 贝兰德首府的 0 号学校有 n 名学生。这所学校的所有孩子都很有天赋:有的擅长编程,有的擅长数学,还有的擅长体育。因此,我们知道每个孩子的数值为 ti : ti  1 ,如果第 i 个孩子擅长…

使用 Monaco Editor 开发 SQL 编辑器

安装 安装依赖,这里请注意版本 yarn add monaco-editor0.29.1 yarn add monaco-editor-webpack-plugin5.0.0配置 webpack 插件 // vue.config.js ... const MonacoWebpackPlugin require(monaco-editor-webpack-plugin)module.export {...configureWebpack: {name: name,r…

云服务器要选择带宽适合以及公网ip

在选择云服务器时,带宽的选择是一个重要考虑因素。它决定了云服务器在上传和下载数据时的速度。鉴于不同的服务器用途、预期流量和预算决定应该选择带宽。 1. 服务器用途:不同的服务器用途需要不同的带宽。例如,仅作为开发测试环境的服务器可…

数据分析(2)

数据分析(2) 本文介绍pandas的另一种数据类型DataFrame,中文叫数据框 DataFrame 定义: DataFrame是一个二维的矩阵数据表,通过行和列,可以定位一个值。 在某种程度上,可以认为DataFrame是“具有相同ind…

多线程基础

一锁两并三程 锁 synchronized 并发和并行 并发(concurrent):在一台处理器上“同时”处理多个任务,即有多个任务在单个cpu上交替进行,但其实在同一时刻,只有一个任务在执行。 并行(paralle…

单机三pxc节点集群,+docker-haproxy2.0负载均衡实现

一.下载 https://www.haproxy.org/download/2.0/src/haproxy-2.0.5.tar.gz 或者在这里下载(下面需要的各个配置文件都有): https://download.csdn.net/download/cyw8998/89170129 二.编写文件,制作docker镜像 1.Dockerfile&a…