国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      Java編程題目自動(dòng)評(píng)判方法及系統(tǒng)與流程

      文檔序號(hào):12362753閱讀:960來(lái)源:國(guó)知局
      Java編程題目自動(dòng)評(píng)判方法及系統(tǒng)與流程

      本發(fā)明涉及程序編寫驗(yàn)證技術(shù)領(lǐng)域,具體涉及一種Java編程題目自動(dòng)評(píng)判方法及系統(tǒng)。



      背景技術(shù):

      計(jì)算機(jī)程序編程的應(yīng)用在各個(gè)領(lǐng)域發(fā)展迅速,為了適應(yīng)當(dāng)前社會(huì)經(jīng)濟(jì)和信息產(chǎn)業(yè)化快速發(fā)展的需求,計(jì)算機(jī)程序編程已成為程序員必須熟練掌握的一種基本技能。近幾年來(lái),IEEE Spectrum通過(guò)跟蹤Google搜索、社交網(wǎng)站如Stack Overflow、Twitter、Reddit和Hacker News上的相關(guān)討論,GitHub上的項(xiàng)目,以及工作招聘等信息,分析了49種編程語(yǔ)言的流行度,Java編程語(yǔ)言的流行度一直名列前茅。另外,無(wú)論是學(xué)校對(duì)學(xué)生的Java語(yǔ)言的教學(xué),還是培訓(xùn)機(jī)構(gòu)對(duì)Java程序員的培訓(xùn)都是日益增加。因而,Java編程語(yǔ)言的前景無(wú)量,可為社會(huì)信息產(chǎn)業(yè)化快速發(fā)展起到不可替代的作用。

      目前的編程類題目自動(dòng)評(píng)判方法主要有3種,第一種,根據(jù)靜態(tài)結(jié)果文件進(jìn)行判分,評(píng)判系統(tǒng)通過(guò)比較考生提供的結(jié)果文件和預(yù)先準(zhǔn)備的標(biāo)準(zhǔn)結(jié)果文件的內(nèi)容進(jìn)行評(píng)判;第二種,通過(guò)動(dòng)態(tài)執(zhí)行程序進(jìn)行判分,評(píng)判系統(tǒng)動(dòng)態(tài)編譯考生提交的程序,并按照一定的測(cè)試用例動(dòng)態(tài)執(zhí)行程序,通過(guò)比較程序運(yùn)行返回的結(jié)果和標(biāo)準(zhǔn)結(jié)果進(jìn)行評(píng)判;第三種,根據(jù)程序源代碼進(jìn)行判分,評(píng)判系統(tǒng)按照一定的算法對(duì)考生提交的源程序代碼和預(yù)先準(zhǔn)備的標(biāo)準(zhǔn)源程序代碼內(nèi)容進(jìn)行比較,依據(jù)它們的相似性進(jìn)行評(píng)判。另外,這些方法在分?jǐn)?shù)評(píng)定上仍存在一些問題:方法1和方法2使用黑盒的方式,只驗(yàn)證結(jié)果而不驗(yàn)證程序流程,無(wú)法完全保證程序的正確性,且程序中任何一個(gè)輸出格式的錯(cuò)誤都有可能導(dǎo)致整個(gè)程序錯(cuò)誤;方法3也存在較大的問題,對(duì)大多數(shù)語(yǔ)言來(lái)說(shuō),完成某一功能的程序?qū)崿F(xiàn)方法種類較多,單靠相似度判定還比較困難。已有的方法主要針對(duì)過(guò)程型語(yǔ)言的特點(diǎn)進(jìn)行設(shè)計(jì),只適合于面向過(guò)程的程序評(píng)判,并不適用于面向?qū)ο蟪绦?。與面向過(guò)程程序相比,面向?qū)ο蟪绦驘o(wú)論從編程思想、程序結(jié)構(gòu),還是語(yǔ)法成分、成分之間的邏輯關(guān)系以及代碼形式上都有其自身的特點(diǎn),在程序評(píng)判時(shí)只查看結(jié)果或只比較相似度都是不完善的。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明的目的在于提出一種Java編程題目自動(dòng)評(píng)判方法及系統(tǒng),能夠自動(dòng)評(píng)判Java編程題目的答題代碼,節(jié)省了人工資源,且提高了評(píng)判的全面性。

      為達(dá)此目的,本發(fā)明采用以下技術(shù)方案:

      一種Java編程題目自動(dòng)評(píng)判方法,包括:

      接收答題代碼和Java編程題目的預(yù)設(shè)代碼;

      對(duì)所述答題代碼和預(yù)設(shè)代碼進(jìn)行處理,并插入評(píng)判代碼,得到待編譯代碼;

      對(duì)所述待編譯代碼進(jìn)行編譯,并判斷是否編譯成功;

      若是,則運(yùn)行編譯后的程序,執(zhí)行所述評(píng)判代碼;及,

      通過(guò)所述評(píng)判代碼的運(yùn)行結(jié)果統(tǒng)計(jì)所述答題代碼的得分。

      優(yōu)選地,所述對(duì)所述答題代碼和預(yù)設(shè)代碼進(jìn)行處理,并插入評(píng)判代碼,得到待編譯代碼具體為:

      將所述答題代碼和預(yù)設(shè)代碼進(jìn)行合并和拼接;

      對(duì)不安全的代碼進(jìn)行過(guò)濾;

      按照評(píng)判服務(wù)器運(yùn)行的需要,將答題代碼中的操作代碼改寫為評(píng)判代碼。

      優(yōu)選地,所述通過(guò)所述評(píng)判代碼的運(yùn)行結(jié)果統(tǒng)計(jì)所述答題代碼的得分之后還包括:

      通過(guò)異步告知的方式將所述得分返回給考生客戶端。

      優(yōu)選地,所述接收答題代碼和Java編程題目的預(yù)設(shè)代碼之前還包括:

      考試服務(wù)器根據(jù)考試要求編寫Java編程題目的題干并說(shuō)明題意,選擇性地提供預(yù)設(shè)代碼;

      考生客戶端閱讀所述Java編程題目并進(jìn)行答題代碼編寫,并將所述答題代碼上傳至考試服務(wù)器。

      作為本發(fā)明的另一個(gè)方面,提供一種Java編程題目自動(dòng)評(píng)判系統(tǒng),包括:考生客戶端、考試服務(wù)器和評(píng)判服務(wù)器;

      所述考生客戶端,用于根據(jù)Java編程題目的預(yù)設(shè)代碼進(jìn)行答題,得到答題代碼,并將所述答題代碼提交至考試服務(wù)器;還用于接收返回的答題代碼保存結(jié)果和評(píng)判結(jié)果;

      所述考試服務(wù)器,用于接收所述答題代碼和預(yù)設(shè)代碼,對(duì)所述考生答題代碼和預(yù)設(shè)代碼進(jìn)行處理,并插入評(píng)判代碼,得到待編譯代碼,將所述待編譯代碼發(fā)送至評(píng)判服務(wù)器;用于保存所述答題代碼并將保存結(jié)果發(fā)送至考生客戶端;還用于接收評(píng)判服務(wù)器返回的評(píng)判結(jié)果,并將所述評(píng)判結(jié)果發(fā)送至考生客戶端;

      所述評(píng)判服務(wù)器,用于對(duì)所述待編譯代碼進(jìn)行編譯,并判斷是否編譯成功;若是,則運(yùn)行編譯后的程序,執(zhí)行所述評(píng)判代碼;通過(guò)所述評(píng)判代碼的運(yùn)行結(jié)果統(tǒng)計(jì)所述考生答題代碼的得分,并將評(píng)判結(jié)果發(fā)送至考試服務(wù)器。

      優(yōu)選地,所述考試服務(wù)器中設(shè)置有異步告知單元,用于通過(guò)異步告知的方式將所述得分返回給考生客戶端。

      優(yōu)選地,所述考試服務(wù)器中還設(shè)置有出題單元,用于根據(jù)考試要求編寫Java編程題目的題干并說(shuō)明題意,選擇性地提供預(yù)設(shè)代碼。

      優(yōu)選地,所述考生客戶端中設(shè)置有答題單元,用于閱讀所述Java編程題目并進(jìn)行答題代碼編寫,并將所述答題代碼上傳至考試服務(wù)器。

      優(yōu)選地,所述評(píng)判服務(wù)器中設(shè)置有評(píng)判器集群和并發(fā)處理單元,所述評(píng)判器集群包含多個(gè)評(píng)判器,用于處理多個(gè)評(píng)判進(jìn)程;所述并發(fā)處理單元,用于支持多個(gè)并發(fā)訪問。

      本發(fā)明的有益效果為:一種Java編程題目自動(dòng)評(píng)判方法及系統(tǒng),該方法包括:接收答題代碼和Java編程題目的預(yù)設(shè)代碼;對(duì)所述答題代碼和預(yù)設(shè)代碼進(jìn)行處理,并插入評(píng)判代碼,得到待編譯代碼;對(duì)所述待編譯代碼進(jìn)行編譯,并判斷是否編譯成功;若是,則運(yùn)行編譯后的程序,執(zhí)行所述評(píng)判代碼;通過(guò)所述評(píng)判代碼的運(yùn)行結(jié)果統(tǒng)計(jì)所述答題代碼的得分,本發(fā)明通過(guò)在Java編程題目中插入多個(gè)評(píng)判代碼,實(shí)現(xiàn)了自動(dòng)評(píng)判Java編程題目的答題代碼的功能,節(jié)省了人工資源,且提高了Java編程題目自動(dòng)評(píng)判的全面性。

      附圖說(shuō)明

      圖1是本發(fā)明實(shí)施例一提供的一種Java編程題目自動(dòng)評(píng)判方法的流程圖。

      圖2是本發(fā)明實(shí)施例二提供的一種Java編程題目自動(dòng)評(píng)判系統(tǒng)的結(jié)構(gòu)圖。

      圖3是本發(fā)明實(shí)施例二提供的異步告知評(píng)判的示意圖。

      圖4是本發(fā)明實(shí)施例二提供的題干的示意圖。

      圖5是本發(fā)明實(shí)施例二提供的預(yù)設(shè)代碼的示意圖。

      圖6是本發(fā)明實(shí)施例二提供的檢測(cè)代碼的示意圖。

      圖7是本發(fā)明實(shí)施例二提供的評(píng)判器集群示意圖。

      圖8是本發(fā)明實(shí)施例二提供的并發(fā)處理單元示意圖。

      具體實(shí)施方式

      下面結(jié)合圖1-圖8并通過(guò)具體實(shí)施方式來(lái)進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案。

      實(shí)施例一

      圖1是本發(fā)明實(shí)施例一提供的一種Java編程題目自動(dòng)評(píng)判方法的流程圖。

      一種Java編程題目自動(dòng)評(píng)判方法,包括:

      S10、接收答題代碼和Java編程題目的預(yù)設(shè)代碼;

      S20、對(duì)所述答題代碼和預(yù)設(shè)代碼進(jìn)行處理,并插入評(píng)判代碼,得到待編譯代碼;

      S30、對(duì)所述待編譯代碼進(jìn)行編譯,并判斷是否編譯成功;

      S40、若是,則運(yùn)行編譯后的程序,執(zhí)行所述評(píng)判代碼;及,

      S50、通過(guò)所述評(píng)判代碼的運(yùn)行結(jié)果統(tǒng)計(jì)所述答題代碼的得分。

      在本實(shí)施例中,所述評(píng)判代碼采用了業(yè)界廣泛應(yīng)用的測(cè)試框架作為檢測(cè)方式,與當(dāng)前行業(yè)標(biāo)準(zhǔn)保持一致性,降低了出題人編寫評(píng)判代碼的難度,只要掌握了該語(yǔ)言的測(cè)試框架API(Application Programming Interface, 應(yīng)用程序編程接口),則可以編寫題目的評(píng)判代碼,在本實(shí)施例中,所述Java編程題目允許輸入多段評(píng)判代碼,每段評(píng)判代碼可以檢測(cè)考生的答題代碼的不同方面,對(duì)考生答題的邏輯正確性、結(jié)構(gòu)正確性都可以進(jìn)行詳細(xì)的評(píng)判,本發(fā)明所述的自動(dòng)評(píng)判方法對(duì)學(xué)生編寫具有面向?qū)ο筇匦缘腏ava編程題目中各種評(píng)分因素考慮的比較全面,一方面可方便眾多的學(xué)校、培訓(xùn)機(jī)構(gòu)或者公司里,經(jīng)常需要對(duì)學(xué)生、學(xué)院或員工進(jìn)行定期的考試或考核,省去了人工評(píng)判編程題所耗費(fèi)的人力物力,另一方面可以推廣具有實(shí)際意義的程序設(shè)計(jì)語(yǔ)言網(wǎng)絡(luò)自動(dòng)化考試,促進(jìn)了計(jì)算機(jī)知識(shí)的普及。

      在本實(shí)施例中,對(duì)所述待編譯代碼進(jìn)行編譯,并判斷是否編譯成功,若編譯失敗,則設(shè)置該題得分為零分,若編譯成功,則運(yùn)行編譯后的程序,執(zhí)行所述評(píng)判代碼,若評(píng)判代碼運(yùn)行時(shí)間超過(guò)了題目設(shè)置的運(yùn)行時(shí)限,或者運(yùn)行時(shí)拋出異常,則判定該段評(píng)判代碼未通過(guò),由于考生代碼運(yùn)行時(shí)間如果過(guò)長(zhǎng),很有可能是代碼出現(xiàn)死循環(huán)或是對(duì)評(píng)判系統(tǒng)的惡意攻擊,因此對(duì)運(yùn)行超過(guò)一定時(shí)間的代碼視為不通過(guò)評(píng)判,同時(shí)關(guān)掉該進(jìn)程。

      在本實(shí)施例中,通過(guò)所述評(píng)判代碼的運(yùn)行結(jié)果統(tǒng)計(jì)所述答題代碼的得分,另外還統(tǒng)計(jì)考生提交本題代碼的次數(shù)得到相應(yīng)的得分,最后的總分由這兩部分的得分乘以不同的權(quán)重統(tǒng)計(jì)得到。

      在本實(shí)施例中,所述步驟S20包括:

      S21、將所述答題代碼和預(yù)設(shè)代碼進(jìn)行合并和拼接;

      S22、對(duì)不安全的代碼進(jìn)行過(guò)濾,防止惡意代碼;

      S23、按照評(píng)判服務(wù)器運(yùn)行的需要,將答題代碼中的操作代碼改寫為評(píng)判代碼。

      在本實(shí)施例中,某些操作代碼如文件系統(tǒng)調(diào)用的代碼需要轉(zhuǎn)化成虛擬的文件系統(tǒng)調(diào)用代碼,作為評(píng)判服務(wù)器需要的評(píng)判代碼。

      在替代實(shí)施例中,所述步驟S50之后還包括:

      S60、通過(guò)異步告知的方式將所述得分返回給考生客戶端。

      在替代實(shí)施例中,所述步驟S10之前還包括:

      S01、考試服務(wù)器根據(jù)考試要求編寫Java編程題目的題干并說(shuō)明題意,選擇性地提供預(yù)設(shè)代碼;

      S02、考生客戶端閱讀所述Java編程題目并進(jìn)行答題代碼編寫,并將所述答題代碼上傳至考試服務(wù)器。

      實(shí)施例二

      如圖2所示,一種Java編程題目自動(dòng)評(píng)判系統(tǒng),包括:考生客戶端10、考試服務(wù)器20和評(píng)判服務(wù)器30;

      所述考生客戶端10,用于根據(jù)Java編程題目的預(yù)設(shè)代碼進(jìn)行答題,得到答題代碼,并將所述答題代碼提交至考試服務(wù)器20;還用于接收返回的答題代碼保存結(jié)果和評(píng)判結(jié)果;

      所述考試服務(wù)器20,用于接收所述答題代碼和預(yù)設(shè)代碼,對(duì)所述考生答題代碼和預(yù)設(shè)代碼進(jìn)行處理,并插入評(píng)判代碼,得到待編譯代碼,將所述待編譯代碼發(fā)送至評(píng)判服務(wù)器30;用于保存所述答題代碼并將保存結(jié)果發(fā)送至考生客戶端10;還用于接收評(píng)判服務(wù)器30返回的評(píng)判結(jié)果,并將所述評(píng)判結(jié)果發(fā)送至考生客戶端10;

      所述評(píng)判服務(wù)器30,用于對(duì)所述待編譯代碼進(jìn)行編譯,并判斷是否編譯成功;若是,則運(yùn)行編譯后的程序,執(zhí)行所述評(píng)判代碼;通過(guò)所述評(píng)判代碼的運(yùn)行結(jié)果統(tǒng)計(jì)所述考生答題代碼的得分,并將評(píng)判結(jié)果發(fā)送至考試服務(wù)器20。

      在本實(shí)施例中,所述考試服務(wù)器20中設(shè)置有異步告知單元,用于通過(guò)異步告知的方式將所述得分返回給考生客戶端10。

      在本實(shí)施例中,由于Java編程題目的評(píng)判涉及到代碼安全過(guò)濾、編譯、部署運(yùn)行和測(cè)試幾個(gè)環(huán)節(jié),而且每個(gè)環(huán)節(jié)都需要耗費(fèi)非常多的系統(tǒng)資源,所以從考生提交代碼到評(píng)判完成需要比較長(zhǎng)的時(shí)間,對(duì)于考生來(lái)講,如果讓考生在提交代碼之后去等待系統(tǒng)返回評(píng)判結(jié)果將會(huì)影響用戶體驗(yàn),本系統(tǒng)使用異步告知的方式來(lái)解決這種等待問題,當(dāng)考生提交完答題代碼之后,系統(tǒng)立即將答題代碼保存在考試服務(wù)器20的數(shù)據(jù)庫(kù)并提醒考生已將代碼保存,之后,由評(píng)判服務(wù)器30從數(shù)據(jù)庫(kù)中取出Java編程題目和考生答題代碼進(jìn)行評(píng)判,并將評(píng)判結(jié)果存回?cái)?shù)據(jù)庫(kù),最后系統(tǒng)從數(shù)據(jù)庫(kù)中取出評(píng)判結(jié)果并通知考生,這一過(guò)程如圖3所示,相比于同步等待的形式,異步通知能使考生無(wú)須一直在界面上停留,而當(dāng)評(píng)判結(jié)果完成時(shí)收到通知,這種方式不僅能使考生的交互和用戶體驗(yàn)變得更自然,而且對(duì)于系統(tǒng)的響應(yīng)和負(fù)載也能有很好的緩解。

      在本實(shí)施例中,所述考試服務(wù)器20中還設(shè)置有出題單元,用于根據(jù)考試要求編寫Java編程題目的題干并說(shuō)明題意,選擇性地提供預(yù)設(shè)代碼。

      在本實(shí)施例中,所述題干里可以寫普通的文本,用于描述題目的內(nèi)容、任務(wù)、要求等,用于顯示給考生看,如圖4所示為一個(gè)題干的具體例子;所述預(yù)設(shè)代碼是出題者預(yù)先給出的代碼,將會(huì)顯示給考生看,也會(huì)和考生的答題代碼進(jìn)行融合一起編譯和運(yùn)行,一題可以有多塊預(yù)設(shè)代碼,在編譯運(yùn)行時(shí)會(huì)將所有預(yù)設(shè)代碼都融合,如圖5所述為一個(gè)預(yù)設(shè)代碼的具體例子,出題者將對(duì)應(yīng)的抽象類Shape作為預(yù)定義的代碼。

      在本實(shí)施例中,所述出題單元還包括檢測(cè)代碼,如圖6所示,檢測(cè)代碼里將需要出題者寫出用于校驗(yàn)考生代碼的代碼,將不會(huì)被考生看到,只有出題者才能查看和修改,這里使用到了Java平臺(tái)中常用到的單元測(cè)試框架JUnit的相關(guān)概念。

      在本實(shí)施例中,所述考生客戶端10中設(shè)置有答題單元,用于閱讀所述Java編程題目并進(jìn)行答題代碼編寫,并將所述答題代碼上傳至考試服務(wù)器20。

      在本實(shí)施例中,考生在考生客戶端10的Web頁(yè)面上閱讀Java編程題目的題干、預(yù)定義類代碼也即預(yù)設(shè)代碼、要實(shí)現(xiàn)的類名等詳細(xì)信息,使用編輯器或直接在頁(yè)面控件中進(jìn)行答題代碼編寫,編寫結(jié)束后提交并上傳至考試服務(wù)器20;考試服務(wù)器20將考生編寫的答題代碼、題目預(yù)設(shè)代碼和評(píng)判代碼發(fā)送至評(píng)判器,評(píng)判器根據(jù)預(yù)設(shè)評(píng)判代碼判定程序結(jié)構(gòu)和內(nèi)容的正確性,并對(duì)代碼編譯執(zhí)行,驗(yàn)證結(jié)果;評(píng)判器將評(píng)判分?jǐn)?shù)和細(xì)節(jié)信息發(fā)送到消息服務(wù)器上,根據(jù)考試類型的不同(正式考試或練習(xí))來(lái)決定評(píng)判分?jǐn)?shù)和細(xì)節(jié)信息的處理方式(發(fā)送給考生或保存在考試服務(wù)器20中)。

      在本實(shí)施例中,考生需要按要求填寫代碼里的類名,考生在作答時(shí)必須寫出符合此名字的類,而且要求沒有語(yǔ)法錯(cuò)誤,此類名也是檢查考生是否正確實(shí)現(xiàn)題目要求的一個(gè)方面。

      在本實(shí)施例中,所述評(píng)判服務(wù)器30中設(shè)置有評(píng)判器集群和并發(fā)處理單元,所述評(píng)判器集群包含多個(gè)評(píng)判器,用于處理多個(gè)評(píng)判進(jìn)程;所述并發(fā)處理單元,用于支持多個(gè)并發(fā)訪問。

      如圖7所示為評(píng)判器集群示意圖,在本實(shí)施例中,因?yàn)閷?duì)程序代碼(也即圖7中的User Code)的評(píng)判需要耗費(fèi)比較長(zhǎng)的時(shí)間,對(duì)于大規(guī)模的考試,當(dāng)要對(duì)大量考生的答題代碼進(jìn)行評(píng)判時(shí),系統(tǒng)需要能支持水平擴(kuò)展(即動(dòng)態(tài)添加服務(wù)器)來(lái)均衡系統(tǒng)的壓力負(fù)載,為了可以使用多個(gè)服務(wù)器集群來(lái)同時(shí)進(jìn)行處理,需要將程序代碼的評(píng)判功能從系統(tǒng)的其它業(yè)務(wù)邏輯中抽離出來(lái),本系統(tǒng)將每個(gè)評(píng)判用一個(gè)獨(dú)立的進(jìn)程來(lái)運(yùn)行,該進(jìn)程包含評(píng)判過(guò)程(也即圖7中的Judger)中的所有功能,包括代碼過(guò)濾(也即圖7中的Code Filter)、代碼編譯(也即圖7中的Compilation)、程序部署和運(yùn)行測(cè)試(也即圖7中的Deploy and Run test)、結(jié)果返回(也即圖7中的Return Result)這四個(gè)基本功能,評(píng)判進(jìn)程之間相互獨(dú)立,互不干擾,每個(gè)進(jìn)程同時(shí)只評(píng)判一個(gè)題目,當(dāng)一個(gè)評(píng)判進(jìn)程出錯(cuò)時(shí)不會(huì)影響到其它進(jìn)程,保證系統(tǒng)的穩(wěn)定和高效,在一臺(tái)服務(wù)器上可以運(yùn)行多個(gè)評(píng)判進(jìn)程,以充分利用服務(wù)器的資源,系統(tǒng)還支持多個(gè)服務(wù)同時(shí)運(yùn)行,以達(dá)到水平擴(kuò)展的目的。

      如圖8所示為系統(tǒng)并發(fā)處理單元示意圖,在本實(shí)施例中,為了支持大規(guī)模的并發(fā)訪問,我們使用了請(qǐng)求與任務(wù)分離、短任務(wù)與長(zhǎng)任務(wù)分離處理的策略,首先系統(tǒng)所使用的Web服務(wù)器(Play Framework)使用了Java的NIO技術(shù)(非堵塞技術(shù))來(lái)提高IO的性能,同時(shí)使用線程池(也即圖8中的Thread Pool)來(lái)降低系統(tǒng)為每個(gè)用戶請(qǐng)求分配線程的資源開銷,這樣使系統(tǒng)能同時(shí)處理更多的請(qǐng)求,然后在處理用戶請(qǐng)求時(shí),系統(tǒng)在設(shè)計(jì)上要求每個(gè)請(qǐng)求的處理時(shí)間都盡可能的短,當(dāng)發(fā)現(xiàn)請(qǐng)求的處理時(shí)間過(guò)長(zhǎng)時(shí),系統(tǒng)就會(huì)直接讓請(qǐng)求失效,對(duì)于一些耗時(shí)比較長(zhǎng)的操作,比如為考生生成試卷,系統(tǒng)中使用異步處理來(lái)將請(qǐng)求和請(qǐng)求所指示的任務(wù)進(jìn)行分離,在系統(tǒng)的集群中有一個(gè)消息服務(wù)器(也即圖8中的MQ)和若干個(gè)工作服務(wù)器(也即圖8中的Worker Server),當(dāng)Web服務(wù)器接收到一個(gè)需要耗時(shí)較長(zhǎng)的請(qǐng)求操作時(shí),會(huì)根據(jù)請(qǐng)求的內(nèi)容創(chuàng)建一個(gè)任務(wù)對(duì)象投遞給消息服務(wù)器,同時(shí)發(fā)送響應(yīng)給用戶并結(jié)束請(qǐng)求,消息服務(wù)器接收到任務(wù)對(duì)象后就會(huì)將任務(wù)發(fā)送給一個(gè)工作服務(wù)器去處理,最后工作服務(wù)器處理完任務(wù)再把任務(wù)的結(jié)果通過(guò)消息服務(wù)器傳回給Web服務(wù)器,通過(guò)這種方式可以盡量減少系統(tǒng)中的活動(dòng)并發(fā)線程數(shù),減輕系統(tǒng)的負(fù)載,提升頁(yè)面的響應(yīng)速度。

      以上所述僅為本發(fā)明的具體實(shí)施方式,這些描述只是為了解釋本發(fā)明的原理,而不能以任何方式解釋為對(duì)本發(fā)明保護(hù)范圍的限制?;诖颂幍慕忉?,本領(lǐng)域的技術(shù)人員不需要付出創(chuàng)造性的勞動(dòng)即可聯(lián)想到本發(fā)明的其它具體實(shí)施方法,這些方式都將落入本發(fā)明的保護(hù)范圍之內(nèi)。

      當(dāng)前第1頁(yè)1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1