文章目录
- 程序源码
- 用到的技术
- 项目宏观结构
- 代码编写思路
程序源码
https://gitee.com/not-a-stupid-child/online-judge
用到的技术
- C++ STL 标准库。
- Boost 准标准库(字符串切割)。
- cpp-httplib 第三方开源网络库。
- ctemplate 第三方开源前端网页渲染库。
- jsoncpp 第三方开源序列化、反序列化库。
- 负载均衡设计。
- 多进程、多线程。
- MySQL C connect。
- Ace前端在线编辑器
- html/css/js/jquery/ajax
项目宏观结构
在这个项目中我们需要三个文件夹:
- comm: 公共模块
- compile_server: 用户代码编译与运行模块
- oj_server: 获取题目列表,查看题目界面编写题目,负载均衡等功能。
oj_server给用户提供题目网页,可以获取用户在浏览器中提交的代码,而compile_server可以存在很多个,然后oj_server负载均衡式的让每个compile_server负载均衡的帮用户编译处理代码,然后在通过oj_server返回给用户让用户看到。
代码编写思路
- 先编写 compile_server
- 编写 oj_server
- 使用文件存储题库
- 设计前端页面
- 将文件题库改成数据库存储