HUSTOJ实现的相关想法
来源:互联网 发布:vscode c 智能提示 编辑:程序博客网 时间:2024/05/16 02:28
这两天通过读 HUSTOJ 的源码,是我对OJ系统有了初步的了解,对整个系统的构架有了浅薄的认识。拿HUSTOJ来讲,HUSTOJ的结构是典型的LAMP服务器,就是linux+APACHE+MYSQL+PHP,以及用C++/C写的评测机核心。
HUSTOJ有两种数据交互的模式,两种的不同点在于,是评测机核心通过http向php传输数据的方式更新评测结果,还是直接连接mysql,将最新的评测结果写入数据可中,然后再让web端查询mysql。两者的想点在于,web端在获取用户上传的数据后,将数据写入数据库,然后让评测机去查询mysql。
HUSTOJ下面分三大模块:
1. core 评测机核心
2. php 前端
3. mysql 数据库
我现在主要研究的是core的部分,下面简述一下HUSTOJ的core的实现原理。
core也主要是分三个部分,分别是 judged、judge_client、sim,其中judged是core的入口,judged将solution(用户在前端提交的代码)分配给judge_client,judge_client再创建一个沙箱环境给用户程序,接着运行用户提交的代码(事先编译好了),接着运行sim模块来检测代码重复度,最后更新数据库或者通过http的方式传递数据给web端,最终的数据更新是在judge_client模块里面实现的。
简单说一下沙箱的实现原理,judge_client通过改变进程的文件根目录,从而使得当前进程及子进程对系统造成的影响被束缚在了一个可控的地方里面。
在此特别感谢 zhnlue 贡献 HUSTOJ 开源项目,学习到了很多东西
- HUSTOJ实现的相关想法
- 关于我国目前高等教育的相关想法
- 一个难以实现的想法
- 一些待实现的想法
- 实现WebRTC的几个想法
- 实现WebRTC的几个想法
- 实现WebRTC的几个想法
- hustoj 昂贵的聘礼
- hustoj的搭建
- hustoj的一些改动
- hustoj相关学习资料以及一些问题的整理还有乱七八糟的东西
- php:数据采集的实现的想法
- HUSTOJ的安装与配置
- HUSTOJ 1002: 奇怪的排序
- 【HUSTOJ】1009: 较大的数
- 【HUSTOJ】1095: 素数的个数
- 关于webgame实现MMORPG的一些想法
- 路由表实现的一些想法
- 中断处理深度剖析
- 设计模式之单例模式
- CSS中的定位和浮动
- java中重载与重写的区别
- 埃及分数
- HUSTOJ实现的相关想法
- 数组指针,指针数组,函数指针,指针函数,函数数组指针。
- 反射(5)--Method类
- 深度网络特定层数据抽取实验
- centos 6.8docker安装
- 关于嵌入式和java,互联网的行业统计分析,判断未来房地产以及发展趋势
- STM32之EXTI——外部中断
- java web中“/”可能回表示哪些路徑
- eclipse maven项目导出jar包时一起打包所依赖的相关jar包