国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播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ā)展人工智能、大數據及云計算的戰(zhàn)略背景下,各高校更加注重學生程序設計能力的培養(yǎng)。為此,各高校針對自己的培養(yǎng)目標開設了相應的程序設計課程,如C、C++、Java等。

早期,程序設計類課程大多注重對語法的教學,實踐教學所占比重較輕。而且實踐教學通常由老師布置題目,學生編程實現(xiàn)后再提交給老師進行人工評判[1]。這種方式不能及時反饋學生學習情況并且主觀性強,很難真正提高學生的實踐能力,同時也增加了教師的工作強度。經過多年的教學探索,許多高校開始實施以培養(yǎng)程序設計思想與方法為主,注重實踐能力培養(yǎng)的新型教學方法。近年來,在線程序實踐作為一種新穎的程序設計實踐形式逐漸被引入到程序設計類課程教學中[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ū)域網內,也叫客戶機/服務器模式。這種架構的頁面和操作十分豐富,因其只有兩層傳輸,安全性能夠得到保證。但因使用這種架構開發(fā)的系統(tǒng)需要安裝才能使用,導致用戶較為固定并且維護成本較高。這種系統(tǒng)使用戶不能在系統(tǒng)上獲知題目信息以及自己的代碼通過了多少個測試點,只能知道自己的答案是否正確。另一種是B/S架構,這種架構無需安裝相應的App,極少部分事務邏輯在前端實現(xiàn),使得系統(tǒng)更加可靠。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5 結束語

本系統(tǒng)不同于市場上現(xiàn)有的OJ系統(tǒng),整體采用分布式架構,擁有多個服務器,并發(fā)量更高,系統(tǒng)運行更加穩(wěn)定。系統(tǒng)為學生的實踐培養(yǎng)提供一個良好的平臺,可以有效地提升教學質量[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—),女,湖南茶陵人,副教授,碩士,主要從事數據挖掘和人工智能研究。

猜你喜歡
技術體系
廣播電視傳輸覆蓋技術體系的構建探討
高性能路由器技術體系、關鍵問題及發(fā)展趨勢
基于Java技術的搜索引擎研究與實現(xiàn)探討
探究我國鐵路運輸安全理論與技術體系
商(2016年17期)2016-06-06 09:30:19
地方檢驗檢疫部門技術體系建設中長效保障機制建立思路初探
檔案信息安全保障體系的建設研究
湖南省森林撫育技術體系存在的問題及建議
構建多元投入機制 助力農業(yè)技術推廣
中國茶葉質量安全追溯技術研究進展
轉基因豬試驗場標準化飼養(yǎng)管理技術體系探討
天台县| 高雄县| 湘乡市| 西充县| 龙门县| 湖北省| 东阳市| 育儿| 乌兰察布市| 绥中县| 汉源县| 安塞县| 东光县| 济源市| 斗六市| 辽源市| 宝丰县| 噶尔县| 酒泉市| 武冈市| 绥芬河市| 山东省| 全椒县| 东海县| 南陵县| 永清县| 龙陵县| 涟源市| 松桃| 博爱县| 昌都县| 穆棱市| 伽师县| 临沭县| 玉屏| 通许县| 桃江县| 色达县| 平南县| 永福县| 昆明市|