面经-项目

项目

  • 项目(重点)
    • 问题1:描述在网页中题目点击提交后到题目结果出现的一系列后台反应
      • 【1】如何获取到用户提交的代码的?
      • 【2】_1. 题目细节都有哪些?
      • 【2】_2. 题目信息怎么存储的?
      • 【3】负载均衡算法的实现?
      • 【4】oj_server怎么连接对应的compile_server(编译主机)的?
      • 【5】oj_server怎么把最终结果返回给客户端?
    • 问题2:HTTP底层网络层是如何进行交互的?
    • 问题3:这个项目超时或者占用内存过多报错机制如何实现的?
    • 问题4:介绍一下这个项目
    • 问题5:做这个项目过程中遇到的挑战

项目(重点)

问题1:描述在网页中题目点击提交后到题目结果出现的一系列后台反应


先简要概述:

  1. 请求接收和处理
  • 用户的提交请求通过HTTP发送到oj_server服务器
  • OJ服务模块接收请求并获取到用户提交的代码【1】,调用控制模块进行处理
  1. 代码拼接
  • 控制模块调用model模块获取题目细节【2】,再将用户提交的代码和测试用例代码进行拼接(以JSON字符串进行拼接)
  1. 选择负载最低的主机编译运行代码
    使用RR轮询算法【3】选择负载最低的主机,连接对应主机进行编译运行服务【4】,得到结果后返回给oj_server,oj_server再返回给客户端【5

【1】如何获取到用户提交的代码的?

通过http的post请求拿到包含用户代码(body(josn字符串))的响应正文,响应正文实际上就是一个结构体,再直接用结构体对象直接访问对应的body【这里的body是json字符串】,将body反序列化后就能得到用户代码了
注:(httplib库的json就是string)

【2】_1. 题目细节都有哪些?

  • 题目的编号,唯一
  • 题目的标题
  • 难度:简单,中等,困难
  • 题目的描述
  • 题目预设给用户在线编辑器的代码
  • 题目的测试用例,需要和header拼接,形成完整代码
  • 题目的时间要求(s)
  • 题目的空间要求(kb)

【2】_2. 题目信息怎么存储的?

使用数据库进行存储的,是以题目的编号为主键(number)建的一个题目表


【3】负载均衡算法的实现?

算法类型:基于RR轮询算法

核心逻辑:

  • 遍历所有在线主机,找到当前负载最小的主机。

  • 将请求分配给负载最小的主机。

  • 更新主机的负载计数。

在oj_control.hpp文件中,负载均衡算法主要由LoadBlancer类实现。

LoadBlancer类

     // 可以给我们提供服务的所有主机// 每台主机都有自己的下标。充当当前主机的idstd::vector<Machine> machines;//Machine是一个主机类// 所有在线的主机std::vector<int> online;// 所有离线的主机std::vector<int

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络基本概念认识(2)

目录 前言&#xff1a; 局域网协议 MAC/IP地址 Socket编程 TCP/UDP 网络字节序 前言&#xff1a; 本文同样作为博主的二刷网络课程的文章&#xff0c;主要涵盖的主题还是网络基本概念的认识&#xff0c;从上一篇文章遗漏的点加上引入的一些知识点共同组成当前的知识点。…

Kafka中的消息是如何存储的?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka中的消息是如何存储的&#xff1f;】面试题。希望对大家有帮助&#xff1b; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Kafka 中&#xff0c;消息是通过 日志&#xff08;Log&#xff09; 的方式进行存储的。…

openEuler24.03 LTS下安装ZooKeeper集群

目录 前提条件 ZooKeeper集群规划 下载ZooKeeper 解压 配置环境变量 配置ZooKeeper 配置zoo.cfg 配置myid 分发到其他机器 修改其他机器myid 启动集群 关闭集群 集群启停脚本 前提条件 准备3台Linux机器&#xff0c;并安装好Java8 ZooKeeper集群规划 node2node3…

Python 实现机器学习小项目实战教程*

markdown 复制 Python 实现机器学习小项目实战教程 本教程将通过一个完整的机器学习项目案例&#xff0c;从数据预处理到模型部署&#xff0c;帮助初学者快速掌握机器学习核心流程。项目以经典的鸢尾花分类为例&#xff0c;使用 Scikit-learn 库实现。 1. 项目概述 目标 构…

rust学习笔记21-闭包

在 Rust 中&#xff0c;闭包&#xff08;Closures&#xff09; 是一种可以捕获其环境中的变量的匿名函数。它们非常灵活&#xff0c;既可以作为普通函数使用&#xff0c;也可以捕获和操作定义它们的作用域中的变量。闭包是 Rust 中处理短小逻辑代码块的强大工具&#xff0c;特别…

linux实现rsync+sersync实时数据备份

1.概述 rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具 2.端口和运行模式 tcp/873 采用C/S模式&#xff08;客户端/服务器模式&#xff09; 3.特点 可以镜像保存整个目录和文件第一次全量备份(备份全部的文件),之后是增量备份(只备份变化的文件) 4. 数…

【第30节】MFC编程:ListCtrl控件和TreeCtrl控件

目录 引言 一、高级控件ListCtrl 二、高级控件TreeCtrl 三、Shell控件 四、CImageList 五、综合代码示例 引言 在MFC编程里&#xff0c;高级控件能大幅提升应用程序的交互性与功能性。接下来&#xff0c;咱们会详细讲讲ListCtrl和TreeCtrl这两个高级控件。不仅会介绍它们…

为什么 ThreadLocalMap 的 key 是弱引用 value是强引用

问题一&#xff1a;为什么 ThreadLocalMap 的 key 是弱引用&#xff1f; 【假设 Entry 的 key 是对 ThreadLocal 对象的强引用】&#xff1a;这个 Entry 又持有 ThreadLocal 对象和 value 对象的强引用。如果在其他地方都没有对这个 ThreadLocla 对象的引用了、然后在使用 Thr…

DeepSeek本地部署(linux)

一、下载并安装Ollama 1.下载Ollama Ollama官网:Ollama 点击"Download",会跳转至下载页面。 1.1在线下载安装 可复制此命令到Linux服务器进行在线下载,如下载速度过慢,可选择离线下载安装。 curl -fsSL https://ollama.com/install.sh | sh1.2离线下载安装 …

基于Halcon仿VM流程列表的执行效果

Halcon本身应用需要一定的门槛&#xff0c;但是也可以封装成类似VM简单易操作的样子 上期文章分享的是连线功能&#xff0c;本期分享数据传参 1&#xff0c;定义通用属性和方法 public class BaseModel {public HObject HInput { get; set; }//图像输入public HObject HOutpu…

打车APP订单系统逻辑梳理与实现

一、逻辑分析 打车 APP 订单系统是整个打车业务的核心&#xff0c;负责处理从乘客下单到行程结束的一系列流程&#xff0c;涉及乘客、司机和平台三方的交互。 乘客端 下单&#xff1a;乘客打开 APP&#xff0c;输入上车地点、目的地&#xff0c;选择车型等信息后提交订单。此时…

杂草YOLO系列数据集4000张

一份开源数据集——杂草YOLO数据集&#xff0c;该数据集适用于农业智能化、植物识别等计算机视觉应用场景。 数据集详情 ​训练集&#xff1a;3,664张高清标注图像​测试集&#xff1a;180张多样性场景样本​验证集&#xff1a;359张严格筛选数据 下载链接 杂草YOLO数据集分…

算法 | 河马优化算法原理,公式,应用,算法改进及研究综述,matlab代码

以下是关于河马优化算法(Hippopotamus Optimization Algorithm, HO)的完整综述,包含原理、公式、应用场景、改进方向及可直接运行的 Matlab 完整代码。一、算法原理 河马优化算法(HO)由Amiri等人于2024年提出,是受河马群体行为启发的元启发式算法,其核心基于以下三阶段行…

知识就是力量——HELLO GAME WORD!

你好&#xff01;游戏世界&#xff01; 简介环境配置前期准备好文章介绍创建头像小功能组件安装本地中文字库HSV颜色空间音频生成空白的音频 游戏UI开发加载动画注册登录界面UI界面第一版第二版 第一个游戏&#xff08;贪吃蛇&#xff09;第二个游戏&#xff08;俄罗斯方块&…

Android Activity 的 launchMode 与 Task Stack 管理

Android 中的 android:launchMode 决定了 Activity 在启动时如何在任务栏中管理它的存在方式。下面我们来结合 Task Stack 管理详细解释。 1. android:launchMode 的四种模式 1.1 standard (标准模式, 默认) 启动方式&#xff1a;每次启动都会创建一个新实例并压入栏任务堆中…

2025选择手机之我见

自从开店之后&#xff0c;没当有手机召开发布会&#xff0c;我就得去大概看看&#xff0c;了解一下屏幕&#xff0c;充电之类的东西。毕竟跟我的生意息息相关&#xff0c;而且还得研究要不要上新&#xff0c;从我目前卖货的情况来看&#xff0c;折叠屏不是大众的选择&#xff0…

【区块链安全 | 第九篇】基于Heimdall设计的智能合约反编译项目

文章目录 背景目的安装1、安装 Rust2、克隆 heimdall-dec3、编译 heimdall-dec4、运行 heimdall-dec 使用说明1、访问 Web 界面2、输入合约信息3、查看反编译结果 实战演示1、解析普通合约2、解析代理合约 背景 在区块链安全研究中&#xff0c;智能合约的审计和分析至关重要。…

利用 PCI-Express 交换机实现面向未来的推理服务器

在数据中心系统的历史上&#xff0c;没有比被 Nvidia 选为其 AI 系统的组件供应商更高的赞誉了。 这就是为什么新兴的互连芯片制造商 Astera Labs 感到十分高兴&#xff0c;因为该公司正在 PCI-Express 交换机、PCI-Express 重定时器和 CXL 内存控制器方面与 Broadcom 和 Marv…

智能交通预警杆:守护道路安全的科技先锋

在城市化进程加速以及机动车保有量持续增长的背景下&#xff0c;道路交通安全与拥堵问题渐趋严峻。智能交通预警杆应时而生&#xff0c;其集成多种高科技功能&#xff0c;正逐步成为现代城市交通管理中至关重要的智能装备&#xff0c;对于提升交通效率、保障出行安全发挥着关键…

flink 基站与服务器长连接,每次连接和断开都会上报数据,统计过去一小时每个基站断开次数和时长

模拟生成数据 CREATE TABLE ods_station_log (base_station_id int, -- 基站IDevent_type int, -- 事件类型: connect/disconnectevent_time TIMESTAMP_LTZ(3), -- 事件时间WATERMARK FOR event_time AS event_time - INTERVAL 5 SECOND -- 允许5秒乱序 ) WITH …