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

        ?

        基于SSM的ACM虛擬判題系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2018-05-28 11:10:10王致遠(yuǎn)周威陳義明
        電腦知識(shí)與技術(shù) 2018年9期
        關(guān)鍵詞:網(wǎng)絡(luò)爬蟲

        王致遠(yuǎn) 周威 陳義明

        摘要:虛擬判題系統(tǒng)(virtual judge,VJ)是一種功能強(qiáng)大的ACM在線判題系統(tǒng),它不僅能動(dòng)態(tài)獲取著名ACM在線判題系統(tǒng)中的題目、調(diào)用該判題系統(tǒng)的判題引擎并獲得結(jié)果,而且還能在本地存儲(chǔ)相關(guān)的信息,為培養(yǎng)ACM選手作出了重要貢獻(xiàn)。針對(duì)目前的VJ使用SSH框架組合進(jìn)行開發(fā),面臨struts 2安全漏洞和hibernate笨重的問題,使用模型、視圖和控制分離的MVC模式,結(jié)合網(wǎng)絡(luò)爬蟲技術(shù),開發(fā)了一個(gè)基于SSM框架組合的虛擬在線判題系統(tǒng)。該系統(tǒng)已在湖南農(nóng)業(yè)大學(xué)的ACM選手訓(xùn)練中發(fā)揮巨大的作用。

        關(guān)鍵詞:虛擬判題系統(tǒng);SSM框架;網(wǎng)絡(luò)爬蟲

        中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)09-0095-03

        1 背景

        參加過ACM競賽的同學(xué)都知道,想要穩(wěn)扎穩(wěn)打的提升能力,進(jìn)行一次涉及全方位題型的競賽是必不可少的。現(xiàn)在許多學(xué)校都有自己的Online judge(在線判題系統(tǒng)),其擁有出題,判題,舉行和參加競賽的功能。為大家的學(xué)習(xí)提供了很大的幫助。但不同的Online judge有不同的題目。于是,就有這么一種情況,在一次競賽中想用到不同Online judge的不同題目。這就變得麻煩了。放棄一些題目?覺得可惜;重新出題?要斟酌出全面,嚴(yán)謹(jǐn)?shù)臏y試用例的話,不但麻煩,而且還要花上不少時(shí)間?;谶@樣一種需求下Virtual judge(虛擬判題系統(tǒng))的概念誕生了。

        Virtual judge與在線判題系統(tǒng)不同。Online judge是有自己的判題引擎的,但Virtual judge沒有。那Virtual judge是如何實(shí)現(xiàn)判題功能的呢?事先在Online judge上注冊一個(gè)賬號(hào)。通過那個(gè)賬號(hào)將代碼提交給Online judge,然后利用網(wǎng)絡(luò)爬蟲獲取判題結(jié)果并展現(xiàn)給用戶。同樣,Virtual judge的題目也是可以通過網(wǎng)絡(luò)爬蟲從各個(gè)Online judge的題庫抓過來的。

        當(dāng)前網(wǎng)絡(luò)上有著SSH框架的Virtual judge系統(tǒng)。雖然已經(jīng)是十分完善的Virtual judge網(wǎng)站。但相對(duì)SSH而言,SSM框架更輕量級(jí),效率更高,各層之間的耦合度更低。而且SSH框架還有一些缺點(diǎn),例如:Hibernate雖然能夠自動(dòng)生成SQL語句,但卻難以優(yōu)化,而且使用的門檻較高。以及,Struts2的安全性有待提高,黑客能通過漏洞獲得服務(wù)器的權(quán)限。于是,我們決定用SSM框架搭建Virtual judge。

        2 相關(guān)技術(shù)

        系統(tǒng)實(shí)現(xiàn)使用了SSM框架集合和網(wǎng)絡(luò)爬蟲技術(shù)。

        2.1 SSM框架

        SSM框架即Spring+SpringMVC+Mybatis,是目前非常流行的web項(xiàng)目框架。能大大提高開發(fā)效率,減少重復(fù)工作,減少開發(fā)難度。

        1)Spring是一個(gè)基于ioc(控制反轉(zhuǎn))和AOP(面向切面)的框架。主要功能是把創(chuàng)建對(duì)象的工作交給Spring。由Spring創(chuàng)建對(duì)象并給對(duì)象的屬性賦予相關(guān)值,實(shí)現(xiàn)對(duì)對(duì)象的管理。使開發(fā)過程更加簡便。

        2)SpringMVC是一個(gè)常用的MVC框架,應(yīng)用于控制層。通過xml配置,注解來決定如何處理用戶請(qǐng)求,分隔了各層功能,便于程序員的開發(fā)和優(yōu)化。

        3)Mybatis處理與數(shù)據(jù)庫的交互。只需要提供SQL語句,建立連接,異常處理等其他重復(fù)的工作都交給Mybatis。使用靈活,便于SQL優(yōu)化。

        MVC框架是指視圖(View),控制器(Controller),模型(Model)。視圖用于與用戶交互。收到的請(qǐng)求由控制器決定如何處理。而模型是用于記錄用戶上傳數(shù)據(jù)或者所需要的業(yè)務(wù)模型。

        MVC框架將web項(xiàng)目的界面,邏輯,數(shù)據(jù)分隔開來。降低了各個(gè)部件的耦合性,提高了項(xiàng)目的可讀性,而且更方便項(xiàng)目工程的搭建。如圖1。

        2.2 網(wǎng)絡(luò)爬蟲技術(shù)

        網(wǎng)絡(luò)爬蟲是一種按照特定規(guī)則能自動(dòng)在網(wǎng)絡(luò)上尋找并抓取所需求信息的程序或腳本,經(jīng)常用于一些搜索引擎之類的網(wǎng)站?,F(xiàn)如今是大數(shù)據(jù)時(shí)代,截至2016年為止,光中國就有364.7萬余個(gè)網(wǎng)站。隨著信息與網(wǎng)站的越來越多,網(wǎng)絡(luò)爬蟲在其中就能發(fā)揮更大的作用。

        不過Virtual judge所需要的題目信息等都是從確定的Online judge上獲取的,是基于目標(biāo)網(wǎng)頁的網(wǎng)絡(luò)爬蟲,所以在Virtual judge的搭建中只需要運(yùn)用相對(duì)簡單的方法就能獲取我們所需要的相關(guān)信息。唯一麻煩的是有多個(gè)Online judge,所以要針對(duì)不同Online judge編寫不同代碼,工作量較大。

        3 虛擬判題系統(tǒng)功能及實(shí)現(xiàn)

        Virtual judge是基于滿足用戶更方便地在Online judge上做題,競賽的需求而搭建出來的。首先需要能夠從各個(gè)Online judge上獲取題目信息,以及能將代碼提交給對(duì)應(yīng)Online judge并再獲取提交狀態(tài)。那么相關(guān)的爬蟲代碼是必不可少的。為了能有更好的用戶體驗(yàn),一些Online judge的功能也是很需要的。一個(gè)賬號(hào)的登錄注冊系統(tǒng)。通過個(gè)人賬戶能更好的記錄,了解自己的做題情況。賬號(hào)功能也是競賽系統(tǒng)必備的一部分,因?yàn)橐胁煌馁~號(hào)才能方便分辨不同的參賽者。還有一個(gè)與ACM競賽相仿的競賽系統(tǒng),這是判題系統(tǒng)最重要的部分。它能很好地鍛煉參賽學(xué)生,讓學(xué)生對(duì)ACM更熟悉,對(duì)競賽更有經(jīng)驗(yàn)。

        3.1 系統(tǒng)功能描述

        1)賬號(hào)管理

        這個(gè)部分比較簡單,是常見的用戶信息的注冊與登錄。主要包括用戶的登錄(賬號(hào)密碼的判斷),用戶注冊(輸入格式的要求,以及對(duì)數(shù)據(jù)庫新添數(shù)據(jù)),查看用戶信息(顯示相關(guān)信息,重點(diǎn)在于答題的情況)。該功能用于保存用戶信息,主要是記錄用戶的題目提交狀態(tài)(正確,超時(shí),答案錯(cuò)誤,內(nèi)存超限,格式錯(cuò)誤等)和舉辦的競賽(主要是比賽信息)。不登錄的用戶是無法參加比賽和提交代碼的。該功能主要是用來方便用戶能更直觀的查看自己的做題情況。其他相關(guān)功能:為了用戶賬號(hào)密碼的安全,密碼將用MD5加密。

        2)競賽功能

        比賽主要有id,標(biāo)題,描述,分類,密碼,開始時(shí)間,結(jié)束時(shí)間,題目,管理員,還有參賽者的提交狀態(tài)這幾個(gè)重要屬性。其中題目最少1道,最多26道,題目不同重復(fù)而且必須已經(jīng)保存在題庫中。比賽時(shí)間由創(chuàng)建者決定,能根據(jù)具體需要更好的設(shè)計(jì)比賽。比賽得分參考常見的ACM比賽。首先是比較答對(duì)題目數(shù)目,在題目數(shù)目一致的情況下,比較解題時(shí)間。并且每次提交代碼但錯(cuò)誤的話,加20分鐘懲罰時(shí)間。通過該功能就很方便地實(shí)現(xiàn)了用不同oj的不同題目進(jìn)行比賽,為組織比賽的老師提供了極大的方便。而且在比賽中加入實(shí)時(shí)排名功能,能夠查看每個(gè)人的答題情況,對(duì)參賽的學(xué)生和輔導(dǎo)老師都提供了很大的幫助。這樣就能針對(duì)學(xué)生水平, 隨時(shí)加以調(diào)整。為ACM競賽做好充實(shí)的準(zhǔn)備。

        3.2系統(tǒng)體系結(jié)構(gòu)

        Virtual judge虛擬判題系統(tǒng)是一種特別的判題系統(tǒng)。它與一般常見的Online judge功能相仿。擁有記錄題目信息,判斷代碼對(duì)錯(cuò),舉行和參加競賽等必要功能。其不同之處在于它本身不擁有判題功能。服務(wù)器只進(jìn)行賬號(hào)管理,題目信息保存,競賽的舉行與信息記錄。判題的過程交給其他Online judge。其原理是通過用戶請(qǐng)求的OJ名稱和題號(hào),將提交的代碼通過URL請(qǐng)求發(fā)給Online judge,然后利用爬蟲技術(shù)從Online judge響應(yīng)的網(wǎng)頁上獲得判題的結(jié)果,獲得的信息顯示在Virtual judge的網(wǎng)頁上,同時(shí)也記錄在數(shù)據(jù)庫里。同理,Virtual judge也可以用這種方法通過請(qǐng)求OJ名和題號(hào)在對(duì)應(yīng)的Online judge上獲取題目信息。利用簡單的爬蟲原理來解決判題功能,而服務(wù)器本身不進(jìn)行判題,還能減少服務(wù)器的壓力。如圖2。

        3.3 爬蟲實(shí)現(xiàn)

        首先,用一個(gè)json文件記錄在各個(gè)oj創(chuàng)建的賬號(hào),用這個(gè)賬號(hào)登錄,提交代碼。然后,為了更方便的處理代碼,我們給每個(gè)爬蟲方法寫個(gè)父類,父類擁有一些基本的屬性方法,再在各個(gè)oj具體的爬蟲實(shí)現(xiàn)時(shí)重寫方法。需要的父類有:oj賬號(hào)登錄,題目爬取,題目更新,問題更新爬蟲,查找oj支持的編譯語言,獲取所提交問題狀態(tài)等。因?yàn)椴煌琽j會(huì)有不同的html頁面,不同的url。對(duì)每個(gè)oj都需要區(qū)別對(duì)待。我們?yōu)槊總€(gè)oj寫多個(gè)java類來實(shí)現(xiàn)爬蟲功能,如:該oj信息(頁面編碼,url等),支持的編譯語言,登錄對(duì)應(yīng)oj賬號(hào)操作 ,題目代碼提交,頁面信息爬取。其中獲取信息的方法是獲得請(qǐng)求所響應(yīng)的html頁面。從中用Pattern和Matcher(正則表達(dá)式)匹配一些特點(diǎn)來找到需要的信息(如:獲取hdu上題目的標(biāo)題,可以通過顏色color:#1A5CC8 來查找。)爬蟲代碼的請(qǐng)求通過多線程的方式運(yùn)行(Callable、Future),為了防止服務(wù)器壓力過大,要設(shè)置最多運(yùn)行線程數(shù)量。這個(gè)部分最麻煩的是要對(duì)每個(gè)oj都要寫一份相應(yīng)的代碼。工作量大,而且頁面更新的話,還要重新編寫代碼。

        其他需實(shí)現(xiàn)的相關(guān)功能:可以在Virtual judge的題目頁面通過輸入oj名和題號(hào)直接發(fā)送url請(qǐng)求來獲取題目。還有需要能向Online judge不斷發(fā)送請(qǐng)求來更新題目信息和提交狀態(tài)。

        3.4 數(shù)據(jù)庫設(shè)計(jì)

        數(shù)據(jù)庫中至少要建立7個(gè)表。分別是用戶表,登錄信息表,題目表,題目描述表,提交狀態(tài)表,競賽表,競賽題目表。這些表用來記錄必要的信息,并能對(duì)一些相應(yīng)的信息不斷地進(jìn)行更新。

        1) 用戶表:記錄用戶信息,賬號(hào)密碼的表,為了用戶安全,密碼是用MD5加密。屬性有賬號(hào)id,用戶名,密碼,別稱以及qq號(hào),郵箱等其他信息。

        2) 登錄信息表:記錄用戶賬號(hào)登錄情況的表,屬性有:用戶的登錄時(shí)間,訪問網(wǎng)頁時(shí)間,和離開網(wǎng)頁時(shí)間,還有登錄的ip地址以及登錄的成功與否。

        3) 題目表:記錄題目的基本信息,屬性有:題目id,標(biāo)題,時(shí)間限制,內(nèi)存限制,來源oj,原始題號(hào),在原始o(jì)j上的url。

        4) 題目描述表:用于記錄題目的相關(guān)信息,屬性有:對(duì)應(yīng)題目id,題目描述,輸入要求,輸出要求,樣例輸入,樣例輸出等。這部分題目屬性有可能會(huì)隨時(shí)間而變化。所以還要有個(gè)最后更新時(shí)間。

        5) 提交狀態(tài)表:用于記錄用戶對(duì)題目提交的結(jié)果。屬性有:題目id,原始題號(hào),原始o(jì)j,提交用戶,提交結(jié)果,提交時(shí)間,更新時(shí)間等。

        6) 競賽表:用于記錄所創(chuàng)建的競賽的相關(guān)信息,屬性有:競賽id,標(biāo)題,競賽描述,開始時(shí)間,結(jié)束時(shí)間,競賽創(chuàng)建者等。

        7)競賽題目表:一個(gè)簡單的用于記錄在競賽中使用到的題目的表。屬性有:題目id,競賽id,題號(hào)(競賽內(nèi)),標(biāo)題等。

        3.5 系統(tǒng)實(shí)現(xiàn)

        Virtual judge的jsp頁面主要有:

        1) 主頁:說明該Virtual judge的功能,并寫明用到了那些oj,讓使用者一目了然。

        2)題目頁面:顯示題目列表,注明來源oj,題號(hào),標(biāo)題,更新時(shí)間??梢赃M(jìn)行搜索,會(huì)從服務(wù)器中查找匹配的題目。要是對(duì)oj與題號(hào)都進(jìn)行了要求,如果題庫中沒有,會(huì)自動(dòng)去試圖去對(duì)應(yīng)oj獲取對(duì)應(yīng)題目。

        3)提交狀態(tài)頁面:該頁面顯示所有的提交狀態(tài)。顯示提交用戶,oj,題號(hào),提交狀態(tài)和提交語言。同樣可以進(jìn)行檢索。

        4)競賽頁面:顯示所有競賽,比賽編碼,比賽標(biāo)題,比賽開始時(shí)間,持續(xù)時(shí)間,比賽創(chuàng)建者。在比賽結(jié)束前點(diǎn)擊對(duì)應(yīng)比賽名能參加比賽。在競賽頁面內(nèi)還有題目子頁面,提交子頁面和排名子頁面。這些頁面能觀看該比賽的所有題目和提交狀態(tài),還能查看對(duì)參賽者的答題情況進(jìn)行排名。該頁面在Virtual judge中十分重要,我們可以寫一些簡單的小功能來方便用戶的使用。比如,在某次競賽的主頁面,我們可以在每道題目后面加上標(biāo)記來告訴登錄用戶每道題的做題情況?;蛘呤窃陲@眼的地方加上剩余時(shí)間,讓用戶有更好的體驗(yàn)。

        4 結(jié)束語

        現(xiàn)如今各個(gè)高校都在搭建自己的Online judge,而Online judge的普及體現(xiàn)了ACM的算法知識(shí)在現(xiàn)如今的學(xué)習(xí)中更加重要。而Virtual judge的出現(xiàn)是必然的。雖然它脫離不了Online judge,但他在眾多Online judge的幫助下使得學(xué)生的學(xué)習(xí)以及老師的教學(xué)準(zhǔn)備變得便利。本文描述搭建一個(gè)SSM框架的Virtual judge的設(shè)計(jì)思想與具體實(shí)現(xiàn)。Virtual judge的出現(xiàn)能讓用戶更加便捷地進(jìn)行競賽,也能更加全面的查看自己的做題過程。由淺入深的練習(xí)系統(tǒng), 競賽輔導(dǎo)教師可以自己舉行比賽,對(duì)ACM的學(xué)習(xí)有很大幫助。

        參考文獻(xiàn):

        [1] 張錦煌. 基于SSM整合框架開發(fā)的項(xiàng)目管理系統(tǒng)[J]. 電腦知識(shí), 2015, 11(11): 103-105.

        [2] 肖祥林. 基于 SSM 的畢業(yè)設(shè)計(jì)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子科技, 2016, 29(10): 115-117.

        [3] 杜長燕. 基于WEB的網(wǎng)絡(luò)爬蟲的設(shè)計(jì)[J]. 無線互網(wǎng)科技, 2015(5): 49-50.

        [4] 王騰. Online Judge系統(tǒng)的設(shè)計(jì)開發(fā)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2006, 23(12): 135-137.

        [5] 吳舜歆. Online Judge在C++程序設(shè)計(jì)課程實(shí)踐教學(xué)中的應(yīng)用[J]. 高教學(xué)刊, 2016(9): 164-167.

        [6] 顧春琴. 基于Online Judge的C語言實(shí)踐教學(xué)平臺(tái)研究[J]. 現(xiàn)代計(jì)算機(jī):專業(yè)版, 2015(18): 76-80.

        [7] 王錫良. 利用網(wǎng)絡(luò)爬蟲技術(shù)獲取天氣預(yù)報(bào)[J]. 電腦編程技巧與維護(hù), 2015(19): 18-19.

        猜你喜歡
        網(wǎng)絡(luò)爬蟲
        基于分布式的農(nóng)業(yè)信息檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        微信平臺(tái)下的教務(wù)信息獲取和隱私保護(hù)方法研究
        基于網(wǎng)絡(luò)爬蟲的電子易購軟件設(shè)計(jì)與實(shí)現(xiàn)
        搜索引擎技術(shù)的發(fā)展現(xiàn)狀與前景
        煉鐵廠鐵量網(wǎng)頁數(shù)據(jù)獲取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        基于社會(huì)網(wǎng)絡(luò)分析的權(quán)威網(wǎng)頁挖掘研究
        主題搜索引擎中網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)研究
        淺析如何應(yīng)對(duì)網(wǎng)絡(luò)爬蟲流量
        中國市場(2016年23期)2016-07-05 04:35:08
        基于淘寶某商品銷售量監(jiān)控系統(tǒng)
        網(wǎng)絡(luò)爬蟲針對(duì)“反爬”網(wǎng)站的爬取策略研究
        成人一区二区人妻少妇| 久久精品无码一区二区三区不| 亚洲日本va午夜在线电影| 狠狠久久亚洲欧美专区| 国产av无码专区亚洲aⅴ| 蜜桃视频在线在线观看| 男女av一区二区三区| 日本阿v片在线播放免费| 白又丰满大屁股bbbbb| 日韩A∨精品久久久久| 北岛玲日韩精品一区二区三区| 日本高清一区二区三区不卡| 久久综合噜噜激激的五月天| 国产精品免费_区二区三区观看 | 中日韩欧美成人免费播放| 国产白浆一区二区三区佳柔| 无码国产精品一区二区免费式芒果 | 成人性生交大片免费| 亚洲午夜精品a区| 久久国产A∨一二三| av在线播放亚洲天堂| 激情内射亚洲一区二区三区| 国产成人午夜精华液| 日中文字幕在线| 99久久精品国产一区色| 久久精品第九区免费观看| 挺进朋友人妻雪白的身体韩国电影| 国产白丝在线| 亚洲天堂av中文字幕| 精品视频在线观看日韩 | 大伊香蕉精品视频一区| 极品新娘高清在线观看| 狠狠色欧美亚洲狠狠色www| 999国内精品永久免费视频| 亚洲动漫成人一区二区| 91精品福利一区二区三区| 人人做人人爽人人爱| 美女胸又www又黄的网站| 亚洲日本一区二区在线观看| 无遮挡激情视频国产在线观看| 亚洲av综合色区无码一二三区|