亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種分布式Online Judge系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2023-02-18 05:35:50毛志斌張耀峰
        軟件導(dǎo)刊 2023年1期
        關(guān)鍵詞:評(píng)測(cè)代碼頁(yè)面

        曾 金,彭 玲,毛志斌,張耀峰

        (1.湖北經(jīng)濟(jì)學(xué)院 信息管理學(xué)院;2.武漢大學(xué) 信息管理學(xué)院,湖北 武漢 430072;3.湖北經(jīng)濟(jì)學(xué)院 中國(guó)改革試點(diǎn)探索與評(píng)估協(xié)同創(chuàng)新中心湖北分中心,湖北 武漢 430205)

        0 引言

        教育部針對(duì)新工科、新文科建設(shè)提出新的評(píng)估方法,要求高等教育的整個(gè)教學(xué)環(huán)節(jié)要以數(shù)字化和虛擬化教學(xué)為目的,從而驅(qū)動(dòng)整個(gè)教學(xué)活動(dòng)和成果評(píng)價(jià)的新要求[1]。同時(shí),隨著時(shí)代和科技發(fā)展,個(gè)人計(jì)算機(jī)已得到全面普及。伴隨著高級(jí)語(yǔ)言的出現(xiàn)與流行,計(jì)算機(jī)編程逐漸成為高校計(jì)算機(jī)科學(xué)與技術(shù)、大數(shù)據(jù)、人工智能、物聯(lián)網(wǎng)等專業(yè)的核心課程,并且這些專業(yè)都離不開(kāi)上機(jī)編程[2]。在計(jì)算機(jī)編程類課程中,數(shù)據(jù)結(jié)構(gòu)與算法課程必不可少,任何計(jì)算機(jī)程序都是基于數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)編寫而成。目前,大多數(shù)高校計(jì)算機(jī)專業(yè)中,課堂教學(xué)偏重于理論,在算法代碼實(shí)現(xiàn)上訓(xùn)練不足,導(dǎo)致多數(shù)學(xué)生在平時(shí)上機(jī)課或期末卷面考試中能考出較好成績(jī),但在算法復(fù)現(xiàn)及應(yīng)用上極為困難。在傳統(tǒng)實(shí)驗(yàn)課上,學(xué)生在課上完成算法代碼后,教師逐一閱讀代碼、運(yùn)行驗(yàn)證代碼、調(diào)試代碼頗為不便,卷面考試也很難檢驗(yàn)學(xué)生實(shí)際編程能力。因此,設(shè)計(jì)在線評(píng)測(cè)系統(tǒng)平臺(tái)是學(xué)科交叉融合改革的新探索,可極大程度地解決上述問(wèn)題。判題服務(wù)器可以自動(dòng)完成所有學(xué)生代碼的運(yùn)行評(píng)測(cè),可極大減輕教師負(fù)擔(dān),并提供數(shù)據(jù)反饋,讓教師更有針對(duì)性地開(kāi)展教學(xué)。因此,在計(jì)算機(jī)、大數(shù)據(jù)及人工智能專業(yè)學(xué)生培養(yǎng)中,可供在線使用的編程答題系統(tǒng)必不可少。設(shè)計(jì)一款好的Online Judge 系統(tǒng),不僅可以解決傳統(tǒng)評(píng)分過(guò)程中存在的不公平問(wèn)題[3],還可以解決教育部對(duì)教學(xué)成果評(píng)估的需求?;ヂ?lián)網(wǎng)企業(yè)招聘中,算法考核是求職者在面試中的重要考核因素。該系統(tǒng)可模擬企業(yè)對(duì)招聘者知識(shí)掌握程度進(jìn)行分析,有針對(duì)性地加強(qiáng)學(xué)生、求職者和在職人員對(duì)數(shù)據(jù)結(jié)構(gòu)和算法的實(shí)踐應(yīng)用,促使其迅速提升編程能力[4-5]。

        1 相關(guān)研究

        在線程序測(cè)評(píng)系統(tǒng)最早可追述到1960年,是計(jì)算機(jī)輔助教學(xué)系統(tǒng)中的一個(gè)分支[6]。隨著計(jì)算機(jī)技術(shù)的進(jìn)步和互聯(lián)網(wǎng)技術(shù)的發(fā)展,該系統(tǒng)在功能和應(yīng)用規(guī)模上均取得巨大進(jìn)步。

        目前,國(guó)內(nèi)外有許多在線代碼評(píng)測(cè)平臺(tái),主要分為兩類。一類主要是面向高校自主搭建的Online Judge 系統(tǒng),例如北京大學(xué)的POJ[7]、浙江大學(xué)的ZOJ[8]、哈爾濱工業(yè)大學(xué)的HITOJ[9]等。此類Online Judge 的優(yōu)點(diǎn)在于高校教師可自主發(fā)布各類考試、比賽,資源豐富、題庫(kù)優(yōu)質(zhì)、靈活性好,能夠針對(duì)特定算法基礎(chǔ)模塊對(duì)學(xué)生所學(xué)知識(shí)進(jìn)行鞏固和測(cè)驗(yàn)。另一類是專門面向社會(huì)的大型公眾Online Judge平臺(tái),例如LeetCode、UVA、CodeVS 等國(guó)內(nèi)外大型Online Judge 平臺(tái),其優(yōu)點(diǎn)在于目標(biāo)性強(qiáng)、專門針對(duì)企業(yè)招聘考試、較多算法題目,因而比較適合經(jīng)驗(yàn)豐富的編程者[10]。無(wú)論是面向高校類的Online Judge 系統(tǒng),還是面向社會(huì)的大型公眾Online Judge 平臺(tái),均存在以下問(wèn)題:

        (1)傳統(tǒng)Online Judge系統(tǒng)開(kāi)發(fā)存在穩(wěn)定性及開(kāi)發(fā)文檔維護(hù)性不足等問(wèn)題[11]。隨著計(jì)算機(jī)的普及,大量軟件及應(yīng)用數(shù)據(jù)產(chǎn)生,硬件發(fā)展速度跟不上軟件性能,由此產(chǎn)生非常嚴(yán)重的問(wèn)題,即規(guī)模大、復(fù)雜性高、容錯(cuò)能力差的軟件穩(wěn)定性差,沒(méi)有系統(tǒng)的開(kāi)發(fā)文檔導(dǎo)致維護(hù)難度非常大,傳統(tǒng)語(yǔ)言開(kāi)發(fā)已無(wú)法滿足當(dāng)下需求,這也是軟件危機(jī)的起源。

        (2)開(kāi)發(fā)語(yǔ)言存在跨平臺(tái)及效率低的缺陷[12]。分布式Online Judge 系統(tǒng)實(shí)現(xiàn)需要開(kāi)源跨平臺(tái)面向?qū)ο蟮木幊陶Z(yǔ)言,這種語(yǔ)言具有非常豐富的擴(kuò)展性,擁有良好的社區(qū)環(huán)境,使開(kāi)發(fā)者們?cè)敢庳暙I(xiàn)出自己的源代碼。在使用過(guò)程中,可以借助功能強(qiáng)大的自帶庫(kù)和社區(qū)豐富的第三方庫(kù),以最快的速度實(shí)現(xiàn)開(kāi)發(fā)者想要實(shí)現(xiàn)的功能。由于開(kāi)發(fā)環(huán)境語(yǔ)言友好且簡(jiǎn)潔、易讀,用來(lái)解決一些簡(jiǎn)單重復(fù)的工作可極大提升工作效率。

        (3)服務(wù)器穩(wěn)定性及安全性不足[13]。Online Judge 系統(tǒng)最核心的部分在于判題節(jié)點(diǎn)的規(guī)劃與實(shí)現(xiàn),在服務(wù)器端評(píng)測(cè)用戶提交的代碼,會(huì)極大地影響后端服務(wù)器的穩(wěn)定性。雖然已經(jīng)采用分布式架構(gòu)完成Online Judge 系統(tǒng),但學(xué)生提交的代碼受硬件環(huán)境限制,需采用容器技術(shù)作為Judge Node 節(jié)點(diǎn)的核心技術(shù)實(shí)現(xiàn)。容器可以打包應(yīng)用及所需要的依賴,在任意版本的Linux 和Windows 平臺(tái)上完成部署,極大地提高了程序穩(wěn)定性。此外,容器技術(shù)實(shí)現(xiàn)的沙盒隔離,可以防止常見(jiàn)Online Judge 系統(tǒng)被攻擊,例如在c/cpp 語(yǔ)言中使用include 造成服務(wù)器密碼或數(shù)據(jù)庫(kù)密碼外泄,在評(píng)測(cè)機(jī)進(jìn)行程序編譯時(shí)被攻擊代碼卡死造成服務(wù)宕機(jī)。因此,使用好容器不僅可以保護(hù)服務(wù)器端的安全隱私,也可以在Judge 節(jié)點(diǎn)宕機(jī)時(shí)重新自動(dòng)拉取鏡像,不會(huì)造成服務(wù)器判題節(jié)點(diǎn)效率降低。

        (4)個(gè)性可視化分析有待提高[14]。目前,大部分Online Judge 系統(tǒng)在判題功能上較為完善和強(qiáng)大,但在用戶個(gè)性可視化功能展示上有待進(jìn)一步提高,如對(duì)用戶編程能力的評(píng)估、強(qiáng)項(xiàng)與弱項(xiàng)的具體評(píng)估指標(biāo)、時(shí)序評(píng)估體系可視化展示等,不能深層次挖掘用戶編程能力不足的原因并提供相應(yīng)的改進(jìn)建議。

        自主研發(fā)的分布式Online Judge 系統(tǒng)不僅可以為學(xué)生提供鞏固基本數(shù)據(jù)結(jié)構(gòu)知識(shí)和提升算法編程思維能力的平臺(tái),供教師發(fā)布課堂作業(yè)、考試任務(wù),并對(duì)學(xué)生進(jìn)行測(cè)試,還可用于學(xué)院舉辦編程比賽、選拔優(yōu)秀學(xué)員從而代表學(xué)校參加各類學(xué)科競(jìng)賽,如ACM(美國(guó)計(jì)算機(jī)協(xié)會(huì))/ICPC(國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽)、藍(lán)橋杯、百度之星等賽事[15-16]。

        該Online Judge 系統(tǒng)的優(yōu)勢(shì)在于利用Python 語(yǔ)言和Django 的特性,將數(shù)據(jù)庫(kù)與管理員后端結(jié)合起來(lái),具有較強(qiáng)的容錯(cuò)能力和穩(wěn)定性,方便后期維護(hù),且可以跨平臺(tái)安裝使用;該系統(tǒng)還可以隨時(shí)調(diào)用功能強(qiáng)大的第三方庫(kù)以支持和彌補(bǔ)系統(tǒng)開(kāi)發(fā)過(guò)程中存在的不足和缺陷,以最快的速度實(shí)現(xiàn)開(kāi)發(fā)者想要實(shí)現(xiàn)的所有功能。該系統(tǒng)的創(chuàng)新之處在于其具有強(qiáng)大的數(shù)據(jù)可視化功能和測(cè)評(píng)體系,可對(duì)用戶編程能力進(jìn)行實(shí)時(shí)的可視化分析和評(píng)價(jià),并總結(jié)用戶評(píng)測(cè)不足,從而幫助用戶提高編程能力。

        2 分布式Online Judge系統(tǒng)方案

        2.1 系統(tǒng)簡(jiǎn)介與運(yùn)行環(huán)境

        Online Judge 是一個(gè)在線代碼評(píng)測(cè)系統(tǒng),其基于預(yù)先設(shè)定好的測(cè)試用例,對(duì)用戶提交的代碼進(jìn)行編譯測(cè)試,并在測(cè)試結(jié)束后將數(shù)據(jù)返回給前端頁(yè)面,給用戶以直觀的體驗(yàn)。Online Judge 系統(tǒng)可以幫助用戶鞏固數(shù)據(jù)結(jié)構(gòu)基礎(chǔ),提高算法能力及時(shí)間、空間決策能力,還可為用戶參加編程比賽或作業(yè)測(cè)試提供練習(xí)平臺(tái)[17]。

        文本分布式Online Judge 系統(tǒng)的開(kāi)發(fā)運(yùn)行環(huán)境如表1所示,系統(tǒng)運(yùn)行環(huán)境交互如圖1所示。

        Table 1 Development and operation environment表1 開(kāi)發(fā)運(yùn)行環(huán)境

        Fig.1 Interaction of distributed Online Judge system operating environment圖1 分布式Online Judge系統(tǒng)運(yùn)行環(huán)境交互

        2.2 系統(tǒng)架構(gòu)與功能模塊設(shè)計(jì)

        該分布式Online Judge 系統(tǒng)架構(gòu)主要分為4 個(gè)板塊:前端交互頁(yè)面、調(diào)度服務(wù)器端節(jié)點(diǎn)、端判題節(jié)點(diǎn)、數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)。用戶只需在前端頁(yè)面上提交評(píng)測(cè)代碼,Django 就會(huì)將前端數(shù)據(jù)寫入數(shù)據(jù)庫(kù),并將代碼傳到后端調(diào)度節(jié)點(diǎn),后端任務(wù)調(diào)度會(huì)將代碼加入評(píng)測(cè)隊(duì)列,完成評(píng)測(cè)后更新數(shù)據(jù)庫(kù)評(píng)測(cè)狀態(tài)。分布式Online Judge 系統(tǒng)架構(gòu)如圖2所示。

        Fig.2 Architecture of distributed Online Judge system圖2 分布式Online Judge系統(tǒng)架構(gòu)

        該系統(tǒng)基于B/S 架構(gòu),管理員、學(xué)生、教師可通過(guò)計(jì)算機(jī)或其他移動(dòng)設(shè)備進(jìn)行操作,系統(tǒng)功能模塊設(shè)計(jì)讓如圖3所示。

        通過(guò)對(duì)不同Online Judge 平臺(tái)進(jìn)行分析,本文根據(jù)實(shí)際需求及應(yīng)用場(chǎng)景,主要實(shí)現(xiàn)Online Judge 系統(tǒng)以下功能模塊:

        Fig.3 Design of distributed Online Judge function module圖3 分布式Online Judge功能模塊設(shè)計(jì)

        (1)用戶注冊(cè)。主要驗(yàn)證用戶是否為本校學(xué)生,對(duì)接學(xué)校教務(wù)系統(tǒng)登錄數(shù)據(jù)庫(kù),使用登錄爬蟲將用戶學(xué)號(hào)及密碼與學(xué)校教務(wù)系統(tǒng)進(jìn)行對(duì)接驗(yàn)證,驗(yàn)證成功后,將用戶信息寫入本系統(tǒng)用戶數(shù)據(jù)庫(kù)。

        (2)用戶登陸。通過(guò)Cookies 技術(shù),保持用戶登陸狀態(tài),只有在登陸狀態(tài)下,才能訪問(wèn)試題列表、提交評(píng)測(cè)代碼等操作。

        (3)試題系統(tǒng)。通過(guò)預(yù)先設(shè)定的密碼進(jìn)入,指定或隨機(jī)形成試題集合,用于課堂任務(wù)、期末考試、比賽選拔人員等場(chǎng)景。

        (4)公告系統(tǒng)。發(fā)布公告,所有人員可查看,發(fā)布口位于管理員后臺(tái)。

        (5)管理員后臺(tái)。Django[18]是基于Python,可非??焖佟⒑?jiǎn)單地進(jìn)行開(kāi)發(fā),僅需少量代碼即可完成網(wǎng)站的簡(jiǎn)單架構(gòu)。Django 基于MVC 模型,即Model 模板、View 視圖及Controller 控制器組成的設(shè)計(jì)模式[19]。MVC 模式可簡(jiǎn)化后續(xù)對(duì)程序的修改和擴(kuò)展,并可使某部分程序重復(fù)利用,極大提升開(kāi)發(fā)效率。通過(guò)對(duì)Django Admin 后臺(tái)進(jìn)行二次開(kāi)發(fā),使管理員能夠在后臺(tái)快速操作數(shù)據(jù)庫(kù),即發(fā)布公告、增刪試題數(shù)據(jù)、查看用戶提交數(shù)據(jù)等操作,方便后期管理員操作,提高系統(tǒng)可維護(hù)性。Django MVC 模型如圖4所示。

        (6)任務(wù)調(diào)度器。使用服務(wù)器作為任務(wù)調(diào)度器,用TCP 協(xié)議監(jiān)聽(tīng)1102 端口,當(dāng)Django 服務(wù)端將用戶評(píng)測(cè)數(shù)據(jù)發(fā)往次端口時(shí),自動(dòng)判斷評(píng)測(cè)類型,并轉(zhuǎn)發(fā)到相應(yīng)的Docker評(píng)測(cè)機(jī)[20-21]。

        Fig.4 Django MVC model圖4 Django MVC模型

        (7)評(píng)測(cè)機(jī)。當(dāng)Docker 沙盒里的評(píng)測(cè)機(jī)接收到判題請(qǐng)求時(shí),自動(dòng)識(shí)別題目序列號(hào),并調(diào)用對(duì)應(yīng)測(cè)試集進(jìn)行限定時(shí)間、限定內(nèi)存的評(píng)測(cè),并更新評(píng)測(cè)結(jié)果到數(shù)據(jù)庫(kù)[22]。

        3 數(shù)據(jù)庫(kù)設(shè)計(jì)

        3.1 系統(tǒng)簡(jiǎn)介與運(yùn)行環(huán)境

        分布式Online Judge 系統(tǒng)功能實(shí)現(xiàn)需要后端數(shù)據(jù)存儲(chǔ)功能,故本次開(kāi)發(fā)所采用的數(shù)據(jù)庫(kù)為Mysql 5.6 Linux x86 64位版本。

        設(shè)計(jì)數(shù)據(jù)表需考慮整個(gè)系統(tǒng)功能,綜合考慮后構(gòu)建多個(gè)數(shù)據(jù)表結(jié)構(gòu)。在設(shè)計(jì)表時(shí)需考慮以下特性:①原始性:基本表中所有數(shù)據(jù)均為數(shù)據(jù)源創(chuàng)建時(shí)的原始數(shù)據(jù);②演繹性:基本數(shù)據(jù)表可以進(jìn)行多種組合,滿足系統(tǒng)各場(chǎng)景需求;③穩(wěn)定性:表的結(jié)構(gòu)穩(wěn)定,在系統(tǒng)設(shè)計(jì)完畢后,保持表結(jié)構(gòu)不被輕易更改;④原子性:表結(jié)構(gòu)中的所有字段均無(wú)法再細(xì)分。

        3.2 數(shù)據(jù)庫(kù)表設(shè)計(jì)

        基于設(shè)計(jì)庫(kù)的特性及分布式Online Judge 系統(tǒng)的應(yīng)用場(chǎng)景,系統(tǒng)數(shù)據(jù)設(shè)計(jì)結(jié)構(gòu)主要分為以下5 張數(shù)據(jù)表:User-Info(用戶信息表)、(NoticeModel)通知公告表、ProblemSet-Model(試題信息表)、TestModel(比賽信息表)、CommitData(判題數(shù)據(jù)表)。數(shù)據(jù)庫(kù)結(jié)構(gòu)如圖5所示。

        Fig.5 Database structure圖5 數(shù)據(jù)庫(kù)結(jié)構(gòu)

        4 Online Judge系統(tǒng)實(shí)現(xiàn)及應(yīng)用

        4.1 用戶注冊(cè)

        該分布式Online Judge 系統(tǒng)對(duì)非登錄用戶限制查看部分頁(yè)面,若要完整體驗(yàn)整個(gè)系統(tǒng),則需進(jìn)行注冊(cè)。為保持信息安全,用戶注冊(cè)功能對(duì)接了本校教務(wù)系統(tǒng),從而只對(duì)本校學(xué)生開(kāi)放。

        4.2 用戶登陸

        為更好地服務(wù)學(xué)校,該系統(tǒng)通過(guò)爬蟲技術(shù)登錄學(xué)校教務(wù)系統(tǒng),通過(guò)對(duì)學(xué)校教務(wù)系統(tǒng)登陸模塊的網(wǎng)絡(luò)抓包日志進(jìn)行分析,發(fā)現(xiàn)學(xué)校教務(wù)系統(tǒng)的登陸認(rèn)證方式為非對(duì)稱公私鑰登錄。登錄方式向登錄認(rèn)證服務(wù)器申請(qǐng)公鑰,將申請(qǐng)到的公鑰信息解碼(信息為Base64 編碼加密);對(duì)獲取到的參數(shù)信息與賬戶密碼共同進(jìn)行Base64 加密,生成服務(wù)器所需密碼;用生成的高級(jí)加密標(biāo)準(zhǔn)密鑰(Advanced Encryption Standard,AES)[23]向服務(wù)器發(fā)起登陸請(qǐng)求,并保存登錄的Cookies 文件,保持登錄狀態(tài)。

        AES 非對(duì)稱加密算法是目前最具影響力的算法,其基本原理為[24]:

        (1)密鑰生成。在安全參數(shù)n上,生成公鑰(N,e)和密鑰(N,d),使得N=p*q,p、q素?cái)?shù)長(zhǎng)度為n,e互質(zhì)φ(n)=(p-1)(q-1)和d=[e-1modφ(N)];

        (2)加密。給定消息m∈Z*N,加密(N,e)(m):=[memodN];

        (3)解密。給定密文c∈Z*N,解密(N,d)(c):=[cdmodN]。

        從登錄到密鑰生成,再到整個(gè)加密和解密過(guò)程的核心代碼如圖6所示。

        Fig.6 Login encryption module decryption module core code圖6 登錄加密模解密模塊核心代碼

        4.3 用戶代碼提交

        用戶在前端頁(yè)面完成對(duì)應(yīng)題目后,可通過(guò)前端頁(yè)面提交編寫的代碼,前端頁(yè)面收到提交代碼事件后,會(huì)異步將用戶代碼交給Django 視圖層進(jìn)行處理。該系統(tǒng)視圖層處理方式為:將數(shù)據(jù)保存到數(shù)據(jù)庫(kù),根據(jù)用戶姓名、提交題目ID、提交時(shí)間用md5 生成唯一主鍵,即任務(wù)隊(duì)列的ID,Django 視圖層將任務(wù)隊(duì)列ID 傳給后端調(diào)度節(jié)點(diǎn)進(jìn)行判題調(diào)度,判題節(jié)點(diǎn)根據(jù)隊(duì)列ID 取出數(shù)據(jù)庫(kù)中用戶提交的代碼,并進(jìn)行評(píng)測(cè),評(píng)測(cè)完成后,刷新數(shù)據(jù)庫(kù)評(píng)測(cè)狀態(tài),從而實(shí)現(xiàn)代碼提交功能。

        4.4 后端判題節(jié)點(diǎn)

        該分布式Online Judge 系統(tǒng)后端判題節(jié)點(diǎn)采用一對(duì)多的方式實(shí)現(xiàn)后端判題功能集群。隨著算力增大,通過(guò)分布式計(jì)算可實(shí)現(xiàn)在多臺(tái)服務(wù)器上平衡負(fù)載,提高計(jì)算效率。在實(shí)驗(yàn)中,使用1 臺(tái)調(diào)度服務(wù)器和3 臺(tái)判題節(jié)點(diǎn)服務(wù)器,其中,調(diào)度服務(wù)使用輪詢調(diào)度算法。輪詢算法的主要實(shí)現(xiàn)原理是將前端用戶發(fā)來(lái)的判題服務(wù)請(qǐng)求由調(diào)度服務(wù)器輪流分配給多臺(tái)判題服務(wù)器,從1 到N(判題服務(wù)器個(gè)數(shù)),然后重新開(kāi)始循環(huán)。由于調(diào)度服務(wù)器不用實(shí)現(xiàn)計(jì)算功能,故可快速完成任務(wù)調(diào)度分配,而判題節(jié)點(diǎn)服務(wù)器只需完成相應(yīng)判題響應(yīng)服務(wù)即可。由于多判題服務(wù)節(jié)點(diǎn)存在,即使某個(gè)判題節(jié)點(diǎn)宕機(jī),也不影響整個(gè)服務(wù)運(yùn)行。調(diào)度服務(wù)器由Nginx 框架實(shí)現(xiàn),判題服務(wù)節(jié)點(diǎn)使用DOCKER 容器,將服務(wù)端口開(kāi)放給調(diào)度服務(wù)器,構(gòu)建路由映射表,實(shí)現(xiàn)調(diào)度服務(wù)功能。

        后端判題節(jié)點(diǎn)由兩部分組成:任務(wù)調(diào)度模塊和評(píng)測(cè)模塊。任務(wù)調(diào)度模塊的主要任務(wù)是監(jiān)聽(tīng)TCP 端口(該系統(tǒng)使用1102 端口),由于Django 會(huì)將CommitID 通過(guò)TCP 協(xié)議發(fā)送數(shù)據(jù)給調(diào)度服務(wù)器,因而此模塊的Python 實(shí)現(xiàn)為監(jiān)聽(tīng)事件,判題節(jié)點(diǎn)通過(guò)Python 的unittest 庫(kù)實(shí)現(xiàn),該庫(kù)可以實(shí)現(xiàn)代碼的自動(dòng)化測(cè)試并生成測(cè)試報(bào)告。

        4.5 管理員后臺(tái)

        為方便后續(xù)公告發(fā)布、試題增刪、比賽創(chuàng)建等操作,該系統(tǒng)還增加了管理員后臺(tái)頁(yè)面,管理員可通過(guò)預(yù)留的/admin 頁(yè)面進(jìn)行管理員后臺(tái)登錄,登錄成功后可對(duì)整個(gè)系統(tǒng)數(shù)據(jù)進(jìn)行增刪改查操作,適用于沒(méi)有網(wǎng)站維護(hù)經(jīng)驗(yàn)的管理人員。

        4.6 答題數(shù)據(jù)結(jié)果可視化

        大多傳統(tǒng)判題系統(tǒng)僅有簡(jiǎn)單的統(tǒng)計(jì)可視化功能,且均為基于靜態(tài)數(shù)據(jù)的可視化展示,并不具備深度分析的能力。該分布式Online Judge 系統(tǒng)除可視化功能強(qiáng)大外,還可實(shí)現(xiàn)動(dòng)態(tài)及增量數(shù)據(jù)更新。數(shù)據(jù)可視化主要采用Echarts,使用多容器承載、Grid 組件及ajax 實(shí)時(shí)刷新,所有數(shù)據(jù)均從Mysql 數(shù)據(jù)庫(kù)中獲取。系統(tǒng)憑借良好的交互性,通過(guò)直接集成Echarts第三方開(kāi)源數(shù)據(jù)可視化工具,更為快捷地將系統(tǒng)內(nèi)數(shù)據(jù)生成直觀生動(dòng)、可交互、可個(gè)性化定制的數(shù)據(jù)可視化圖表,賦予學(xué)生、教師或管理員對(duì)數(shù)據(jù)進(jìn)行分析整合的能力。

        學(xué)生測(cè)評(píng)成績(jī)可視化功能展示將測(cè)評(píng)成績(jī)排名進(jìn)行可視化呈現(xiàn),可按班級(jí)、系、院、校分別排名。學(xué)生可通過(guò)條形圖看到每次測(cè)評(píng)的排名結(jié)果,學(xué)生個(gè)人測(cè)評(píng)班級(jí)排名可視化界面如圖7所示。

        Fig.7 Student personal evaluation ranking圖7 學(xué)生個(gè)人測(cè)評(píng)排名

        通過(guò)折線圖可詳細(xì)看到學(xué)生某季度測(cè)評(píng)均值,該結(jié)果自動(dòng)匯總,生成個(gè)人成長(zhǎng)曲線。學(xué)生個(gè)人測(cè)評(píng)結(jié)果分?jǐn)?shù)匯總頁(yè)面如圖8所示。

        Fig.8 Summary page of student personal evaluation score圖8 學(xué)生個(gè)人測(cè)評(píng)結(jié)果分?jǐn)?shù)匯總頁(yè)面

        教師和管理員通過(guò)后臺(tái)界面可以看到綜合測(cè)評(píng)結(jié)果維度可視化頁(yè)面展示,用來(lái)分析題型測(cè)評(píng)的不足??梢暬走_(dá)圖和柱狀圖主要從圖論、數(shù)論與組合數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)、動(dòng)態(tài)規(guī)劃搜索、計(jì)算幾何、算法基礎(chǔ)6 個(gè)維度構(gòu)建測(cè)評(píng)指標(biāo),從而分析年級(jí)排名和班級(jí)排名,從不同維度獲得排名結(jié)果。該可視化頁(yè)面可以從年級(jí)和班級(jí)2 個(gè)維度進(jìn)行對(duì)比,得出學(xué)生在解題中薄弱的知識(shí)點(diǎn),有針對(duì)性地在課堂上講解相關(guān)知識(shí)點(diǎn)。綜合測(cè)評(píng)結(jié)果雷達(dá)圖和柱狀圖可視化頁(yè)面如圖9、圖10所示。

        Fig.9 Radar chart visualization page of comprehensive evaluation result圖9 綜合測(cè)評(píng)結(jié)果雷達(dá)圖可視化頁(yè)面

        Fig.10 Histogram visualization page of comprehensive evaluation result圖10 綜合測(cè)評(píng)結(jié)果柱狀圖可視化頁(yè)面

        5 結(jié)語(yǔ)

        本文提出的系統(tǒng)使用Python3.6 作為主要開(kāi)發(fā)語(yǔ)言、Django Rest Framework 作為后端框架、Centos7 系統(tǒng)作為OJ的服務(wù)環(huán)境,采用Bootstrap 完成前端頁(yè)面設(shè)計(jì)、Docker 容器技術(shù)完成沙盒隔離,并作為評(píng)測(cè)機(jī)的運(yùn)行環(huán)境??紤]到性能問(wèn)題,該系統(tǒng)使用分布式架構(gòu)以確保整個(gè)系統(tǒng)的安全性、高效性和穩(wěn)定性。在數(shù)據(jù)分析和可視化方面,該系統(tǒng)構(gòu)建種較為獨(dú)特的評(píng)測(cè)體系,并能夠生成簡(jiǎn)版?zhèn)€人成績(jī)測(cè)評(píng)分析報(bào)告。

        同時(shí),該系統(tǒng)也存在一些不足,主要有3 點(diǎn):①系統(tǒng)尚不能生成班級(jí)測(cè)評(píng)成績(jī)?cè)敿?xì)分析報(bào)告功能頁(yè)面;②各項(xiàng)測(cè)評(píng)指標(biāo)體系構(gòu)建需進(jìn)一步細(xì)化,如:一級(jí)測(cè)評(píng)指標(biāo)和二級(jí)測(cè)評(píng)指標(biāo)科學(xué)構(gòu)建方法探索;③該系統(tǒng)最終可視化的本質(zhì)是希望借助大數(shù)據(jù)思想實(shí)現(xiàn)預(yù)測(cè)趨勢(shì)的功能。因此,后續(xù)將進(jìn)一步完善該系統(tǒng)各班級(jí)測(cè)評(píng)成績(jī)分析報(bào)告和各項(xiàng)測(cè)評(píng)指標(biāo)體系構(gòu)建,如一級(jí)測(cè)評(píng)指標(biāo)體系維度(圖論、數(shù)論與組合數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)、動(dòng)態(tài)規(guī)劃搜索、計(jì)算幾何、算法基礎(chǔ)),二級(jí)測(cè)評(píng)指標(biāo)體系維度(測(cè)評(píng)效率、測(cè)評(píng)題型復(fù)雜度、測(cè)評(píng)能力、測(cè)評(píng)方法等),更加深入地挖掘和分析數(shù)據(jù)可視化功能模塊,完善其預(yù)測(cè)功能。

        猜你喜歡
        評(píng)測(cè)代碼頁(yè)面
        大狗熊在睡覺(jué)
        刷新生活的頁(yè)面
        次時(shí)代主機(jī)微軟XSX全方位評(píng)測(cè)(下)
        次時(shí)代主機(jī)微軟XSX全方位評(píng)測(cè)(上)
        攻坡新利器,TOKEN VENTOUS評(píng)測(cè)
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        Canyon Ultimate CF SLX 8.0 DI2評(píng)測(cè)
        蜜桃视频在线看一区二区三区 | 久久夜色精品国产亚洲av老牛| 美女视频在线观看一区二区三区| 亚洲国产av一区二区三区| 精品久久久久久亚洲综合网| 国产乱码一区二区三区爽爽爽| 波多野结衣乳巨码无在线| 最新亚洲人AV日韩一区二区| 高h视频在线免费观看| 亚洲国产av中文字幕| 五月激情四射开心久久久| 久久人人爽人人爽人人片av高请 | 在线观看国产激情免费视频| 日本系列中文字幕99| 久久狠狠爱亚洲综合影院| 性色av闺蜜一区二区三区| 国产精品国产三级国av| 天啦噜国产精品亚洲精品| 中文字幕 在线一区二区| 人妻少妇艳情视频中文字幕| 青春草免费在线观看视频| 无码人妻丰满熟妇啪啪网站| 性一交一乱一伦一色一情孩交| 人妻AV无码一区二区三区奥田咲| 久久久亚洲精品一区二区| 中文日本强暴人妻另类视频| 小说区激情另类春色| 国产在线精品欧美日韩电影| 午夜亚洲国产精品福利| 中文字幕日本在线乱码| 99久久精品无码一区二区毛片| 亚洲精品无码av中文字幕| 久久亚洲成a人片| 丝袜美腿亚洲综合一区| 少妇无码av无码专线区大牛影院| 亚洲国产精品福利片在线观看| 偷拍网日本一区二区三区| 国产一区二区在线中文字幕| 色综合久久蜜芽国产精品| 亚洲男人第一无码av网站| 国产精品反差婊在线观看|