文章目录
✔项目目的
项目实现什么功能
1.浏览器可以访问当前在线oj当中的所有题目,获取题目的列表
2.点开任意一个题目,并且能够作答
3.编译用户提交的代码,并且返回执行结果
支持查看题目列表
支持点击单个题目
支持代码块书写代码
支持提交书写的代码到后端
支持后端编译运行
支持返回结果
项目模块划分
项目采用b/s模型,及浏览器+服务端模型
-
请求数据从浏览器中来
-
服务端处理完毕后,响应返回给浏览器
所以划分为四个模块,每个模块的大致功能如下
http
模块接收浏览器的请求+发送响应,我使用开源库
cpp-httplib
的方法
- 试题模块
管理所有的
oj
试题,本质上有两种策略来进行管理
1.一种策略是将试题写到文件当中,服务器从文件当中读回来;
2.另一种策略是将试题保存在数据库当中,服务端每次去数据库当中查询
- 编译运行模块
处理浏览器提交的代码,编译+运行
- 工具模块
提供时间戳, 提供日志, 提供字符串等方法
了解项目的大致功能后,我们开始搭建环境
✔环境搭建
1.cpp-httplib开源库
我们需要先找一个开源的httplib
库,可以在代码当中直接包含httplib.h
,可以参照下面这个链接
httplib开源库
2.升级gcc
1.查看gcc的版本
先查看自己的gcc是什么版本
gcc -v
我的gcc
版本低,需要更新
2.更新步骤
2.1.首先切换到root
用户
2.2.其次执行下面这两个命令
yum -y install centos-release-scl
yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils
2.3.打开当前用户的家目录下的bash_profile
vim ~/.bash_profile
2.4.打开以后在最后添加下面的一行命令,然后保存退出
scl enable devtoolset-7 bash