• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Docker的Online Judge容器設(shè)計(jì)與實(shí)現(xiàn)

    2022-10-14 04:46:36韋俊宇王宇英
    大眾科技 2022年9期
    關(guān)鍵詞:源代碼鏡像進(jìn)程

    韋俊宇 王宇英

    基于Docker的Online Judge容器設(shè)計(jì)與實(shí)現(xiàn)

    韋俊宇 王宇英

    (桂林電子科技大學(xué)計(jì)算機(jī)與信息安全學(xué)院,廣西 桂林 541004)

    在LeetCode、ACWing等各大Online Judge網(wǎng)站中,每時(shí)每刻都有無數(shù)的代碼在編譯運(yùn)行。但這些網(wǎng)站上提交的代碼都是為了解決該網(wǎng)站題庫中給定的某一道算法題,不僅規(guī)定了程序的標(biāo)準(zhǔn)輸入輸出,還限制了運(yùn)行時(shí)長(zhǎng)和內(nèi)存占用,有一定局限性。在新冠疫情期間,開設(shè)計(jì)算機(jī)課程的大學(xué)也急需搭建符合學(xué)校教學(xué)需求的Online Judge以正常開展線上課程。針對(duì)上述兩個(gè)問題,文章設(shè)計(jì)并實(shí)現(xiàn)了基于Docker技術(shù)的Online Judge容器。其能編譯程序源代碼和運(yùn)行程序二進(jìn)制文件,期間能動(dòng)態(tài)地更改程序的標(biāo)準(zhǔn)輸入、運(yùn)行時(shí)長(zhǎng)與內(nèi)存占用,并對(duì)容器作了一定的防護(hù),具有一定的安全性,還易于分布式拓展。

    在線判題容器;Online Judge;Docker

    引言

    線上教育是將教育與多媒體充分地結(jié)合起來,一同打造的新式教學(xué)法,由于其便利、快捷等特點(diǎn),目前在各大高校興起。大多數(shù)高校計(jì)算機(jī)專業(yè)的教學(xué)不同于高中傳統(tǒng)理論課程,其實(shí)踐課程多數(shù)為上機(jī)操作,但因?yàn)閹熒皇敲鎸?duì)面交流,使教師難以了解學(xué)生對(duì)知識(shí)的掌握情況以及時(shí)更改自己的教學(xué)計(jì)劃,影響教學(xué)質(zhì)量。網(wǎng)絡(luò)上針對(duì)教學(xué)實(shí)施的Online Judge[1]少之又少,擁有教學(xué)功能的Online Judge提供的功能難以根據(jù)計(jì)算機(jī)教學(xué)需求設(shè)計(jì)問題,當(dāng)下急需易搭建、易拓展具有一定安全性的Online Judge容器以供給學(xué)校根據(jù)教學(xué)需求[2]自主開發(fā)Online Judge。

    Docker采用鏡像包的形式,將不同的代碼和運(yùn)行環(huán)境固定成了一個(gè)整體,能以鏡像包為基礎(chǔ)啟動(dòng)容器,標(biāo)準(zhǔn)化運(yùn)行程序,穩(wěn)定且可靠。Linux 內(nèi)核提供了getrusage和setrlimit系統(tǒng)調(diào)用,能在運(yùn)行時(shí)訪問系統(tǒng)內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)、改變系統(tǒng)內(nèi)核設(shè)置的機(jī)制,以達(dá)到程序運(yùn)行時(shí)限制資源的效果。本文基于Docker和Linux系統(tǒng)調(diào)用,以C++作為目標(biāo)語言舉例,設(shè)計(jì)并實(shí)現(xiàn)了Online Judge容器,其消除了不同運(yùn)行環(huán)境的差異,且極易搭建部署在任意一臺(tái)擁有Docker運(yùn)行環(huán)境Linux服務(wù)器上。該Online Judge容器模塊功能顆粒度小,方便二次開發(fā)進(jìn)行拓展,供給開設(shè)計(jì)算機(jī)專業(yè)的高?;騽?chuàng)業(yè)人員,針對(duì)新冠疫情帶來的問題,搭建自主的Online Judge。

    1 Online Judge概述

    Online Judge中文名是在線判題,用戶在網(wǎng)頁上編寫程序源代碼,提交到服務(wù)器上運(yùn)行并給出一定的結(jié)果,這是Online Judge一個(gè)基本的流程。

    使源代碼在服務(wù)器上進(jìn)行編譯運(yùn)行操作的,被稱之為判題機(jī)。判題機(jī)不僅需要對(duì)用戶的源代碼進(jìn)行編譯運(yùn)行,還需要對(duì)編譯運(yùn)行期間可能出現(xiàn)的安全問題進(jìn)行處理,以防止部分用戶故意提交具有安全漏洞的代碼影響服務(wù)器運(yùn)作。大多數(shù)服務(wù)器與判題機(jī)是1∶n的比例,必須將判題機(jī)作為分布式集群,否則難以應(yīng)對(duì)判題需求激增的情況以致服務(wù)器無法及時(shí)正常響應(yīng)請(qǐng)求。

    目前主流Online Judge網(wǎng)站的判題機(jī)能對(duì)可能在編譯或運(yùn)行時(shí)出現(xiàn)的錯(cuò)誤歸類成以下四類[1]:

    (1)編譯失敗:編譯時(shí)出錯(cuò)。

    (2)運(yùn)行時(shí)錯(cuò)誤:程序異常終止,可能的原因是:段錯(cuò)誤,被零除或用非0的代碼退出程序。

    (3)運(yùn)行超時(shí):程序使用的CPU時(shí)間已超出限制。

    (4)內(nèi)存超限:程序?qū)嶋H使用的內(nèi)存已超出限制。

    本文實(shí)現(xiàn)的Online Judge容器可作為判題機(jī)獨(dú)立處理單個(gè)編譯運(yùn)行任務(wù)。它對(duì)上述可能出現(xiàn)的四類錯(cuò)誤進(jìn)行處理,但不涉及對(duì)輸入輸出的判定。Online Judge容器只對(duì)程序的標(biāo)準(zhǔn)輸入輸出作重定向,目的是實(shí)現(xiàn)更小顆粒化的容器,方便拓展與二次開發(fā)。

    為了解決軟件開發(fā)中環(huán)境配置繁瑣的問題,本文使用Docker技術(shù),將Online Judge核心的編譯模塊和運(yùn)行模塊分別獨(dú)立設(shè)計(jì)成兩個(gè)Docker容器。Docker將會(huì)提供一個(gè)程序運(yùn)行的獨(dú)立環(huán)境,使用namespace、cgroup等安全隔離機(jī)制措施,讓Docker容器內(nèi)與宿主機(jī)完全隔離[3]。若將程序必需的環(huán)境和文件整合在輕量級(jí)的Docker容器中,就可以快速地部署在任意一臺(tái)擁有Docker運(yùn)行環(huán)境Linux主機(jī)上。

    不同于傳統(tǒng)的在線判題系統(tǒng)設(shè)計(jì)復(fù)雜度高、實(shí)現(xiàn)困難,本文設(shè)計(jì)的在線判題容器因采用了Docker技術(shù),擁有輕量、易用、安全的特點(diǎn)。

    2 系統(tǒng)設(shè)計(jì)

    2.1 編譯容器

    在世界上最大Docker容器鏡像分享庫Docker Hub中,提供了主流程序設(shè)計(jì)語言的完整編譯環(huán)境的鏡像。例如GCC(GNU Compiler Collection,GNU編譯集)的Docker鏡像可以在Docker Hub中找到,它可以用來編譯C、C++等程序設(shè)計(jì)語言。在擁有Docker運(yùn)行環(huán)境Linux主機(jī)上,使用docker pull gcc命令即可將該鏡像拉取到本地。

    編譯容器的作用是對(duì)每一個(gè)程序的源文件進(jìn)行編譯并產(chǎn)生對(duì)應(yīng)的可執(zhí)行文件。雖然Docker啟動(dòng)一個(gè)容器的開銷極小,但是先將需要編譯的源文件與編譯環(huán)境打包成一個(gè)新鏡像,再以該鏡像啟動(dòng)容器編譯出可執(zhí)行文件,對(duì)擁有源源不斷提交編譯運(yùn)行請(qǐng)求的服務(wù)器而言,這樣將會(huì)反復(fù)地創(chuàng)建新鏡像,造成極大的系統(tǒng)資源的浪費(fèi)。

    為了避免這種問題,使用sleep infinity命令啟動(dòng)編譯容器后,便會(huì)使該容器進(jìn)程永久進(jìn)入休眠狀態(tài)。同時(shí)將宿主機(jī)某個(gè)文件目錄掛載到編譯容器內(nèi)。在有新的編譯請(qǐng)求到來后,使用docker exec <容器id> <編譯命令>,依附于休眠狀態(tài)的編譯容器,在編譯容器內(nèi)部以新進(jìn)程的形式執(zhí)行新的編譯任務(wù)。該編譯進(jìn)程產(chǎn)生的程序可執(zhí)行文件需輸出到宿主機(jī)掛載到編譯容器內(nèi)的目錄下,宿主機(jī)上的Online Judge服務(wù)訪問掛載的文件目錄,即可獲取該程序可執(zhí)行文件。以這種方式編譯源程序,不需要反復(fù)地打包鏡像、創(chuàng)建容器,就可以簡(jiǎn)單、快速地編譯源文件。

    以編譯C++程序?yàn)槔?,編譯容器整體結(jié)構(gòu)如圖1所示。

    圖1 編譯容器整體結(jié)構(gòu)

    2.2 運(yùn)行容器

    除了某些如JavaScript、TypeScript、Python等動(dòng)態(tài)腳本語言需要解釋器外,多數(shù)靜態(tài)語言如C、C++、Go在編譯產(chǎn)生程序可執(zhí)行文件后,即可在編譯時(shí)指定的目標(biāo)系統(tǒng)下運(yùn)行。以已經(jīng)獲得了C++可執(zhí)行文件main. exe,編譯時(shí)指定的目標(biāo)系統(tǒng)為L(zhǎng)inux為前提,開始整個(gè)運(yùn)行容器的設(shè)計(jì)。

    運(yùn)行容器將會(huì)不斷地創(chuàng)建并周期性地刪除,以保證服務(wù)器在不斷地運(yùn)行請(qǐng)求壓力下,將內(nèi)存和磁盤占用維持一個(gè)良好的水平。如果使用GCC的Docker鏡像,雖然它也能執(zhí)行C++可執(zhí)行文件,但它擁有近1 GB的磁盤占用,開銷極大。所以一個(gè)精簡(jiǎn)的Docker鏡像非常有必要,對(duì)于運(yùn)行容器,最后選擇使用了非常輕量的ubuntu的Docker鏡像。

    往往一個(gè)程序的運(yùn)行時(shí)間都以毫秒為單位。Docker雖然提供了docker status命令監(jiān)控每個(gè)容器的資源占用,但是一旦容器停止了便無法再獲取。而且docker status命令是Docker使用客戶端-服務(wù)器(C/S)架構(gòu)模式來通信的[3],中間具有一定的時(shí)延。在運(yùn)行的過程中往往運(yùn)行容器已經(jīng)停止了,而docker status命令還沒獲取到容器信息。此外,docker status命令獲取的是一整個(gè)容器內(nèi)的資源占用,不是某一個(gè)進(jìn)程的資源占用。顯然它不能滿足精確監(jiān)控某個(gè)進(jìn)程占用系統(tǒng)資源的需求。

    Linux系統(tǒng)的getrusage系統(tǒng)調(diào)用,可以得到相關(guān)進(jìn)程的資源使用信息,如進(jìn)程占用內(nèi)存、進(jìn)程在用戶態(tài)下的執(zhí)行時(shí)間、進(jìn)程在系統(tǒng)態(tài)下執(zhí)行的時(shí)間。類似的,setrlimit系統(tǒng)調(diào)用可以對(duì)某個(gè)進(jìn)程進(jìn)行資源限制。使用getrusage和setrlimit這兩個(gè)系統(tǒng)調(diào)用,運(yùn)行容器可以精準(zhǔn)地監(jiān)控和限制進(jìn)程的資源。

    為此,可以編寫一個(gè)資源監(jiān)控程序,它將在運(yùn)行容器內(nèi)部,以子進(jìn)程的形式運(yùn)行目標(biāo)程序可執(zhí)行文件,并重定向輸入輸出流,期間通過getrusage和setrlimit系統(tǒng)調(diào)用不斷地對(duì)其進(jìn)行監(jiān)控和限制。若在過程中子進(jìn)程使用資源超出了給定的限制,例如內(nèi)存超限、運(yùn)行超時(shí),則直接停止子進(jìn)程的運(yùn)行,并將結(jié)果記錄下來。若子進(jìn)程平穩(wěn)地運(yùn)行結(jié)果,則在子進(jìn)程結(jié)束時(shí)返回相關(guān)資源使用信息。該監(jiān)控程序也將被整合在Docker鏡像內(nèi)。

    運(yùn)行容器整體結(jié)構(gòu)如圖2所示。

    圖2 運(yùn)行容器整體結(jié)構(gòu)

    2.3 聚合編譯容器與運(yùn)行容器

    就像兩臺(tái)通信設(shè)備需要基站作為中轉(zhuǎn)一樣,為了聚合編譯容器與運(yùn)行容器,必須擁有一個(gè)Server容器。該Server容器提供友好交互的前端界面與對(duì)外訪問的Web服務(wù),將用戶的源代碼和輸入流遞交到Docker容器中,并將輸出流發(fā)還給用戶。從在用戶的角度看,Server容器就是一個(gè)普通的服務(wù)器應(yīng)用,如圖3所示。

    圖3 用戶視角的服務(wù)器

    編譯容器和運(yùn)行容器將宿主機(jī)上的某一目錄共同作為工作區(qū),分別掛載到各自的容器內(nèi)部,就達(dá)到了編譯容器和運(yùn)行容器同時(shí)訪問宿主機(jī)工作區(qū)內(nèi)文件的效果。服務(wù)器向該工作區(qū)目錄寫入程序源代碼,編譯容器根據(jù)程序源代碼生成程序可執(zhí)行文件,運(yùn)行容器讀取程序可執(zhí)行文件并給出標(biāo)準(zhǔn)輸入后輸出的結(jié)果。上述容器獨(dú)立的任務(wù)和之間相互通信都在該目錄下進(jìn)行。

    在用戶提交程序源代碼后,通過docker exec <容器id> <編譯命令> <資源限制參數(shù)> 啟動(dòng)編譯容器執(zhí)行編譯命令,屆時(shí)可以向編譯容器內(nèi)的監(jiān)控程序傳遞資源限制的參數(shù)。編譯結(jié)束后會(huì)在工作區(qū)目錄下產(chǎn)生對(duì)應(yīng)程序的可執(zhí)行文件。通過docker run <容器id> <運(yùn)行參數(shù)> <資源限制參數(shù)> 啟動(dòng)運(yùn)行容器執(zhí)行運(yùn)行命令。

    聚合架構(gòu)如圖4所示。

    圖4 聚合架構(gòu)

    3 安全問題的解決

    3.1 編譯一個(gè)永遠(yuǎn)讀不完的文件

    以C++為例,代碼如下。在程序源代碼的中引入一個(gè)永遠(yuǎn)也讀不完的文件,會(huì)使編譯容器永久停留在編譯階段。

    Docker編譯容器在運(yùn)行時(shí)可以傳遞資源限制參數(shù),限制編譯時(shí)長(zhǎng),就可以避免這種情況。

    3.2 編譯產(chǎn)生巨大文件

    對(duì)于服務(wù)器,增加一點(diǎn)磁盤空間或內(nèi)存空間開銷代價(jià)都是昂貴的,所以在線測(cè)評(píng)網(wǎng)站上提交的代碼允許磁盤空間占用不會(huì)太大。但也不懷有人惡意編譯巨大文件[4],導(dǎo)致服務(wù)器的磁盤占用迅速上升造成宕機(jī)的嚴(yán)重后果,必須要在編譯容器執(zhí)行編譯任務(wù)時(shí),通過資源限制參數(shù)限制編譯文件的大小。

    3.3 運(yùn)行時(shí)系統(tǒng)調(diào)用

    System("shutdown now")會(huì)使系統(tǒng)直接關(guān)機(jī),fork()可以讓程序遞歸地創(chuàng)建自身進(jìn)程副本,還有很多此類直接影響整個(gè)服務(wù)器的操作,可以在編譯時(shí)簡(jiǎn)單地使用字符串匹配去檢測(cè)這些危險(xiǎn)的命令,檢測(cè)到這些命令后直接停止整個(gè)編譯容器的運(yùn)行并返回錯(cuò)誤結(jié)果[4]。但是如果有人惡意宏定義,就繞過了字符串匹配。所以這種方式是不可行的。

    但本文設(shè)計(jì)的編譯容器和運(yùn)行容器都是運(yùn)行在Docker里的,Docker容器內(nèi)部和宿主機(jī)已經(jīng)完全隔離開,通過Docker限制整個(gè)容器的資源,即可解決這個(gè)問題。

    3.4 故意運(yùn)行超時(shí)

    可能會(huì)有那么一種情況,在源代碼里寫sleep(1000)(該代碼在C++中會(huì)使程序休眠1000秒),每次程序必定超時(shí),后被強(qiáng)制退出。這非常像類似于DDoS的攻擊方式。解決方案也和DDoS類似,要么提高服務(wù)器的配置,要么限制這個(gè)這類惡意提交運(yùn)行超時(shí)代碼用戶的正常使用[5]。前者費(fèi)用昂貴,后者經(jīng)濟(jì)實(shí)惠。可以在Server容器內(nèi)規(guī)定,如果某個(gè)用戶提交超時(shí)的代碼連續(xù)超過N次,則在后續(xù)一定時(shí)間內(nèi),該用戶的代碼不給予編譯運(yùn)行。

    4 分布式拓展

    Online Judge網(wǎng)站有一特點(diǎn),通常情況下比如夜晚或節(jié)假日,基本上不會(huì)有大量的編譯運(yùn)行請(qǐng)求。但在某些特殊的時(shí)間點(diǎn)上,比如承辦一個(gè)民間或官方在線比賽,或組織一場(chǎng)校內(nèi)或校外的編程考試時(shí),服務(wù)器編譯運(yùn)行請(qǐng)求會(huì)迅速增加。如果此時(shí)服務(wù)器在高負(fù)載下宕機(jī)了,將會(huì)給網(wǎng)站帶來難以估量的損失。傳統(tǒng)單體B/S架構(gòu)的服務(wù)器難以動(dòng)態(tài)地增加配置,且當(dāng)用戶請(qǐng)求量到達(dá)一定程度時(shí),客戶端和服務(wù)器之間的網(wǎng)絡(luò)資源分配也成了一大問題,再怎么提高服務(wù)器的性能都無濟(jì)于事。所以不得不尋求其他的方案,解決單臺(tái)服務(wù)器性能上限和網(wǎng)絡(luò)資源分配的問題。

    為了解決上述問題,將Online Judge容器部署在多臺(tái)服務(wù)器上,不僅可以應(yīng)對(duì)用戶量激增帶來的巨額并發(fā)訪問量,而且在容災(zāi)方面,當(dāng)其中一臺(tái)判題服務(wù)器遭遇意外問題宕機(jī)時(shí),整個(gè)系統(tǒng)也能正常地運(yùn)行下去。

    在2004年,Google公司提出了一種用于大規(guī)模數(shù)據(jù)的編程模型MapReduce[6]。參考其編程模型的核心思想“分而治之”,可以將每個(gè)用戶的判題任務(wù)分發(fā)到不同的服務(wù)器上,再統(tǒng)一收集結(jié)果返回給用戶。這一過程,將在一臺(tái)服務(wù)器上的并行任務(wù)轉(zhuǎn)換成在多臺(tái)服務(wù)器上的并行任務(wù)。轉(zhuǎn)化前后并行執(zhí)行效果如圖5、圖6所示。

    可以非常直觀地看到,通過多臺(tái)服務(wù)器同時(shí)開展并行任務(wù),單臺(tái)服務(wù)器需要承載的壓力會(huì)被均分到其他服務(wù)器上。同時(shí)可根據(jù)用戶在線訪問量的波動(dòng),動(dòng)態(tài)地增加或減少服務(wù)器集群內(nèi)的主機(jī)的數(shù)量,減少高昂的服務(wù)器資源費(fèi)用的支出。

    圖5 原始并行圖

    圖6 分布并行圖

    4.1 任務(wù)分發(fā)

    參考MapReduce,它會(huì)先將用戶的原始數(shù)據(jù)進(jìn)行切割,然后分發(fā)給不同的Map任務(wù)處理[6]。用戶提交到服務(wù)器的數(shù)據(jù)只有源代碼和輸入文本,對(duì)這些數(shù)據(jù)進(jìn)行切割并沒有什么意義。Online Judge需要切割的是存儲(chǔ)在服務(wù)器上的隱藏測(cè)試樣例,這些輸入輸出樣例的數(shù)量,根據(jù)題目的不同,有的幾十,有的甚至上千。這些不同的輸入輸出樣例的空間占用大小,有的只有幾kB,有的可達(dá)1 MB。

    在分布式集群中,每一臺(tái)機(jī)器的性能可能都是不一樣的。對(duì)此,可以選擇一種較為簡(jiǎn)單、靜態(tài)的負(fù)載均衡算法——加權(quán)輪詢調(diào)度算法[7]。它用不同的權(quán)值記錄了每一臺(tái)服務(wù)器的處理能力,在請(qǐng)求到來后,權(quán)值高的服務(wù)器將會(huì)處理更多的請(qǐng)求。分發(fā)任務(wù)后,權(quán)值會(huì)根據(jù)資源占用和請(qǐng)求處理的情況進(jìn)行改變。

    服務(wù)器選擇任務(wù)分發(fā)時(shí),這些占用空間大,運(yùn)行時(shí)間較長(zhǎng)的輸入輸出樣例,將會(huì)被分發(fā)到性能較高的服務(wù)器上。而那些占用空間小,運(yùn)行時(shí)間短的樣例將會(huì)被分發(fā)到性能較差的服務(wù)器上。因?yàn)槊總€(gè)服務(wù)器的權(quán)值都會(huì)被加權(quán)輪詢調(diào)度算法動(dòng)態(tài)的更改,所以一批開始于相同時(shí)間的任務(wù),在經(jīng)過集群分發(fā)處理后,等待結(jié)束同步的時(shí)間不會(huì)相差太大。如圖7所示。

    圖7 任務(wù)分發(fā)

    4.2 任務(wù)歸并

    任務(wù)歸并的過程只需要將之前分發(fā)的任務(wù)取回,取回過程的順序不需要根據(jù)任務(wù)分發(fā)的順序或是分發(fā)時(shí)間順序來定。在這一過程中,專門用于任務(wù)分發(fā)的線程會(huì)通過遠(yuǎn)程過程調(diào)用[8]調(diào)取集群內(nèi)Online Judge容器暴露出來的功能函數(shù)。該線程在等待Online Judge容器編譯運(yùn)行的過程中,會(huì)進(jìn)入等待狀態(tài),直至所有任務(wù)的運(yùn)行結(jié)果都獲取。

    遠(yuǎn)程過程調(diào)用[8]是一個(gè)計(jì)算機(jī)通信協(xié)議,可基于HTTP或TCP協(xié)議實(shí)現(xiàn),越接近底層的協(xié)議數(shù)據(jù)傳輸更快。使用遠(yuǎn)程過程調(diào)用,會(huì)在服務(wù)器集群內(nèi)部會(huì)產(chǎn)生一定內(nèi)部網(wǎng)絡(luò)資源消耗。因?yàn)榧和獾木W(wǎng)絡(luò)資源比集群內(nèi)的網(wǎng)絡(luò)資源要更加昂貴,所以在整個(gè)集群內(nèi)部進(jìn)行的遠(yuǎn)程過程調(diào)用,對(duì)整個(gè)系統(tǒng)來說是可以接受的。

    4.3 分發(fā)與歸并總結(jié)

    對(duì)Online Judge容器嘗試分布式拓展后,將高并發(fā)下單臺(tái)服務(wù)器性能上限問題轉(zhuǎn)換成了多臺(tái)服務(wù)器組成集群的性能上線問題;將高并發(fā)下客戶端與服務(wù)器之間網(wǎng)絡(luò)資源分配問題,轉(zhuǎn)換成了客戶端與多臺(tái)服務(wù)器之間的網(wǎng)絡(luò)資源分配問題。這些問題在分布式領(lǐng)域仍面對(duì)著許多的問題與挑戰(zhàn),等待著更好的解決方案的提出。

    5 結(jié)束語

    目前,線上編程教學(xué)的需求變得愈發(fā)強(qiáng)烈,互聯(lián)網(wǎng)企業(yè)在選人面試招聘也逐漸從線下轉(zhuǎn)變?yōu)榫€上,因此急需免配置系統(tǒng)環(huán)境就可運(yùn)行的編程環(huán)境。本文設(shè)計(jì)的基于Docker的Online Judge容器,功能精巧、易部署、具有一定的安全性,能較好的應(yīng)對(duì)此類急需制作針對(duì)特定功能而使用的Online Judge網(wǎng)站。同時(shí)基于此類在線測(cè)評(píng)的特點(diǎn),基于MapReduce和遠(yuǎn)程過程調(diào)用協(xié)議提供了一種分布式拓展的方案,以應(yīng)對(duì)高并發(fā)高負(fù)載下的場(chǎng)景。Docker屬于較新的技術(shù)之一,具有天然適應(yīng)云計(jì)算的優(yōu)點(diǎn)。未來隨著云計(jì)算、分布式技術(shù)的發(fā)展,讀者還可以根據(jù)該基于Docker設(shè)計(jì)的Online Judge容器,進(jìn)一步豐富其定制化功能,實(shí)現(xiàn)遠(yuǎn)程線上實(shí)驗(yàn)教學(xué)、互聯(lián)網(wǎng)企業(yè)遠(yuǎn)程編程開發(fā)等,以響應(yīng)工業(yè)和信息化部關(guān)于推動(dòng)5G加快發(fā)展的號(hào)召。

    [1] 蔡崇超. 基于Web的在線判題系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件導(dǎo)刊,2016,15(3): 107-109.

    [2] 歐陽佳,肖茵茵,劉少鵬,等. 基于在線判題系統(tǒng)的程序設(shè)計(jì)課程群教學(xué)研究[J]. 信息與電腦(理論版),2021,33(12): 228-231.

    [3] 邱建新. 基于Docker容器技術(shù)的Linux在線實(shí)驗(yàn)環(huán)境設(shè)計(jì)[J]. 信息技術(shù),2022(2): 48-52,58.

    [4] 李定才,瞿紹軍,胡爭(zhēng),等. 基于Windows的在線判題系統(tǒng)的安全性研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(9): 204-207.

    [5] 張彩珍,常元,康斌龍,等. 一種抵御流量型DDoS攻擊的告警閾值系統(tǒng)設(shè)計(jì)[J]. 電子設(shè)計(jì)工程,2021,29(22): 24-27,32.

    [6] Dean J, Ghemawat S. MapReduce: Simplified data processing on large clusters[C]. Proc of OSDI 2004, USENIX Association, 2004.

    [7] Reynolds D A, Quatieri T F, Dunn R B. Speaker verification using adapted Gaussian mixture models[J]. Digital Signal Processing, 2000, 10(1): 19-41.

    [8] Gutiérrez G J J, González H M. Prioritizing remote procedure calls in Ada distributed systems[J]. ACM SIGAda Ada Letters, 1999, 19(2): 67-72.

    Design and Implementation of Online Judge Container Based on Docker

    In major Online Judge websites such as LeetCode and ACWing, countless codes are compiled and run all the time. However, the code submitted on these websites is to solve an algorithm problem given in the website's question bank. It not only stipulates the standard input and output of the program, but also limits the running time and memory usage, which has certain limitations. During the COVID-19, universities offering computer courses also urgently need to build Online Judge that meets our teaching needs in order to run online courses normally. Aiming at the above two problems, this paper designs and implements an Online Judge container based on Docker technology. It can compile the source code of the program and run the binary file of the program, dynamically change the standard input, running time and memory occupation of the program, and protect the container to a certain extent. It has certain security, and is easy to expand distributed.

    Online Judge container; Online Judge; Docker

    TP311

    A

    1008-1151(2022)09-0014-04

    2022-06-28

    廣西區(qū)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃立項(xiàng)項(xiàng)目(202010595168、202110595158)。

    韋俊宇(2001-),男,桂林電子科技大學(xué)計(jì)算機(jī)與信息安全學(xué)院學(xué)生。

    王宇英,女,桂林電子科技大學(xué)計(jì)算機(jī)與信息安全學(xué)院正高級(jí)實(shí)驗(yàn)師,碩士,研究方向?yàn)楦叩冉逃芾怼?/p>

    猜你喜歡
    源代碼鏡像進(jìn)程
    人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
    基于TXL的源代碼插樁技術(shù)研究
    鏡像
    債券市場(chǎng)對(duì)外開放的進(jìn)程與展望
    鏡像
    小康(2018年23期)2018-08-23 06:18:52
    軟件源代碼非公知性司法鑒定方法探析
    揭秘龍湖產(chǎn)品“源代碼”
    鏡像
    小康(2015年4期)2015-03-31 14:57:40
    鏡像
    小康(2015年6期)2015-03-26 14:44:27
    社會(huì)進(jìn)程中的新聞學(xué)探尋
    91麻豆av在线| 精品国产一区二区三区久久久樱花| 只有这里有精品99| 欧美少妇被猛烈插入视频| 91精品伊人久久大香线蕉| 亚洲精品国产区一区二| 欧美人与善性xxx| 日韩人妻精品一区2区三区| 久9热在线精品视频| 久久久久久久久久久久大奶| 亚洲精品成人av观看孕妇| 亚洲欧美清纯卡通| 精品卡一卡二卡四卡免费| 老司机深夜福利视频在线观看 | 久久久久视频综合| av网站在线播放免费| 亚洲国产精品一区三区| 国精品久久久久久国模美| 午夜福利影视在线免费观看| 国产老妇伦熟女老妇高清| 国产亚洲一区二区精品| 亚洲精品国产av蜜桃| 久久精品国产a三级三级三级| 老司机影院成人| 少妇人妻 视频| 精品国产乱码久久久久久小说| 菩萨蛮人人尽说江南好唐韦庄| 大片电影免费在线观看免费| 中文字幕最新亚洲高清| 久久青草综合色| 亚洲精品av麻豆狂野| 中国美女看黄片| 精品福利永久在线观看| 如日韩欧美国产精品一区二区三区| 成人国语在线视频| 亚洲欧洲日产国产| 免费在线观看日本一区| 天天躁日日躁夜夜躁夜夜| 97精品久久久久久久久久精品| 三上悠亚av全集在线观看| 十八禁高潮呻吟视频| 午夜免费男女啪啪视频观看| 亚洲精品美女久久av网站| 精品国产乱码久久久久久男人| 电影成人av| 国产黄频视频在线观看| 日韩大片免费观看网站| 制服人妻中文乱码| 婷婷成人精品国产| 久久女婷五月综合色啪小说| 亚洲成国产人片在线观看| 亚洲精品国产av成人精品| 极品少妇高潮喷水抽搐| 欧美精品一区二区大全| 久久午夜综合久久蜜桃| 午夜视频精品福利| 精品国产乱码久久久久久男人| 久久久久久亚洲精品国产蜜桃av| 国产精品久久久久成人av| 在线观看人妻少妇| 亚洲黑人精品在线| 两个人看的免费小视频| 超碰97精品在线观看| 久久久久精品人妻al黑| 一级毛片 在线播放| 一区二区三区乱码不卡18| 男女午夜视频在线观看| 交换朋友夫妻互换小说| 欧美大码av| 午夜两性在线视频| 国产在线免费精品| 亚洲精品乱久久久久久| 少妇 在线观看| 国产精品久久久人人做人人爽| 性色av乱码一区二区三区2| 午夜av观看不卡| 最新在线观看一区二区三区 | 亚洲精品自拍成人| 麻豆国产av国片精品| 男女高潮啪啪啪动态图| 国产精品一区二区精品视频观看| 一区福利在线观看| 国产在线观看jvid| 国产在线免费精品| 亚洲激情五月婷婷啪啪| 久久这里只有精品19| 校园人妻丝袜中文字幕| 亚洲精品在线美女| 亚洲,欧美精品.| 亚洲激情五月婷婷啪啪| 国产人伦9x9x在线观看| 99久久99久久久精品蜜桃| 一级黄片播放器| 精品人妻一区二区三区麻豆| 性高湖久久久久久久久免费观看| 国产精品偷伦视频观看了| 久久久久视频综合| 天天躁日日躁夜夜躁夜夜| 午夜免费成人在线视频| 老汉色av国产亚洲站长工具| 久久精品亚洲av国产电影网| 久久久久国产一级毛片高清牌| 看免费av毛片| 国产精品久久久久久精品古装| 国产一卡二卡三卡精品| 男女下面插进去视频免费观看| 亚洲av男天堂| 久久99热这里只频精品6学生| 免费在线观看视频国产中文字幕亚洲 | 欧美日韩一级在线毛片| svipshipincom国产片| av国产久精品久网站免费入址| 久久人人爽人人片av| 精品亚洲成国产av| 国产伦理片在线播放av一区| 国产成人精品无人区| 精品国产一区二区久久| 欧美久久黑人一区二区| 国产精品熟女久久久久浪| 丝瓜视频免费看黄片| 亚洲,欧美,日韩| 天天躁夜夜躁狠狠久久av| 日本wwww免费看| 菩萨蛮人人尽说江南好唐韦庄| 亚洲精品一二三| 亚洲成av片中文字幕在线观看| 少妇裸体淫交视频免费看高清 | 我的亚洲天堂| 亚洲欧美一区二区三区国产| 免费黄频网站在线观看国产| 纵有疾风起免费观看全集完整版| 精品国产一区二区久久| 黄色怎么调成土黄色| 亚洲欧美中文字幕日韩二区| 日韩制服丝袜自拍偷拍| 国产欧美日韩精品亚洲av| 久久精品国产亚洲av高清一级| 乱人伦中国视频| 日本黄色日本黄色录像| 欧美精品人与动牲交sv欧美| av网站免费在线观看视频| 成人黄色视频免费在线看| 欧美黄色淫秽网站| 人人妻人人添人人爽欧美一区卜| 99九九在线精品视频| 啦啦啦啦在线视频资源| 久久精品aⅴ一区二区三区四区| 国产成人精品在线电影| 最黄视频免费看| 熟女少妇亚洲综合色aaa.| 亚洲中文日韩欧美视频| 欧美亚洲日本最大视频资源| kizo精华| 亚洲国产欧美一区二区综合| 日本vs欧美在线观看视频| 免费一级毛片在线播放高清视频 | 日本黄色日本黄色录像| 青草久久国产| 国产高清videossex| 亚洲精品中文字幕在线视频| 亚洲av日韩在线播放| 中国国产av一级| 黑人巨大精品欧美一区二区蜜桃| 母亲3免费完整高清在线观看| 亚洲av电影在线观看一区二区三区| 亚洲国产成人一精品久久久| 亚洲国产欧美一区二区综合| 91九色精品人成在线观看| 一区福利在线观看| 国产一区二区在线观看av| a级毛片黄视频| 深夜精品福利| 欧美黄色淫秽网站| 丝袜在线中文字幕| 天天操日日干夜夜撸| 久久久久久久精品精品| 在线观看免费视频网站a站| 成人手机av| 一区二区三区乱码不卡18| 国产午夜精品一二区理论片| 99热网站在线观看| 欧美亚洲日本最大视频资源| 伊人亚洲综合成人网| 久久青草综合色| 亚洲欧美色中文字幕在线| 国产黄频视频在线观看| 亚洲国产欧美网| av欧美777| 国产熟女欧美一区二区| 国产男女内射视频| 婷婷色av中文字幕| 19禁男女啪啪无遮挡网站| 菩萨蛮人人尽说江南好唐韦庄| 国产黄色视频一区二区在线观看| 久久人妻福利社区极品人妻图片 | av有码第一页| 亚洲国产精品一区三区| 亚洲第一av免费看| 黄色片一级片一级黄色片| a级毛片黄视频| 国产欧美亚洲国产| 欧美少妇被猛烈插入视频| 日韩制服丝袜自拍偷拍| 久久精品成人免费网站| 国语对白做爰xxxⅹ性视频网站| 国产又色又爽无遮挡免| av片东京热男人的天堂| 免费看av在线观看网站| 国产女主播在线喷水免费视频网站| 久久影院123| av天堂在线播放| 最新的欧美精品一区二区| netflix在线观看网站| 久久久欧美国产精品| 亚洲欧美成人综合另类久久久| 丝袜脚勾引网站| 九草在线视频观看| av天堂久久9| 女人高潮潮喷娇喘18禁视频| 午夜av观看不卡| 老司机亚洲免费影院| 国产精品二区激情视频| 国产亚洲午夜精品一区二区久久| 男女午夜视频在线观看| 亚洲熟女精品中文字幕| 国产亚洲av高清不卡| 成人亚洲欧美一区二区av| 久久热在线av| 国产真人三级小视频在线观看| 男人操女人黄网站| 久久人人爽人人片av| 精品国产乱码久久久久久男人| 精品一区二区三区av网在线观看 | 97人妻天天添夜夜摸| 色94色欧美一区二区| 久久99热这里只频精品6学生| 一本久久精品| av在线播放精品| 久久久久久人人人人人| 90打野战视频偷拍视频| 少妇的丰满在线观看| 91九色精品人成在线观看| 日本欧美视频一区| 天天操日日干夜夜撸| 制服人妻中文乱码| 久久久精品区二区三区| 91精品三级在线观看| 可以免费在线观看a视频的电影网站| 国产日韩欧美视频二区| 一二三四社区在线视频社区8| 亚洲人成电影免费在线| 中文字幕精品免费在线观看视频| kizo精华| 国产精品秋霞免费鲁丝片| 91九色精品人成在线观看| 精品亚洲乱码少妇综合久久| 国产成人精品在线电影| 精品一区二区三区四区五区乱码 | 日韩一区二区三区影片| 人妻一区二区av| 操出白浆在线播放| 99九九在线精品视频| 女人高潮潮喷娇喘18禁视频| 国产伦人伦偷精品视频| 亚洲五月婷婷丁香| 久久热在线av| 国产一级毛片在线| 国产精品一区二区在线观看99| 欧美精品av麻豆av| 精品人妻在线不人妻| 少妇人妻久久综合中文| 婷婷成人精品国产| 又大又爽又粗| 一边摸一边抽搐一进一出视频| 90打野战视频偷拍视频| 50天的宝宝边吃奶边哭怎么回事| 亚洲国产精品999| 亚洲精品国产一区二区精华液| 伊人久久大香线蕉亚洲五| 亚洲人成电影观看| 侵犯人妻中文字幕一二三四区| 性色av乱码一区二区三区2| 国产成人a∨麻豆精品| 尾随美女入室| 久久国产精品人妻蜜桃| 亚洲视频免费观看视频| 欧美精品av麻豆av| 日韩精品免费视频一区二区三区| 18禁裸乳无遮挡动漫免费视频| 美女视频免费永久观看网站| 国产精品一国产av| 激情视频va一区二区三区| 亚洲av欧美aⅴ国产| 日韩免费高清中文字幕av| 亚洲国产日韩一区二区| av国产精品久久久久影院| 91麻豆精品激情在线观看国产 | 亚洲一区中文字幕在线| 黄频高清免费视频| 中文字幕精品免费在线观看视频| 国产有黄有色有爽视频| av国产久精品久网站免费入址| 亚洲国产日韩一区二区| 久久久久久久久免费视频了| 国产精品香港三级国产av潘金莲 | avwww免费| 日韩制服骚丝袜av| 狠狠精品人妻久久久久久综合| 国产成人影院久久av| 亚洲午夜精品一区,二区,三区| 国产精品av久久久久免费| 啦啦啦在线免费观看视频4| 考比视频在线观看| 久久久国产一区二区| 人人妻,人人澡人人爽秒播 | 亚洲成人免费电影在线观看 | 久久精品国产综合久久久| 黄色视频不卡| 99国产精品99久久久久| 捣出白浆h1v1| 啦啦啦在线免费观看视频4| 深夜精品福利| 午夜免费鲁丝| 欧美老熟妇乱子伦牲交| 两个人看的免费小视频| 中文字幕人妻丝袜一区二区| 亚洲欧洲精品一区二区精品久久久| 国产精品香港三级国产av潘金莲 | 国产主播在线观看一区二区 | 少妇精品久久久久久久| 操美女的视频在线观看| 精品人妻一区二区三区麻豆| 精品一区二区三区四区五区乱码 | 亚洲一码二码三码区别大吗| 亚洲国产精品成人久久小说| 免费女性裸体啪啪无遮挡网站| 亚洲精品av麻豆狂野| 99国产精品免费福利视频| 国产高清国产精品国产三级| 国产不卡av网站在线观看| 国产精品欧美亚洲77777| 国产淫语在线视频| 免费久久久久久久精品成人欧美视频| 一区二区日韩欧美中文字幕| 自拍欧美九色日韩亚洲蝌蚪91| 新久久久久国产一级毛片| 视频区图区小说| 亚洲成人免费电影在线观看 | 少妇粗大呻吟视频| 国产国语露脸激情在线看| 老汉色∧v一级毛片| 青草久久国产| 婷婷色av中文字幕| 美女主播在线视频| 自线自在国产av| 在线观看免费午夜福利视频| 好男人电影高清在线观看| 69精品国产乱码久久久| 999精品在线视频| 两性夫妻黄色片| 中文乱码字字幕精品一区二区三区| 大陆偷拍与自拍| 色播在线永久视频| 成在线人永久免费视频| 国产精品久久久久成人av| 一级毛片黄色毛片免费观看视频| 欧美国产精品va在线观看不卡| 51午夜福利影视在线观看| 婷婷色综合www| 国产av精品麻豆| 女人爽到高潮嗷嗷叫在线视频| 成人亚洲欧美一区二区av| 91九色精品人成在线观看| 人体艺术视频欧美日本| 老司机亚洲免费影院| 高清黄色对白视频在线免费看| 久久久久网色| 日韩一本色道免费dvd| 国产精品免费视频内射| 国产黄频视频在线观看| 女人被躁到高潮嗷嗷叫费观| 精品一区二区三区四区五区乱码 | 亚洲天堂av无毛| 欧美日韩黄片免| 麻豆国产av国片精品| 久久久久久人人人人人| 99久久精品国产亚洲精品| 久久久国产欧美日韩av| 美女扒开内裤让男人捅视频| 成人午夜精彩视频在线观看| 久久久久久久久免费视频了| 岛国毛片在线播放| 99九九在线精品视频| 久久人妻福利社区极品人妻图片 | 91国产中文字幕| 性色av一级| 后天国语完整版免费观看| 蜜桃国产av成人99| 国产成人av教育| av线在线观看网站| 首页视频小说图片口味搜索 | 亚洲国产精品一区三区| 黄色视频不卡| 国语对白做爰xxxⅹ性视频网站| 免费女性裸体啪啪无遮挡网站| 老司机亚洲免费影院| 国产精品久久久久久人妻精品电影 | 狂野欧美激情性xxxx| 精品国产一区二区三区四区第35| 久久ye,这里只有精品| 人妻一区二区av| 免费在线观看日本一区| 成在线人永久免费视频| 亚洲午夜精品一区,二区,三区| 国产精品 国内视频| 侵犯人妻中文字幕一二三四区| 久久精品亚洲av国产电影网| 男人舔女人的私密视频| 十分钟在线观看高清视频www| 亚洲第一av免费看| 亚洲欧洲精品一区二区精品久久久| 两个人免费观看高清视频| 首页视频小说图片口味搜索 | 亚洲国产欧美日韩在线播放| 国产一区二区三区综合在线观看| 亚洲成国产人片在线观看| 亚洲国产欧美日韩在线播放| 电影成人av| 夜夜骑夜夜射夜夜干| 成年人免费黄色播放视频| 国产精品 欧美亚洲| 无遮挡黄片免费观看| 女警被强在线播放| 国产精品国产三级国产专区5o| 欧美在线一区亚洲| 国语对白做爰xxxⅹ性视频网站| 久久精品国产亚洲av涩爱| 久久久久精品国产欧美久久久 | 国产不卡av网站在线观看| 国产一区亚洲一区在线观看| 丝瓜视频免费看黄片| 日本午夜av视频| 久热爱精品视频在线9| 纵有疾风起免费观看全集完整版| 亚洲中文字幕日韩| 最黄视频免费看| 国产野战对白在线观看| 黑人猛操日本美女一级片| 男女床上黄色一级片免费看| 99九九在线精品视频| 国产成人精品久久二区二区91| 亚洲欧洲精品一区二区精品久久久| 国产精品一区二区免费欧美 | 久久人人爽人人片av| 亚洲一码二码三码区别大吗| 国语对白做爰xxxⅹ性视频网站| 久久女婷五月综合色啪小说| 啦啦啦中文免费视频观看日本| 亚洲第一青青草原| 国产激情久久老熟女| 国产真人三级小视频在线观看| 成人国产av品久久久| 少妇人妻 视频| 好男人电影高清在线观看| 成人黄色视频免费在线看| 天堂俺去俺来也www色官网| 亚洲国产欧美一区二区综合| www日本在线高清视频| 中文字幕另类日韩欧美亚洲嫩草| 国产成人免费无遮挡视频| 91精品三级在线观看| 国产高清videossex| 两个人免费观看高清视频| 一本—道久久a久久精品蜜桃钙片| 纯流量卡能插随身wifi吗| 日本av免费视频播放| 国产视频一区二区在线看| 欧美精品一区二区大全| 欧美日韩国产mv在线观看视频| 亚洲中文av在线| 精品少妇久久久久久888优播| 80岁老熟妇乱子伦牲交| 成人三级做爰电影| 在线观看一区二区三区激情| 国产一区二区在线观看av| 伊人久久大香线蕉亚洲五| 欧美人与性动交α欧美精品济南到| 麻豆乱淫一区二区| 日韩一本色道免费dvd| 手机成人av网站| 99国产精品一区二区蜜桃av | 韩国精品一区二区三区| 免费观看a级毛片全部| 超碰97精品在线观看| 免费高清在线观看视频在线观看| 老司机影院成人| 国产免费福利视频在线观看| 亚洲国产欧美网| 成人免费观看视频高清| 国产成人免费无遮挡视频| 中文字幕人妻丝袜一区二区| 国产一区二区 视频在线| 深夜精品福利| 制服人妻中文乱码| 国产成人一区二区在线| 国产高清国产精品国产三级| 赤兔流量卡办理| 国产精品 欧美亚洲| 精品人妻在线不人妻| 国产精品三级大全| 精品国产一区二区三区四区第35| 午夜激情久久久久久久| 国产又爽黄色视频| 色综合欧美亚洲国产小说| 欧美精品高潮呻吟av久久| 七月丁香在线播放| 国产爽快片一区二区三区| 欧美日韩一级在线毛片| 少妇粗大呻吟视频| 日本午夜av视频| 久久久久久人人人人人| 欧美人与性动交α欧美精品济南到| 久久久久久久国产电影| 最黄视频免费看| 自线自在国产av| 操美女的视频在线观看| 国产亚洲精品第一综合不卡| 操美女的视频在线观看| 精品亚洲乱码少妇综合久久| 成人国产av品久久久| 久久精品久久久久久噜噜老黄| 亚洲精品中文字幕在线视频| 亚洲美女黄色视频免费看| 一级黄片播放器| 1024视频免费在线观看| 国产亚洲av高清不卡| 久久99精品国语久久久| 丰满饥渴人妻一区二区三| 久久精品亚洲av国产电影网| 免费看av在线观看网站| 免费观看a级毛片全部| 999久久久国产精品视频| 18禁黄网站禁片午夜丰满| 亚洲专区中文字幕在线| 亚洲欧美成人综合另类久久久| av线在线观看网站| 女人精品久久久久毛片| 亚洲欧美色中文字幕在线| 高清av免费在线| 国产不卡av网站在线观看| 黄片播放在线免费| 欧美日本中文国产一区发布| av国产精品久久久久影院| 成人免费观看视频高清| 亚洲av片天天在线观看| 波野结衣二区三区在线| 91九色精品人成在线观看| 黄频高清免费视频| 午夜激情av网站| 免费高清在线观看视频在线观看| 美女视频免费永久观看网站| 国产欧美日韩综合在线一区二区| 精品亚洲乱码少妇综合久久| xxx大片免费视频| 国产午夜精品一二区理论片| 欧美久久黑人一区二区| 亚洲成av片中文字幕在线观看| 日本av手机在线免费观看| 亚洲成av片中文字幕在线观看| 高清不卡的av网站| 人人妻人人澡人人爽人人夜夜| 丰满少妇做爰视频| 大话2 男鬼变身卡| 亚洲精品第二区| 成人黄色视频免费在线看| 成年av动漫网址| 国产成人91sexporn| 在线亚洲精品国产二区图片欧美| 最新在线观看一区二区三区 | 国产黄频视频在线观看| 久久久久久人人人人人| 十分钟在线观看高清视频www| 男人添女人高潮全过程视频| 欧美精品av麻豆av| 99re6热这里在线精品视频| 王馨瑶露胸无遮挡在线观看| 永久免费av网站大全| 久久久久国产精品人妻一区二区| 国产精品av久久久久免费| 9热在线视频观看99| 久久精品亚洲av国产电影网| 天天躁夜夜躁狠狠躁躁| 亚洲成国产人片在线观看| 精品亚洲成国产av| 免费久久久久久久精品成人欧美视频| 青春草视频在线免费观看| 亚洲av电影在线观看一区二区三区| 日本黄色日本黄色录像| 一本综合久久免费| 日韩av在线免费看完整版不卡| 一区二区三区激情视频| 日本一区二区免费在线视频| 亚洲av在线观看美女高潮| 成人三级做爰电影| 1024香蕉在线观看| 黑人欧美特级aaaaaa片| 大香蕉久久网| 国语对白做爰xxxⅹ性视频网站| 欧美精品人与动牲交sv欧美| 久久久久久免费高清国产稀缺| 日本av免费视频播放| 99热全是精品| 别揉我奶头~嗯~啊~动态视频 | 亚洲精品成人av观看孕妇| 最黄视频免费看|