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

一種新型架構的OnlineJudge系統(tǒng)設計與實現(xiàn)

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

肖雙林 彭瑞琪 段明秀 田杰

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

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

中圖分類號: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 背景

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

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

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

2 Online Judge系統(tǒng)現(xiàn)狀分析

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

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

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

3 系統(tǒng)的架構設計

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

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

4 系統(tǒng)的實現(xiàn)

4.1 系統(tǒng)技術體系

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

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

4.2 系統(tǒng)運行流程

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

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

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

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

4.3 系統(tǒng)優(yōu)點

本系統(tǒng)的web層分層設計使得不同任務會有相應的處理流程。普通業(yè)務只需在web層就可進行業(yè)務處理。而判題任務則由web層下發(fā)到任務調(diào)度服務器,任務調(diào)度服務器再將判題任務分發(fā)到多個判題機,判題機處理后得到的結果再轉(zhuǎn)發(fā)給寫回服務器,進行數(shù)據(jù)持久化。

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

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

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

5 結束語

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

參考文獻:

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

[2] 王桂平,馮睿.突出實踐能力培養(yǎng)的程序設計課程教學方法[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的在線判題系統(tǒng)設計與實現(xiàn)[J].軟件導刊,2016,15(3):107-109.

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

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

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

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

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

【通聯(lián)編輯:謝媛媛】

收稿日期:2021-06-20

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

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

主站蜘蛛池模板: 色综合天天综合| 久久一色本道亚洲| 三上悠亚在线精品二区| 亚洲aaa视频| 无码'专区第一页| 亚洲无码高清一区二区| 美女黄网十八禁免费看| 精品国产www| 国产一级视频久久| 2021国产精品自产拍在线| 精品国产aⅴ一区二区三区| a级毛片在线免费观看| 午夜精品区| 91区国产福利在线观看午夜| 在线中文字幕日韩| 欧美日韩亚洲综合在线观看 | 国产精品色婷婷在线观看| 毛片网站观看| 亚洲av日韩av制服丝袜| 综合色区亚洲熟妇在线| 国产欧美成人不卡视频| 欧美色视频日本| 欧美日本在线观看| 欧美国产另类| 午夜性刺激在线观看免费| 无码AV日韩一二三区| 国产剧情国内精品原创| 欧美一级专区免费大片| 性视频久久| 国产十八禁在线观看免费| 欧美97色| 日韩精品毛片| 国产精品区视频中文字幕| 国产黑丝视频在线观看| 国产浮力第一页永久地址| 久久综合结合久久狠狠狠97色| 麻豆精品国产自产在线| 亚洲Va中文字幕久久一区 | 欧美色亚洲| 亚洲一级毛片在线观| 青青热久免费精品视频6| 亚洲一区网站| 国产亚洲欧美在线专区| 蜜臀av性久久久久蜜臀aⅴ麻豆| 欧美日韩中文字幕二区三区| 成人av专区精品无码国产| 亚洲无码高清一区| 91丝袜乱伦| 免费三A级毛片视频| 国产欧美高清| 久久久久国产精品熟女影院| 精品91在线| 四虎精品黑人视频| 久草视频中文| 精品久久高清| 亚洲国产精品久久久久秋霞影院| 在线精品自拍| 欧美日韩精品一区二区在线线| 国产精品一区二区不卡的视频| 久久男人资源站| 成人91在线| 国产成+人+综合+亚洲欧美| 91青草视频| 国产成人精品一区二区免费看京| jizz国产在线| 国产精品漂亮美女在线观看| 国产91九色在线播放| 无码精油按摩潮喷在线播放 | 九色视频最新网址| 亚洲第一黄片大全| 国产乱子伦视频三区| 拍国产真实乱人偷精品| 欧美一级在线| 欧美黑人欧美精品刺激| 麻豆精品在线| 伊人久久大香线蕉成人综合网| 日韩毛片免费视频| 欧洲亚洲一区| jijzzizz老师出水喷水喷出| 综合色区亚洲熟妇在线| 2021亚洲精品不卡a| 国产成人喷潮在线观看|