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片囯产区| 欧美a在线看| 国产欧美综合在线观看第七页| 成年免费在线观看| 国产精品 欧美激情 在线播放 | 亚洲一区二区黄色| 第九色区aⅴ天堂久久香| 2022国产91精品久久久久久| 波多野结衣无码AV在线| 亚洲欧美综合精品久久成人网| 国产性爱网站| 国产网友愉拍精品视频| 一级一级一片免费| 国产精品成人一区二区不卡| 亚洲 欧美 偷自乱 图片| 欧美精品在线看| 亚洲欧美另类日本| 久久精品亚洲热综合一区二区| 国产免费看久久久| 久久精品中文字幕少妇| 国产精品短篇二区| 国产精品偷伦在线观看| 朝桐光一区二区| 男女男精品视频| 免费A∨中文乱码专区| 久久天天躁狠狠躁夜夜躁| 日韩精品高清自在线| 国产成人精品免费av| 国产迷奸在线看| 亚洲精品日产精品乱码不卡| 毛片免费在线视频| 女人毛片a级大学毛片免费| 国产视频一区二区在线观看| 精品久久久久久成人AV| 亚洲男人的天堂久久香蕉网| 69av免费视频| 久久久久久久蜜桃| 国产亚洲精品精品精品| 激情乱人伦| 亚洲资源站av无码网址| 中文字幕欧美日韩| 国产成人艳妇AA视频在线| 婷婷中文在线| 国产门事件在线| 精品国产aⅴ一区二区三区| 国产特一级毛片| 九色最新网址| 极品国产在线| 日韩精品毛片人妻AV不卡| 国产精品欧美亚洲韩国日本不卡| av在线无码浏览| 欧美特黄一级大黄录像| 欧美一级在线| 精品国产一二三区| 露脸真实国语乱在线观看| 国产成人综合久久精品下载| 日韩精品专区免费无码aⅴ| 特级毛片免费视频| 国产福利微拍精品一区二区| 日韩在线第三页| 香蕉综合在线视频91| 日韩欧美国产精品| 18禁色诱爆乳网站| 亚洲一区免费看| 国产成人久视频免费| 欧美在线视频不卡第一页| 一级毛片无毒不卡直接观看| 国产高清精品在线91| 亚洲国产精品一区二区第一页免| 激情综合网址| 青青草一区二区免费精品| 天天做天天爱夜夜爽毛片毛片| 1769国产精品免费视频| 国产黄网永久免费| 日韩精品亚洲一区中文字幕| 亚洲精品国产日韩无码AV永久免费网| 香蕉久久国产超碰青草| 免费一极毛片| 亚洲女人在线| 中文字幕调教一区二区视频|