Online Judge(在线评判系统)


文章目录

  • Online Judge(在线评判系统)
  • 前言
  • 一、Online Judge是什么?
  • 二、通过这个项目能够学到什么?
    • 1.C++
    • 2.网络编程
    • 3.数据库
    • 4.Linux系统编程
  • 总结

前言

由于本人将后端开发作为学习方向,在学习了网络编程和数据库后,决定开发Online Judge(在线评判系统)作为项目将所学的知识串联起来。


一、Online Judge是什么?

Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++、Pascal)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。简单来说,力扣、洛谷和PTA就是Online Judge。

二、通过这个项目能够学到什么?

1.C++

C++的基础知识,学习C++11的新特性,比如:lambda和bind(实现回调函数)、thread(线程池)和智能指针(RAII)…

2.网络编程

Online Judge几乎都是将用户在网页上提交的代码通过HTTP协议传输到Web服务器上,Web服务器再通过评判系统在后台去评判代码,将评判结果返回给用户,显示在网页上。
本项目以Muduo网络库为基础实现一个Web服务器,实现一个Web服务器需要深入了解HTTP协议、TCP协议等知识。

3.数据库

Online Judge上的用户信息、题目信息和做题记录需要存放在数据库,市面上成熟的数据库有很多。
MySQL作为数据库原因:
1、学习资料比较多,开发过程中遇到问题可以在网上搜索解决
2、在后端开发的面试中考察MySQL的问题比较多

4.Linux系统编程

本项目部署在服务器上,所以判题方面需要评判系统在后台fork子进程执行用户提交的代码得到执行结果,这个过程涉及到Linux系统编程很多知识。
注意:服务器接收远端代码并运行,本身就是一件很危险的事情,需要对系统的关键函数挂钩处理,但这不是本项目的重点,不予实现。


总结

通过Online Judge项目能学习到什么?
1、C++
2、网络编程
3、数据库
4、Linux系统编程

【项目】Online Judge(在线评判系统)相关推荐

  1. python实训项目-Python开发基础-项目实训-在线投票系统.pptx

    项目实训-在线投票系统本章任务/30完成"在线投票系统"添加投票候选人删除候选人为候选人投票按序号投票删除投票输出统计信息--本章目标/30理解程序的基本概念会使用顺序.选择.循环 ...

  2. python在线投票系统讲解_Python开发基础-项目实训-在线投票系统ppt课件

    <Python开发基础-项目实训-在线投票系统ppt课件>由会员分享,可在线阅读,更多相关<Python开发基础-项目实训-在线投票系统ppt课件(27页珍藏版)>请在人人文库 ...

  3. Java项目:springboot在线订餐系统

    作者主页:源码空间站2022 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 SpringBoot在线订餐系统项目.主要功能说明: 分为两个角色,餐厅老板和普通 ...

  4. python在线投票系统_Python开发基础-项目实训-在线投票系统.pptx

    项目实训-在线投票系统本章任务/30完成"在线投票系统"添加投票候选人删除候选人为候选人投票按序号投票删除投票输出统计信息--本章目标/30理解程序的基本概念会使用顺序.选择.循环 ...

  5. python在线投票系统源码-Python开发基础-项目实训-在线投票系统.pptx

    项目实训-在线投票系统本章任务/30完成"在线投票系统"添加投票候选人删除候选人为候选人投票按序号投票删除投票输出统计信息--本章目标/30理解程序的基本概念会使用顺序.选择.循环 ...

  6. 搭建前后端分离主流项目完整步骤——在线教育系统(阿里云服务器部署上线)

    前言: 需要源码评论或私我 项目技术栈如下图所示: 本次博客分前后端+部署服务器三个步骤来写 先来看看实现效果: 在线教育系统完整三步骤 前言: 一.后端技术栈 1.ssm+mysql: (1)map ...

  7. Java项目:ssm在线考试系统

    作者主页:夜未央5788 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 在线考试系统分为前后台,分为学生.老师.管理员三种角色:前台学生登录,后台老师.管理员 ...

  8. Java项目:jsp在线考试系统

    作者主页:源码空间站2022 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 本系统分为两个角色,一个是考生,一个是管理员, 考生功能如下: 登录.选择考试科目 ...

  9. 项目:C++在线测评系统

    项目思路 之前写过一个基于http的在线编译器,可以完成代码的编译过程,但是在leetcode上刷题的时候忽然想到在线OJ不就是一个功能更强大的在线编译器吗?在基础的编译功能上加上了题目列表页的展示, ...

最新文章

  1. Java 技术篇 - 连接oracle数据库执行sql使用close()关闭createStatement()无效无法清除游标缓存问题解决,报“ORA-01000: 超出打开游标的最大数“错误解决方法
  2. AtCoder AGC034D Manhattan Max Matching (费用流)
  3. SpringBatch 自定义ItemReader和可重新启动Reader(十五)
  4. URAL 1047 Simple Calculations
  5. DataGrid 完全攻略之二(把数据导出到Excel)
  6. oidc_使用Java EE和OIDC构建Java REST API
  7. 文件描述符、函数open和openat
  8. 百度地图迁徙大数据_百度地图大数据:五一高速拥堵不似预期,广深成热门迁出入地...
  9. 每日一题(52)—— 进程
  10. jQuery 基础事件
  11. [转载]程序员如何写出杀手级简历
  12. idea输出目录详解
  13. 计算机软件工程师报名条件,中级软件工程师证书报考条件有哪些要求?
  14. GitHub上java的开源项目(java程序员必备)
  15. 下次跳槽该去哪?国内AGV厂家区域分布
  16. java 禁用迅雷_【Java】我擦!迅雷的代码结构竟然被扒了精光~
  17. Elasticsearch学习(一):基础概念
  18. Java导入Excel工具类使用教程
  19. 51nod-生产口罩(拓补排序+DP)by zyz
  20. 微积分(三)-- 一阶常微分方程解法

热门文章

  1. 评分卡分箱原则及单调性
  2. 建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作
  3. 技术博客变成情感博客了吧
  4. HTML CSS整理
  5. 嵌入式linux操作系统的移植 实验报告,嵌入式linux系统移植试题
  6. 百度seo指南_白杨SEO:如何让网页被百度收录以及提高它的排序?
  7. stm32闪存的理解
  8. C# 使用SharpGL-Perspective和LookAt
  9. 移动机器人五种坐标系
  10. 如何让一个PNG图片背景透明