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

        ?

        面向系統(tǒng)能力培養(yǎng)的程序設(shè)計綜合實踐課程改革

        2022-03-25 04:44:50陳振邦徐建軍陳立前
        軟件導刊 2022年3期
        關(guān)鍵詞:測試用例評測程序設(shè)計

        陳振邦,徐建軍,陳立前,沈 立

        (國防科技大學 計算機學院,湖南長沙 410073)

        0 引言

        計算機程序設(shè)計能力是計算機相關(guān)本科專業(yè)培養(yǎng)的專業(yè)核心能力之一,也是計算思維能力的核心體現(xiàn),如何使學生具備良好的程序設(shè)計能力是計算機專業(yè)人才培養(yǎng)需要解決的核心問題之一。程序設(shè)計能力的培養(yǎng)需要在基礎(chǔ)理論知識學習的同時結(jié)合大量編程實踐,以不斷提升學生的軟件系統(tǒng)構(gòu)建能力。因此,很多高校在開設(shè)計算機程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)等課程后會再安排一門程序設(shè)計綜合實踐課,通過工程量相對較大的項目訓練綜合提升學生的程序設(shè)計能力[1-2]。

        國防科技大學的程序設(shè)計綜合實踐課是計算機學院各專業(yè)的基礎(chǔ)課,是計算機程序設(shè)計類課程的后續(xù)課程。課程的主要目的是通過一個較為真實的復雜工程問題,使學生完成系統(tǒng)的分析、設(shè)計和編程實現(xiàn),全面梳理學生學習的程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)和算法知識,鞏固和提高其程序設(shè)計和系統(tǒng)能力,鍛煉學生獨立編程、從零開始編程以及系統(tǒng)級編程的能力,同時鍛煉其自學能力。該課程支撐計算機科學與技術(shù)、軟件工程、網(wǎng)絡(luò)工程等專業(yè)學生達成具備計算機系統(tǒng)設(shè)計開發(fā)能力和程序設(shè)計能力的畢業(yè)要求。

        程序設(shè)計綜合實踐課程的目標定位、任務選擇、組織實施、考核等對于教學效果有重要影響。一方面,課程任務需要能夠綜合復盤學生在之前所學的知識;另一方面,根據(jù)不同學校的學科背景和培養(yǎng)定位,課程任務需要能對學生進行針對性程序設(shè)計鍛煉。在教學過程中,針對以上方面開展了3 年的改革和探索。

        1 課程改革需求

        具有系統(tǒng)觀的計算機專業(yè)人才培養(yǎng)是當前關(guān)注的焦點[3-5]。系統(tǒng)能力是指具備計算系統(tǒng)層面的認知和設(shè)計能力,主要包括系統(tǒng)軟硬件合理劃分能力、不同系統(tǒng)層次的抽象和封裝能力、整體系統(tǒng)性能的分析和調(diào)優(yōu)能力、各個系統(tǒng)層面的錯誤調(diào)試和修復能力、程序的性能評估和優(yōu)化能力、面向具體應用需求的系統(tǒng)構(gòu)建能力等[3-5]。國防科技大學計算機專業(yè)對具備系統(tǒng)能力人才的需求由來已久,特別是在大系統(tǒng)(例如巨型機、CPU、操作系統(tǒng)等)的研制過程中,具備較強系統(tǒng)能力的人才非常關(guān)鍵。

        系統(tǒng)能力要求學生對計算機系統(tǒng)的整機概念和層次結(jié)構(gòu)具有較為深刻的理解和認識,對高級語言、指令集架構(gòu)、編譯器、鏈接器、操作系統(tǒng)、應用程序等之間的關(guān)系具有較為深入的掌握,并且能深刻理解和權(quán)衡時空開銷、抽象和建模、并發(fā)和并行等概念,掌握現(xiàn)代計算機系統(tǒng)中最核心的技術(shù)和實現(xiàn)方法[3-5]。

        國防科技大學計算機專業(yè)在程序設(shè)計課程中講授的是C 和C++語言,程序設(shè)計綜合實踐課程則安排在大三。雖然之前的課程內(nèi)容中安排了一定的程序設(shè)計時間,例如采用C/C++開發(fā)一個圖形界面程序、采用Java 或Python 開發(fā)一個安卓應用或游戲等[6],但這些都是在應用層面的編程實踐。雖然這些編程實踐具備一定的工程量,可以鍛煉學生的編程能力,但在學生系統(tǒng)能力、獨立編程能力、自主探索能力的培養(yǎng)上仍然沒有針對性,主要問題體現(xiàn)在以下幾個方面:①由于過度依賴于開發(fā)環(huán)境,學生對于程序編譯、鏈接、執(zhí)行等方面的理解不深,同時在程序架構(gòu)設(shè)計、優(yōu)化、調(diào)試等方面的能力仍然較弱,具有全棧開發(fā)和優(yōu)化能力的學生更是少見;②當前互聯(lián)網(wǎng)和開源技術(shù)高速發(fā)展,代碼資源非常豐富,在提升開發(fā)效率和軟件設(shè)計能力的同時,一定程度上減弱了學生從零開始設(shè)計、開發(fā)程序的能力,導致部分學生只能修改程序但不能自主從零開發(fā)程序,降低了其自主創(chuàng)新能力;③學生在自主學習探索方面存在不足,之前課程的大部分作業(yè)或?qū)嶒灴梢酝ㄟ^上網(wǎng)搜索找到標準答案,如何體現(xiàn)復雜工程問題無標準解的特點是一個問題,如何調(diào)動學生的課程學習積極性、激發(fā)其學習興趣也是一個問題;④學生的獨立編程能力存在不足,特別是在規(guī)模稍大的軟件開發(fā)實驗上,通常是多人一組,存在“摸魚”現(xiàn)象;然而,一人一組的模式對課程的驗收和過程控制也會帶來挑戰(zhàn),如何較為公平和高效地對學生編寫的代碼作出評測是急需解決的問題。

        2 課程設(shè)計

        在上述教學需求的驅(qū)動下,以提升系統(tǒng)能力為目標,在程序設(shè)計綜合實踐課程方面開展了一系列改革,設(shè)計了基于匯編程序解釋器的課程任務,以下分別從課程目標,任務設(shè)置、組織與要求及其他教學措施等方面闡述該門課程的設(shè)計及相應思考。

        2.1 課程對象與目標

        程序設(shè)計綜合實踐課程是計算機專業(yè)學生大三上學期的專業(yè)基礎(chǔ)課,參與課程學習的為計算機科學與技術(shù)、軟件工程、網(wǎng)絡(luò)工程、信息安全、物聯(lián)網(wǎng)等專業(yè)的學生,之前已經(jīng)學習了計算機程序設(shè)計(C 和C++)、離散數(shù)學、數(shù)據(jù)結(jié)構(gòu)、計算機原理等專業(yè)課。同時,所有學生會在同一個學期學習操作系統(tǒng),部分學生會學習編譯原理。該課程的主要目標是通過一個復雜工程問題鍛煉并提升學生使用C/C++語言進行程序設(shè)計的能力,對一定規(guī)模軟件系統(tǒng)進行分析、設(shè)計、編程實現(xiàn)以及測試、調(diào)試的能力,系統(tǒng)級設(shè)計、實現(xiàn)與調(diào)試能力,數(shù)據(jù)結(jié)構(gòu)及算法設(shè)計能力,進而整體提升學生的系統(tǒng)能力。

        2.2 課程任務

        課程的基本任務是使用C/C++語言設(shè)計實現(xiàn)一個簡單MIPS 指令集[7]匯編程序的解釋器。解釋器的輸入為一個簡單MIPS 指令集匯編程序及初始的內(nèi)存文件(可選),輸出為包含程序中輸出指令與輸出內(nèi)容的文件。MIPS 指令集廣泛用于計算機體系結(jié)構(gòu)的教學中[7],選擇該指令集也是考慮到學生在大二下學期剛學習完計算機原理課程,對指令集、匯編等相關(guān)概念比較熟悉。

        課程使用的指令集為一個32 位的Load/Store 指令集,主要包括內(nèi)存操作指令、I 型指令、R 型指令以及J 型指令4種,其中I 型指令為立即數(shù)指令,R 型指令為寄存器操作指令,J 型指令為跳轉(zhuǎn)指令。指令集中有32 個32 位寄存器,其中第一個寄存器R0的值永遠是0,并且禁止被修改。指令集中包含算術(shù)與位運算指令、移位指令、測試指令以及跳轉(zhuǎn)指令。圖1 給出了課程中使用的指令集語言文法(起始非終結(jié)符為P)及一個示例程序,其中IMM 和LABEL 分別為一個整數(shù)和一個標識符,為了簡潔省略了其定義。

        Fig.1 Syntax of a simple MIPS assembly language and an example program圖1 簡單MIPS 指令匯編語言語法與示例程序

        指令集語言是一個類匯編的語言,例如圖1 中的示例程序為計算0~100的和并輸出。該課程對學生實現(xiàn)的解釋器程序的輸入與輸出均作出了要求,要求通過命令行的-i、-m 和-o 輸入?yún)?shù)分別指定輸入的匯編源程序文件、初始內(nèi)存狀態(tài)文件以及輸出文件,在提升學生對于程序命令行輸入?yún)?shù)理解的同時,也有利于課程開展自動評測。因此,學生在熟悉指令語言的基礎(chǔ)上需要實現(xiàn)以下基本功能:①匯編源程序文件、初始內(nèi)存狀態(tài)文件的讀入和解析,同時還包括匯編指令及內(nèi)存在解釋器中的數(shù)據(jù)結(jié)構(gòu)表示;②指令的解釋執(zhí)行,包括寄存器模擬、指令模擬執(zhí)行以及信息文件輸出。

        課程任務的基本要求是解釋器能夠正確支持語言中所有指令的解釋執(zhí)行。同時,為了體現(xiàn)差異并進一步提升學生的算法設(shè)計及程序優(yōu)化能力,課程設(shè)置了兩個固定的高級優(yōu)化任務:一是基于數(shù)據(jù)流和控制流的指令切片;二是基于并行分析的指令并發(fā)解釋執(zhí)行。此外,學生也可自由選擇其他任務,例如浮點指令的支持、面向高級語言的MIPS 指令翻譯、執(zhí)行效率提升機制解釋等。

        課程要求程序編譯和運行的操作系統(tǒng)平臺為64 位的Ubuntu 14.04,編譯器為GCC 4.8,并使用GNU Make 作為編譯系統(tǒng)。要求學生自學Linux 平臺的基本命令行操作、GCC編譯器的基本使用以及GNU Make的使用方法,并親自編譯程序的Makefile 文件,以加深對程序編譯、鏈接過程的理解。表1 給出了課程任務內(nèi)容與系統(tǒng)能力要素培養(yǎng)之間的對應關(guān)系。

        Table 1 Correspondence between the main tasks specified by the course and the elements of system development ability表1 課程指定主要任務與系統(tǒng)能力培養(yǎng)要素之間的對應關(guān)系

        2.3 課程組織與評分規(guī)則

        課程總計40 學時,在第一次課上給出課程任務需求并介紹簡單MIPS 指令集匯編語言,然后將課程分為3 個階段。表2 給出了每個階段的主要任務、目標、時間安排和評分要求,同時要求每個學生獨立完成課程任務。

        Table 2 Three course stages of the curriculum表2 課程的3 個階段

        第一階段只需要完成文件的讀入及解析,因此該階段要求將解析后的指令程序及內(nèi)存信息按照固定格式輸出到結(jié)果文件(-o 參數(shù)指定的文件)中,然后根據(jù)文件內(nèi)容判斷測試用例是否通過。第一階段和第二階段會給學生一些測試用例用于本地測試,這些測試用例會涵蓋所有指令,同時在規(guī)模和程序功能上具有一定的差異性,但這些測試用例與每個階段用于評測的測試用例沒有交集。第三階段的最后3 個測試用例是專門針對指定高級優(yōu)化設(shè)計的,這些用例會保證如果沒有進行指令切片或并行執(zhí)行的優(yōu)化,將不能在限定時間內(nèi)得到結(jié)果。

        課程基礎(chǔ)成績評分規(guī)則為:完成第三階段的基本要求(通過第三階段的前7 個測試用例和第二階段的10 個測試用例)后的得分至少為65 分,否則視為課程掛科;然后對所有滿足基本要求的作業(yè),在第三階段的10 個測試用例上根據(jù)性能(執(zhí)行時間)進行排序,這個排序會保證最后3 個性能優(yōu)化設(shè)計的測試用例權(quán)重較高,通過最后3 個任一測試用例的作業(yè)一定比3 個都沒通過的作業(yè)排名靠前,最后3個測試用例的權(quán)重一樣,前7 個測試用例的權(quán)重也一樣;最后,在對通過基本要求的作業(yè)進行性能排名的基礎(chǔ)上給出基礎(chǔ)成績,在95 分(排名第1)到65 分(最后1 名)之間根據(jù)排名均勻分布。在基礎(chǔ)成績之上,結(jié)合前兩個階段的歷史扣分情況、作品創(chuàng)新性(如其他性能增強方法、浮點指令支持等)、分享活躍度、提交時間等方面綜合給出學生的最終成績。

        2.4 其他教學措施

        2.4.1 自動評測平臺

        根據(jù)課程的任務內(nèi)容和評分規(guī)則,學生需要及時獲取所開發(fā)的作品是否通過測試用例以及具體排名信息。為此,課程構(gòu)建了自動化作品評測平臺,學生可以在每個階段于評測平臺上傳作品,該平臺會自動編譯、測試作品,然后將測試結(jié)果(例如哪些測試用例通過、哪些沒有通過)反饋給學生,同時在第三階段還可以實時給出學生作品的排名。自動化評測平臺可有效提高課程評測效率,激發(fā)學生的學習熱情。

        2.4.2 指令模擬實現(xiàn)的缺陷定位輔助

        解釋器程序的調(diào)試比較困難,主要體現(xiàn)為程序中的缺陷難以定位。同時,由于第二、三階段評測使用的測試用例與用于本地測試的測試用例不同,可能會存在本地測試用例通過但在評測平臺不通過的問題。為此,筆者為本地調(diào)試提供了參考實現(xiàn)的可執(zhí)行程序,用于指令模擬實現(xiàn)中的缺陷定位。缺陷定位的主要思路為通過差異測試定位可能導致的指令失效。參考實現(xiàn)可以將測試用例中指令程序每執(zhí)行一條指令后的寄存器狀態(tài)以及執(zhí)行的指令輸出,學生也可以在自己作品中實現(xiàn)相同格式的寄存器狀態(tài)和指令輸出,然后比較參考實現(xiàn)和自己作品的輸出差異,第一個不一樣的狀態(tài)及指令就可能是導致缺陷的原因。此外,自動測試平臺上也提供了相同的在線缺陷定位功能,為學生在無法獲得測試用例情況下的缺陷定位提供一定輔助。

        2.4.3 作品查重

        為了杜絕抄襲現(xiàn)象,在每個階段驗收后會使用JPlag 工具[8]對所有作品進行查重。JPlag 工具是Java 實現(xiàn)的代碼相似度評估工具,支持C、C++、Java 等語言程序的相似度分析。在前兩個階段,查重的規(guī)則是所有作品兩兩查重,然后每個作品的相似度是其與所有其他學生作品的相似度之和。查重結(jié)果會以相似度矩陣的形式公布給學生,老師通過作品相似度進行重點關(guān)注,在前面兩個階段被認定為抄襲的學生直接掛科,課程任務提前終止。在第三階段,除了開展前面兩個階段的查重,還會與往年通過課程考核的所有作品進行查重。查重功能也集成到了自動評測平臺。

        2.4.4 課程資源與經(jīng)驗分享

        課程先后使用確實(Trustie)平臺和頭歌(Educoder)平臺作為在線課程平臺,用于課程資源的發(fā)布和學科管理,包括發(fā)布課程任務的文檔、膠片,管理學生信息、學生最終提交的設(shè)計實現(xiàn)文檔等。此外,為了促進學生之間的交流,激發(fā)其學習熱情,課程先后使用Trustie 平臺和知士薈(LearnerHub)平臺鼓勵學生發(fā)貼交流程序開發(fā)過程中的經(jīng)驗和教訓,并且會在最終課程成績中綜合考慮發(fā)帖情況。

        2.4.5 文檔與代碼提交

        設(shè)計開發(fā)文檔的撰寫能力也是軟件開發(fā)能力的一部分。為了提升學生的文檔撰寫和文字表達能力,在第三階段結(jié)束后,要求每個學生提交一個課程任務總結(jié)報告,在報告中詳細描述課程任務開發(fā)過程中的架構(gòu)和算法設(shè)計、實現(xiàn)細節(jié)、關(guān)鍵代碼片段、課程收獲和感悟等,最終課程成績中會綜合考慮文檔質(zhì)量。在代碼方面,學生最終的代碼作品以第三階段在評測平臺上提交的代碼為準。

        3 實踐效果

        從多個方面闡述課程3 年改革實踐的效果。第一年,考慮到是課程改革初期,同時評測平臺也是剛開始構(gòu)建,需要評測服務器的性能,課程采取2 人1 組,一共50 個組99名學生(有一組是1 個學生);第二年,采取1 人1 組,一共110 名學生;第三年也是1 人1 組,一共80 名學生。

        3.1 成績趨勢

        圖2 給出了3 年課程改革的成績統(tǒng)計情況,平均成績分別為75.4、72.1 和75.9 分,課程通過率分別為98%(49/50)、79%(87/110)、97.5%(78/80)。分析其原因,第1 年是2人一組,存在“摸魚”現(xiàn)象(從學生后續(xù)的課程反饋中也印證了這一點);第2 年1 人1 組后,通過率和平均分有所下降;第3 年在1 人1 組的情況下,通過率和平均成績回升到與第一年相當?shù)乃?。此外,? 年有26 個組至少通過1個第三階段中3 個針對程序優(yōu)化的測試用例,有5 組3 個全部通過;第二年分別為22 和1;第三年分別為27 和7。這些統(tǒng)計結(jié)果證實了課程改革的成效。

        3.2 代碼規(guī)模

        圖3 給出了3 年來課程提交代碼規(guī)模的統(tǒng)計信息,每年的平均代碼規(guī)模均為750 左右。雖然平均代碼行數(shù)不多,但都是從零開始編寫,設(shè)計和調(diào)試的工作量比較大。通過平時學生反饋可知,大部分小組在完成課程任務的過程中都對代碼進行了多次重構(gòu)。同時,可以觀察到第二年平均代碼量相比第一年有所下降,原因與之前課程平均成績下降的原因一致。第3 年的平均代碼量相比前2 年有所提升,同時大于1 000 行代碼作品的數(shù)量(19 個)和比例(23.7%)也最高,這些結(jié)果證實了課程改革的有效性。

        Fig.2 Course grade statistics圖2 課程成績統(tǒng)計

        Fig.3 Source code lines statistics圖3 作品代碼規(guī)模統(tǒng)計

        3.3 提交次數(shù)

        圖4 給出了作品提交次數(shù)的統(tǒng)計結(jié)果,橫軸為提交次數(shù),縱軸為時間。第1 年和第2 年的平均提交次數(shù)接近,均為23 次左右,第3 年的平均提交次數(shù)為64 次。原因是第1年課程改革伊始,考慮到評測系統(tǒng)的穩(wěn)定性以及服務器性能,作品評測設(shè)置的是每45min 一次,導致學生平均提交次數(shù)偏低。之后兩年學生在上傳作品后可以馬上進行測試,但第二年由于是首次1 人1 組,課程要求對部分學生有一定難度,存在部分學生放棄的現(xiàn)象,提交小于5 次的有25組,因此整體拉低了平均提交次數(shù),但有學生最高提交了303 次。提交次數(shù)整體趨勢基本與課程成績一致。

        3.4 學生反饋

        課程成績公布以后,要求學生在評測平臺上給出對課程的反饋與建議,部分學生沒有反饋。圖5 是根據(jù)學生的反饋信息人為分類后得到的結(jié)果,其中“無法判斷”是指學生在反饋與建議中沒有提及自身收獲方面的情況,因此無法判斷。3 年的課程改革過程中,學生明確表示有收獲的比例分別為80.3%(37/46)、70.3%(61/87)、57.3%(43/75)。從2 人1 組切換到1 人1 組后,學生反饋有收獲的比例降低,也符合預期。此外,3 年中每年都有1 組反饋沒有收獲,其中前2 年的原因是認為課程任務難度和工作量大,希望后續(xù)老師能提供更多幫助,第3 年的1 組是覺得任務偏簡單。

        Fig.4 Statistics of the number of submissions圖4 作品提交次數(shù)統(tǒng)計

        Fig.5 Student feedback statistics圖5 學生反饋統(tǒng)計

        在課程改革過程中,根據(jù)學生的反饋、經(jīng)驗分享以及平時的答疑情況,發(fā)現(xiàn)學生在計算機程序設(shè)計能力方面得到了較好鍛煉,具體包括數(shù)據(jù)結(jié)構(gòu)的設(shè)計與選擇、C/C++程序中的內(nèi)存操作、GCC 中編譯優(yōu)化的使用、文件讀寫與解析、優(yōu)化算法設(shè)計、代碼調(diào)試與優(yōu)化等多個方面,這些都與系統(tǒng)能力培養(yǎng)直接相關(guān)。此外,學生普遍反映自身自主探索、獨立編程能力得到了提升。在資源分享平臺,學生自發(fā)分享的設(shè)計開發(fā)經(jīng)驗帖子有70 個,內(nèi)容涉及到上述各個方面。這些經(jīng)驗分享在幫助后續(xù)學生開發(fā)程序的同時,也為課程任務的更新提出了挑戰(zhàn),一些面向高級功能需求的開發(fā)任務與編譯原理(解析、面向高級語言的代碼生成)、操作系統(tǒng)(基于多線程的并行執(zhí)行)課程也形成了聯(lián)動。此外,課程評測平臺的功能和性能也在不斷迭代優(yōu)化,例如在第二年加入了自動缺陷定位功能,同時開發(fā)了Java 版本的解釋器參考原型以及基于隨機測試的匯編程序隨機生成工具,用于輔助各個階段的測試用例設(shè)計。

        4 結(jié)語

        針對計算機專業(yè)學生系統(tǒng)能力培養(yǎng)的問題與挑戰(zhàn),對程序設(shè)計綜合實踐課程進行了改革實踐,設(shè)計了基于簡單MIPS 指令集匯編程序解釋器的課程任務以及基于3 個階段的課程組織形式;開發(fā)了支撐課程開展的自動評測平臺,通過自動評測、差異測試、自動查重、自動缺陷定位等手段,不斷提升課程質(zhì)量和實驗效果,在學生系統(tǒng)能力培養(yǎng)方面取得了不錯效果。

        在后續(xù)深入推進教學改革的過程中,將從以下幾個方面作出改進:①課程任務的進一步擴展和優(yōu)化,包括引入其他經(jīng)典的復雜工程問題或具有特定時代背景的問題,例如SAT 求解器和無人系統(tǒng)開發(fā),同時設(shè)計更多指定優(yōu)化任務;②進一步完善自動評測平臺的性能,為其他課程提供支撐;③針對后期有部分學生通過在作品中注入無效代碼以通過查重的現(xiàn)象,優(yōu)化查重功能,提升查重精度。

        猜你喜歡
        測試用例評測程序設(shè)計
        次時代主機微軟XSX全方位評測(下)
        次時代主機微軟XSX全方位評測(上)
        基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
        基于Visual Studio Code的C語言程序設(shè)計實踐教學探索
        計算機教育(2020年5期)2020-07-24 08:52:56
        從細節(jié)入手,談PLC程序設(shè)計技巧
        電子制作(2019年9期)2019-05-30 09:42:04
        攻坡新利器,TOKEN VENTOUS評測
        基于混合遺傳算法的回歸測試用例集最小化研究
        Canyon Ultimate CF SLX 8.0 DI2評測
        中國自行車(2017年1期)2017-04-16 02:54:06
        高職高專院校C語言程序設(shè)計教學改革探索
        PLC梯形圖程序設(shè)計技巧及應用
        国产内射XXXXX在线| 午夜福利电影| 午夜福利理论片在线观看| 无码尹人久久相蕉无码| 国产亚洲人成a在线v网站| 少妇厨房愉情理伦片bd在线观看| 国产亚洲欧美日韩综合综合二区 | 精品国产看高清国产毛片| 国产高清在线精品一区αpp| 精品国产福利一区二区三区| 久久综合九色综合久久久| 日韩精品中文字幕一区二区| 久久午夜av一区二区三区| 国产精品成人网站| 久久久精品人妻一区二区三区蜜桃| AV成人午夜无码一区二区| 午夜av内射一区二区三区红桃视| 蜜桃网站免费在线观看视频| 天天做天天爱夜夜爽毛片毛片| 成年女人色毛片| 在线播放无码高潮的视频| 精品国产一区二区三区AV小说| 中文字幕偷拍亚洲九色| 亚洲av极品尤物不卡在线观看| 变态另类人妖一区二区三区| 熟妇熟女乱妇乱女网站| 久久国产热这里只有精品| 日本口爆吞精在线视频| 日本午夜理论一区二区在线观看| 国产成人久久精品一区二区三区 | 亚洲h电影| 男女男生精精品视频网站| 人妻少妇中文字幕,久久精品| 国产特级毛片aaaaaa视频| 国产黑丝在线| 一本色道久久88综合亚洲精品| 男男啪啪激烈高潮无遮挡网站网址| 人禽交 欧美 网站| 国产精品免费久久久久影院| 人妻少妇一区二区三区| 亚洲天堂一区二区三区视频|