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

        ?

        在線評(píng)測系統(tǒng)中判題機(jī)的設(shè)計(jì)與實(shí)現(xiàn)

        2022-06-22 12:47:00呂英華
        無線互聯(lián)科技 2022年6期
        關(guān)鍵詞:程序運(yùn)行標(biāo)準(zhǔn)答案評(píng)判

        呂英華

        (北海職業(yè)學(xué)院,廣西 北海 536000)

        0 引言

        Online Judge系統(tǒng)是一個(gè)在線判題系統(tǒng),能夠?qū)τ脩籼峤坏亩喾N程序源代碼進(jìn)行編譯執(zhí)行,并根據(jù)預(yù)先存儲(chǔ)的結(jié)果進(jìn)行校驗(yàn)后得到源程序的正確性。Online Judge系統(tǒng)最初使用于ACM比賽中[1],隨著國內(nèi)計(jì)算機(jī)行業(yè)的不斷發(fā)展,許多高校開發(fā)了屬于自己的Online Judge系統(tǒng),同時(shí)計(jì)算機(jī)行業(yè)也開發(fā)了Online Judge系統(tǒng)服務(wù)于個(gè)人或他人?,F(xiàn)在Online Judge系統(tǒng)不僅在比賽中使用,還在教學(xué)、考試、程序上機(jī)實(shí)踐中使用,極大提高了教學(xué)工作效率和方便了各類編程人員。

        1 設(shè)計(jì)思路

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

        圖1 系統(tǒng)邏輯

        2 判題機(jī)實(shí)現(xiàn)

        判題機(jī)是整個(gè)Online Judge系統(tǒng)的核心內(nèi)容,主要功能是對用戶提交的代碼進(jìn)行編譯、執(zhí)行、評(píng)判等,寫好的判題機(jī)可以放入Windows環(huán)境或Linux環(huán)境中。該Online Judge系統(tǒng)采用Python實(shí)現(xiàn),支持多種程序(如C、C++、java)源代碼編譯執(zhí)行。

        2.1 編譯代碼

        Online Judge系統(tǒng)最重要的功能是支持多種編程語言提交代碼,由于不同的編程語言需要到不同的編譯器,則可以選擇Python提供的subprocess模塊去調(diào)用外部編譯器,該模塊能夠?qū)Σ煌幊陶Z言進(jìn)行擴(kuò)展,只需配置好編譯參數(shù)即可。

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

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

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

        2.2 評(píng)判流程

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

        圖2 評(píng)判流程

        當(dāng)以上所有流程跑完,都未出現(xiàn)錯(cuò)誤信息,程序繼續(xù)執(zhí)行,下一步驟,則需要將結(jié)果和標(biāo)準(zhǔn)答案進(jìn)行比較,得出答題是否正確,有以下幾種比較情況。

        (1)當(dāng)程序運(yùn)行結(jié)果和預(yù)設(shè)的標(biāo)準(zhǔn)答案一致,則程序會(huì)返回Accepted,說明答題成功;

        (2)將程序運(yùn)行結(jié)果中無用的空格符、換行符等去掉后與預(yù)設(shè)的標(biāo)準(zhǔn)答案是一致的,則程序會(huì)返回Presentation Error,說明運(yùn)行結(jié)果格式有誤;

        (3)當(dāng)程序運(yùn)行結(jié)果和預(yù)設(shè)的標(biāo)準(zhǔn)答案不一致,則返回Wrong Answer,說明答題失?。?];

        (4)如果程序運(yùn)行結(jié)果僅有一部分和預(yù)設(shè)的標(biāo)準(zhǔn)答案一致,會(huì)返回Output Limit Exceeded。

        2.3 時(shí)間和內(nèi)存測量

        檢測程序的執(zhí)行時(shí)間和內(nèi)存,可以通過github上的一個(gè)開源項(xiàng)目lorun去實(shí)現(xiàn)。該開源項(xiàng)目是利用C語言編寫的一個(gè)Python擴(kuò)展模塊,使程序能夠在一個(gè)類似沙盒的環(huán)境下執(zhí)行,并能夠精準(zhǔn)地獲取程序的執(zhí)行時(shí)間和內(nèi)存,還能對程序進(jìn)行限制,防止外部調(diào)用。

        2.4 安全處理

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

        (1)通過防火墻限制網(wǎng)絡(luò)訪問,或者禁止系統(tǒng)連接外網(wǎng);

        (2)對代碼進(jìn)行預(yù)先檢查;

        (3)將判題機(jī)和服務(wù)器進(jìn)行分離;

        (4)控制文件的執(zhí)行權(quán)限;

        (5)設(shè)置沙盒環(huán)境,將程序執(zhí)行環(huán)境和外部進(jìn)行隔離。可以從操作系統(tǒng)中設(shè)置,如設(shè)置Linux環(huán)境chroot命令,也可以使用Python的方法實(shí)現(xiàn)。

        3 結(jié)語

        設(shè)計(jì)一款完善的判題機(jī)需要用到的技術(shù)除了整套的web技術(shù)棧外,還需要操作系統(tǒng)、沙箱等知識(shí),屬實(shí)不容易。該判題機(jī)的設(shè)計(jì)借助了網(wǎng)上多位大神的邏輯、經(jīng)驗(yàn)、代碼,目前已能夠正常使用,但還需進(jìn)行優(yōu)化改進(jìn)。

        猜你喜歡
        程序運(yùn)行標(biāo)準(zhǔn)答案評(píng)判
        吃飯喝水傷身體?吃飯喝湯養(yǎng)生?快看看協(xié)和醫(yī)院的標(biāo)準(zhǔn)答案
        祝您健康(2024年4期)2024-04-08 16:18:08
        交流與評(píng)判
        行政公益訴訟訴前程序運(yùn)行檢視
        法大研究生(2020年2期)2020-01-19 01:43:04
        李耀進(jìn):沒有標(biāo)準(zhǔn)答案,唯有用心用情
        中國民政(2019年12期)2020-01-02 09:12:04
        基于學(xué)習(xí)的魯棒自適應(yīng)評(píng)判控制研究進(jìn)展
        丟失了標(biāo)準(zhǔn)答案
        標(biāo)準(zhǔn)答案的反思
        詩歌評(píng)判與詩歌創(chuàng)作
        論刑事錯(cuò)案的成因
        《刑事訴訟法》修改背景下刑事和解制度淺析
        亚洲色图片区| 国产精品亚洲av无人区二区| 国产91极品身材白皙| 婷婷五月六月激情综合色中文字幕| 日本老熟妇毛茸茸| 粉嫩极品国产在线观看| 国产精品农村妇女一区二区三区 | 一个人看的视频www免费| 伊人色综合久久天天人手人停| 亚洲av永久久无久之码精| 婷婷四房播播| 丰满人妻AV无码一区二区三区| 日韩精品人妻视频一区二区三区 | 亚洲精品色播一区二区| 日本av在线一区二区| 少妇性饥渴bbbbb搡bbbb| 国产精品自产拍在线观看免费| 亚洲精品女优中文字幕| 精品精品久久宅男的天堂| 人妻丝袜无码国产一区| 久久精品爱国产免费久久| 麻豆成人久久精品二区三区免费| 久久99国产精品久久| 久久中文字幕人妻熟av女蜜柚m| 天天澡天天揉揉AV无码人妻斩 | 国产午夜福利片| 国产无码swag专区| 国产日本精品一区二区| 国产freesexvideos中国麻豆| 97午夜理论片在线影院| 国产V亚洲V天堂A无码| 久久精品国产亚洲av成人文字 | 国产91色综合久久高清| 免费少妇a级毛片人成网| 国产免费av片在线观看播放| 天堂影院久久精品国产午夜18禁| 婷婷色综合视频在线观看| 亚洲熟妇无码av另类vr影视| 中国产无码一区二区三区| 性感女教师在线免费观看| 国产精品久久久久久久久岛|