# CodeScale **Repository Path**: chenduo-code/load-balancing-online---oj ## Basic Information - **Project Name**: CodeScale - **Description**: 基于Web开发的OJ平台,支持用户注册和登录、题目查询、题目管理、题单管理、代码编写与提交等功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-20 - **Last Updated**: 2025-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 欢迎来到我的个人项目——负载均衡式在线OJ系统 [TOC] ## 项目环境 - 操作系统:Ubuntu 24.04.1 LTS - 编辑器:Cursor IDE - 编译器:g++ (Ubuntu 9.5.0-6ubuntu2) 9.5.0 - 技术栈:C++11、STL、MySQL、多线程编程、多进程编程、负载均衡式设计、Ace前端在线编辑器、html/css/js/jquery/ajax - 第三方依赖库: - httplib:HTTP服务器库 - libctemplate:模板库 - libjsoncpp:JSON解析库 - libmariadb:MySQL数据库操作库 ## 项目描述 该系统是一个负载均衡式的在线OJ系统,主要功能是提供一个在线的编程环境,让用户可以在线编写、编译、运行和提交代码,并给出相应的反馈。 ## 项目结构 - 前端: - web:前端页面 - question_html:题目列表页面 - login.html:登录页面 - 后端: - commen:公共模块 - oj_server:OJ服务器 - compile_server:编译服务器 - test:测试模块 ## 项目架构: 1. 整体结构:分模块开发,各司其职 采用 MVC模式 将代码拆分为三个核心部分: - Model(数据层):直接操作数据库,管理题目数据、用户信息、提交记录等。 - View(视图层):生成网页界面(HTML/CSS/JS),展示题目列表、提交结果等。 - Controller(控制层):处理用户请求(如提交代码),调用其他模块完成实际业务。 2. 负载均衡:拆分耗时任务,避免卡死服务器 - 主服务器(OJ-Server): 负责核心业务(用户登录、题目管理、结果展示),不处理编译和运行代码这类耗时操作。 - 编译运行服务器(Compiler/Runner): 单独部署的服务器集群,专门负责编译用户代码、运行测试用例,完成后将结果返回主服务器。 ## 项目功能 - 登录 - 注册 - 题目列表 - 题目详情 - 提交代码 - 查看结果 ## 项目使用 - oj_server:oj服务器,默认端口号为8888 - compile.exe:编译服务器,需要指定端口号port - conf/machine.conf:机器列表,需要配置编译服务器和运行服务器的ip和端口 ## 总结 这个项目是我第一次系统性的接触多线程编程和多进程编程项目,也是第一次接触负载均衡式设计,所以难免会有很多不足之处,希望各位大佬能够多多指教。 ## 致谢 感谢各位的阅读和使用,同时也感谢开源库的作者们,没有你们的辛勤工作,就没有这个项目。