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

        ?

        Linux系統(tǒng)下編程題在線評閱服務(wù)平臺的設(shè)計與實現(xiàn)

        2019-09-10 18:44:35左悅林寧
        現(xiàn)代信息科技 2019年10期

        左悅 林寧

        摘? 要:為了滿足編程題在線評閱對響應(yīng)時間、并發(fā)處理能力的需求,本文結(jié)合Linux操作系統(tǒng)的穩(wěn)定性好、多任務(wù)和多用戶等特點,提出在Linux操作系統(tǒng)下架設(shè)在線評閱服務(wù)器的方法。本文就在線評閱服務(wù)平臺的技術(shù)進(jìn)行了探討,給出了評閱服務(wù)器的技術(shù)性指標(biāo)、自啟動評閱服務(wù)進(jìn)程的方法、service服務(wù)進(jìn)程對Mysql數(shù)據(jù)庫操作和多進(jìn)程并發(fā)評閱的具體實現(xiàn)方法等,文中提出的技術(shù)使得評閱服務(wù)器具有良好的穩(wěn)定性和較強(qiáng)并發(fā)處理能力。

        關(guān)鍵詞:Linux系統(tǒng);編程題;在線評閱;并發(fā)處理能力

        中圖分類號:TP311.1? ? ? ?文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2019)10-0097-03

        Abstract:In order to meet the demand of response time and concurrent processing ability for programming online review,combining the advantages of Linux operating system,such as good stability,multi-task and multi-user,this paper proposes to set up on-line review server under Linux operating system. This paper discusses the technology of the online review service platform,and gives the technical index of the evaluation server,the method of self-starting the review service process,the concrete realization of the operation of the Mysql database by the service process and the concurrent evaluation of the multi-process and so on. The technology proposed in this paper makes the evaluation server have good stability and strong concurrent processing ability.

        Keywords:Linux system;programming questions;online judging;concurrent processing capability

        0? 引? 言

        Linux是一個開源的、多任務(wù)、多用戶操作系統(tǒng),大多數(shù)企業(yè)或個人選擇在Linux操作系統(tǒng)上搭建FTP服務(wù)器、DHCP服務(wù)器和Web網(wǎng)站服務(wù)器等。Linux操作系統(tǒng)被選作服務(wù)器的主要原因有這幾個方面:第一,Linux系統(tǒng)具有較好的穩(wěn)定性,安裝在Linux的服務(wù)器可以連續(xù)運行,無須關(guān)閉服務(wù)器;第二,Linux系統(tǒng)可以使大量用戶在同一服務(wù)器上工作而不會出現(xiàn)任何問題;第三,Linux操作系統(tǒng)的代碼是開源的,對于其他操作系統(tǒng),代碼并非每個人都可以自由使用;第四,Linux服務(wù)器還可以執(zhí)行多任務(wù),即Linux系統(tǒng)能夠處理同時運行的許多不同程序。

        本文所開發(fā)的平臺要求具有實時在線評閱功能,為了提高在線評閱的響應(yīng)速度,要求服務(wù)端具有多用戶、多進(jìn)程并發(fā)處理學(xué)生提交的程序的能力,因此,Linux操作系統(tǒng)非常適合用來搭建在線評閱平臺。

        1? 運行環(huán)境的需求

        1.1? 服務(wù)端需求

        評閱平臺采用B/S和C/S混合模式進(jìn)行開發(fā)。不同于只采用C/S模式的判分系統(tǒng),程序的運行和評閱由客戶端完成,服務(wù)器端只用來接收數(shù)據(jù)。本系統(tǒng)中,程序首先由客戶端提交到服務(wù)器端,然后由服務(wù)器端的評閱進(jìn)程調(diào)用不同的函數(shù)和命令對程序運行評閱,服務(wù)器的負(fù)載相對來說比較重。目前硬件的性能已經(jīng)非常好,而且價格相對便宜。服務(wù)器可以根據(jù)實際使用的人數(shù)來選購,既要避免服務(wù)器的負(fù)載相對過重,又要避免資源的浪費。軟件運行環(huán)境:操作系統(tǒng)為CentOS,網(wǎng)絡(luò)協(xié)議為TCP/IP,Web服務(wù)器為apache-tomcat,jdk編譯環(huán)境,數(shù)據(jù)庫為Mysql。

        1.2? 客戶端需求

        對客戶端的硬件要求不高,硬件上只要網(wǎng)絡(luò)連通,能瀏覽和處理數(shù)據(jù)即可。軟件運行環(huán)境:操作系統(tǒng)為Windows,網(wǎng)絡(luò)協(xié)議為TCP/IP,瀏覽器為Internet Explorer 8.0以上或Mozilla Firefox等。

        2? 評閱服務(wù)平臺的技術(shù)性指標(biāo)

        評閱服務(wù)端主要考慮硬盤存儲容量、執(zhí)行速度、判分響應(yīng)時間、吞吐量及易維護(hù)性等。

        (1)存儲容量:本文所開發(fā)的系統(tǒng)主要對編程題進(jìn)行評閱,不同于其他評閱系統(tǒng),只有完成后才可進(jìn)行答卷的提交,而且只能提交一次。對于程序題的評閱,為了提高評分的準(zhǔn)確性,應(yīng)允許學(xué)生在規(guī)定時間內(nèi)進(jìn)行多次提交,服務(wù)端應(yīng)將所有的提交程序全部記錄,以便事后查詢。面對大量的數(shù)據(jù),有限的存儲空間,系統(tǒng)應(yīng)對提交的程序大小進(jìn)行限制。

        (2)執(zhí)行速度:作為自動評閱系統(tǒng),系統(tǒng)對學(xué)生提交的程序應(yīng)實時評閱,結(jié)果出來后立即返回給學(xué)生。

        (3)響應(yīng)時間:對提交的程序不能進(jìn)行長時間的評閱,因此,評閱時間應(yīng)控制在一定的范圍內(nèi)。

        (4)吞吐量:吞吐量是指單位時間內(nèi)評閱系統(tǒng)完成的交易數(shù)量??荚嚮蚣芯毩?xí)過程中,也是系統(tǒng)用戶登錄最多的時候,系統(tǒng)吞吐量達(dá)到最大,系統(tǒng)應(yīng)滿足最大吞吐量的需求。40FD3F09-BDE3-4BBD-A00E-4B8210CE6395

        (5)易維護(hù)性:在練習(xí)或考試過程中,不管是服務(wù)進(jìn)程還是客戶端在出現(xiàn)故障中斷后,都應(yīng)具備考前數(shù)據(jù)恢復(fù)功能,保證考試?yán)^續(xù)進(jìn)行。

        3? 評閱服務(wù)進(jìn)程的啟動

        有時因斷電或者其他因素的影響,服務(wù)端需要重新啟動,自動評閱進(jìn)程需要自動啟動。在本系統(tǒng)中,評閱服務(wù)程序采用C語言進(jìn)行開發(fā),經(jīng)過編譯后生成service可執(zhí)行文件,放在/home/run/cserver目錄下。編寫shell script腳本文件runserver.sh,腳本程序主要監(jiān)控service進(jìn)程是否啟動,一旦監(jiān)控到service沒有運行,就會馬上啟動service進(jìn)程;runserver.sh腳本程序如下:

        while [ "" = "" ];

        do

        pid=`ps -ef|grepservice|wc -l`

        if [ $pid -gt 1 ]; then

        echo "service進(jìn)程正在運行!";

        else

        /home/run/cserver/service

        fi

        sleep 1

        done

        runserver.sh腳本程序一個無限循環(huán)的程序,每隔一秒鐘檢查一次service進(jìn)程是否運行,這樣也避免了因特殊情況service進(jìn)程突然中斷,從而導(dǎo)致評閱服務(wù)停止。Linux服務(wù)器重新啟動后,需自動執(zhí)行runserver.sh腳本程序,可以在Linux系統(tǒng)的/etc/rc.local文件中加入語句sh/home/run/cserver/runserver.sh&實現(xiàn)。

        4? 評閱服務(wù)進(jìn)程接Mysql數(shù)據(jù)庫

        4.1? Mysql數(shù)據(jù)庫的連接

        評閱服務(wù)進(jìn)程在評閱后需要將評閱結(jié)果存入Mysql數(shù)據(jù)中,使用C語言連接Mysql數(shù)據(jù)庫時,常用到一些C API函數(shù)如mysql_init、mysql_real_connect、mysql_close函數(shù),下面代碼是一個C語言連接本地Mysql數(shù)據(jù)庫的代碼片段:

        MYSQL connect;

        mysql_init(&myconnect);

        if(mysql_real_connect(&myconnect,"localhost","lin","123456","Erex",0,NULL,0))

        printf("連接Mysql數(shù)據(jù)庫成功");

        else

        printf("連接Mysql數(shù)據(jù)庫失?。。躰");

        其功能是:首先使用Mysql結(jié)構(gòu)定義了結(jié)構(gòu)變量my-connect,接著使用mysql_init()函數(shù)對myconnect變量初始化,然后使用mysql_real_connect()函數(shù)連接了本地數(shù)據(jù)庫Erex,連接的信息保存到myconnect結(jié)構(gòu)變量中,最后使用printf()函數(shù)提示是否連接成功。

        4.2? Mysql數(shù)據(jù)操作的實現(xiàn)

        評閱服務(wù)進(jìn)程在對Mysql數(shù)據(jù)操作前,先連接數(shù)據(jù)庫,myconnect()為自定義函數(shù),連接成功返回1,否則返回0。圖1為service進(jìn)程操作Mysql數(shù)據(jù)庫的流程圖。

        由于service進(jìn)程可以并發(fā)評閱學(xué)生提交的程序,service產(chǎn)生的多個子進(jìn)程可能會同時讀寫一個數(shù)據(jù)表中的數(shù)據(jù),這可能造成數(shù)據(jù)表中的數(shù)據(jù)錯誤,如:A進(jìn)程讀取了數(shù)據(jù)表table的數(shù)據(jù),在A進(jìn)程處理數(shù)據(jù)的過程中,至A進(jìn)程寫入數(shù)據(jù)到table之前,是不允許其他進(jìn)程讀寫table中的數(shù)據(jù)的,否則,可能會造成數(shù)據(jù)錯誤。因此,在讀數(shù)據(jù)之前評閱子進(jìn)程需先對數(shù)據(jù)庫中特定的表進(jìn)行鎖定操作,然后再對表中的數(shù)據(jù)進(jìn)行其他操作。如下面的程序片段:

        sprintf(cxnr,"lock table t_recordswrite,t_answer-filewrite,t_exam_lib write;");

        if(mysql_real_query(&con,cxnr,(unsigned int)strlen(cxnr)))

        { printf("鎖定表t_records,t_answerfile,t_exam_lib失?。。躰");}

        對t_records,t_answerfilewrite,t_exam_lib三張表鎖定的寫操作,其他進(jìn)程不能再往這三張表輸入數(shù)據(jù),直到解鎖。

        5? 多進(jìn)程并發(fā)評閱的實現(xiàn)

        5.1? service守護(hù)進(jìn)程的創(chuàng)建

        service守護(hù)進(jìn)程是在后臺運行的特殊進(jìn)程,用于完成在線評閱的任務(wù),Service進(jìn)程在操作系統(tǒng)啟動后啟動,并一直運行除非系統(tǒng)關(guān)閉。由于守護(hù)進(jìn)程是脫離控制終端的,因此首先創(chuàng)建子進(jìn)程,終止父進(jìn)程,之后所有的工作都在子進(jìn)程中完成。Service進(jìn)程脫離控制終端的關(guān)鍵代碼:

        pid_t child1,child2;

        child1=fork();

        if(child1>0) exit(0);

        setsid();

        chdir("/home/runspace");

        umask(0);

        上述程序中,fork()函數(shù)創(chuàng)建子進(jìn)程并返回值至child1中,exit(0)語句終止了父進(jìn)程的運行,子進(jìn)程調(diào)用setsid()函數(shù)創(chuàng)建新的會話,chdir("/")改變工作目錄到/home/runspace,umask()用于重設(shè)文件掩碼。

        5.2? 多進(jìn)程評閱的實現(xiàn)

        service守護(hù)進(jìn)程監(jiān)聽到新的任務(wù)時,調(diào)用fork()函數(shù)創(chuàng)建新的子進(jìn)程,評閱任務(wù)由子進(jìn)程完成,父進(jìn)程繼續(xù)監(jiān)聽新的任務(wù)。這樣service守護(hù)進(jìn)程僅僅負(fù)責(zé)新任務(wù)的監(jiān)聽,并產(chǎn)生新的子進(jìn)程,評閱的任務(wù)全部交給子進(jìn)程完成,這樣大大提高評閱的并發(fā)處理能力,縮短在線評閱的響應(yīng)時間,提高系統(tǒng)的吞吐量。

        6? 結(jié)? 論

        本文中闡述的在線評閱設(shè)技術(shù)已應(yīng)用到C語言編程題在線評閱系統(tǒng)上,經(jīng)過實踐證明服務(wù)器具有良好的穩(wěn)定性和較好的并發(fā)處理能力,對其他服務(wù)器的開發(fā)有一定的借鑒意義。

        參考文獻(xiàn):

        [1] 吳文剛,張志文.信息安全等級保護(hù)Linux服務(wù)器shell腳本測評方法 [J].現(xiàn)代工業(yè)經(jīng)濟(jì)和信息化,2017,7(13):59-61.

        [2] 盧云宏,侯文涵,趙前,等.基于Linux的OnlineJudge在線提交環(huán)境的搭建 [J].電子技術(shù)與軟件工程,2017(12):50-51.

        [3] 劉加海,張益先,等.Linux軟件工程師(C語言)實用教程 [M].北京:科學(xué)出版社,2009.

        作者簡介:左悅(1981-),女,漢族,遼寧盤錦人,講師,碩士,研究方向:圖形圖像處理、計算機(jī)應(yīng)用。40FD3F09-BDE3-4BBD-A00E-4B8210CE6395

        国产无卡视频在线观看| 亚洲精品一品二品av| 人妻中文字幕无码系列| 一区二区三区精彩视频在线观看| 亚洲av成人一区二区三区| av网站国产主播在线| 极品美女高潮喷白浆视频| 国产乱妇无码大片在线观看| 久久深夜中文字幕高清中文| 最新四色米奇影视777在线看| 亚洲天堂成人av影院| 无码天堂在线视频| 激情综合欧美| 亚洲精品suv精品一区二区| 精品国产黄一区二区三区| 欧美黑人xxxx性高清版| 99久久伊人精品综合观看| 91成人黄色蘑菇视频| 久久99中文字幕久久| 国产精品v欧美精品v日韩精品 | 丰满的少妇xxxxx青青青| 麻豆69视频在线观看| 久久精品国产成人午夜福利| 国产亚洲日韩在线三区| 精品国产一区二区三区三| 无码一区东京热| 欧美成人形色生活片| 国产亚av手机在线观看| 日本高清视频一区二区| 一区二区三区内射视频在线观看| 18禁黄久久久aaa片| 国产av剧情刺激对白| 久久久亚洲精品一区二区| 暖暖免费 高清 日本社区在线观看 | 在线看无码的免费网站| 大屁股流白浆一区二区三区| 国产精品电影久久久久电影网| 国产无遮挡又黄又爽又色| 精品国产日韩一区2区3区| 亚洲国产成人久久综合三区| 少妇高潮惨叫喷水在线观看|