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

計算機編程課程在線評測系統的探究與設計

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

劉振超 孫娜 黃建昌

摘 要:目前計算機編程課程考試都是基于OJ系統的,評價一個OJ系統性能的標準,主要看它的判題效率及準確性。本文在對判題端的設計中,使用python來編寫判題邏輯,通過增加判題節點來提高判題效率,并將預先設計好的測試數據存儲到利用PostgreSQL和Redis構建的后臺數據庫中,用于測試用戶程序的正確性。

關鍵詞:OJ系統;判題邏輯;Python;PostgreSQL

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

一、 概述

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

二、 判題邏輯

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

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

此外,判題程序還需要對用戶程序的運行時間、占用內存進行限制。

(一) 時間限制

當setitimer定時器計時結束時,系統就會給進程發送一個信號。進程實際運行時間計數器(ITIMER_REAL)計時結束時會發送SIGALRM信號,進程CPU時間計數器(ITIMER_VIRTUAL)計時結束時會發送SIGVTALRM信號。I我們設置好定時器之后,如果捕獲到了對應的信號,說明當前進程運行超時。

(二) 占用內存限制

開發OJ的在線判題功能,需要一個子進程在沙箱中進行代碼的編譯、運行并計算使用的cpu資源和內存資源,對于子進程的資源管理,在Linux系統下,我們選擇使用RLimit。

其中有兩個重要的函數:

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

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

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

三、 判題節點

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

圖1 判題過程示意圖

四、 結語

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

(通訊作者:劉宇)

參考文獻:

[1]李偉光,陳希.GOJ系統的研究與實現[N].科技創新導報.

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

[3]翟偉翔.WorldFIP現場總線分布式控制系統的研究與開發[D].北京:華北電力大學,2008.

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

作者簡介:

劉振超,孫娜,黃建昌,河北省黃驥市,河北農業大學理工學院。

主站蜘蛛池模板: 亚洲国产精品日韩欧美一区| 亚洲国产天堂久久综合226114| 99热国产这里只有精品无卡顿"| 欧美色伊人| 国产无码精品在线| 日韩精品一区二区三区免费| 亚洲一区二区三区麻豆| 欧美一级大片在线观看| 永久免费av网站可以直接看的| 天堂网亚洲综合在线| 91小视频在线播放| 综合久久久久久久综合网| 中国一级毛片免费观看| 成人在线天堂| 伊人成人在线| 亚洲综合色婷婷| 久久五月视频| 一级在线毛片| 久草国产在线观看| 亚洲精品成人片在线观看| 蜜芽国产尤物av尤物在线看| 久久频这里精品99香蕉久网址| 高清欧美性猛交XXXX黑人猛交 | 国产激情影院| 波多野结衣视频网站| 中文字幕在线看| 欧美性色综合网| 亚洲人成网7777777国产| 久久精品人人做人人爽| 精品无码人妻一区二区| 亚洲视频一区| 真实国产乱子伦高清| 黄色污网站在线观看| 99青青青精品视频在线| 香蕉网久久| 久久国产精品77777| 天堂亚洲网| 亚洲国产高清精品线久久| 久久免费成人| 国产高潮流白浆视频| 亚洲天堂精品视频| 丁香五月亚洲综合在线| 欧美激情视频二区三区| 老司机午夜精品网站在线观看 | 99热这里只有精品国产99| 国产精品片在线观看手机版| 伊人精品成人久久综合| m男亚洲一区中文字幕| 999福利激情视频| 亚洲AV无码乱码在线观看裸奔 | 人人爽人人爽人人片| 欧美国产日本高清不卡| 99精品在线看| 亚洲精选无码久久久| 欧美激情综合一区二区| 色综合五月婷婷| av在线5g无码天天| 久久久久亚洲精品无码网站| 欧美视频在线第一页| 色婷婷视频在线| 国产人成乱码视频免费观看| 成人av专区精品无码国产| 青青久久91| 国产免费久久精品99re不卡 | 亚洲精品成人片在线观看| 亚洲色图综合在线| 亚洲精品制服丝袜二区| 精品国产美女福到在线直播| 亚洲精品成人片在线观看| 91娇喘视频| 亚洲AV无码久久天堂| 国产在线精品香蕉麻豆| 亚洲综合第一区| 亚洲精品国偷自产在线91正片| 国产主播在线观看| 日韩精品亚洲一区中文字幕| 国产第一页免费浮力影院| 中文字幕不卡免费高清视频| 国产jizz| 99成人在线观看| 天天色天天操综合网| 天天色天天综合网|