亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(shí)戰(zhàn)洞察。

基于Web的作業(yè)批閱系統(tǒng)設(shè)計(jì)與大屏可視化實(shí)戰(zhàn)解析

基于Web的作業(yè)批閱系統(tǒng)設(shè)計(jì)與大屏可視化實(shí)戰(zhàn)解析 每年到畢業(yè)季Java Web方向的畢設(shè)選題總有那么幾個(gè)“常青樹(shù)”作業(yè)批閱系統(tǒng)就是其中之一。市面上這類(lèi)系統(tǒng)的源碼確實(shí)不少標(biāo)題里動(dòng)不動(dòng)就是“免費(fèi)領(lǐng)源碼”、“上萬(wàn)套實(shí)戰(zhàn)教程”但真拿到手能順利跑起來(lái)、講清楚、答得上答辯老師提問(wèn)的其實(shí)沒(méi)幾個(gè)。我前前后后幫人調(diào)試過(guò)好幾套這類(lèi)項(xiàng)目也自己完整從零寫(xiě)過(guò)一版今天就把這套基于Web的作業(yè)批閱系統(tǒng)的拆解、設(shè)計(jì)和實(shí)操經(jīng)驗(yàn)一次性說(shuō)清楚重點(diǎn)聊聊大屏數(shù)據(jù)可視化這個(gè)加分項(xiàng)是怎么落地的以及那些源碼里不會(huì)告訴你的坑。這篇文章適合正在做畢設(shè)、或者想快速上手一個(gè)完整Web項(xiàng)目的同學(xué)參考內(nèi)容偏實(shí)戰(zhàn)爭(zhēng)取讓你看完就能動(dòng)手。1. 項(xiàng)目整體設(shè)計(jì)與思路拆解1.1 為什么作業(yè)批閱系統(tǒng)適合做畢設(shè)很多人選畢設(shè)題目時(shí)會(huì)糾結(jié)覺(jué)得作業(yè)批閱系統(tǒng)“太普通”、“沒(méi)技術(shù)含量”。但我的看法恰恰相反——這類(lèi)系統(tǒng)是最適合用來(lái)拿高分的選題之一。原因很簡(jiǎn)單它的業(yè)務(wù)鏈路足夠完整從用戶(hù)登錄、角色權(quán)限到作業(yè)發(fā)布、文件上傳、在線(xiàn)批閱、成績(jī)統(tǒng)計(jì)再到數(shù)據(jù)大屏展示幾乎覆蓋了一個(gè)真實(shí)Web項(xiàng)目的所有核心環(huán)節(jié)。對(duì)于計(jì)算機(jī)專(zhuān)業(yè)的畢業(yè)生來(lái)說(shuō)這套鏈路剛好能把你學(xué)過(guò)的Java基礎(chǔ)、數(shù)據(jù)庫(kù)、前端、甚至可視化知識(shí)全部串起來(lái)答辯時(shí)也容易講出東西。另外從老師打分角度來(lái)說(shuō)一個(gè)有完整業(yè)務(wù)閉環(huán)、界面干凈、還能跑通數(shù)據(jù)大屏的系統(tǒng)已經(jīng)超出了“普通CRUD”的預(yù)期。大多數(shù)畢業(yè)設(shè)計(jì)的分?jǐn)?shù)差距恰恰就體現(xiàn)在這些“超出預(yù)期”的地方。1.2 技術(shù)選型為什么主流方案是Java Spring Boot MySQL市面上的作業(yè)批閱系統(tǒng)源碼絕大多數(shù)是Java技術(shù)棧這背后是有原因的。Java Web經(jīng)過(guò)這么多年的發(fā)展生態(tài)成熟度確實(shí)最高。Spring Boot框架讓配置量大幅下降一個(gè)業(yè)務(wù)系統(tǒng)從零搭起來(lái)只需要幾分鐘。而且高校里 Java 課程覆蓋面廣答辯時(shí)老師不管用不用 Java都能看懂你的代碼邏輯溝通成本低。具體到我這套系統(tǒng)的技術(shù)棧選型如下后端Spring Boot 2.x MyBatis Plus數(shù)據(jù)庫(kù)用MySQL 5.7或者8.0都可以前端Vue 2 Element UI管理后臺(tái)用現(xiàn)成模板大屏部分用 ECharts權(quán)限認(rèn)證JWTJSON Web Token做無(wú)狀態(tài)登錄比傳統(tǒng)的Session方案更適合前后端分離文件存儲(chǔ)本地磁盤(pán)存儲(chǔ)數(shù)據(jù)庫(kù)只記錄文件路徑元數(shù)據(jù)這套組合的好處是每一樣都是主流且經(jīng)過(guò)大量項(xiàng)目驗(yàn)證的出了問(wèn)題網(wǎng)上一搜就有解決方案。更重要的是這套技術(shù)棧學(xué)習(xí)資料極其豐富對(duì)于時(shí)間緊迫的畢設(shè)黨來(lái)說(shuō)是保命的選擇。有些同學(xué)可能會(huì)糾結(jié)要不要用微服務(wù)、要不要上Redis緩存——我的建議是除非你基礎(chǔ)非常好否則不要給自己挖坑。畢設(shè)項(xiàng)目的評(píng)分核心是“完整可用 邏輯清晰”而不是技術(shù)堆得多高。1.3 功能模塊劃分一個(gè)完整的作業(yè)閉環(huán)需要哪些東西一個(gè)能正常交差的作業(yè)批閱系統(tǒng)至少需要三個(gè)角色學(xué)生、教師、管理員。圍繞這三個(gè)角色功能點(diǎn)可以拆成下面這張表來(lái)說(shuō)明角色核心功能說(shuō)明學(xué)生查看作業(yè)、提交作業(yè)、查看批閱結(jié)果支持作業(yè)附件上傳提交后能看到教師評(píng)語(yǔ)和分?jǐn)?shù)教師發(fā)布作業(yè)、批閱作業(yè)、導(dǎo)出成績(jī)、查看統(tǒng)計(jì)支持在線(xiàn)打分和評(píng)語(yǔ)可按班級(jí)篩選可導(dǎo)出Excel管理員用戶(hù)管理、班級(jí)管理、課程管理、系統(tǒng)監(jiān)控維護(hù)基礎(chǔ)數(shù)據(jù)查看全局大屏數(shù)據(jù)這個(gè)功能拆解的邏輯是學(xué)生和教師是業(yè)務(wù)主體管理員負(fù)責(zé)兜底數(shù)據(jù)維護(hù)。很多源碼會(huì)把管理員功能做得很單薄只有登錄和用戶(hù)列表這種系統(tǒng)在答辯時(shí)很容易被問(wèn)住——老師會(huì)追問(wèn)“你怎么管理基礎(chǔ)數(shù)據(jù)沒(méi)有管理員班級(jí)和課程信息從哪來(lái)”所以哪怕代碼量多一點(diǎn)也建議把管理員的角色補(bǔ)完整。大屏監(jiān)控模塊是我覺(jué)得整套系統(tǒng)最出彩的地方。它不參與具體的業(yè)務(wù)操作而是把作業(yè)提交率、批閱進(jìn)度、成績(jī)分布等數(shù)據(jù)用圖表形式展示出來(lái)適合投在教室大屏或答辯展示環(huán)節(jié)。很多同學(xué)會(huì)忽略這個(gè)模塊但它恰恰是你和同組同學(xué)拉開(kāi)差距的關(guān)鍵。2. 數(shù)據(jù)庫(kù)設(shè)計(jì)與核心流程實(shí)現(xiàn)2.1 數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)五張核心表與它們的關(guān)聯(lián)關(guān)系寫(xiě)Web系統(tǒng)第一步永遠(yuǎn)是設(shè)計(jì)數(shù)據(jù)庫(kù)。好的表結(jié)構(gòu)是系統(tǒng)健壯運(yùn)行的基礎(chǔ)而作業(yè)批閱系統(tǒng)核心表其實(shí)并不多關(guān)鍵是理清它們之間的關(guān)聯(lián)。我設(shè)計(jì)的核心表包括用戶(hù)表(user)、班級(jí)表(class)、課程表(course)、作業(yè)表(homework)、提交記錄表(submission)。其中比較難處理的是用戶(hù)表與角色之間的關(guān)系——我采用的方案是用戶(hù)表里直接加一個(gè)role字段用整數(shù)區(qū)分學(xué)生和教師避免引入額外的關(guān)聯(lián)表。作業(yè)表homework的字段設(shè)計(jì)很關(guān)鍵我把一些容易忽略但實(shí)際非常有用的字段列出來(lái)id主鍵自增title作業(yè)標(biāo)題content作業(yè)要求描述course_id關(guān)聯(lián)的課程teacher_id發(fā)布教師deadline截止時(shí)間status作業(yè)狀態(tài)0為草稿1為已發(fā)布提交記錄表submission是整個(gè)系統(tǒng)的核心。它的字段決定了下游所有統(tǒng)計(jì)能否順暢實(shí)現(xiàn)homework_id關(guān)聯(lián)作業(yè)student_id提交學(xué)生file_url附件存儲(chǔ)路徑score分?jǐn)?shù)NULL表示未批閱comment教師評(píng)語(yǔ)submit_time提交時(shí)間status提交狀態(tài)用來(lái)標(biāo)識(shí)是否在截止日期前提交特別要注意的是submission表里score字段設(shè)計(jì)成可空而不是默認(rèn)0——這樣在統(tǒng)計(jì)“待批閱數(shù)量”時(shí)直接查score is null就能篩出來(lái)不用額外維護(hù)狀態(tài)字段。這是一個(gè)很小的設(shè)計(jì)細(xì)節(jié)但寫(xiě)多了查詢(xún)語(yǔ)句的人應(yīng)該能體會(huì)它的好處。2.2 核心流程一從發(fā)布作業(yè)到學(xué)生提交的完整鏈路作業(yè)批閱系統(tǒng)的核心其實(shí)就是一整個(gè)業(yè)務(wù)流轉(zhuǎn)過(guò)程。拆開(kāi)來(lái)看它由下面幾個(gè)環(huán)節(jié)組成。教師端先創(chuàng)建作業(yè)填標(biāo)題、寫(xiě)要求、設(shè)置截止時(shí)間關(guān)聯(lián)到指定課程保存后作業(yè)狀態(tài)為草稿學(xué)生還不可見(jiàn)。教師確認(rèn)無(wú)誤后點(diǎn)擊發(fā)布狀態(tài)變?yōu)橐寻l(fā)布。這個(gè)設(shè)計(jì)的好處是教師可以提前編輯作業(yè)信息不用一上來(lái)就得填完整。學(xué)生端登錄后首頁(yè)能看到自己課程下的所有已發(fā)布作業(yè)未提交的顯示“去提交”已提交的顯示“已提交”。學(xué)生上傳作業(yè)文件后系統(tǒng)把摘要信息寫(xiě)入submission表這時(shí)狀態(tài)為已提交但未批閱學(xué)生端顯示“待批閱”。教師端查看到待批閱列表逐個(gè)打分、寫(xiě)評(píng)語(yǔ)保存后score字段被賦值系統(tǒng)狀態(tài)變?yōu)橐雅?。學(xué)生端刷新后就能看到自己的分?jǐn)?shù)和評(píng)語(yǔ)。如果超過(guò)截止時(shí)間仍未提交系統(tǒng)在作業(yè)列表和統(tǒng)計(jì)中將其標(biāo)記為“未提交”。這條鏈路看起來(lái)簡(jiǎn)單但實(shí)現(xiàn)時(shí)有兩個(gè)點(diǎn)比較容易出錯(cuò)。一個(gè)是文件上傳——很多源碼用MultipartFile接收后直接存數(shù)據(jù)庫(kù)BLOB字段這種做法在小規(guī)模演示時(shí)沒(méi)問(wèn)題但文件稍微大一點(diǎn)就會(huì)出現(xiàn)性能問(wèn)題。比較穩(wěn)妥的做法是存到服務(wù)器磁盤(pán)指定目錄數(shù)據(jù)庫(kù)只存文件的相對(duì)路徑取文件時(shí)用http://你的IP:端口/static/文件名的方式映射。另一個(gè)是截止時(shí)間判斷——不要在前端做死判斷后端接口里也必須要校驗(yàn)否則學(xué)生改一下本地時(shí)間就能繞過(guò)這在答辯演示時(shí)一旦被老師挖出來(lái)會(huì)很難看。2.3 核心流程二批閱打分的狀態(tài)機(jī)邏輯作業(yè)批閱模塊在技術(shù)上看起來(lái)很簡(jiǎn)單無(wú)非是更新一條記錄的score和comment字段。但用“狀態(tài)機(jī)”的角度去思考它的邏輯其實(shí)更優(yōu)雅也更健壯。我把一次作業(yè)提交的生命周期劃分為三個(gè)狀態(tài)SUBMITTED已提交待批閱、GRADED已批閱、OVERDUE逾期未交。初始創(chuàng)建時(shí)是SUBMITTED教師批閱后變?yōu)镚RADED超過(guò)截止時(shí)間且沒(méi)有提交記錄的則為OVERDUE。狀態(tài)流轉(zhuǎn)用代碼寫(xiě)死不允許從GRADED直接跳回SUBMITTED確保批閱數(shù)據(jù)的嚴(yán)肅性。實(shí)際操作時(shí)我在后端Service層單獨(dú)寫(xiě)了一個(gè)submitHomework方法和一個(gè)gradeHomework方法分別處理學(xué)生提交和教師批閱。gradeHomework里先判斷當(dāng)前提交記錄狀態(tài)是否為SUBMITTED不是就拋出業(yè)務(wù)異常前端捕獲后給出提示。這樣做的好處是即使前端頁(yè)面被繞過(guò)直接調(diào)接口也無(wú)法破壞狀態(tài)流轉(zhuǎn)的一致性。這個(gè)思路聽(tīng)起來(lái)有點(diǎn)學(xué)院派但寫(xiě)起來(lái)并不復(fù)雜而且答辯時(shí)你拋出“狀態(tài)機(jī)”這個(gè)概念老師會(huì)認(rèn)為你有軟件工程思維這是一個(gè)很容易拿到的印象分。2.4 大屏可視化模塊接口聚合與ECharts渲染大屏模塊算是我最想重點(diǎn)分享的部分因?yàn)檫@是本項(xiàng)目里“看起來(lái)最有技術(shù)含量”、實(shí)際寫(xiě)起來(lái)也不難的模塊性?xún)r(jià)比極高。大屏展示的數(shù)據(jù)主要來(lái)自三個(gè)統(tǒng)計(jì)維度作業(yè)提交統(tǒng)計(jì)總作業(yè)數(shù)、已提交數(shù)、未提交數(shù)、提交率批閱統(tǒng)計(jì)總需批閱數(shù)、已批閱數(shù)、待批閱數(shù)、批閱率成績(jī)分布各分?jǐn)?shù)段人數(shù)占比、平均分、最高分、最低分這些數(shù)據(jù)如果一條條按傳統(tǒng)接口去查前端要發(fā)好幾個(gè)請(qǐng)求而且大屏刷新時(shí)會(huì)閃動(dòng)。我的做法是寫(xiě)了一個(gè)獨(dú)立的DashboardController用一個(gè)大聚合接口把三類(lèi)統(tǒng)計(jì)數(shù)據(jù)一次性組裝成JSON返回前端拿到后一次性渲染。比如提交率就是先SELECT COUNT(*) FROM homework得到總作業(yè)數(shù)再SELECT COUNT(DISTINCT homework_id) FROM submission得到已提交作業(yè)數(shù)兩個(gè)數(shù)一除就得到百分比。性能上對(duì)于畢設(shè)級(jí)的數(shù)據(jù)量完全夠用不需要上復(fù)雜的緩存方案。前端大屏我用的方案是ECharts 柵格布局分成左上、右上、左下、右下四個(gè)區(qū)域中間放一個(gè)核心指標(biāo)數(shù)字區(qū)。用grid和flex布局讓它在16:9的屏幕上能自適應(yīng)鋪滿(mǎn)。配色方面選了深色背景亮色圖表這樣投影出來(lái)的效果最好。ECharts的折線(xiàn)圖展示提交量趨勢(shì)、餅圖展示成績(jī)分布、柱狀圖對(duì)比不同班級(jí)的作業(yè)提交率三張圖加上幾個(gè)核心數(shù)字卡片視覺(jué)效果就很專(zhuān)業(yè)了。有一個(gè)實(shí)際踩過(guò)的坑要提醒大家ECharts的容器在初始化時(shí)如果沒(méi)有設(shè)置寬高或者所在div一開(kāi)始是隱藏的圖表就渲染不出來(lái)。大屏頁(yè)面經(jīng)常有頁(yè)面初始化時(shí)異步獲取數(shù)據(jù)的過(guò)程如果此時(shí)容器尺寸還沒(méi)算好圖表就會(huì)變成空白。解決方案是在mounted鉤子里先this.$nextTick()再初始化圖表必要時(shí)監(jiān)聽(tīng)窗口resize事件調(diào)用chart.resize()。3. 實(shí)操過(guò)程與核心環(huán)節(jié)實(shí)現(xiàn)3.1 從源碼到本地跑起來(lái)的第一步環(huán)境準(zhǔn)備不少同學(xué)下載了源碼結(jié)果卡在第一步——跑不起來(lái)。這套系統(tǒng)的運(yùn)行環(huán)境其實(shí)非常標(biāo)準(zhǔn)但也正因如此很多默認(rèn)配置會(huì)導(dǎo)致“水土不服”。我建議的環(huán)境清單如下JDK 1.8注意Spring Boot 2.x和JDK 8的兼容性最好Maven 3.6以上用于依賴(lài)管理MySQL 5.7或8.0注意8.0的驅(qū)動(dòng)配置和5.7不同Node.js 14以上前端項(xiàng)目需要IDEA 2020以上版本社區(qū)版也夠用源碼拿到手先不要急著點(diǎn)啟動(dòng)。第一步要改的是數(shù)據(jù)庫(kù)連接配置。在application.yml或application.properties里把數(shù)據(jù)庫(kù)名、用戶(hù)名、密碼改成你自己的。這里最常見(jiàn)的坑是時(shí)區(qū)問(wèn)題——MySQL連接串建議加上serverTimezoneAsia/Shanghai和useUnicodetruecharacterEncodingutf8否則高版本MySQL會(huì)報(bào)時(shí)區(qū)錯(cuò)誤或者中文亂碼。如果拿到的是前后端分離的項(xiàng)目還要確認(rèn)前端請(qǐng)求后端接口的地址。一般前端項(xiàng)目里有一個(gè)request.js或api.js里面配了baseURL如果你只在本地跑改成http://localhost:8080即可。如果是部署在服務(wù)器上則需要改成服務(wù)器的公網(wǎng)IP加端口。這個(gè)配置不搞清楚前端頁(yè)面能打開(kāi)但所有數(shù)據(jù)請(qǐng)求都會(huì)404。3.2 核心接口實(shí)現(xiàn)提交作業(yè)與批閱打分的代碼示例大部分源碼的核心接口邏輯其實(shí)差不多真正拉開(kāi)代碼質(zhì)量差距的是細(xì)節(jié)處理。下面我給出提交作業(yè)和批閱打分兩個(gè)接口的核心代碼片段大家可以對(duì)著自己的源碼比對(duì)。學(xué)生提交作業(yè)的Controller層接口PostMapping(/api/student/submit) public Result submitHomework(RequestParam(homeworkId) Integer homeworkId, RequestParam(studentId) Integer studentId, RequestParam(value file, required false) MultipartFile file) { if (file null || file.isEmpty()) { return Result.error(請(qǐng)上傳作業(yè)文件); } // 校驗(yàn)截止時(shí)間 Homework homework homeworkService.getById(homeworkId); if (homework.getDeadline().before(new Date())) { return Result.error(已過(guò)截止時(shí)間無(wú)法提交); } // 保存文件到本地目錄 String fileName UUID.randomUUID().toString().replace(-, ) getExt(file.getOriginalFilename()); file.transferTo(new File(UPLOAD_DIR fileName)); // 寫(xiě)入提交記錄 Submission submission new Submission(); submission.setHomeworkId(homeworkId); submission.setStudentId(studentId); submission.setFileUrl(/files/ fileName); submission.setSubmitTime(new Date()); submission.setStatus(0); // 0-待批閱 submissionService.save(submission); return Result.success(提交成功, submission); }教師批閱的Service實(shí)現(xiàn)Transactional public void gradeSubmission(Integer submissionId, Integer score, String comment) { Submission submission submissionService.getById(submissionId); if (submission null) { throw new BusinessException(提交記錄不存在); } if (submission.getStatus() ! 0) { throw new BusinessException(該作業(yè)已被批閱不能重復(fù)操作); } if (score 0 || score 100) { throw new BusinessException(分?jǐn)?shù)必須在0到100之間); } submission.setScore(score); submission.setComment(comment); submission.setStatus(1); // 1-已批閱 submissionService.updateById(submission); }這兩段代碼看起來(lái)平淡無(wú)奇但包含了幾個(gè)“防御性編程”的點(diǎn)文件為空判斷、截止時(shí)間后端校驗(yàn)、文件重命名防覆蓋、分?jǐn)?shù)范圍校驗(yàn)、重復(fù)批閱攔截。這些細(xì)節(jié)在正常演示時(shí)看不到作用但一旦老師較真去測(cè)你就會(huì)發(fā)現(xiàn)它們能擋住幾乎所有常見(jiàn)的“不合理操作”。3.3 大屏數(shù)據(jù)聚合接口一個(gè)接口搞定所有統(tǒng)計(jì)指標(biāo)大屏模塊的重點(diǎn)在后端聚合接口的設(shè)計(jì)。我把所有統(tǒng)計(jì)邏輯收斂到一個(gè)Controller里返回統(tǒng)一結(jié)構(gòu)的JSON前端只負(fù)責(zé)渲染。GetMapping(/api/dashboard/statistics) public Result getDashboardStatistics() { MapString, Object data new HashMap(); // 作業(yè)總數(shù) data.put(totalHomework, homeworkService.count()); // 已提交人數(shù)去重 data.put(submittedCount, submissionService.countDistinctStudent()); // 待批閱數(shù)量 data.put(pendingCount, submissionService.countPending()); // 批閱完成率 long gradedCount submissionService.countGraded(); long totalSubmission submissionService.count(); data.put(gradeRate, totalSubmission 0 ? 0 : Math.round(gradedCount * 100.0 / totalSubmission)); // 成績(jī)分布 data.put(scoreDist, submissionService.getScoreDistribution()); return Result.success(data); }其中g(shù)etScoreDistribution的SQL可以用一行按分?jǐn)?shù)段統(tǒng)計(jì)的語(yǔ)句實(shí)現(xiàn)比如用CASE WHEN把0-59、60-69、70-79、80-89、90-100分成五個(gè)段位然后GROUP BY統(tǒng)計(jì)人數(shù)。這個(gè)SQL寫(xiě)法很經(jīng)典很多源碼里也會(huì)這么干但有的實(shí)現(xiàn)得比較繞——用五個(gè)獨(dú)立查詢(xún)分別去查每個(gè)分?jǐn)?shù)段的人數(shù)。相比之下用CASE WHEN一條SQL搞定既快又清晰而且答辯時(shí)這段代碼可以直接拿出來(lái)講。前端大屏核心初始化部分可以參考下面的思路mounted() { this.$nextTick(() { this.initChart(); this.fetchData(); }); }, methods: { initChart() { this.chart echarts.init(document.getElementById(scoreChart)); }, fetchData() { axios.get(/api/dashboard/statistics).then(res { const data res.data.data; this.scoreChart.setOption({ xAxis: { data: [0-59, 60-69, 70-79, 80-89, 90-100] }, yAxis: {}, series: [{ type: bar, data: data.scoreDist }] }); }); } }整個(gè)模塊的核心代碼量其實(shí)不大但它把后端查詢(xún)、接口設(shè)計(jì)、前端可視化完整串了起來(lái)屬于典型的“低成本高展示度”功能。3.4 部署與演示環(huán)節(jié)的準(zhǔn)備工作畢設(shè)答辯或者項(xiàng)目驗(yàn)收之前一定要做一次完整的演示彩排。我見(jiàn)過(guò)太多同學(xué)當(dāng)場(chǎng)出狀況基本都是下面這幾個(gè)原因。第一數(shù)據(jù)庫(kù)里沒(méi)有演示數(shù)據(jù)??諗?shù)據(jù)庫(kù)打開(kāi)大屏頁(yè)面全是0圖表空蕩蕩視覺(jué)效果大打折扣。建議提前往庫(kù)里插入至少30條學(xué)生數(shù)據(jù)、5個(gè)作業(yè)、每條作業(yè)有對(duì)應(yīng)的提交和批閱記錄。數(shù)據(jù)量不用大但要把“待批閱”“已批閱”“未提交”三種狀態(tài)都覆蓋到。第二端口沖突。Spring Boot默認(rèn)8080端口如果你本機(jī)其他服務(wù)占用了會(huì)啟動(dòng)失敗。建議在配置里顯式改成server.port: 8090或者一個(gè)不常用的端口然后前端baseURL同步修改。第三文件上傳目錄權(quán)限。如果用Linux服務(wù)器部署文件上傳路徑要確保應(yīng)用進(jìn)程有寫(xiě)權(quán)限否則上傳報(bào)錯(cuò)。我習(xí)慣把上傳目錄設(shè)為項(xiàng)目根目錄下的upload/文件夾并在啟動(dòng)前手動(dòng)創(chuàng)建好避免第一次上傳時(shí)因目錄不存在失敗。4. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄4.1 啟動(dòng)失敗、頁(yè)面404、數(shù)據(jù)加載不出來(lái)我把調(diào)試這套系統(tǒng)時(shí)最常見(jiàn)的幾個(gè)問(wèn)題整理成表方便大家對(duì)照排查癥狀大概率原因排查方式Spring Boot啟動(dòng)失敗端口被占用 / MySQL未啟動(dòng)看啟動(dòng)日志最后一段報(bào)錯(cuò)改端口或啟動(dòng)MySQL前端頁(yè)面打開(kāi)但驗(yàn)證碼不顯示后端接口沒(méi)通 / 跨域問(wèn)題F12看Network請(qǐng)求是否報(bào)錯(cuò)檢查跨域配置登錄成功但列表數(shù)據(jù)為空數(shù)據(jù)庫(kù)表里沒(méi)數(shù)據(jù)先用Navicat連庫(kù)查表確認(rèn)數(shù)據(jù)存在上傳文件報(bào)錯(cuò)上傳目錄不存在 / 大小超限檢查application.yml里的上傳大小配置大屏圖表空白容器初始化為0 / 數(shù)據(jù)格式不對(duì)在nextTick里初始化打印接口返回?cái)?shù)據(jù)有一個(gè)很多源碼都會(huì)犯的經(jīng)典問(wèn)題就是數(shù)據(jù)庫(kù)初始化腳本里沒(méi)寫(xiě)SET NAMES utf8mb4導(dǎo)致建表時(shí)中文注釋或數(shù)據(jù)寫(xiě)入變亂碼。如果遇到中文亂碼問(wèn)題優(yōu)先檢查數(shù)據(jù)庫(kù)連接的字符集配置其次才是代碼層面。4.2 前端跨域問(wèn)題一次配置解決前后端聯(lián)調(diào)前后端分離項(xiàng)目遇到最多的攔路虎就是跨域也就是前端地址比如localhost:3000和后端地址比如localhost:8090不一致瀏覽器攔截了請(qǐng)求。最簡(jiǎn)單的解決方式是后端加一個(gè)CORS全局配置類(lèi)幾行代碼解決問(wèn)題Configuration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(*) .allowedMethods(GET, POST, PUT, DELETE, OPTIONS) .allowedHeaders(*) .maxAge(3600); } }需要注意的是如果引入了Spring Security或者自定義攔截器做JWT校驗(yàn)預(yù)檢請(qǐng)求OPTIONS必須放行否則前端會(huì)提示“跨域請(qǐng)求失敗”。這個(gè)坑非常隱蔽報(bào)錯(cuò)信息又特別模糊很多人卡在這里半天排查不出來(lái)。我在寫(xiě)這個(gè)系統(tǒng)時(shí)遇到過(guò)一次最后是在攔截器里專(zhuān)門(mén)加了一個(gè)判斷如果請(qǐng)求方法是OPTIONS直接放行。這個(gè)細(xì)節(jié)值得記下來(lái)。4.3 文件上傳大小限制與路徑映射作業(yè)附件通常是PDF、Word或者壓縮包幾MB到幾十MB都有。Spring Boot默認(rèn)的上傳大小限制是1MB所以學(xué)生一上傳稍大一點(diǎn)的作業(yè)就會(huì)報(bào)錯(cuò)。解決的姿勢(shì)是在配置文件里把限制調(diào)大spring: servlet: multipart: max-file-size: 50MB max-request-size: 50MB同時(shí)還要配置靜態(tài)資源映射讓上傳的文件可以通過(guò)URL訪(fǎng)問(wèn)。如果你把文件存到了本地的upload/目錄需要這樣映射Configuration public class WebConfig implements WebMvcConfigurer { Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/files/**) .addResourceLocations(file: System.getProperty(user.dir) /upload/); } }這里最容易犯的錯(cuò)是路徑分隔符。Windows和Linux的差異會(huì)導(dǎo)致路徑拼接出錯(cuò)所以我習(xí)慣用System.getProperty(user.dir)獲取項(xiàng)目所在目錄再拼上相對(duì)路徑這樣跨平臺(tái)跑都不會(huì)出問(wèn)題。4.4 防重復(fù)提交與異常處理機(jī)制最后補(bǔ)充一個(gè)不太顯眼但很影響體驗(yàn)的問(wèn)題——重復(fù)提交。很多學(xué)生在頁(yè)面卡頓時(shí)會(huì)習(xí)慣性多點(diǎn)幾次提交按鈕如果沒(méi)有對(duì)應(yīng)的防重復(fù)機(jī)制數(shù)據(jù)庫(kù)里就會(huì)出現(xiàn)好幾條相同作業(yè)的提交記錄導(dǎo)致后續(xù)統(tǒng)計(jì)錯(cuò)亂。我的處理方案是雙保險(xiǎn)。前端的做法是在提交按鈕點(diǎn)擊后立刻禁用按鈕同時(shí)顯示“正在上傳…”的加載狀態(tài)后端的做法是在Submission表里給homework_id和student_id加上聯(lián)合唯一索引從數(shù)據(jù)庫(kù)層面保證同一個(gè)學(xué)生只能提交一次作業(yè)。如果學(xué)生想要重新提交應(yīng)該是更新已有的記錄而不是新插入一條。這個(gè)設(shè)計(jì)在數(shù)據(jù)完整性上非常重要也是代碼評(píng)審時(shí)老師比較關(guān)注的點(diǎn)。5. 從實(shí)用到答辯項(xiàng)目亮點(diǎn)打磨與經(jīng)驗(yàn)總結(jié)5.1 三個(gè)讓系統(tǒng)顯高級(jí)的加分設(shè)計(jì)一套能拿高分的畢設(shè)系統(tǒng)除了功能完備之外還要有一些讓人眼前一亮的“小心思”。我梳理了三個(gè)性?xún)r(jià)比極高的設(shè)計(jì)你可以對(duì)照自己的系統(tǒng)看看有沒(méi)有。第一個(gè)是操作日志。用一個(gè)簡(jiǎn)單的AOP切面或者自定義注解把關(guān)鍵操作發(fā)布作業(yè)、批閱打分、刪除用戶(hù)記錄下來(lái)。這個(gè)功能的代碼量不大但會(huì)讓系統(tǒng)的完整性上一個(gè)檔次。答辯時(shí)你可以說(shuō)“我們系統(tǒng)里通過(guò)操作日志模塊能追蹤教師的批閱操作為教學(xué)質(zhì)量檢查提供數(shù)據(jù)支持?!币痪湓?huà)就讓系統(tǒng)從一個(gè)工具變成了一個(gè)平臺(tái)。第二個(gè)是敏感詞過(guò)濾或者內(nèi)容校驗(yàn)。比如教師發(fā)布作業(yè)時(shí)對(duì)標(biāo)題和內(nèi)容做長(zhǎng)度校驗(yàn)和空值校驗(yàn)批閱評(píng)語(yǔ)限制字?jǐn)?shù)。功能雖小但體現(xiàn)了你對(duì)系統(tǒng)健壯性的思考。第三個(gè)是成績(jī)數(shù)據(jù)分析。除了大屏展示的總體統(tǒng)計(jì)之外可以給教師端增加一個(gè)“成績(jī)趨勢(shì)分析”頁(yè)面展示某門(mén)課程歷次作業(yè)的平均分變化曲線(xiàn)。這個(gè)功能在數(shù)據(jù)層面完全基于已有的submission表不需要改數(shù)據(jù)庫(kù)結(jié)構(gòu)但你把它做成一個(gè)獨(dú)立模塊就顯得系統(tǒng)不是模板拼湊而是有自己的業(yè)務(wù)洞察。5.2 代碼組織的經(jīng)驗(yàn)別讓畢設(shè)變成屎山很多同學(xué)拿到源碼后喜歡直接上手改需求改著改著發(fā)現(xiàn)代碼越改越亂。我分享一個(gè)深有體會(huì)的教訓(xùn)拿到一套源碼第一步不是改功能而是先跑通、再梳理、最后動(dòng)刀。跑通之后用IDEA的結(jié)構(gòu)面板快速瀏覽一遍包結(jié)構(gòu)。好的源碼通常有清晰的controller/service/mapper/entity分層。如果沒(méi)有分層那建議你自己重新建包整理否則后面調(diào)試會(huì)非常痛苦。為了數(shù)據(jù)安全修改任何功能前先備份整個(gè)項(xiàng)目目錄和數(shù)據(jù)庫(kù)這花不了幾分鐘但能避免很多返工。如果源碼里的方法名命名混亂比如getList、getData這種毫無(wú)辨識(shí)度的名稱(chēng)我建議你花幾分鐘統(tǒng)一命名。這個(gè)工作對(duì)于一個(gè)三千行代碼的項(xiàng)目來(lái)說(shuō)用時(shí)不多但對(duì)你熟悉整個(gè)系統(tǒng)邏輯的幫助極大。答辯時(shí)老師問(wèn)你某個(gè)功能在哪實(shí)現(xiàn)你如果回答得支支吾吾印象分會(huì)大打折扣。5.3 答辯準(zhǔn)備中的實(shí)戰(zhàn)套路最后說(shuō)說(shuō)答辯。不少學(xué)校答辯時(shí)老師會(huì)直接打開(kāi)你的項(xiàng)目當(dāng)場(chǎng)點(diǎn)幾個(gè)功能讓你演示同時(shí)追問(wèn)一些問(wèn)題。根據(jù)我觀察的經(jīng)驗(yàn)作業(yè)批閱系統(tǒng)經(jīng)常被問(wèn)到的問(wèn)題就這么幾個(gè)提前準(zhǔn)備好回答思路現(xiàn)場(chǎng)就不會(huì)慌亂。第一個(gè)必問(wèn)的是“你這個(gè)系統(tǒng)的角色權(quán)限是怎么控制的”回答時(shí)聚焦在登錄后返回JWT令牌、前端根據(jù)用戶(hù)角色渲染不同菜單、后端接口做了對(duì)應(yīng)的攔截判斷即可。第二個(gè)常問(wèn)的是“如果兩個(gè)老師同時(shí)批閱同一個(gè)學(xué)生的作業(yè)會(huì)怎樣”回答思路是在狀態(tài)機(jī)邏輯里攔截重復(fù)批閱并解釋這樣處理保證了業(yè)務(wù)一致性。第三個(gè)刁鉆一點(diǎn)的是“作業(yè)提交高峰時(shí)系統(tǒng)會(huì)不會(huì)卡怎么優(yōu)化”如果你還沒(méi)做優(yōu)化就坦誠(chéng)說(shuō)當(dāng)前對(duì)于課程班級(jí)規(guī)模來(lái)說(shuō)性能足夠的如果后續(xù)擴(kuò)展可以引入消息隊(duì)列異步處理文件上傳或者用Redis緩存熱點(diǎn)數(shù)據(jù)。不要把答辯想成考試它更像一次技術(shù)交流。你對(duì)系統(tǒng)每一行代碼的理解比代碼本身更能打動(dòng)老師。我在實(shí)際做這類(lèi)項(xiàng)目過(guò)程中的一個(gè)感受是很多人執(zhí)著于找“完美”源碼但真正把一套普通源碼完全吃透、能講清楚每個(gè)模塊為什么這樣設(shè)計(jì)最后的收獲遠(yuǎn)比換十套源碼要大。這套作業(yè)批閱系統(tǒng)的代碼量并不算大但它覆蓋的Web開(kāi)發(fā)知識(shí)點(diǎn)足夠全面從數(shù)據(jù)庫(kù)外鍵關(guān)系到JWT無(wú)狀態(tài)認(rèn)證、從文件上傳到可視化大屏足夠你完整走一遍真實(shí)項(xiàng)目的開(kāi)發(fā)流程。如果你打算在這個(gè)系統(tǒng)上做二次開(kāi)發(fā)我建議下一個(gè)可以動(dòng)手的小目標(biāo)是給大屏模塊加上實(shí)時(shí)刷新用定時(shí)器每30秒輪詢(xún)一次統(tǒng)計(jì)接口讓“批閱進(jìn)度”在演示時(shí)動(dòng)起來(lái)。這個(gè)小改動(dòng)技術(shù)上幾乎沒(méi)有難度但演示時(shí)那種數(shù)據(jù)自己增長(zhǎng)的效果遠(yuǎn)比靜態(tài)截圖來(lái)得震撼。祝你順利拿下畢設(shè)少熬夜多拿分。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
精品少妇人妻av久久免费| 情侣操 逼视频99| 播播亚洲小说亚洲| 久热99999| 亚洲免费在线探花| 欧美玖玖爱免费玖玖| 久久鲁干| 富女玩鸭子一级毛片| 爱逼综合| 国产精品视频播放| 欧 美 自 拍 偷 拍| 懂色AV中文| 国产精品一区av在线| 91欧| 夜夜操夜夜爽夜夜高潮| 国产精品蜜乳AV| 传媒在线观看一区二区三区| 欧美人人天天网| 国产精品老师| 内射老妇BBWX0C0CK| 密臀在线免费观看| 一色网男人的天堂| 先锋影音av先锋一区| 大鸡巴久久| 新97国产超碰| 欧美男女午夜啪啪| 日韩精品碰碰| 日韩精品 视频一区二区| 揉揉日日日日| 999 久久久| 婷婷久久大香蕉| 色香AV| 大香蕉伊然在亚洲91| 91视频国品一二三区| 97超碰人人操人人操| 欧美综合色,www| 亚洲熟久久| 国产精品视频播放| 精品美女少妇一区二区三区| 日本久久99| 成人26uuu| 欧美BT 亚洲色图| 天天色悠悠激情| 亚洲va有码在线天堂| 天天摸天天操视频| 天天舔日美女视频| 亚洲综合影院| 亚洲熟女诱惑| 亚州熟女乱伦| 家庭乱伦国产| 少妇久久久久久| 国产高清午夜成人在线观看| 2019精品国产无码成人| 一牛影视成人片免费| 可能人人看人人摸| 操逼日韩无码| 一本一道vs波多野结衣| 亚洲另类久操网| 熟女被操视频网址| 夜夜爽77777| 91精品丝袜久久久久久| 伊人久久国产免费观看视频| 老司机免费视频在线91| 好属操| 欧美亚洲国产91在线| 九九干| 人妻熟女av国产网站| 麻花传媒免费网站在线观看| 男人天堂一区二区| 中文字幕第页| 西西美女视频网| 国产精品久久久久中文字幕| 少妇人妻精品| 少妇人妻在线| 操逼内射干逼白丝91| 欧美午夜色妇色鬼| 91久久国产综合精品| 人人妻人人色一区二区三区| 乱伦日本色图AⅤ| 国产女上位好爽在线| 亚洲精品欧美专业| 777超碰| 搡老女人老91二区| 日本大片日本一区二区免费高清| 亚洲在高跟鞋自慰久久在色线| 久久久久久久久久久久97 | 美女操逼A A| 把腿张开老子CAO烂你| 伊人久久88国产女| 99色网| 8050午夜少妇无码| 色综合久| 99re在线视频| 尹人免费观看视频在线| 99re6久热只有精品6在线直播 | 久操91视频| 国产一级高清免费观看| 亚洲色 国产 欧美 日韩| 国产精品青青草| 久久成人精品| 99久久精品欧美国产| 91色婷婷综合久久中文字幕二区| 性欧美精| 一区不卡在线观看av| 国内精品999| 久久9免费视频| 久久久一区二区三区三州| 国产高清MV操逼视频| 中文字幕国产精品1区| 99最新日韩偷拍视频| 97超碰碰| 久久夜色一区二区| 精品人妻中文字幕高清| 99在线无码精品秘 入口黑人| 熟女人妇一区二区三区| 欧美乱妇狂野欧美在线视频| 人人做,人人操,人人摸| 欧美成人精品一区二区三区| 久久久成人免费av电影| 亚洲无码?第一页| 精品人妻av区天天看片| 婷婷九月| 秋霞午夜视频一区二区| 国产精品久久久久久久久久梁医生| 少妇 综合| 久久精品操| J?P?NESEHD熟女熟妇伦| 五月天春色激情网| 日韩字幕一区| 久久久久网站-538在线视频-欧美永久乱码 | 蜜桃久久久久久| 97视频在线| 欧美色三级片91| 国产精品人妻无码久久久互動交流| 国产乱伦性爱AV| 91天美免费| 天天爽天天操| 亚欧免费| 视频黄站| 无码操逼网| 男人的天堂在线| 国产精品岛国片在线观看| 天天天堂影视日韩亚洲91| 美女写真| 91精品导航| 天美国产三级传媒| 日本东京热加勒比久久| 欧洲性人爱视频| 亚洲中文字母在线播放| 绯色一区二区三区不卡少妇| 伦在线97| 免费观看欧美日韩操逼视频| 亚川综合视频| 欧美色图校园春色| a人欧美综合天堂麻豆| 亚洲丝袜诱惑| 激情四射婷婷六月天| 久久婷综合| 91在线视频国产网站| 中美日韩毛片| 国产亚洲性生活视频播放| 97欧美久久久久久久| 五月香婷婷| 亚洲九九视频| 久久蜜色情在线视频xxx免费观看| 操逼视频色| 欧美色图99| 992这里有精品| 亚洲91在线播放影院| 欧美亚洲色的图| 艾草av| 欧美极度丰满熟妇hd| 91男同| 天天插天天干| 精品久久久久久久| 色淫网站优优视频| 亚洲人精品久久久| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 神马午夜久久久| 蜜桃久久综合视频| 日本精品一区二区中文字幕| 999久久久免费精品国产牛牛| 丰满少妇精品一区二区| 骚女高跟AV在线| 国产精品一区人妻精品阁在线| 国产性爱在线视频一区二区| 校园春色综合香蕉| 国产东北女人在线视频| 国产精品自拍视频| 亚洲自拍欧美色综合| 日韩另类色图| 性欧美另类高清| 国产久久久久久久久一区二区| 国产黄色在线播放观看| 日本国产亚洲一区在线观看| 天天射夜夜| 青青欧美在线| 色色国产| 国产91美女高潮| 狼人久草| 婷婷色网| 激情综合五月丁香| 97五月天| 久久侵犯人妻爽爽爽| 欧美久久伊人| 亚洲综合激情五月久久| 日本有码久久| juliaann精品熟女一区| 久久98| www.大香| 亚洲福利中文字幕在线| 欧美中出1| 亚洲国产日韩欧美熟妇在线| 色色丁香| 超碰79人人乐| 白丝1区2区3区| 综合网,亚洲,欧美| 亚洲精品一二三四区| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 五月丁香综合激情| 日韩一级二级| 人人爱夜夜爱| 久久成年精品| 九色 人妻 大香蕉| 蜜桃精品一区二区三区ww| 欧美视频在线第3页| 高清不卡视频| 91高跟美女在线播放| 亚洲日韩狠狠撸视频| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 色欲Av人妻精品一区二| 大香蕉www.超碰| 国产久久av| 国产色精品午夜大片| 97人人模人人爽人人| 亚洲色五月| 欧美有码亚洲中文字幕一区二区三区四区| 欧美在线啊啊啊| 亚洲色图自拍| 超清中文乱码字幕| 91午夜无码| 精品国产一级久久| 亚洲天堂另类小说男人| 夜夜嗨老熟女AV一区二区三区| 欧美久久人体| 日韩激情无码影院| 国产福利精品最新在线| 亚洲精品欧洲精品| 亚洲天天自拍| 亚洲欧洲日本精品中文a∨| 乱欲一区二区| 日韩午夜国产| 欧美色网络| 久久久性| 国产少妇肉丝在线观看| 少妇特黄一区二区三区| 日本熟妇浓毛hdsex| 亚洲伊人a线观看视频| 成人免费在线网站| 亚洲AO在线| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 人人妻人人爽一区二区三区| 日韩激情毛片一级久久久| 天堂中文资源在线bt| 久久亚洲影院一区二区| 久草综合网| 中文字幕AV乱伦| 五月激情视频| 亚洲男人天堂2| 久久精品国产Aⅴ| 自拍鲍鱼一区在线高清观看免费| 亚洲精品国产av天美传媒| 国产精品第一页国产大屁股视频免费区i| 97干97色| 大香蕉五月天婷婷| 999久久芭蕾| 日韩操逼HD| http://qxhbdz.com| 午夜毛片亚洲精品片国产久久久| 久久av成人无码免费| 一区麻豆 高清中文字幕| 女人香蕉久久毛毛片精品| 18禁美女裸体无遮挡啪啪| 欧美大码在线视频| 色九久| 4399成人黄A片| 亚洲综合草草| 97人人模人人爽人人| 免费成人在线熟妇网| 精品久久久久久中文字幕视频免费| 国产激情片在线观看| 精品中文一区二区| 国产区性爱在线视频秋霞豆| 亚洲熟女乱综合一区二区三区| 免费AV中文网在线观看| 台欧久久精品视频| 草草电影院| 992这里有精品| 四虎精品亚洲| 久久婷婷综合国际产色怕| 亚洲第91页| 丰满人妻无码一区二区三区| 日韩色图 一区二区| 51一区二区三区| 国产情色在线| 日韩少妇一区二区三区| 人妻精品一区二区| 抽插无码高清一区| 色香欲综合| 日本 欧美 亚中文字幕| 国产精品白丝| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 成人激情无码在线视频| 90后后入| 97舔舔| 日韩成人高清一区二区| AV中文字幕剧情1区2区3| 日本免费一级AAA大片器| 精品九九九九九九九九九| 逼逼逼逼操操操操操操操操操午夜剧场| 久久亚码| 午夜精品久久久久久久男人的天堂 | 人人妻人人爽| 很很干很很操| 成人毛片免费| 久久成人东京热人妻| 五月激情综合网| 午夜舔阴达高潮视频免费看| 欧美亚州综合图片| 99精品久久| 国产无马在线| 加勒比综合在线| 色月天AV导航| 久热9| 综合国产影视三级| 91国产丝袜白虎| 国精品一区二区三| 成人av动漫在线观看| 亚洲天堂久久久久久粉红视频| 蜜臀久久99精品| 最新日韩黄片| 日本不卡高清视频| 蜜臀久久99精品久久久久久婷婷 | 性天堂| 另类专区加勒比| 无码99| 国产亲戚伦亲在线| 欧美精品一区二区少妇免费A片| 中文字幕免费在线观看| 三级网站超变态精品| 欧美一区二区亚洲天堂| 国产日韩欧美操逼视频| 亚洲精品97| 加勒比性爱成人在线| 中文字幕精品人妻丝袜| 婷婷亚洲综合| 国产亚州高清国产拍精| 日本性爰一道本| 97超碰超碰| 超碰 国产熟女精品一区| 欧美天堂日韩三级国产传媒| 色噜噜婷婷| 色网在线视频观看免费| 亚洲熟伦熟妇AV无码春色| 校园春色美腿丝袜 | 欧美精品 - 91爱爱| 97综合在线| 国产精品久久99日日| 婷婷色综合欧美日韩| 超碰天天去日穴| 使劲用力艹少妇视频一区二区| 九九九网页| 99在线啪| 香蕉av一区二区三区| 亚洲欧洲无码97久久精品| 亚洲精品一区中文字幕乱码| www.超碰| 久久久久免费少妇| 少妇蜜汁| 亚洲青色欧美| 97视频免费在线| 欧美 亚洲 另类 综合| 伊人国产视频| 日韩精品怡红院| 国产熟妇一区二区| 人人搡人人肉久久精品| 97av,com| 青青草原香蕉日本Ap| 久久久久幕乱码| 欧美人妻一区二区| 欧美96在线|欧| 欧美日韩制服| 91美女在线观看| 亚洲av青草久久一区二区| 超碰97 线线 在现| AAAA级日本片免费视频| 三男一女不戴套的A片| 试看日韩黄片| 岛国免费黄色网址| 欧美顶级黄色大片免费| 蜜桃av综合网发布| 精品女人999| 中文有码第五页| 绑缚麻绳人妻寝取完整版| 亚洲第一二区另类图| 精品176精品2| 伊人宅男大香蕉| 91美女片在线| 日本中文熟女视频| 国产色呦呦| 亚洲av乱伦色图网站| 色婷婷影院| 99re这里只有精品3| 99热 按摩 日韩| 九九九只有精品| 夜夜欢天天干| 强奸乱伦免费网站| 亚洲AV永久无码一区仙野| 久久久爆乳翘臀一线天伦理视频| 日本啊啊啊啊啊视频| 亚洲AV在线资源| 丝袜足交视频| 欧美久久人人网| 天天操天天插| 91国产丝袜美女| 搡老女人老91二区| 激情综合网五月婷婷五月天| 丝袜 亚洲 偷拍| 国产一区二区三区,在线观看观看| 久久精品99| 亚洲欧美高清| 中国女人内射6XXXXX| 国产熟女少妇一区| 另类专区加勒比| 97色碰| 人妻aa| 欧美狠狠狠| 97资源视频| 韩国黄色片精品久久久| 肉丝网站91| 天天透伊人| 久久在线观看免费视频| 超碰欧美在线欧美| 国产视频三区四区| 国产精品亚洲一级av第二区| 欧美色吧综合| 狠狠中文字幕| 在线视频免费播放一区| 亚洲性爱成人| 97超碰欧美中文字幕| 久久夜嗨| 久久9 9 9精品| 无码免费精品高清| 国产精品人人爽人人做可爱福利| 亚洲影视高清第一页| 97人亚洲综合字幕| 999日韩中文精品观看视频。| 欧美日本中字另类在线| 久久香蕉国产线看观看亚洲女人 | 91亚洲不卡一区| 少妇人妻好深太紧了vr91| 超碰97综合网| 久久熟女久| 久久99国产综合精品女同| 女同性恋久久| 丁香五月电影| 亚洲欧美日韩综合在线尤物 | 国产精品亚洲天堂网址| 国产高清视频无码在线| 啪啪性爱免费视频| 久久透逼视频| 人人摸.人人色| av在线观看不卡网站| 亚洲无码超碰免费| 成人AV超碰免费在线| 翔田千里AV无码秘 三区| 久久精品操| 一本色道久久综合亚洲二区三区| 东京热熟女亚洲视频网站| 99999无码| 成人热久久精品| 男人的天堂kva| 色综合一本| 中国大陆国产高清AⅤ毛片| 色区久久| 98精品国产乱码久久久久久| 啊啊啊啊啊啊好多水| 国产特级毛片AAAAAA高潮流水 | 99日精品欧美国产| 亚洲综合另类欧美久久久| 蜜桃色院一区久久| 综合色91| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 亚洲丝袜色图| 欧美熟女逼久久久久久| 中文字幕乱妇免费视频| 亚洲男人电影天堂| 亚洲蜜桃V妇女| 亚洲综合图文| 91视频综合网| 欧美国产日韩清纯唯美| 欧美性性性| 91校园春色长篇| 999 久久久| 欧美精品三级黄片| 日韩黄色电影网站| 超碰97亚洲区| 蜜桃视频成a人v在线| 国产午夜视频| 久久这里只精品免费福利| 九九无码| 久久久久久综合久久伊人蜜月| 天天干天天狼在线视频| 97少妇人妻中文字幕久久 | 日韩在线性爱免费视频| 97久久精品国产| 亚洲成人激情小说视频| 好湿好紧好爽 视频| 鸥美中出| 久久免费老司机精品| 性综合网| 美女主播色欲91抠b在线播放| 乱伦熟女论坛| 一区二区视频你懂的| 九九久久一区二区伦理| 国产熟码AV| 屁屁影院一区二区三区国产 | 91精品国产91久久青草| 熟女在线视频| 午夜爽爽爽在线观看永久入口姬片| 色欲人妻一区二区在线| 日韩欧美字幕亚洲一区二区| 国产传媒日韩| 91高跟美女在线播放| av在线一区二区三区| 天堂av最新电影网| 精品人妻夜夜草| 午夜欧美女人操逼| 2025年A片视频精品| 日韩二区三四区五区六区在线看| 亚洲精品819| 亚洲天堂东京热| 欧美操逼录像国产黄色国产| 日日日啊啊啊| 大香蕉乱伦视频网| 青娱乐国产盛宴视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | yy少妇精品久久| 99热精品在线| 国产 亚洲 丝袜 制服| 欧美精品黑人猛交高潮| 亚洲性猛| 99天天超碰| 九九精品热| 性色av蜜臀av色欲aV| 欧美亚洲中文| 97国产|免费| 久久久久久91香蕉国产| 亚洲va综合va国产va中文| 韩三级a视频在线观看| 先锋女优在线观看视频| 91青青| 中文字幕人乱码中文字的预防方法 | 婷婷激情一区二区三区俺也去| 亚洲中文字幕精品久久久久久直播| 操逼视频色| 亚洲欧美不卡线| 一本色道熟妇| 男人的天堂com| 欧美中字不卡| 亚洲图片 激情小说| 自拍盗摄一区| 日本性一区| 国内操逼视频二区| 少妇蹲下买菜露大唇0| 亚洲清纯唯美| 免费福利视频中文字幕| 国产肏逼网站| 亚洲强奸乱伦影视网| 99久久综合网| 超碰 av 女人天堂| 鸥美中出| 四虎午夜影院| 欧美麻豆成人同性GⅤ在线| 涩五月婷婷| 欧美青青视频| 日韩亚洲欧美中文字幕| 欧美日产国产在线成人第一区| 欧美日韩中文亚洲v在线综合| 五月丁香六月婷综合成人综合| 91最新综合| 熟女网站最新| 东京热一区二区中文字幕| 久久精品福利影院| 啊v视频在线观看| 玖玖综合色| 日本欧美不卡| 99久久e免费热视| 97硬碰| 91伊人| 99自拍视频在线| 精品二区三四区五电影 | 亚洲一区亚洲天堂| 97色综合中文网| 久久久精品无码亚免费| 操逼精品视频| 老熟女综合| 国产曰批免费观看久久久| 国内毛片免费h片在线| 很很很很操| 思思热国产在线视频| 国产精品久久发布| 成人精品在线免费视频| 欧美后进式| 亚洲欧美高清| 五月丁香| 久久久久久人体| 欧美日韩 强奸乱伦| 欧美的精品的视频| 99精品久久久久久久婷婷| 第四色色综合91| 人人干黄色| 综合av影片| 日本熟妇人妻中出视频| 九九九九九九视频| 国产精品久久成人免费| 亚洲精品1区| 久草免费在线一区二区| 欧洲大香蕉| 国产欧美一区激情交| 野狼福利社区| av午夜玫瑰| 国产精品美女视频诱惑| 久久偷拍人| 乱伦Av网| 精品午夜福利| 国产精品欧美激在线| 最新日日夜夜天天干干| 亚洲熟女诱惑| 白丝AV网站| 女同性恋久久| 国产在线激情| 91亚州欧美| 亚洲欧美综合区自拍另类| 91精品久久久久久77777| 色五月激情网| 超碰国产精品久| 啊啊啊啊啊啊啊啊要喷了| 久久久久成人蜜桃精品| 高潮的A片激情扒开一区| 天美av在线| 蜜桃狠狠色伊人亚洲综合 | 天天添天天干电影| 激情综合五月| 91欧美| 无码精品久久久天天影视| 凹凸 69堂 在线播放| 伊人午夜福利视频| 欧美黑人91| 黄色av播放免不| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 亚洲最新Av| 大香蕉中文在线| 美女91在线| 欧美色涩| 欧美自拍偷拍综合图片| 精品国产乱码久久| 超碰97久久| 深夜福利黄片| 成人AV超碰免费在线| 熟女乱3伦999| 五月婷婷六月丁香网址| 97欧美性爱| 91精品国产麻豆国产自产在| 久久久久国产无av| 婷婷激情五月| 亚洲AV免费在线观看| 久草色悠悠在线视频| 磁力99AV| 欧美在线|亚洲| 久久色精品视频在线| 国产辣妈在线视频福利| 国产强奸超碰AV| 三级三级三级日本99| 青青色综合| 久久精品视| 91人人| 天天做日日做天天欢。| 亚洲综合色网| 天天看高清麻豆| 欧美性夜| 五月天玖玖资源站| 天堂精品小草| 中文字幕精品三级久久久| 精品人妻一区二区三区视频在线| 97色综合中文网| 亚洲最大AV网| 亚洲狼狼干综合1| 快播久久人人aV| 色y情视频免费看| 日本无码1| 久热久一区二区三区| 久久精品国产精品| 91在线精品一区二区三区| 久操网线| 日本不卡一区二区三区| 日韩精品资源专区二区| 爱射综合| 东京男人天堂| 亚洲 欧美 偷拍 唯美| 日韩欧美视频青青| 亚洲欧美骚| 免费看国产曰批40分钟怎么下载| 欧美se亚洲| 97香蕉网| 殴美色网| 国产一区二区三区免费视频在性观看 | 伊人大香蕉在线| 欧美一区二区三区四区综合| 91中文字幕在线观看| 超碰97在线 欧美 国产| 99热亚洲| 亚洲中文一区二区三区| 欧美日韩插逼视频| 色淫网站优优视频| 福利五区| 精品无码一区二区人妻久久蜜桃| 四虎影库国产精品免费| 婷婷亚洲综合| 久久人人爽人人爽人人片Ⅴ| 十八禁av无码免费网站APP| 国产h小视频在线观看免费| 中文字幕青青草| 懂色av中文字幕一区二区三区天美| 97色97好| 香港成人一级视频在线青青草| 麻豆天美久久91| 中文激情网| 久久久久久AⅤ无码免费肉站| 波多野结衣被操50分钟免费视频 | 男人的天堂亚洲| 欧美在线播放aaaa| 男人的天堂一区三区| 国产 亚洲 丝袜 制服| 黄片com.| 国产呦精品一区二区三区下载| 日韩激情小说一区二区| 啪啪AV导航| 亚洲欧洲精品视频发布| 亚洲五码一区二区三区| 色久桃花影院在线观看| 免费作爱一级视频| 国产又粗又长又爽又色| 日韩在线观看中文字幕视频| 激情av| 97精品国产97久久久久久户外免费| 东北女人av| 神马午夜久久久| 色天堂综合| 97精品97久久| 日本幼女18+| 午夜αv| 人人搞人人插人人操| 日韩无码精品综合久久| 日本一级婬片试看三分钟| 家庭乱伦网站国产| 色色婷婷丁香| 东京热一区二区三区四区五区六区| 成人日本精品九区| 国产一区二区久久| 欧美96在线|欧| 国产成人亚洲精品无| 成人无码在线超碰网| 户外裸露刺激视频第一区| 婷婷久久久| 淫色网综合| 天天热精品| 国产久久久| 日韩欧美大力操| 强奸乱亚洲| 国产白领连续中出在线观看| 亚洲凸凹超碰成人| 亚洲日韩电影| 蜜桃视频成a人v在线| 五月天色色色| AV高清一区| 久久久精品,3| 国产又黄又爽又刺激久久久久久| 日韩不卡a级视频专区| 亚洲有码 视频一区| 亚洲熟久久| 亚洲综合在线第一页| 天天艹天天日| 98一区二区精品| 久久6热精品99视频| 综合97| 91精品伊人久久久大香线蕉91 | AAAA欧美日韩| 欧美性爱另类综合| 久久久∴| 日韩一二三区| 久久欧美性爱视频| 99热精品国产| 97天天日| JULIA一区二区三区在线播放| 曰本精品久久久| 日韩精品午夜操呦呦不卡影院| 性饥渴少妇av无码毛片| 亚洲综合在线视频| 春色综合免费| 亚洲一区二区三区中文字幕| 欧美黄页在线| 欧美性性性| 在线视频日韩欧美国产| 国产精品suv一区| 懂色aV一区二区天美传媒| 黄色av一区二区在线| 超碰98综合网| 人人妻人人爽 97人人看碰人免费公开视频| 性一交一乱一交A片久久四色| 精品国产久久乱码| 欧美激情性久久久久久| 日本天天吊| 91欧美经典| 狠狠五月天| 素人伊尹大香蕉免费下载视频| 日韩高清黄片| 国产丰满少妇久久久精品影院| 在线视频亚洲无码| 日韩啪啪啪啪啪| 色五月av| 中文字幕高清20页视频| 成人性交免费视屏| 成人婷婷丁香| 东京热男人天堂| 亚洲综合小说另类图欧美视频激情小说色五月天| 97在线资源| 婷婷影院入口| 蜜桃臀久久| 久久久久久AⅤ无码免费肉站| 欧美综合网1| 中文字幕亚韩| 天天操熟妇| 国产成人久久久精品免费AV| 亚春色色| 人人操AV| 女人精品内射国产99| 婷婷成人久久久精品| 91精品国产91久久青草| 一区二区首页| 性爱视频免费网址| 日日夜夜草草草| 无码av永久免费专区网站| 97se综合| www.99视频| 亚欧美色| 97人人爱人人做人人乐| 中文精品一区二去| 久操视频免费观看| 日韩无码专区| 亚洲欧美综合| 91高跟美女在线播放| 色综合av男人天堂| 欧色网址| 草伊人高潮喷水超碰| 色综合天天| 蜜臀久久99精品久久久久电影| 九九热免费视频| 亚洲无992tv| 91欧美综合在线| 99性视频| www.亚洲黄色| 四虎影视 亚洲无码| 久操婷婷| 色黄污美女啪啪啪免费网站| 很狠操| 九色 人妻 大香蕉| 四虎影视永久在线免费| 啊啊啊啊嗯嗯在线久久久| 91青视频| 久久一级无码精品毛片6| 97在线视频免费看| 欧美 传媒 麻豆 日韩 偷拍| 亚洲女毛多水多21P| 91综合中文字幕| 欧美熟女丝袜| 色噜噜综合在线| 95自拍视频在线观看| 国产精品另类| 97在线观看免费视频l| 四色永久成人网站| 日韩av不卡在线看| 色色九区| 一区二三区四区视频大全套| 中文伊人大香蕉视频| 欧美另类精品xxxx| 欧美日本成人一区二区| 熟女久久| 1204av韩国| 欧美精品人妻视频| 亚洲中文字母在线播放| 天天视频网站黄| 亚洲av资源| 亚洲日韩乱码中文无码蜜桃臀网站| 五月婷婷影院| 日本理论在线| 26uuu偷拍亚洲欧洲综合| 日韩15p| 中文字幕精品三级久久久| 久久久久久中文版| 久操高青| 色婷婷狠狠| 久久性爱大全| 日韩操逼HD| 91丨国产丨白浆秘 洗澡动漫| 日韩精品午夜操呦呦不卡影院| 天天综合网~91综合网| 校园春色亚洲欧洲| 蜜色网色哟哟| 花野真衣| 91狠| 欧美国产日韩清纯唯美| 中文字幕日本久久| 少妇高潮对白在线观看| 国产美女销魂在线观看不卡| 一级一性爱免费视频| 鸥美中出| 大香久久| 欧美激情在线观看视频| 国产日韩中文字幕欧美| 嗯嗯啊啊好大好爽| 亚精品无码毛片一区二区三区| 久久夜色一区二区| 一区=区三区视频| 亚洲s在线观看| 亚洲91av| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 色五月婷婷在线| 久热免费视频| 尹人大香蕉视频在线| 红杏大香蕉| 又黑又大又粗| 久久久9视频| 99热色这里只有精品| 91久久久久久久久久久| 欧美亚洲综合色| 中文字幕国产精品1区| 艳美熟妇先锋一二三区| 7月婷婷综合| 91色五月俺来也| 少妇69中文| 国产乱码精品久久久久久| 夜草欧美| 亚洲欧美91√| 蜜臀网址在线| 人妻少妇精品久久久久久久| 一区二区乱码福利| 乱伦一二三区| 93人人操人人| 久久人人看| 97午夜剧场日韩| 自拍视频大全亚洲专媒视频/一区二区三区| 91av天美性媒精品视频| 91性| 97这里有精品| 婷婷婷婷婷婷久久久久| 在线观看一级α片刺激高潮视频| 眼镜人妻101.com| 牛牛aV| 女人爽到高潮久久久| 夜夜狼人妻| 亚洲91综合| 天堂综合网| Sekablack无码一区| 97人人操人人摸人人爱| 欧美在线视频99| 第二页中文字幕| 亚洲啪啪啪啪视香蕉| 久久久日本电影| 亚洲成人黄色在线观看| 草草网站影院白丝内射| 97人人干| 亚洲AV不卡在线观看尤物| 久久精品一区一起草| 乱伦强奸区日韩| 色爱三区| 污到发麻的视频 国产| 色偷偷男人的天堂麻豆| 无码78| 性爱边摸边日免费AV| 开心激情站| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 怡红院网站在线视频| 韩国一级做a久久久久| 日韩欧美综合激情| 青青草日本无码| 男人的天堂日韩| 亚洲一级黄色毛片| 国产动漫操逼视频| 歐美性天天| 神马久久午夜| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 国产精品视频| 天天干人人看综合| 999岛国大片| 97一区二压| 国产老太乱伦一区| 日本人妻A片成人免费看片| 国产天天看| 成·人免费午夜在线观看| 人看人人摸人人操| 日韩噜噜69| 一级性爱视频免费观看 | 亚洲色图20p| 97超碰日韩| 六月婷婷色综合| 日韩av情韩国爱禁区av一区二区| 日本东京热久久久电影| 天天做天天爽| 国产又大又粗又长视频| 韩国一级AAA| 麻豆人妻少妇在线免费观看| 91狠狠综| 香蕉在线一区二区三区| 97 国产精品| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 国模限制级电影| 亚洲人妻爽爽爽| 97久久久| 新怡红院| 亚洲欧洲综合视频在线| 超碰在线1234区| 日韩A优精品在线观看| 色大师网站www永久网站视频| 国产成人亚洲精品无| 国产一区二区三区中文字幕| 精品一级| 99这里有精品视频| 中文字幕成人乱码熟女精品国50| 亚洲经典啪啪| 欧美色亚洲色| 亚洲综合婷婷| 亚洲成人ab| 亚洲精品男人的天堂| 欧美天天综合网版| 激情五月天婷婷| 91天天综合网| 91暧暧| 一个色导综合| 97在线青| 日美免费黄片| 天天日天天干天天摸天天操| 亚洲午夜AV| 精品1区2区3区| 日本熟妇熟色97一本在线观看| 精品少妇999| 欧美三级免费伊人| 国产精品毛片?v一区二区三区| 手机久操欧美综合色码| 久久国产乱子伦精品免费女人| 午夜精品人妻二区三区| 熟女被操视频网址| 9Ⅰ超碰| 夜夜狼人妻| 激情综合二| 3P丝袜熟女 色综合| 嗯啊啊啊轻点视频 | 91AV天美在线视频| 欧美啪啪女女| 色牛aV| 欧美色图 人妻| 激情综合网五月婷婷| 91欧美大片| 九九九影院| 亚洲黄色影视| 一中国女人毛片水真多| 老司机午夜福利视频一区二区| 成人av动漫在线观看| 东北女人无套内谢视频| 91美女在线视频| 第一高清av中文字幕| 人人操,人人液| 欧美色综合图片| 天天干天天爽| gogogo免费高清看中国国语| 青草伊人久久| 欧美成人精品一区二区三区| 国语国产操逼伊人AV网| 亚洲小说视频| 亚洲欧美setu| 狠狠色综合网| 国产亚洲日韩在线三区黑人| 97在线视频网站| 97精品综合久久网| 久久久久成人蜜桃精品| 3028国产精品| 欧美日韩在线小说 | 天天综合网~91综合网| 97日本超碰综合| 亚洲Av无码成人精品国产| 日韩国产精品人妻无码久久久| 亚洲人人夜夜澡人人爽| 久久综合日韩亚洲欧美| 爱做久久久久久| 免费一级性爱久久| 97久久超碰亚洲| 免费家庭乱伦视频| 99精品九九九九九九| 九九九九九九成人| 99激情| 国产福利小视频高清在线观看| 激情五月天中文字幕色| 国产2.3.4区| 97视频www| 丰满少妇一区二区三区四区观看| 国产精品99久久久www| 北约熟女超碰| 成年人黄色视频免费| 操熟女91| 日1区2区3区2020| 亚洲999综合| 天天享受天天看| 久久理论字幕视频| 亚洲丝袜二区| 超碰人人色| 黑人黄片在线免费观看| 18禁免费视频| 眼镜人妻101.com| 国产在线视频午夜精华在| 亚州综| 91M一社| 福利天天都操| 97超碰欧美手机在线| 天天日美女的B| 欧美午夜视频| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 欧美夜夜| 超碰美国| suv精产一二三区| 精品久久97| 亚洲毛片久久| 久久精品国产亚洲av水密被窝| 亚洲日精品| 97资源站国产精品| 国产精品另类一区大香蕉| 97超碰中文字幕| 在线播放中文字幕| 果冻传媒A片一二三区| 青青草久草AV| 国产诱惑| 91色人| 大香蕉99999| 亚洲天堂欧美| AVE乱伦| 黑人精品XXX一区一二区| 91性高朝久久久久久久久| 一个色导综合| 手机在线播放国产福利| 浪人综合网| 日本一级性爱|