一.功能
查看题目列表,在线编程,判题功能,即leetcode的部分功能
二.宏观结构
整个项目是BS模式,客户端是浏览器,和用户交互并向服务器发起请求。
服务端从功能上来说分为两个模块,第一个是OJServer,用于响应客户端的请求题目列表,请求代码编写。如果客户端发起提交代码的请求,在OJServer会负载均衡式地调用第二个模块CompileServer,编译运行模块。OJServer只有一个进程,ComplieServer有多个,可以部署在多台服务器上,两个模块之间通过网络来通信。
从代码编写角度来看,还需要一个公共模块Common,提供一些小组件,例如日志,字符串转化等。
三.编写顺序
- 先编写 CompileServer
- 再编写OJServer
- version1 基于文件版的在线OJ
- 前端的页面设计
- version2 基于 MySQL 版的在线OJ