999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種新型架構的OnlineJudge系統設計與實現

2021-12-18 13:42:01肖雙林彭瑞琪段明秀田杰
電腦知識與技術 2021年31期

肖雙林 彭瑞琪 段明秀 田杰

摘要:通過分析程序設計類課程實踐教學的需求和特點,在研究市場上現有在線評判系統使用技術和架構的基礎之上,設計了一種符合教學需求、可自由切換多種模式、適用范圍更加廣泛的新型在線評判系統。系統成功運用在教學和程序競賽培訓中。

關鍵詞:在線評測;新型架構;技術體系;運行流程

中圖分類號:TP311 ? ? ?文獻標識碼:A

文章編號:1009-3044(2021)31-0095-02

Design and Implementation of a New Architecture of Online Judge System

XIAO Shuang-lin, PENG Rui-qi, DUAN Ming-xiu, TIAN Jie

(College of Information Science and Engineering, Jishou University, Jishou 416000, China)

Abstract: Based on the analysis of the requirements and characteristics of the practical teaching of program design courses and the study of the technology and structure of the existing Online Judge in the market, a new Online Judge is designed, which meets the needs of teaching and training, can switch freely between multiple modes and has a wider application range. The system has been successfully used in teaching and program contest training.

Key words: Online Judge; new architecture; technical system; running process

1 背景

程序設計能力是信息類專業學生需要熟練掌握的基本能力。特別是在國家大力發展人工智能、大數據及云計算的戰略背景下,各高校更加注重學生程序設計能力的培養。為此,各高校針對自己的培養目標開設了相應的程序設計課程,如C、C++、Java等。

早期,程序設計類課程大多注重對語法的教學,實踐教學所占比重較輕。而且實踐教學通常由老師布置題目,學生編程實現后再提交給老師進行人工評判[1]。這種方式不能及時反饋學生學習情況并且主觀性強,很難真正提高學生的實踐能力,同時也增加了教師的工作強度。經過多年的教學探索,許多高校開始實施以培養程序設計思想與方法為主,注重實踐能力培養的新型教學方法。近年來,在線程序實踐作為一種新穎的程序設計實踐形式逐漸被引入到程序設計類課程教學中[2-3]。學生通過使用在線評判系統完成教師布置的題目,并能夠及時在平臺上得到結果反饋,有利于教師實時掌握學生的學習狀態。

此外,隨著各類程序設計競賽在高校的推廣,競賽的規模和影響力越來越大。這些競賽的出現不僅提高了學生的實踐能力,也給高校培養電子、信息專業人才提供了一種新的思路。因此,高校迫切需要一種適合教學和競賽培訓的新型在線評判系統[4]。

2 Online Judge系統現狀分析

目前,各賽事舉辦方和高校為滿足需求均設計了在線評判系統。南陽理工學院、廈門大學等都設計了適合本校教學的在線評判系統。CodeForces、Oxcoder和Imagine Cup等程序設計競賽舉辦方也陸續創建了相應的競賽判題系統。在線評判系統適用于教學練習還是競賽培訓,不只由系統收錄題目決定,還要看系統架構和評判模式。

1)常見的系統架構有兩種:一種是C/S架構是一種較早的軟件架構,主要用于區域網內,也叫客戶機/服務器模式。這種架構的頁面和操作十分豐富,因其只有兩層傳輸,安全性能夠得到保證。但因使用這種架構開發的系統需要安裝才能使用,導致用戶較為固定并且維護成本較高。這種系統使用戶不能在系統上獲知題目信息以及自己的代碼通過了多少個測試點,只能知道自己的答案是否正確。另一種是B/S架構,這種架構無需安裝相應的App,極少部分事務邏輯在前端實現,使得系統更加可靠。

2)目前有單數據測試用例、多數據測試用例、帶權重多數據測試用例三種評判模式。單數據測試用例模式要求每道題的測試數據存放在一個數據文件中,必須通過所有測試數據才被判對,要求較為嚴苛。多數據測試用例模式要求每道題提供多個數據集,每個數據集存放在一個數據文件中,通過相應的數據集就可得到對應的分數,設計較為合理并且可以幫助學生找到解題思維上的漏洞。帶權重多數據測試用例模式要求根據題目難度高低對不同數據集分配不同權重,難度較低的題目數據集分配較低權重,系統分配較短時間去評判,從而合理安排不同題目的評判時間,提高判題效率。

3 系統的架構設計

為解決目前市場上在線評判系統大多由一臺服務器完成所有任務而導致系統并發量不大的問題,本系統整體采用分布式架構。數據庫、評判核心和web用戶界面分別部署到不同的服務器上[5]。同時為縮短系統的開發周期、減少開發難度,進行異步設計與開發。系統的架構如圖1所示:

前端頁面部分采用VUE框架,實現數據的雙向綁定,后端包括采用Spring-Boot框架實現的web服務器、任務調度服務器(分發任務)、結果寫回服務器(保存結果)和使用C++實現的判題機。判題機與上位機之間使用boost庫實現同步連接[6],判題機與Web服務器之間使用Linux的網絡文件系統(NFS)進行測試用例文件共享,使用strace跟蹤器監控判題進程安全。

4 系統的實現

4.1 系統技術體系

在web服務器中采用SpringSecurity來實現用戶認證和權限控制。系統采用Nginx實現分布式部署,做到負載均衡,同時使得占有的內存更少,并發能力更強。

前端使用AJAX技術,通過異步方式加載數據,并在頁面呈現出來,在得到更快的前端響應的同時減輕了服務器負荷[7]。由于AJAX請求的是json數據而不是html文檔,可以有效地減少網絡數據的傳輸量,節省網絡帶寬,提高用戶的操作體驗。

4.2 系統運行流程

用戶在做題界面提交代碼以JSON格式交由后端web中對應的接口。接口在接收到相應的數據后,先判斷該題目是否超過了規定的答題時間,如果在題目允許的時間內則將前端提交的信息和題目信息包裝成“任務”保存到數據庫再下發給任務調度服務器。任務調度服務器接收到判題任務后,先將任務存儲到暫存內存中,再根據判題機發送的任務申請信息、判題任務的權重和數量按照平均處理時間將任務發送到判題機。每臺判題機可以同時存儲和處理多個判題任務。在處理任務時服務器還會根據自身狀態動態地向任務調度服務器發送任務申請信息,保證了判題效率的最大化。

判題機在接收到判題任務后,先將用戶提交的代碼本地化,再由判題機內部的分發線程將判題任務分發到判題線程。判題線程在獲取任務后先將任務代碼復制到對應的工作目錄中,再根據任務語言類型進行編譯。編譯正確則取對應題目的測試用例進行運行和答案比對[8]。

編譯時間不會算入任務的時間限制,且無論編譯是否正確都會將編譯信息重定向到標準輸入文件并保存在結果中。運行過程會受到任務信息中時間、內存、棧的限制和系統自定義的安全限制。根據代碼的運行情況返回任務結果,主要包括運行時間、運行內存和測試點結果。在答案比對后,判題線程會將所有測試用例的結果收集并組裝成一個任務結果存儲到對應的存儲隊列,再由判題收集線程將結果發送給結果寫回服務器。

結果寫回服務器接收到任務結果信息后,將信息寫入數據庫,并返回確認存儲信息給任務調度服務器,確保每個判題任務不會丟失。之后,web端可以根據任務流水號在數據庫中查詢任務結果信息并將其組裝返回前端頁面進行渲染和顯示。

4.3 系統優點

本系統的web層分層設計使得不同任務會有相應的處理流程。普通業務只需在web層就可進行業務處理。而判題任務則由web層下發到任務調度服務器,任務調度服務器再將判題任務分發到多個判題機,判題機處理后得到的結果再轉發給寫回服務器,進行數據持久化。

這樣做使本該由web層實現的分發和并發轉移到了任務調度服務器上,減輕了web服務器的壓力并解決了容災。使得web服務器對結果的讀取、結果寫回服務器對結果的寫入分離以及任務調度服務器任務分發這三個任務實現了負載均衡。

web服務器和判題機進行NFS連接使測試用例可以在每臺判題機同步、使網絡的壓力減少(因為測試用例文件很大,通過網絡層傳遞耗費大量時間,也使其他任務無法進行)。

目前,大多數的在線評判系統大多只有一個服務器來執行多項任務使得整個系統的承載數量有限并極易崩潰。本系統高并發、分布式設計將任務合理有效地分離執行,同時為數目可觀的用戶提供穩定的在線服務。

5 結束語

本系統不同于市場上現有的OJ系統,整體采用分布式架構,擁有多個服務器,并發量更高,系統運行更加穩定。系統為學生的實踐培養提供一個良好的平臺,可以有效地提升教學質量[9]。

參考文獻:

[1] 王桂平,劉君,羅憲,等.一個基于多種評判模式的在線評判系統[J].計算機科學,2020,47(S2):657-661.

[2] 王桂平,馮睿.突出實踐能力培養的程序設計課程教學方法[J].實驗室科學,2009,12(1):81-84.

[3] Wang G P,Chen S Y,Yang X,et al.OJPOT:online judge & practice oriented teaching idea in programming courses[J].European Journal of Engineering Education,2016,41(3):304-319.

[4] 蔡崇超.基于Web的在線判題系統設計與實現[J].軟件導刊,2016,15(3):107-109.

[5] 黃曉華,沈健,常晉義,等.基于Online Judge與HTML批注技術的實驗教學平臺設計[J].計算機與現代化,2014(11):117-121.

[6] 黃金春,杜娟嬌.超小型在線評測系統的設計與實現[J].現代計算機(專業版),2018(13):83-86.

[7] 莊奇東,王鍵聞,張楠,等.Online Judge系統的優化[J].計算機系統應用,2011,20(8):115-121.

[8] 鐘耀章,桂瓊.ACM競賽在線測評系統設計與實現[J].無線互聯科技,2020,17(18):42-44.

[9] 黃龍軍,范立新.面向Online Judge的查詢方法及其實現[J].計算機系統應用,2013,22(8):79-82.

【通聯編輯:謝媛媛】

收稿日期:2021-06-20

基金項目:湖南省大學生創新創業項目(項目編號:湘教通[2020]191號)

作者簡介:段明秀(1975—),女,湖南茶陵人,副教授,碩士,主要從事數據挖掘和人工智能研究。

主站蜘蛛池模板: 毛片视频网址| 久久青青草原亚洲av无码| 无码AV日韩一二三区| V一区无码内射国产| 91精品国产自产91精品资源| 韩日无码在线不卡| 尤物精品国产福利网站| 亚洲国产日韩视频观看| 欧美成人一级| 欧美成人日韩| 看av免费毛片手机播放| 国产无套粉嫩白浆| Aⅴ无码专区在线观看| 国产综合色在线视频播放线视| 天天色天天综合| 亚洲视频免费在线看| 国产日本视频91| 无遮挡一级毛片呦女视频| 极品国产在线| 丰满人妻中出白浆| 2019年国产精品自拍不卡| 日韩高清一区 | 人妻中文久热无码丝袜| 国产成人禁片在线观看| 中文毛片无遮挡播放免费| 毛片网站在线看| 日本免费精品| 亚洲天堂视频在线观看免费| 91精品专区| 欧美日韩午夜| 欧美特级AAAAAA视频免费观看| 97一区二区在线播放| 国产精品视频3p| 国产精品一区在线麻豆| 国产精品永久免费嫩草研究院| 伊人丁香五月天久久综合| 国产在线观看一区精品| 国产菊爆视频在线观看| 久久77777| 伊人久久婷婷五月综合97色| a免费毛片在线播放| 亚洲毛片一级带毛片基地| 欧美日韩国产成人高清视频| 亚洲女人在线| 免费一级毛片不卡在线播放| 国模极品一区二区三区| 国产日韩精品欧美一区喷| 免费在线一区| 亚洲AV无码精品无码久久蜜桃| 国产精彩视频在线观看| 国产成人一区免费观看| 精品無碼一區在線觀看 | 日韩视频福利| 又粗又硬又大又爽免费视频播放| 亚洲一区毛片| 日韩欧美国产精品| 国产成人免费视频精品一区二区| 99视频国产精品| 伊伊人成亚洲综合人网7777| 噜噜噜久久| 亚洲男人的天堂网| 欧美成人日韩| 国产美女无遮挡免费视频| 亚洲欧洲日本在线| 毛片手机在线看| 操操操综合网| 中国美女**毛片录像在线| 好久久免费视频高清| 久久国产成人精品国产成人亚洲 | 国产精品入口麻豆| 国产噜噜在线视频观看| 喷潮白浆直流在线播放| 日韩av高清无码一区二区三区| 亚洲国产中文综合专区在| 亚洲天堂伊人| 亚洲区视频在线观看| 国产欧美成人不卡视频| 亚洲欧美成人影院| 国产成人1024精品下载| 国产黑丝一区| 国内精品自在自线视频香蕉| 国产精品成人AⅤ在线一二三四 |