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

基于Koa2的PDSUOJ系統的設計與實現

2020-04-08 09:30:50王飛飛徐帥武
電腦知識與技術 2020年3期

王飛飛 徐帥武

摘要:針對現有程序在線評測系統存在的運行效率低、功能較為單一的問題,該文設計實現了一基于Koa2的PDSUOJ系統,該系統前端與服務端框架分別采用Rect與Midway,進行數據存儲與緩存時使用PostgreSQL與Redis,同時為了滿足服務之間隔離與快速部署的需求采用Docker作為各個服務的運行容器。該系統主要實現了用戶信息管理、用戶分組信息管理、題目信息管理、題目提交評測、提交數據管理等功能,系統界面簡單友好,運行效率高,可以滿足用戶在線評測程序的需求。

關鍵詞:評測系統;服務端;數據管理

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

文章編號:1009-3044(2020)03-0094-02

1 概述

隨著計算機編程技術的發展,各類程序在線評測系統開始出現[1-3],但是現有的系統大多主要以學生競賽訓練為主,與教學工作相結合用于程序課程考核的較少,因此功能較為單一,在實現學生分組、課程分類、評測結果數據分組匯總方面存在欠缺,且存在代碼耦合嚴重難以二次開發、系統擴展性與數據安全性較差等問題。為了更好地滿足教學需要,本文在對現有系統進行分析研究的基礎上,根據學生與教師在系統性能、功能和擴展性的需求,確定系統功能與實現該系統所采用的技術,設計實現了一在線評測系統。

2 系統功能需求分析與相關技術

2.1 系統功能需求分析

通過對現有在線評測平臺的分析[4-6],在對教師與學生的需求進行調研的基礎上,將系統用戶分為兩類:普通用戶與特權用戶。

普通用戶功能包括個人信息管理、查看排行、題目查詢與瀏覽、題目提交與程序考核管理。其中個人信息管理包括用戶注冊登錄、信息查看與信息修改;查看排行可以分組查看,也可以查看他人的成績信息;題目查詢與瀏覽可以實現分類查詢、模糊搜索、題目自定義排序與查看詳情;題目提交為答題完畢后提交題目。

特權用戶功能包括用戶管理、題目管理、用戶組信息管理、考核管理。其中用戶管理包括對注冊用戶個人信息進行查看、刪除、修改等,對用戶近期答題情況、錯誤率、排名等情況進行查看;題目管理包括對題目的添加、修改、刪除、隱藏、分類等操作;用戶組信息管理包括新增用戶組,實現對用戶組信息的修改與刪除,對用戶組內成員信息的管理;考核管理包括出題、選擇參加學生、對提交題目進行評判等。

2.2 相關技術分析

本系統前端開發采用Rect,它可以在數據發生變化時檢測到相應信息以完成對視圖的自動更新,從而實現數據到視圖的映射;可以通過Rect構建組件實現代碼復用,也可以實現與其他框架的組合使用;Rect內部實現了Virtual DOM系統,當數據量大且變化快時只更新變化的數據,有效地改善了性能瓶頸問題。

Midway是基于Koa2的后端框架,與Koa2相比增加了許多便于開發的中間件,其開發語言采用TypeScript,有利于程序的后期擴展,同時兼容Egg.js的寫法,可以利用各種中間件加快開發速度,同時內置了單元測試。軟件開發過程中,程序在不同機器上會出現不兼容的狀況,不同的技術也會存在不同的環境依賴,此類問題一般采用虛擬機或者Docker技術解決,由于Docker在啟動、硬盤使用、性能、系統支持量方面存在的優勢,本系統采用Docker技術來解決環境配置問題。

3 系統設計與實現

3.1 系統設計

本系統主體架構包括前端顯示、后端邏輯層與判題服務三部分。其中Rect實現前端展示與操作邏輯,SPA模式的采用使頁面切換等由前端處理,服務端僅提供頁面數據,從而減少了網絡請求數據量,頁面展示時為無刷新的切換方式,增加了呈現速度。Service層采用TypeScript作為開發語言進行程序編寫,以Node.js為程序運行環境,如果后端服務壓力過大則可以開啟多個,與前端服務器一起實現負載均衡,減輕后端服務壓力,具體如圖l所示。

用戶提交答案到服務端后,服務端先通過一次Hash對重復提交進行過濾,然后將信息發送至Judge服務器,如果當前判題服務空閑則直接進行處理,否則將信息存入Redis緩存隊列,當有判題核心處于空閑狀態時則從緩存中進行讀取判題,處理后將結果返回至服務端。具體工作流程如下:

1)評測服務接受評測請求;

2)判斷是否空閑,如果空閑則執行下一步,否則處于等待狀態;

3)對程序進行編譯,如果編譯失敗則跳轉到Error,否則執行下一步;

(Error)響應異常,跳轉到8);

4)讀取評測數據,運行編譯后的程序對產生的結果進行比較;

5)如果結果正確則跳轉到下一步,否則跳轉到Error;

6)判斷是否還有下一組數據,如果有則跳轉到4),否則執行下一步;

7)響應請求結果為成功,執行下一步;

8)判斷緩存隊列中是否存在等待中的請求,如果存在則跳轉到3),否則結束程序。

3.2 系統實現

本系統實現的功能有權限管理、用戶注冊登錄、題目提交、用戶管理、用戶組管理、題目管理、系統判題等,下面以題目提交與判題為例進行描述。

題目提交實現過程中,將前端頁面分為題目描述與彈窗兩部分,這樣可以實現無須將頁面下拉到底端即可實現提交功能。該模塊中,選擇提交代碼語言時使用Select選擇器,用戶可在基于CodeMirror的代碼輸入框中輸入程序源代碼,通過相應配置實現代碼高亮等功能,CodeMirror通過注冊該組件上的on-Change事件獲取用戶輸入的源代碼,代碼提交時通過Base64進行編碼,這樣可以減少在數據傳輸過程中可能出現的錯誤;在服務端,獲取/upProblem路徑上的post提交時采用SubmitCon-troller類中的方法,提交獲取后通過pid調用prisma.problem方法進行詳細信息的查詢,然后通過prisma. createSubmit創建一個用于提交的等待狀態,并將信息發送給Judge服務器;Judge服務對接收到的信息進行解碼與編譯,然后將運行結果與正確答案進行比較,并將結果發送至SubmitController的updateProb-lem方法,該方法將所有測試產生的運行結果進行遍歷,得出最終運行結果,并將其寫入數據庫。

對題目進行評測時,源代碼編寫采用C++語言實現,具體如下:首先調用parse_arguments函數對傳人的實際參數進行解析,然后在Compiler函數中創建子線程,從而實現對源代碼文件的編譯,最后執行freopen0函數,并重定向到stderr/stdout文件,將結果返回給Main函數。在Main函數中獲取Compiler函數的返回值,若該值為0則給出錯誤信息。當編譯過程結束后,對mate.Json中的文件列表進行遍歷,進行外部數據的讀取,在該過程中,輸入文件使用*.in,保存輸出結果使用temp/*.out文件,如果運行超時,則向相應子進程發出信號,返回超時信息,如果運行正常,則對文件進行比較,判斷比較結果是否一致,一致則為通過,如果不一致則返回錯誤,然后將運行時間和內存寫入result.j son文件,繼續執行下一組數據。

4 結束語

本文在對現有系統與用戶需求進行分析的基礎上,設計實現了以基于Koa2的在線評測系統,系統采用三層架構模式進行開發,主要采用Rect、PostgreSQL等技術,實現了用戶分組管理、分角色權限管理、前端服務端開發分離、題目在線評測等功能,并在學生中進行測試,測試過程與結果表明:該系統界面友好、擴展性強,可以較好地滿足用戶的需求。

參考文獻:

[1]黃洪波.大規模編程題在線評判技術研究[D].廣州:華南農業大學,2016:18-20.

[2]楊志偉,曾艷姍,基于Linux的ACM在線評測系統研究[J].計算機與現代化,2010(6):166-169.

[3]李博,孟成博.對HUSTOJ在線評測系統的若干優化與創新[J].現代計算機:專業版,2013,(35):47-50,56.

[4]杜艷美.基于web前端的性能優化框架模型研究[D].綿陽:西南科技大學,2018:9-11.

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

[6]王致遠,周威,陳義明.基于SSM的ACM虛擬判題系統的設計與實現[J].電腦知識與技術,2018,14(9):95-97.

主站蜘蛛池模板: 久久精品午夜视频| 日本午夜影院| 亚洲色图欧美一区| 极品性荡少妇一区二区色欲| 国产精品毛片一区| 色婷婷狠狠干| 国产精品永久在线| 美女免费黄网站| 国产成人精品高清在线| 国产精品人成在线播放| 欧美日韩国产综合视频在线观看| 亚洲日产2021三区在线| 九九热精品在线视频| 亚洲人人视频| 日本免费新一区视频| 国产SUV精品一区二区6| 国产一区在线视频观看| 亚洲成在线观看| 国产自在自线午夜精品视频| 专干老肥熟女视频网站| 99久久精品视香蕉蕉| 国产毛片高清一级国语 | 欧美97色| 亚洲精品va| 强奷白丝美女在线观看| 国产精品永久免费嫩草研究院| 色爽网免费视频| 亚洲精品黄| 国产女主播一区| 久久a毛片| 午夜视频日本| 亚洲无线国产观看| 日韩麻豆小视频| 亚洲日本韩在线观看| 国产欧美日韩综合一区在线播放| 在线观看网站国产| 亚洲视频免费在线看| 国产精品亚洲一区二区三区z | 国产00高中生在线播放| 99这里只有精品6| 亚洲午夜国产片在线观看| 亚洲AⅤ综合在线欧美一区| 久久视精品| 日韩国产综合精选| Jizz国产色系免费| 成人自拍视频在线观看| 日韩色图区| 亚洲成人黄色在线| 国产精品亚洲五月天高清| 国产成人乱无码视频| 97se亚洲综合在线天天| 国产高清在线丝袜精品一区| 婷婷开心中文字幕| 国产无码在线调教| 久久精品无码中文字幕| 99re经典视频在线| 99re热精品视频国产免费| 欧美成人亚洲综合精品欧美激情| 亚洲欧美日韩中文字幕在线一区| 毛片免费视频| 国产成人免费视频精品一区二区| 久久综合色88| 露脸国产精品自产在线播| 欧美亚洲中文精品三区| 啊嗯不日本网站| 日本午夜在线视频| 毛片免费观看视频| 天天综合色天天综合网| 三上悠亚在线精品二区| 国产人免费人成免费视频| 欧美激情视频在线观看一区| 国产真实乱子伦精品视手机观看| av色爱 天堂网| 久久特级毛片| 这里只有精品在线| 国产成人精品一区二区不卡| 久久特级毛片| 免费欧美一级| 伊人成人在线视频| 女人18毛片水真多国产| 无码内射中文字幕岛国片 | 欧美亚洲另类在线观看|