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

計算機(jī)編程課程在線評測系統(tǒng)的探究與設(shè)計

2019-03-07 11:21:04劉振超孫娜黃建昌
考試周刊 2019年16期

劉振超 孫娜 黃建昌

摘 要:目前計算機(jī)編程課程考試都是基于OJ系統(tǒng)的,評價一個OJ系統(tǒng)性能的標(biāo)準(zhǔn),主要看它的判題效率及準(zhǔn)確性。本文在對判題端的設(shè)計中,使用python來編寫判題邏輯,通過增加判題節(jié)點來提高判題效率,并將預(yù)先設(shè)計好的測試數(shù)據(jù)存儲到利用PostgreSQL和Redis構(gòu)建的后臺數(shù)據(jù)庫中,用于測試用戶程序的正確性。

關(guān)鍵詞:OJ系統(tǒng);判題邏輯;Python;PostgreSQL

隨著教育信息化的發(fā)展,OJ系統(tǒng)通常被用作練習(xí)編程和考試的平臺。它的出現(xiàn)增加了學(xué)習(xí)的靈活性,提高了學(xué)生的學(xué)習(xí)效率,減輕了教師的工作負(fù)擔(dān)。評價一個OJ系統(tǒng)性能的好壞,最關(guān)鍵的性能指標(biāo)就是判題效率及準(zhǔn)確性,所以在OJ系統(tǒng)的開發(fā)過程中,判題端的設(shè)計和開發(fā)顯得尤為重要。在判題端的設(shè)計部分,本文基于python來編寫判題邏輯,并對用戶程序的運(yùn)行時間、占用內(nèi)存進(jìn)行了限制。還將預(yù)先設(shè)計好的測試數(shù)據(jù)存儲到了利用PostgreSQL和Redis提前構(gòu)建好的后臺數(shù)據(jù)庫中,用于測試用戶程序的正確性,并通過增加判題節(jié)點的方法提高了判題效率。

一、 概述

OJ系統(tǒng)是通過對代碼進(jìn)行編譯執(zhí)行,使用預(yù)設(shè)數(shù)據(jù)進(jìn)行測試,從而分析出用戶所提交代碼正確性的系統(tǒng)。它整體可以分為兩部分——web部分和judge部分。其中,judge就是判題機(jī),它的核心被稱為judge-server,也就是判題邏輯。當(dāng)用戶提交了源代碼后,判題程序會對該源代碼進(jìn)行編譯、運(yùn)行。用戶程序執(zhí)行的結(jié)果會被捕捉并保存,然后轉(zhuǎn)交給一個裁判程序。該裁判程序會調(diào)用題目對應(yīng)文件夾內(nèi)的輸入輸出數(shù)據(jù)與用戶程序的輸出數(shù)據(jù)進(jìn)行比較,然后由系統(tǒng)返回給用戶一個狀態(tài)和程序占用內(nèi)存、運(yùn)行時間等信息。

二、 判題邏輯

本文使用python對判題邏輯進(jìn)行了編寫,它就是一個能夠去編譯和運(yùn)行用戶提交上來的源代碼的程序。它將啟動兩個進(jìn)程來實現(xiàn)判題功能。其中judged是服務(wù)進(jìn)程,負(fù)責(zé)輪詢solution表(存放在后臺數(shù)據(jù)庫中),然后獲取判題隊列;judge_client進(jìn)程負(fù)責(zé)準(zhǔn)備運(yùn)行環(huán)境、判斷運(yùn)行結(jié)果、監(jiān)測時間和空間受限。

每個題目會生成一個相應(yīng)的文件夾,文件夾中存放著測試數(shù)據(jù)。其中.in文件保存的是測試用的輸入數(shù)據(jù),比如1 1這樣的測試數(shù)據(jù)。.out文件是輸出數(shù)據(jù),比如2,對應(yīng)的程序就是1+1=2。

此外,判題程序還需要對用戶程序的運(yùn)行時間、占用內(nèi)存進(jìn)行限制。

(一) 時間限制

當(dāng)setitimer定時器計時結(jié)束時,系統(tǒng)就會給進(jìn)程發(fā)送一個信號。進(jìn)程實際運(yùn)行時間計數(shù)器(ITIMER_REAL)計時結(jié)束時會發(fā)送SIGALRM信號,進(jìn)程CPU時間計數(shù)器(ITIMER_VIRTUAL)計時結(jié)束時會發(fā)送SIGVTALRM信號。I我們設(shè)置好定時器之后,如果捕獲到了對應(yīng)的信號,說明當(dāng)前進(jìn)程運(yùn)行超時。

(二) 占用內(nèi)存限制

開發(fā)OJ的在線判題功能,需要一個子進(jìn)程在沙箱中進(jìn)行代碼的編譯、運(yùn)行并計算使用的cpu資源和內(nèi)存資源,對于子進(jìn)程的資源管理,在Linux系統(tǒng)下,我們選擇使用RLimit。

其中有兩個重要的函數(shù):

int getrlimit(int resource, struct rlimit *rlptr);

int setrlimit(int resource, const struct rlimit *rlptr);

getrlimit( )用于獲取當(dāng)前進(jìn)程的RLimit,;setrlimit( )則用于設(shè)置當(dāng)前進(jìn)程的RLimit。傳入不同的resource值,便是對當(dāng)前進(jìn)程的不同運(yùn)行資源設(shè)定限制。resource值中的RLIMIT_AS用來限制進(jìn)程的最大內(nèi)存地址空間,如果超過這個地址空間,內(nèi)存將不能分配成功。

三、 判題節(jié)點

判題部分是整個OJ系統(tǒng)的核心所在,所以提高判題端的工作效率對于提高整個系統(tǒng)的性能而言是至關(guān)重要的。對于提高judge的判題效率,采取了增加判題節(jié)點的方法,具體思路是:通過Web端發(fā)送判題的請求給RabbitMQ消息隊列,每當(dāng)有一個新任務(wù),就啟用一個judge_client進(jìn)程,每個判題請求擁有一個自己的ID(即一個判題節(jié)點),每個ID對應(yīng)著一個judge_client進(jìn)程,這樣就可以使多組測試數(shù)據(jù)同時去檢測,從而加快判題速度。如圖1所示是判題過程。

圖1 判題過程示意圖

四、 結(jié)語

本系統(tǒng)的判題端目前可以用來檢測C,C++,JAVA代碼的正確性,以及代碼運(yùn)行的時間和占用的內(nèi)存是否超出限制。今后,我們準(zhǔn)備在“如何支持更多類型題目的提交”“如何在提交記錄里顯示分?jǐn)?shù)”“怎樣增加交互式判題功能”三方面進(jìn)一步完善該系統(tǒng)。

(通訊作者:劉宇)

參考文獻(xiàn):

[1]李偉光,陳希.GOJ系統(tǒng)的研究與實現(xiàn)[N].科技創(chuàng)新導(dǎo)報.

[2]馮潞潞.基于偶然性正確測試用例發(fā)現(xiàn)的軟件錯誤定位方法[D].杭州:浙江理工大學(xué),2014.

[3]翟偉翔.WorldFIP現(xiàn)場總線分布式控制系統(tǒng)的研究與開發(fā)[D].北京:華北電力大學(xué),2008.

[4]趙濤.面向SDN的軟件定義硬件計數(shù)器研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2014.

作者簡介:

劉振超,孫娜,黃建昌,河北省黃驥市,河北農(nóng)業(yè)大學(xué)理工學(xué)院。

主站蜘蛛池模板: 狠狠做深爱婷婷久久一区| 久久久久九九精品影院| 99这里只有精品在线| 国产一区二区影院| 久久久久亚洲av成人网人人软件| 99热这里只有成人精品国产| 久久99精品久久久大学生| 美女一级毛片无遮挡内谢| 国产一国产一有一级毛片视频| 日韩精品一区二区三区大桥未久| 欧美午夜小视频| 国产亚洲欧美日韩在线一区二区三区| 久久综合成人| 小说区 亚洲 自拍 另类| 亚洲国产精品VA在线看黑人| 热久久国产| 国产福利微拍精品一区二区| 97在线国产视频| 88av在线| 999精品色在线观看| 久久精品国产999大香线焦| 无码aⅴ精品一区二区三区| 成人一区专区在线观看| 亚洲无码高清免费视频亚洲| 国产综合亚洲欧洲区精品无码| av在线人妻熟妇| 午夜丁香婷婷| 精品成人一区二区三区电影 | 欧美性猛交一区二区三区| 成人福利在线免费观看| 国产自视频| 成人午夜视频网站| 最新日韩AV网址在线观看| 色综合网址| 一本二本三本不卡无码| 国产在线98福利播放视频免费| 青青热久免费精品视频6| 中文字幕欧美日韩高清| 毛片大全免费观看| 黄色网站在线观看无码| 国产亚洲欧美日本一二三本道| 国产在线一二三区| 久久综合九色综合97网| 国产在线视频二区| 一本大道视频精品人妻| 天天干天天色综合网| 精品91自产拍在线| 久草热视频在线| 真人高潮娇喘嗯啊在线观看| 91视频首页| 欧美精品色视频| 欧美在线精品一区二区三区| 免费日韩在线视频| 青青青视频蜜桃一区二区| 亚洲欧洲综合| 999国内精品久久免费视频| 99视频在线免费看| 91精品伊人久久大香线蕉| a级毛片免费看| a色毛片免费视频| 亚洲毛片在线看| 啊嗯不日本网站| 成人午夜天| 亚洲无码久久久久| 91极品美女高潮叫床在线观看| 国产视频欧美| 高清国产va日韩亚洲免费午夜电影| 国产真实乱子伦精品视手机观看| 亚洲无线国产观看| 国产欧美在线观看一区| 国产丝袜91| 丁香婷婷综合激情| 精品国产免费第一区二区三区日韩| 五月婷婷导航| 国产Av无码精品色午夜| 中文字幕亚洲精品2页| 国产永久在线视频| 免费无码网站| 55夜色66夜色国产精品视频| 国产精品伦视频观看免费| 亚洲欧美成人影院| 亚洲A∨无码精品午夜在线观看|