面經-項目

項目

  • 項目(重點)
    • 問題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.pswp.cn/bicheng/75129.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75129.shtml
英文地址,請注明出處:http://en.pswp.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 …