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

在線評測系統中判題機的設計與實現

2022-06-22 12:47:00呂英華
無線互聯科技 2022年6期
關鍵詞:程序數據庫系統

呂英華

(北海職業學院,廣西 北海 536000)

0 引言

Online Judge系統是一個在線判題系統,能夠對用戶提交的多種程序源代碼進行編譯執行,并根據預先存儲的結果進行校驗后得到源程序的正確性。Online Judge系統最初使用于ACM比賽中[1],隨著國內計算機行業的不斷發展,許多高校開發了屬于自己的Online Judge系統,同時計算機行業也開發了Online Judge系統服務于個人或他人。現在Online Judge系統不僅在比賽中使用,還在教學、考試、程序上機實踐中使用,極大提高了教學工作效率和方便了各類編程人員。

1 設計思路

Online Judge系統主要有兩種典型的模式,分別是C/S模式和B/S模式。C/S模式主要用在各種大型比賽中,比如省賽、區賽、國際賽等;B/S模式主要用在教學、上機練習等。該Online Judge系統采用B/S模式,主要由前端、后端及判題機三大部分組成。整個系統以數據庫為中心,用戶在前端頁面登錄進入系統,前端頁面則顯示從數據庫中獲取的題目、比賽列表、排名等信息,用戶選擇對應的題目進行答題,提交代碼保存至數據庫。判題機是Online Judge系統的核心部分,評判之前先從數據庫中提取代碼,將代碼保存至文件中,再對代碼文件進行編譯、執行和評判操作,最后將評判結果存入數據庫中,以上則完成了評判流程,前端頁面則將評判結果從數據庫中讀取出來并顯示。系統邏輯圖如圖1所示。

圖1 系統邏輯

2 判題機實現

判題機是整個Online Judge系統的核心內容,主要功能是對用戶提交的代碼進行編譯、執行、評判等,寫好的判題機可以放入Windows環境或Linux環境中。該Online Judge系統采用Python實現,支持多種程序(如C、C++、java)源代碼編譯執行。

2.1 編譯代碼

Online Judge系統最重要的功能是支持多種編程語言提交代碼,由于不同的編程語言需要到不同的編譯器,則可以選擇Python提供的subprocess模塊去調用外部編譯器,該模塊能夠對不同編程語言進行擴展,只需配置好編譯參數即可。

具體實現是調用subprocess.Popen方法,設置方法中的shell=True,并使用cwd指定工作目錄,stdout和stderr設置為subprocess.PIPE管道。調用communicate方法獲取外部程序的輸出信息,一般返回0和1。

p=subprocess.Popen(build_cmd[language],shell=True,cwd=dir_work,stdout=subprocess.PIPE,stderr=subprocess.PIPE) #調用subprocess.Popen

out,err=p.communicate() #獲取編譯錯誤信息

2.2 評判流程

判題機的評判流程是根據代碼編譯執行后返回的信息做出對應的執行流程。首先,communicate方法如果出現編譯錯誤Compile Error,則停止,否則繼續往下執行;其次,判題機會依次檢查程序是否出現超時、超內存和非法指針、數組越界等情況,如果程序返回Time Limit Exceeded錯誤信息,則說明執行超時了;如果程序返回Memory Limit Exceeded錯誤信息,則說明執行超出內存限制了;如果程序返回Runtime Error錯誤信息,則說明程序運行錯誤,需要進行修改[2]。評判流程圖如圖2所示。

圖2 評判流程

當以上所有流程跑完,都未出現錯誤信息,程序繼續執行,下一步驟,則需要將結果和標準答案進行比較,得出答題是否正確,有以下幾種比較情況。

(1)當程序運行結果和預設的標準答案一致,則程序會返回Accepted,說明答題成功;

(2)將程序運行結果中無用的空格符、換行符等去掉后與預設的標準答案是一致的,則程序會返回Presentation Error,說明運行結果格式有誤;

(3)當程序運行結果和預設的標準答案不一致,則返回Wrong Answer,說明答題失敗[3];

(4)如果程序運行結果僅有一部分和預設的標準答案一致,會返回Output Limit Exceeded。

2.3 時間和內存測量

檢測程序的執行時間和內存,可以通過github上的一個開源項目lorun去實現。該開源項目是利用C語言編寫的一個Python擴展模塊,使程序能夠在一個類似沙盒的環境下執行,并能夠精準地獲取程序的執行時間和內存,還能對程序進行限制,防止外部調用。

2.4 安全處理

Online Judge系統還要做好安全處理,防止用戶惡意攻擊破壞系統。解決該問題,可以從以下方面進行處理。

(1)通過防火墻限制網絡訪問,或者禁止系統連接外網;

(2)對代碼進行預先檢查;

(3)將判題機和服務器進行分離;

(4)控制文件的執行權限;

(5)設置沙盒環境,將程序執行環境和外部進行隔離。可以從操作系統中設置,如設置Linux環境chroot命令,也可以使用Python的方法實現。

3 結語

設計一款完善的判題機需要用到的技術除了整套的web技術棧外,還需要操作系統、沙箱等知識,屬實不容易。該判題機的設計借助了網上多位大神的邏輯、經驗、代碼,目前已能夠正常使用,但還需進行優化改進。

猜你喜歡
程序數據庫系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 很黄的网站在线观看| 亚洲视频黄| 免费人成又黄又爽的视频网站| 丰满少妇αⅴ无码区| 欧美综合区自拍亚洲综合绿色 | 日本草草视频在线观看| 美女高潮全身流白浆福利区| 国产精品亚洲五月天高清| 大学生久久香蕉国产线观看| 亚洲成在线观看| 亚洲自偷自拍另类小说| 波多野吉衣一区二区三区av| 奇米影视狠狠精品7777| 日韩精品欧美国产在线| 99国产在线视频| 99热这里只有精品在线播放| 亚洲国产清纯| 99精品视频在线观看免费播放| 国产精品美女网站| 99re在线观看视频| 国产aⅴ无码专区亚洲av综合网| 亚洲最猛黑人xxxx黑人猛交| 人禽伦免费交视频网页播放| 国产日本欧美在线观看| 精品国产成人a在线观看| 国产欧美日韩精品第二区| 亚洲精品天堂在线观看| 狠狠色婷婷丁香综合久久韩国| 思思99思思久久最新精品| 欧美激情综合| a毛片在线播放| 日本日韩欧美| 亚洲综合久久成人AV| 欧美综合区自拍亚洲综合绿色| 亚洲精品欧美重口| 亚洲一级毛片| 手机精品视频在线观看免费| 欧美日韩第三页| 久久亚洲国产视频| 喷潮白浆直流在线播放| 女人18一级毛片免费观看| 91久久国产综合精品女同我| 她的性爱视频| 国产三级精品三级在线观看| 日韩色图区| 欧美日韩午夜| 99ri精品视频在线观看播放| 老司机午夜精品网站在线观看 | 97国产在线视频| 白浆视频在线观看| 国产精品香蕉在线| 真人免费一级毛片一区二区| 制服丝袜 91视频| 久久91精品牛牛| 国产91在线|中文| 国产自产视频一区二区三区| 91福利片| 亚洲 日韩 激情 无码 中出| 久久国产精品影院| 亚洲中文制服丝袜欧美精品| 一区二区三区精品视频在线观看| 国产精品久久自在自线观看| 日本国产在线| 国产乱子伦手机在线| 久久精品亚洲专区| 成人免费午夜视频| 久草中文网| 国产高清在线精品一区二区三区| 最新国产高清在线| 欧美成人精品在线| 欧美日韩导航| 色呦呦手机在线精品| 亚洲天堂精品视频| 日韩在线欧美在线| 狠狠色综合网| 人妻无码AⅤ中文字| 欧美成人午夜视频免看| 亚洲另类国产欧美一区二区| 人妻无码中文字幕一区二区三区| 欧美日韩北条麻妃一区二区| 一区二区三区在线不卡免费| 国产午夜福利亚洲第一|