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

ARTICLE DETAIL

資訊詳情

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

Spring Boot學(xué)生選課管理系統(tǒng):從并發(fā)控制到事務(wù)設(shè)計(jì)的完整指南

Spring Boot學(xué)生選課管理系統(tǒng):從并發(fā)控制到事務(wù)設(shè)計(jì)的完整指南 選課這事兒每年開(kāi)學(xué)都是教務(wù)老師最頭疼的一周。直到今天仍然有大量高校在用“先到先得 人工補(bǔ)退選”的方式處理學(xué)生選課服務(wù)器一開(kāi)機(jī)就被沖垮后臺(tái)導(dǎo)出名單能卡半小時(shí)。所以每年畢業(yè)設(shè)計(jì)季“Spring Boot 學(xué)生選課管理系統(tǒng)”都會(huì)出現(xiàn)在計(jì)算機(jī)專業(yè)的題目清單里。這篇東西不是給你抄代碼的而是把這類項(xiàng)目的設(shè)計(jì)邏輯、開(kāi)發(fā)順序、答辯時(shí)會(huì)問(wèn)到的坑全部拆開(kāi)講清楚。如果你正準(zhǔn)備拿這個(gè)題目做畢設(shè)或者在工作中要接手類似的教務(wù)系統(tǒng)可以先花半小時(shí)把這篇讀完。它講的是如何把一個(gè)看起來(lái)“只是增刪改查”的選課系統(tǒng)做成一個(gè)能應(yīng)付并發(fā)搶課、權(quán)限隔離、事務(wù)一致性追問(wèn)的完整項(xiàng)目同時(shí)回答“為什么用 Spring Boot”“為什么這么設(shè)計(jì)表”“為什么這里要加緩存”這些老師最愛(ài)問(wèn)的問(wèn)題。1. 選課系統(tǒng)這類畢設(shè)題目的真實(shí)現(xiàn)狀每年都有大量學(xué)生選“學(xué)生選課管理系統(tǒng)”這個(gè)題目但很多人做到一半才發(fā)現(xiàn)自己只是把教材里的用戶表、課程表、選課表搬出來(lái)做了三個(gè) CRUD 頁(yè)面。等到寫(xiě)論文的時(shí)候都不知道“創(chuàng)新點(diǎn)”三個(gè)字該怎么下筆。事實(shí)上選課系統(tǒng)的復(fù)雜度被嚴(yán)重低估了它不是“簡(jiǎn)單管理系統(tǒng)”而是一個(gè)典型的、帶有并發(fā)寫(xiě)操作和復(fù)雜業(yè)務(wù)規(guī)則的中小型系統(tǒng)。1.1 為什么“選課”比“圖書(shū)管理”更適合做畢設(shè)同樣是管理系統(tǒng)圖書(shū)管理只需要關(guān)心“書(shū)的庫(kù)存”核心操作是借書(shū)、還書(shū)業(yè)務(wù)規(guī)則少系統(tǒng)設(shè)計(jì)上沒(méi)有太多可以深挖的地方。選課系統(tǒng)則完全不同它天然自帶幾個(gè)值得研究的技術(shù)點(diǎn)并發(fā)選課熱門課程同一秒可能被幾百人同時(shí)搶數(shù)據(jù)庫(kù)層面會(huì)競(jìng)爭(zhēng)同一行記錄。業(yè)務(wù)約束學(xué)生選課不能超學(xué)分上限不能跨年級(jí)選課不能和已選課程時(shí)間沖突。狀態(tài)流轉(zhuǎn)選課要經(jīng)歷“預(yù)選、抽簽/搶課、退課、補(bǔ)選、課程關(guān)閉”多個(gè)狀態(tài)數(shù)據(jù)不只是插入和刪除。權(quán)限角色學(xué)生、教師、教務(wù)管理員各有一套操作流程需要做RBAC權(quán)限控制。這些點(diǎn)恰好對(duì)應(yīng) Spring Boot 項(xiàng)目里最常被考察的幾個(gè)方向Spring Data JPA/MyBatis 的數(shù)據(jù)訪問(wèn)、Spring Security/自研攔截器的權(quán)限控制、Redis 緩存減輕數(shù)據(jù)庫(kù)壓力、事務(wù)管理保證選課數(shù)據(jù)不產(chǎn)生超選。1.2 大多數(shù)人做這個(gè)題目時(shí)會(huì)踩的坑第一坑數(shù)據(jù)庫(kù)表設(shè)計(jì)照搬“用戶-角色-菜單”三張表。有些同學(xué)一開(kāi)始就堆了七八張表角色表、權(quán)限表、菜單表一應(yīng)俱全結(jié)果做出來(lái)發(fā)現(xiàn)登錄以后根本沒(méi)有細(xì)粒度權(quán)限控制的需求反而把登錄邏輯搞得特別復(fù)雜。更合理的做法是先用“學(xué)生表、教師表、課程表、選課表”四張核心表跑通主流程再進(jìn)行權(quán)限設(shè)計(jì)權(quán)限表是逐步演進(jìn)來(lái)的。第二坑選課邏輯寫(xiě)在 Service 里但是沒(méi)有加事務(wù)。一個(gè)學(xué)生選兩門課第一門插入成功第二門因?yàn)闀r(shí)間沖突拋異常結(jié)果第一門課也寫(xiě)入進(jìn)去了。這就是典型的“缺少事務(wù)控制”。第三坑只做了“選課”和“退課”忽略了“課程容量不足”這個(gè)最現(xiàn)實(shí)的問(wèn)題。熱門課剩余容量為 0 時(shí)前端還允許提交請(qǐng)求后端也沒(méi)做校驗(yàn)最后庫(kù)里出現(xiàn)容量為負(fù)數(shù)的臟數(shù)據(jù)。2. 解構(gòu)標(biāo)題里的三個(gè)關(guān)鍵詞系統(tǒng)、框架、設(shè)計(jì)與實(shí)現(xiàn)標(biāo)題里反復(fù)出現(xiàn)“Spring Boot”“學(xué)生選課管理系統(tǒng)”“設(shè)計(jì)與實(shí)現(xiàn)”這三個(gè)詞其實(shí)對(duì)應(yīng)著論文和系統(tǒng)里三個(gè)不同的關(guān)注層次。把它們拆開(kāi)理解你會(huì)發(fā)現(xiàn)整個(gè)項(xiàng)目的脈絡(luò)一下子就清楚了。2.1 “系統(tǒng)”不是一個(gè)頁(yè)面集合而是一組流程閉環(huán)如果你在開(kāi)題報(bào)告里寫(xiě)“本系統(tǒng)包括登錄、選課、退課、課程管理、成績(jī)錄入等模塊”那只是功能列表不是系統(tǒng)設(shè)計(jì)。真正的系統(tǒng)設(shè)計(jì)要畫(huà)業(yè)務(wù)流程學(xué)生登錄后——查看培養(yǎng)方案開(kāi)放的可選課程——提交選課請(qǐng)求——判斷學(xué)分是否超限——判斷是否沖突——扣減課程容量——生成選課記錄——教師端查看選課名單——教務(wù)端處理退課審核。每一步都要有對(duì)應(yīng)的數(shù)據(jù)變動(dòng)和異常處理。我見(jiàn)過(guò)不少同學(xué)的論文里數(shù)據(jù)流圖畫(huà)的是一條直線“學(xué)生選課直接寫(xiě)入選課表”這顯然是沒(méi)在真實(shí)系統(tǒng)里跑通過(guò)流程。選課中間至少還要經(jīng)過(guò)“容量校驗(yàn)”和“沖突檢測(cè)”兩個(gè)環(huán)節(jié)否則系統(tǒng)做出來(lái)也會(huì)被老師一句話問(wèn)倒“你選課的時(shí)候如果兩門課時(shí)間沖突了怎么辦”2.2 “Spring Boot”的選擇為什么在這個(gè)題目里幾乎是標(biāo)配Spring Boot 在這個(gè)題目里勝出不是因?yàn)樗募夹g(shù)棧“顯得高級(jí)”而是三個(gè)非常務(wù)實(shí)的原因。第一啟動(dòng)和配置成本極低。傳統(tǒng) Spring 項(xiàng)目要寫(xiě)一堆 XML 配置Spring Boot 用自動(dòng)配置把開(kāi)發(fā)者的注意力集中在業(yè)務(wù)代碼上。對(duì)畢設(shè)來(lái)說(shuō)時(shí)間有限這一點(diǎn)最實(shí)際能讓你把精力留給真正的業(yè)務(wù)邏輯而不是配置調(diào)試。第二生態(tài)成熟。Spring Data JPA 或 MyBatis 都能和它無(wú)縫集成Spring Security 可以用于權(quán)限控制Redis 的 starter 包可以讓緩存落地非常平滑。答辯老師聽(tīng)到你用到了 Spring Security 做權(quán)限至少會(huì)認(rèn)可你了解企業(yè)級(jí)開(kāi)發(fā)的常見(jiàn)套路。第三內(nèi)置 Tomcat。打包成一個(gè) jar 直接運(yùn)行寫(xiě)論文的時(shí)候部署章節(jié)很好交代演示系統(tǒng)也不需要在評(píng)委電腦上裝一堆中間件。這里也順便回答一個(gè)常見(jiàn)疑問(wèn)到底用 JPA 還是 MyBatis我的建議是如果你對(duì) SQL 比較熟選 MyBatis配置 mapper 文件或注解 SQL 都很直觀也方便在論文里展示復(fù)雜查詢語(yǔ)句。如果你希望少寫(xiě)點(diǎn)代碼選 Spring Data JPA簡(jiǎn)單 CRUD 可以省不少時(shí)間但是多表關(guān)聯(lián)查詢會(huì)相對(duì)需要花時(shí)間學(xué)一學(xué)。我這邊更推薦 MyBatis因?yàn)樵凇斑x課沖突檢測(cè)”這類場(chǎng)景里你往往需要寫(xiě)比較復(fù)雜的 SQL 或使用數(shù)據(jù)庫(kù)鎖MyBatis 的 SQL 控制力更直接。2.3 “設(shè)計(jì)與實(shí)現(xiàn)”在論文里要回答什么先說(shuō)“設(shè)計(jì)”。設(shè)計(jì)不等于“我用了三層架構(gòu)”。三層架構(gòu)只是代碼組織方式你要設(shè)計(jì)的是數(shù)據(jù)結(jié)構(gòu)、業(yè)務(wù)流程、接口規(guī)范和異常處理策略。課程表的唯一約束怎么設(shè)計(jì)選課表的聯(lián)合唯一索引是什么退課操作是物理刪除還是狀態(tài)變更這些都是設(shè)計(jì)內(nèi)容。再說(shuō)“實(shí)現(xiàn)”。實(shí)現(xiàn)也不等于貼代碼。你要能夠說(shuō)清楚每個(gè)核心接口的請(qǐng)求參數(shù)、響應(yīng)結(jié)果、異常情況以及關(guān)鍵代碼的時(shí)序邏輯。比如選課接口Spring Boot 代碼執(zhí)行順序是接收 POST 請(qǐng)求解析 studentId 和 courseId查學(xué)生當(dāng)前已選學(xué)分校驗(yàn)是否超限查課程信息校驗(yàn)是否可選、是否已選過(guò)、容量是否足夠進(jìn)入事務(wù)更新課程剩余容量插入選課記錄返回成功或拋出業(yè)務(wù)異常。把這些按步驟寫(xiě)清楚論文的“詳細(xì)設(shè)計(jì)”一章就有了真正的骨架。3. 系統(tǒng)模塊到底怎么劃先理清角色再談功能很多初學(xué)者習(xí)慣把“功能模塊圖”畫(huà)成一個(gè)巨大的方框里面塞下十幾個(gè)小方框這看起來(lái)內(nèi)容多實(shí)際毫無(wú)重點(diǎn)。選課系統(tǒng)的模塊劃分最好的切入點(diǎn)是角色權(quán)限因?yàn)椴煌巧珜?duì)系統(tǒng)的訴求完全不同。3.1 三個(gè)角色的核心訴求學(xué)生角色的核心操作是瀏覽課程、選課、退課、查看個(gè)人課表。這個(gè)視角的系統(tǒng)要解決的問(wèn)題是“怎么快速找到我能選、我想選的課”所以課程列表頁(yè)一定要支持按課程名稱、學(xué)分、上課時(shí)間篩選而不是把所有課程一次性全查出來(lái)。教師角色的核心操作是查看自己開(kāi)設(shè)課程的學(xué)生名單有時(shí)還要錄入成績(jī)。這個(gè)視角的重點(diǎn)在于“開(kāi)課管理”和“成績(jī)管理”教師不需要也不應(yīng)該看到其他教師的課程數(shù)據(jù)。教務(wù)管理員的核心操作是基礎(chǔ)數(shù)據(jù)維護(hù)維護(hù)學(xué)生信息、維護(hù)教師信息、維護(hù)課程信息、設(shè)置選課時(shí)間段、處理個(gè)別學(xué)生的補(bǔ)退選申請(qǐng)。3.2 權(quán)限控制的最小落地方式權(quán)限這塊不用一上來(lái)就上 Spring Security JWT那樣學(xué)習(xí)成本太高而且畢設(shè)系統(tǒng)一般是單體應(yīng)用前后端不分離或者簡(jiǎn)單的模板渲染都能滿足需求。我建議的做法是數(shù)據(jù)庫(kù)加一個(gè) role 字段值可以是 STUDENT、TEACHER、ADMIN登錄接口校驗(yàn)用戶名密碼后把用戶 ID、角色存入 Session寫(xiě)一個(gè)攔截器HandlerInterceptor攔截所有 /api/** 請(qǐng)求校驗(yàn) Session 中是否有登錄用戶再通過(guò)注解或路徑規(guī)則判斷角色是否匹配對(duì)于選課、退課等敏感操作Service 層再做一次數(shù)據(jù)歸屬校驗(yàn)比如學(xué)生只能操作自己的選課記錄。這樣既控制了權(quán)限又能在答辯時(shí)解釋 RBAC 的簡(jiǎn)化模型還能在小論文里對(duì)比“基于 Session 和基于 JWT 的兩種方案差異”。如果你非要上 Spring Security也可以但一定要能講清楚 Spring Security 的過(guò)濾器鏈原理否則老師一句“你這個(gè) Spring Security 配置的過(guò)濾器順序會(huì)不會(huì)有問(wèn)題”就容易卡殼。3.3 核心表結(jié)構(gòu)設(shè)計(jì)與字段說(shuō)明選課系統(tǒng)最少需要五張核心數(shù)據(jù)表這也是最穩(wěn)妥的起步方案。下面把每張表的用途和關(guān)鍵字段列出來(lái)建表的時(shí)候可以直接參考表名關(guān)鍵字段設(shè)計(jì)說(shuō)明studentid, student_no, name, password, major, grade, max_credit學(xué)生基礎(chǔ)信息max_credit 表示每學(xué)期學(xué)分上限默認(rèn)20teacherid, teacher_no, name, password, department教師基礎(chǔ)信息courseid, course_code, name, credit, teacher_id, capacity, selected_count, class_time, statusstatus 控制是否開(kāi)放選課selected_count 表示當(dāng)前已選人數(shù)selectionid, student_id, course_id, select_time, status聯(lián)合唯一索引 (student_id, course_id)防止重復(fù)選課semesterid, name, is_current用學(xué)期表隔離不同學(xué)期的選課數(shù)據(jù)不要把所有學(xué)期課程混在一張表里課程表里的 selected_count 和課程容量 capacity 是關(guān)鍵設(shè)計(jì)點(diǎn)。每次選課成功時(shí)需要既插入一條 selection 記錄又把 course.selected_count 加 1。這兩個(gè)動(dòng)作必須放在同一個(gè)事務(wù)里。更嚴(yán)格的做法是在選課 SQL 里加“容量樂(lè)觀鎖”比如UPDATE course SET selected_count selected_count 1 WHERE id #{courseId} AND selected_count capacity;這行 SQL 返回的影響行數(shù)如果為 0說(shuō)明課程已滿選課失敗。這個(gè)寫(xiě)法比“先查容量再更新”安全得多也是答辯時(shí)一個(gè)很好的加分項(xiàng)因?yàn)樗苯釉跀?shù)據(jù)庫(kù)層面解決了超選問(wèn)題。4. 從空工程到可演示系統(tǒng)我建議的落地順序很多同學(xué)拿到題目喜歡從登錄注冊(cè)開(kāi)始寫(xiě)寫(xiě)完登錄寫(xiě)權(quán)限寫(xiě)完權(quán)限再寫(xiě)課程管理結(jié)果是課程管理還沒(méi)寫(xiě)完開(kāi)題時(shí)吹的“選課系統(tǒng)”影子都沒(méi)見(jiàn)到老師催中期進(jìn)度時(shí)非常被動(dòng)。我自己做項(xiàng)目比較習(xí)慣“縱向切片”的開(kāi)發(fā)方式也就是先打通一條完整的主流程再橫向擴(kuò)展其他功能。4.1 第一階段先打通“登錄-看課-選課-查課表”全鏈路先用 Spring Initializr 創(chuàng)建一個(gè)最簡(jiǎn)單的 Spring Boot 工程引入 Spring Web、MyBatis、MySQL Driver。這個(gè)階段不需要做多角色權(quán)限直接用一個(gè) student 表完成登錄。建好數(shù)據(jù)庫(kù)和五張核心表插入幾條測(cè)試數(shù)據(jù)登錄接口根據(jù)用戶名和密碼查詢 student 表密碼用 MD5 加密存儲(chǔ)實(shí)際項(xiàng)目要加鹽畢設(shè)用加密過(guò)的 MD5 加一個(gè)固定鹽值勉強(qiáng)夠解釋課程列表接口查詢所有可選課程返回 JSON 列表選課接口先做最基本的插入 selection 記錄然后再逐步加事務(wù)、容量校驗(yàn)課表查詢接口按學(xué)生 ID 查詢選課記錄并關(guān)聯(lián)課程信息。等這一條鏈路跑通了項(xiàng)目就有了“骨架”后續(xù)加功能都是往骨架上添肉。這種開(kāi)發(fā)方式最大的好處是任何時(shí)候停下來(lái)系統(tǒng)都有得演示不會(huì)出現(xiàn)“功能做了三個(gè)沒(méi)有一個(gè)能跑通”的尷尬局面。4.2 第二階段加入教師端和教務(wù)端主流程跑通之后再拆角色。教師端主要做兩件事查看自己課程下的學(xué)生選課名單、錄入成績(jī)。這時(shí)候需要在 teacher 表和 course 表之間建立關(guān)聯(lián)查詢時(shí)用 teacher_id 做條件確保教師只能看到自己的課程。教務(wù)端要做的第一件事是課程維護(hù)包括新增課程、修改容量、開(kāi)放選課狀態(tài)切換。這個(gè)階段最需要注意的是“菜單與權(quán)限不同步”的問(wèn)題。有些同學(xué)前端做了一個(gè)菜單欄把所有端的功能都渲染出來(lái)了學(xué)生登錄后點(diǎn)教師菜單后端雖然攔截了但前端體驗(yàn)很差。正確做法是登錄接口把角色返回給前端前端根據(jù)角色動(dòng)態(tài)渲染菜單。4.3 第三階段在打磨細(xì)節(jié)中提升答辯質(zhì)量到了這個(gè)階段系統(tǒng)已經(jīng)能用但這個(gè)時(shí)候恰恰是拉開(kāi)差距的時(shí)候。很多普通項(xiàng)目只能演示正常流程你的系統(tǒng)可以演示以下這些細(xì)節(jié)重復(fù)選課提示同一學(xué)生重復(fù)提交同一門課返回明確錯(cuò)誤信息“你已選過(guò)該課程”學(xué)分超限校驗(yàn)選擇課程后已選學(xué)分總和超過(guò)上限給出提示并阻止課程時(shí)間沖突檢測(cè)課程表里有 class_time 字段選課時(shí)循環(huán)比較已選課程發(fā)現(xiàn)時(shí)間重疊就報(bào)錯(cuò)容量不足提示熱門課程剩余 0 時(shí)前端按鈕置灰后端再次校驗(yàn)。每個(gè)細(xì)節(jié)都對(duì)應(yīng)論文里的一小段“異常情況處理與分析”加起來(lái)內(nèi)容量就足夠撐起核心章節(jié)了。5. 并發(fā)搶課、緩存穿透與事務(wù)一致性被追問(wèn)最多的技術(shù)點(diǎn)選課系統(tǒng)的“技術(shù)含金量”很大程度上體現(xiàn)在高并發(fā)場(chǎng)景。答辯老師只要聽(tīng)說(shuō)“選課”大概率會(huì)問(wèn)一句“如果幾百人同時(shí)搶一門只有 50 個(gè)名額的課你的系統(tǒng)會(huì)不會(huì)超賣”這個(gè)問(wèn)題回答得好項(xiàng)目檔次能明顯不一樣。5.1 為什么不能只靠“先查再更新”最簡(jiǎn)單的選課邏輯是Course course courseMapper.selectById(courseId); if (course.getSelectedCount() course.getCapacity()) { courseMapper.increaseSelectedCount(courseId); selectionMapper.insert(selection); return 選課成功; }這段代碼看起來(lái)沒(méi)問(wèn)題實(shí)際上在并發(fā)環(huán)境下問(wèn)題很大。兩個(gè)請(qǐng)求同時(shí)查出selectedCount49都滿足小于容量 50 的條件然后兩個(gè)請(qǐng)求都執(zhí)行了increaseSelectedCount最終 selectedCount 變成 51容量被突破。這就是經(jīng)典的并發(fā)超賣問(wèn)題。解決辦法就是我前面提到的那條“帶條件的 UPDATE”UPDATE course SET selected_count selected_count 1 WHERE id #{courseId} AND selected_count capacity;同時(shí)選課記錄插入要在同一個(gè)事務(wù)里并且啟用適當(dāng)?shù)臄?shù)據(jù)庫(kù)隔離級(jí)別。如果你用了 Redis也可以把課程剩余容量緩存到 Redis 里選課前用 Lua 腳本做扣減再同步到數(shù)據(jù)庫(kù)但這對(duì)畢設(shè)來(lái)說(shuō)有點(diǎn)重了。這里更推薦把“數(shù)據(jù)庫(kù)樂(lè)觀更新”作為主方案把 Redis 方案作為論文里的“優(yōu)化與展望”來(lái)寫(xiě)。5.2 緩存穿透課程列表接口的隱形瓶頸選課高峰期課程列表頁(yè)會(huì)被反復(fù)請(qǐng)求。如果不加緩存每次刷新都打到數(shù)據(jù)庫(kù)課程表數(shù)據(jù)量一大數(shù)據(jù)庫(kù) IO 就會(huì)成為瓶頸。最常見(jiàn)的做法是使用 Redis 緩存熱門課程列表String cacheKey course:list:hot; ListCourse hotCourses redisTemplate.opsForValue().get(cacheKey); if (hotCourses null) { // 去數(shù)據(jù)庫(kù)查然后寫(xiě)入緩存設(shè)置過(guò)期時(shí)間 }這里容易忽略的是緩存穿透問(wèn)題如果某個(gè)課程 ID 根本不存在請(qǐng)求仍然會(huì)每次都穿過(guò)緩存去查數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)壓力依然很大。解決方式也很簡(jiǎn)單——空結(jié)果也緩存幾分鐘或者用布隆過(guò)濾器攔截不存在的 ID。畢設(shè)系統(tǒng)里用“空值緩存”就夠了布隆過(guò)濾器可以作為論文里的進(jìn)階點(diǎn)提一句。5.3 事務(wù)回滾與異常處理的配合選課失敗有很多種原因但 Service 層代碼如果不加事務(wù)可能會(huì)留下臟數(shù)據(jù)。正確做法是在選課 Service 方法上標(biāo)注Transactional然后在業(yè)務(wù)校驗(yàn)失敗時(shí)拋出RuntimeException或自定義業(yè)務(wù)異常讓事務(wù)回滾。有一個(gè)細(xì)節(jié)容易被忽略如果在事務(wù)方法內(nèi)部 try-catch 吞掉了異常事務(wù)是不會(huì)回滾的。比如Transactional public Result selectCourse(Long studentId, Long courseId) { try { // 校驗(yàn) 更新 插入 } catch (Exception e) { return Result.error(選課失敗); } }這種寫(xiě)法看似友好實(shí)際事務(wù)邊界已經(jīng)失效數(shù)據(jù)可能出現(xiàn)不一致。正確寫(xiě)法是把 try-catch 放在 Controller 層做全局異常處理Service 層只負(fù)責(zé)往外拋異常。Spring Boot 里可以用RestControllerAdvice統(tǒng)一捕獲業(yè)務(wù)異常返回 JSON 提示這樣代碼既干凈事務(wù)也安全。如果答辯的時(shí)候能自己主動(dòng)講出這個(gè)點(diǎn)老師基本不會(huì)再追問(wèn)“事務(wù)失效為什么沒(méi)處理”。6. 真實(shí)答辯中必定被追問(wèn)的四個(gè)問(wèn)題系統(tǒng)做完進(jìn)入答辯環(huán)節(jié)很多同學(xué)最擔(dān)心老師問(wèn)“框架源碼”“算法”之類的深問(wèn)題。實(shí)際上對(duì)于選課系統(tǒng)這種題目老師更在意的還是“你自己有沒(méi)有真正理解系統(tǒng)”下面四個(gè)問(wèn)題出現(xiàn)的頻率非常高提前準(zhǔn)備好比臨時(shí)背書(shū)強(qiáng)得多。6.1 你選課的時(shí)候怎么處理“超選”情況這個(gè)問(wèn)題千萬(wàn)不要只說(shuō)“用事務(wù)”要把事務(wù)和并發(fā)控制結(jié)合起來(lái)說(shuō)??梢詤⒖歼@條回答思路“選課的核心操作是一句帶條件的更新 SQLUPDATE course SET selected_count selected_count 1 WHERE id ? AND selected_count capacity這條 SQL 的原子性由數(shù)據(jù)庫(kù)行鎖保證。當(dāng)多個(gè)請(qǐng)求同時(shí)到達(dá)時(shí)只有一個(gè)請(qǐng)求能成功執(zhí)行更新語(yǔ)句影響行數(shù)是 1其余請(qǐng)求影響行數(shù)為 0判定為容量已滿。同時(shí)選課記錄的插入和課程容量的更新放在同一個(gè)事務(wù)里如果插入失敗整個(gè)事務(wù)回滾容量不會(huì)被錯(cuò)誤占用?!边@條回答涵蓋了并發(fā)控制、事務(wù)邊界、數(shù)據(jù)庫(kù)鎖三個(gè)知識(shí)點(diǎn)已經(jīng)超過(guò)多數(shù)畢設(shè)項(xiàng)目的深度。6.2 課程表容量字段和選課記錄數(shù)會(huì)不會(huì)不一致老師說(shuō)這句話是在暗示你可能只改了其中一個(gè)表?;卮鹚悸肥敲看芜x課成功先更新 course 表容量再插入 selection 記錄兩者在同一個(gè)事務(wù)里。如果要進(jìn)一步保證一致性可以在 selection 表上建觸發(fā)器或者定期跑一個(gè)對(duì)賬定時(shí)任務(wù)將課程表的 selected_count 與 selection 表的實(shí)際記錄數(shù)比對(duì)。定時(shí)任務(wù)可以用 Spring 自帶的Scheduled注解實(shí)現(xiàn)這也是一個(gè)小加分項(xiàng)。6.3 學(xué)生退課后學(xué)分和容量怎么釋放退課是選課的逆操作仍然要放在事務(wù)里刪除或標(biāo)記 selection 記錄把 course 表的 selected_count 減 1。這里有個(gè)業(yè)務(wù)選擇問(wèn)題——退課是物理刪除還是邏輯刪除。我的建議是使用邏輯刪除加一個(gè) status 字段標(biāo)記“已退課”這樣學(xué)生和老師都能看到歷史操作記錄教務(wù)端也可以做審計(jì)論文里不用花太多篇幅解釋“為什么刪不掉數(shù)據(jù)”。6.4 密碼你是怎么存儲(chǔ)的這問(wèn)題幾乎是畢設(shè)必問(wèn)千萬(wàn)不要回答“明文存數(shù)據(jù)庫(kù)”。最低限度也要用 MD5 加固定鹽。稍微進(jìn)階一點(diǎn)可以用 Spring Security 自帶的 BCryptPasswordEncoder這個(gè)做法既能保證安全又能在論文的技術(shù)選型里寫(xiě)一句“使用 BCrypt 哈希算法對(duì)用戶密碼進(jìn)行加密存儲(chǔ)”比空談“重視安全”有說(shuō)服力得多。我在幫某高校的學(xué)弟排查選課人數(shù)統(tǒng)計(jì)不準(zhǔn)的問(wèn)題時(shí)發(fā)現(xiàn)他代碼里兩個(gè) Service 方法各開(kāi)了一個(gè)事務(wù)第一個(gè)方法更新課程容量提交后第二個(gè)方法插入選課記錄時(shí)才報(bào)錯(cuò)導(dǎo)致容量被扣了但選課記錄沒(méi)生成。當(dāng)時(shí)我讓他把所有數(shù)據(jù)庫(kù)操作合并到一個(gè)事務(wù)方法里再把業(yè)務(wù)校驗(yàn)全部前移問(wèn)題立刻解決。很多時(shí)候不是代碼不會(huì)寫(xiě)而是事務(wù)邊界沒(méi)劃清這類問(wèn)題自己在測(cè)試階段又很難暴露因?yàn)閱斡脩舨僮鞲究床怀霾l(fā)問(wèn)題。如果你也在做類似項(xiàng)目建議測(cè)試階段至少開(kāi)兩個(gè)瀏覽器窗口同時(shí)登錄兩個(gè)學(xué)生賬號(hào)用同一門課做容量臨界值測(cè)試能復(fù)現(xiàn)不少隱藏問(wèn)題。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美狠狠| 一区=区三区视频| 91热情品| 欧美日产国产在线成人第一区| 天天爽天天| 美欧色综合| 国产成人综合网| B049AV在线播放| hd成人一区二区在线| 欧美丝袜中文字幕07在线| AⅤ片水多多| 久操精品网| 中文字幕诱惑制服人妻丝袜美丝袜美| 大香蕉久久| 亚洲色诱惑| 色综合一本| 亚洲欧美日韩精品久久久一区二区| 91日日| 亚洲第一页第二页激情| 欧美久久婷婷| 性爱乱伦网址| 91强在线播放| 亚洲激情AV| 骚妻少妇精品性色无码四色A V| 午夜视频久久久久一区| 日韩精品99久久久久久中文字幕| 国产精品爽爽va在线观看98| 九九九九精| 久久久久久夜夜夜夜夜| 黑丝自慰喷水网站| 亚洲一区日韩精品中文字幕| 国产日韩中文字幕欧美| 狼人综合婷婷激情四射 | 老司机深夜18禁污污网站| 欧美日韩国第一区| 深爱激情五月天| 亚欧精品久久久久久久久久久| 欧美 精品国产制服第一页| 欧美少妇高潮久久91| AAA久久| 中国一级操逼视频| 久操网址| 操逼片中文| 国产在线视频二区| a片自拍直播视频| 天久久久噜噜噜久久国产精品爽爽 | 狠狠狠狠狠| 久久香蕉国产线看观看猫咪av| 亚洲无码国产探花在线观看| 亚洲成人黄色在线观看| 51国产午夜精品视频| 五月天激情四射| 日韩中文字幕人妻视频| 黑人操一区二区| 午夜国产乱伦视频| 乱伦av麻豆| 操逼日韩无码| 嗯嗯啊中文字幕| 另类 日韩 熟女| 日本操逼视频导航| 熟妇熟女视频一区二区三区| 97色五月天完| 亚洲欧洲色情高清| 狠狠入| 亚洲在线91| 欧美性生活男人的天堂| 日本国产欧美高清在线| 久热久| 激情小说激情视频| 国产在线观看一区二区三区| 成人亚欧免费视频| 97干在线视频| www四虎| 欧美日韩国产电影| 男生通女生屁股| 亚洲成人贴图| 日韩操逼HD| 黄片免费看黄片免费看| 大香蕉免| 97国产精品一区| 操www| 91人人臊| 插入粉嫩少妇视频| 色激情综合网站| 日本一区二区三区四区免费观看| 黄色AV影视| 天天超级碰碰碰| 亚洲欧洲自拍| 中文字幕国产| 久久一二三四不卡 | 好爽免费视频,| 久久97| 99日精品欧美国产| 91高跟美女在线播放| 啊啊啊爽爽| 人人摸人人入| 国内操逼视频二区| 波多野42部激情无码喷潮| 狼人综合婷婷激情四射| dy888午夜老子影视达达兔| 96久久精品一二三区色欲| 顶级少妇BT天堂| 玖玖久久久| 97色婷婷| 成人乱人伦一区二区| 精品夜夜澡人妻无码| 丝袜美腿91| 操一区| 日亚韩精品视频二区三| 九九九九一级| 大香蕉九九| 台湾佬大香蕉| 精品夜夜澡人妻无码| 美女被啪到深处抽搐视频| 九九九九88| 日韩精品人妻| 18岁禁 茉莉成人久久| 最新岛国大片| 97超碰欧美| 老鸭窝亚洲毛片| 粉嫩av在线| 强上我不卡卡| 自拍偷拍2025在线观看| 日本人妻最新在线中| 97精品视频免费| 欧亚乱色熟女一区二区| 91国产精品熟女| 起碰97| 久久宗合亚洲| 国产少妇与亚洲av| 精品一区二区亚洲国产| 欧美大香蕉久| 超碰在线免费一区二区三区| 射丝袜高跟鞋99| 国产精品免费美女视频| 国内偷自视频区视频综合| 天天操妹子| 老鸭窝黄色视频网站| 成功精品影院| 日本色婷婷| 日韩在线观看字幕精品| 三级日韩一区二区三区| 伊人欧美大香蕉视频| 国厂麻豆77q4| 久久国模av| yazhououmeizongya| 久久久999网站| 五月婷婷色| 亚洲暴力强奸AV| 国产精品视频自拍在线| 亚洲一区二区在线观看91| 高清不卡国产| 激情综合色| www.人人摸在线视频| 久操热线| 97免费视频网| 99色色网| 精品女人999| 九九热精品| 亚洲中文字幕三级在线| 日本五十路熟女一区二区| 操逼天美3区| 国产精品爽爽v| 久久精品国产亚洲AV无码电影| 天天躁日日躁成人字幕aⅴ| 欧美专利1区2区3区4区5区免费| 亚洲激情在线一区二区| 99色视频| 人人妻人人色| 欧美线天码中字| 夜夜欧美 | 爱丝福利| 久久这里只精品免费福利| 国产日韩精品suv| 国产无码高清操逼视频| 国产午夜无码片在线观看影视| 少妇xx精品| 青娱乐日韩无码| 嗯嗯嗯啊啊啊在线免费观看| 日韩av色图| 亚洲影视综合| 日韩激情中文字幕有码| 欧亚乱色熟一区二区三四区| 天天草AV| 国产日韩区| 九久9热| 日韩78m视频| 牛牛操视频逼| 97操97干| 玖玖人人爱| 青娱乐国产剧情av一区| 91熟女综合| 天天做日日做| 国产农村妇女毛片精品久久| 天天插天天插| 日韩国产不卡在线视频| 色婷婷一区二区三区久久午夜| 精品一区二区人妖| 国产精品久久久久久久久久久久久久吹| 久久香蕉综合一本到3atv| 91网站18+| 嗯啊不要在线| 97精品熟女少妇一区| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 欧美日韩精品国产91| 国产av又色又爽又黄| 中文字幕av片| 久久久久久久久久久久欧美日| 欧亚成人在线视频| 成人A片男人的天堂| 中文字幕一区二区三四五区日日骚| 久操电影网| 天天日天天舔| 粉嫩av一区二区三区天美传媒| gogogo免费高清看中国国语| 久悠悠av| 夜夜欢天天干| 婷婷91| 欧美伦乱爱| 日韩强奸av| 屌逼麻豆| 中国AAAAAA黄色片| 91麻豆天美传媒HD| 日本免费一级AAA大片器| www.色五月| 久久香蕉国产线看观看亚洲女人| 六月天婷婷| 国产日韩中文字幕欧美| 一区二区三区四区免费视频| 欧美淫乱视频| 欧洲色色| 欧美日韩操逼动图| 久久精品视频28| 天天干天天操天天操夜夜操天天操| 人妻在线臀日韩| 国产精品久久久久无码Av网曝门| 校园春色中文字幕AV| 探花一区在线| 少妇贴图| 男女性扦B| 天天爽天天| 无码精品久久久久久亚洲| 亚洲人妻熟妇三十三区| 亚洲欧洲小说图片视频| 亚欧精品久久久久久久久久久| 国产成人 综合亚洲 天堂| 亚洲 欧美 色图| 日日躁夜夜躁狠狠躁超爽| 欧美,亚洲,日韩,v,天堂,手机在线观看| 午夜免费视频1000| 亚洲日韩一区电影| 亚洲成人av色网| 婷婷丁香六月| 日韩女优中文字幕| 啊啊好多水| 人妻插插人妻人| 综合亚州欧美| 男人天堂.AB| 天天综合网在线91| 午夜精品99久久久久传媒| 欧美92| 97玖玖超碰| 青娱乐91| 日韩无码人妻| 天天夜夜rb| 色噜噜人妻av中文字幕| 一牛一区二区三区久久| 黑白配性爱AV成| 性爱av在线免费观看| 免费农村成人少妇人妻Aa一区二区视频| 久久青娱乐| 开心五月天激情网| 国产精品久久久久久久久久久久久久久| 精品视频一区二区| 丁香五月影院| 日日夜夜免费| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 视频国产精品未满十八禁止在线观看| 国产剧情一区在线观看| 可免费观看的av毛片中日美韩| av资源在线观看少妇| 精品十八在线观看| 7月婷婷综合| 国产精品麻豆成人av| 天综合网欧美| 国产综合操逼高清| 偷拍亚洲| 久射吧| 婷婷五月天成人| 免费一级精品啪啪视频| 青草影院内射高潮| 偷拍伦理视频| 欧美麻豆成人同性GⅤ在线| 亚洲精品熟妇1区2区3区。| 精品网站9999| 91精品啪在线观看国产城中村| 97久久超碰国产精品| 欧美日本天堂| 国产麻豆福利av在线播放| 超碰97久久| 久久人妻一区二区三区高清 | 国产美女自拍视频| 欧美少妇一区二区三区| 激情接吻视频久久久久久| 亚洲国产熟妇综合色专区| 国产第11页| 日日日啊啊啊| 黄色污污污污污污网站| 久久亚洲AV无码专区首页| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 久久久久久九九九九-美女久久久久久久-成人AV | 任我爽在线视频免费观看| 天天91~综合入口| 婷婷亚洲综合| 国产91精品福利在线| 人人干人人操人人爱| 欧美成人免费在线观看| 久久久久久十| 国产熟女自拍| 97精品97久久| 欧美亚洲20p| 97色妞| 美女久久久久久久| 最新亚洲风情电影| 嗯……啊…嗯嗯…啊…好舒服| 日本理论在线| 激情五月婷婷| 久久九九综合| 亚洲av在线免费观看| 久久嫩草国产成人一区| 麻豆久久久久久久久丝袜 | 六月婷婷综合| 久久久久无码| 91挑色欧美| 国产精品乱码久久久久久久| 国产又粗又长又大的视频| 日韩大香蕉AV影片| 超碰成人人人爽人人爽| 国产真实子伦对白| 草草影院日本第一页| 亚洲男人天堂Av| 日韩亚洲美女一区久久| 热久日综合| 一起草视频在线| 97在线亚洲| 久久9久| 一本精品日本在线视频精品| 日韩性爱再线视频| 一区二区三区四区五区高清无码永久视频| 中文字幕国产精品1区| 天天综合香 ld视频| 日韩欧美三级| 97在线视频观看网站| 伊人激情| 美女天天干| 最新亚洲人成网站在线影院| 日本一二区免费| 亚洲精品久久久久久| 秋霞一级A片黄色视频| 日本成人A片免费看| 超碰精品在线| 99热欧美| 巨爆乳肉感一区二区三区竹菊影视| 国产亚洲 中文欧美久久| 综合激情一一91| a片 xxxx受爽视频| 日韩AV熟女乱伦| 91美女视频电影| 一级特黄aaa大片在线观看成人一级片在线观看 | 99九九精品| 亚洲综人| 熟女乱伦A| 日本最新免费韩国1区2区视频播放| 中文字幕av亚洲精品| 欧美激情综合色综合啪啪五月| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 免费精品AB| 婷婷精品久久av影视| 成人国产视频在线观看| 国产极品美女高潮无套在线观看| 国产亚洲国产超碰| 亚州熟妇精品| 久久91精品国产9丨久久分亭| 青青草在线成人视频| 999熟女精品| 黄片色区软件| 午夜福利久久久噜久噜久久综合| 亚洲黄色AV电影| 嗯啊抽插大香蕉网页| 在线五区| 婷婷香蕉| 国产一区二区二区按摩精品啪视频| 亚洲激情四射| 超碰导航97| 日韩三级一区 | 亚洲第二页| 乱伦3P视频| 懂色影视久久| 中文字幕制服诱惑| 国产高清1234区| 92性色国产午夜福利在线661| 中美日韩毛片| 欧美精品久久久久久久久88| 99re99在线视频| 综合网欧美在线| 日本影视久久免费| 久久人妇| 99成人| 黑人免费福利视频| 加勒比海成人视频网 | 欧美特黄视频网站| 黑丝内射一区二区三区| 蜜乳成人AV| 九九人妻| 60秒免费小视频| 色欲日韩欧美在线一区| 91性片| 亚洲偷拍欧美激情| 精品欧美乱码久| 亚洲色图20p| 午夜国产综合视频在线观看 | 国产一区二区欧美日本| 国产操偷| 国产精品岛国片在线观看| 国模少妇一区二区三区| 大香蕉欧美| 天天干一区二区| 日本成熟少妇A∨网站| 中文 人妻 制服| 久久AV无码AV| 青青草天天亲夜夜操网| 国产少妇与亚洲av| HEYZO高无码国产精品227| 精品一区二区三区四区外站| 亚洲日韩AV视色| 全球成人中文在线| se01国产在线视频| 久久亚州精品成人Av无| 91操操操操| 欧美综合亚洲综合| 日夜精品| 超碰在线人人射| 欧美日韩午夜精品一区二区三区| 久久精品色欧美aⅴ一区二区| 激情五月激情综合网| 91色插| 欧美日韩国产人人| 国产无码三级视频在线观看| 免费超碰97久久| 国产探花日韩援交| 怡春院久久| 18啪啪手机免费性爱| 操曰本熟女| 久久日本熟妇熟色高清| 久艹伊人精品综合在线| 久妇网| 大香蕉碰碰| 97超碰碰碰| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 天天天操天天天爱| 久久精品人体| 成人AV素股で擦久久| 麻豆天美国美国产| 欧美在线色图| 天堂资源站| 97操综合| 99久久99久久免费精品蜜臀| 日夜精品| 26uuu性| 五月婷视频| 中文字幕一二三区| 欧美 日韩 婷婷 五月| 97干综合网| 伊人九九| 伊人五月天激情| 久久伊人五月天| 美女淫穴| 日夜精品| 亚洲av综合色区无码一| 超碰成人免费| 91丨精品丨国产丨丝袜| 97色操| 日本久久女同性恋视频| 国产区91柔拿会所技师| 99热免费| 久久九九热| 中文字幕日韩电影人妻| 色播丁香| 熟妇高潮一区二| 啊啊啊啊啊啊在线| 手机在线看片免费人成视频| 国产怡红院| 欧美性爱超碰97| 激情小说图片亚洲首页| 大香蕉九九| 九九无码久久精品视频| 亚洲综合在线91| gogogo免费高清看中国国语| 1024亚洲中文字幕久在线看片你懂的| 久九九九九九九热| 中文字幕激情小说| 四虎884a| 日韩成年人性爱视频| 免费观看啪视频| 欧亚韩国999| 免费视频一二三区| 日本色色视频网站| 成人综合网 欧美| 日韩啊V| 亚洲最大的黄色电影网站。| 97亚洲在线| 亚洲色人妻综合| 99精品人妻| 18精品一区| 操逼日批| 欧美同性恋 的搜索结果 - 91n| 人妻偷拍一区二区三区| 日韩精品怡红院| 欧美一级久久久丰满| 热久久91婷婷| 精品少妇人妻av久久免费| 无卡一区=区| 色青青久久影视| 美女十八禁| 香蕉在线一区二区三区| 亚洲一级性爱视频免费看| 操逼999| 亚洲天堂综合AV| AV网站高清无码在线观看| 国产丰满少妇久久久精品影院| 国产a片操逼| 97国产精品一区二区传媒公司| 久久久艹艹艹| 妺妺跟我一起洗澡没忍住| 精品一二三区四视频| 999久久久精品国产| 中文字幕日韩电影人妻| 欧美在线天堂| 91精品免费| 东京成人一区| 97久久资源| 久草视频分类在线| 人人妻人人爱人人玩| 日日AAvv| 欧美性综合| 午夜性| 国产情侣自拍在线播放| 人人贴人人摸| 2021国产成人精品久久| 91女优在线观看 | 黄色av片三级三级三级免费看| 啊啊啊草死我| 久久久久九九九| 青青久日| 97国产精品久久久久| 艳尻美人妻| 色九九九综合| 素颜老阿姨乱情色| 亚洲精品人伦一区二区| 激情五月天校园春色网| 国产欧美后入| 呻吟 欧美 日本 中出| 俺去久久| 色婷婷视频| 欧美嫩性色| a男人的天堂| 好屌色综合| 久久是精品| 男人天堂2030| 青青青国产手线观看视频2| 国产精品麻豆成人av| 欧美精品另类人妖xxxx| 99在线精品视频| 色五月网址| 青青草亚洲一区| 中文字幕综合人妻| 欧洲色综合| 欧美片第一页| 无码自拍SM| 啊啊啊啊啊啊在线看| 免费看污网址| 亚洲欧美不卡线| 日韩图区 偷拍| 蜜桃久久综合视频| yiren97| 少妇的嫩逼图片| 亚洲AV无码翔田千里网站| 大香蕉五月天| 蜜臀在线看片| 久久久久久9| 亚洲美女自拍偷拍视频| 欧美大香蕉97| dy888午夜老子影视达达兔| 91影库| 91视频观看网站| 加勒比综合88| 亚洲91在线播放影院| www鬼畜国产男人的天堂| 国产99999久久精品| 亚洲密乳AV| 国产欧美一区二区| 欧美亚洲系列| 国产热RE99久久6国产精品首| 日韩欧美视频青青| 欧美熟妇色| 婷婷伊人| 欧洲亚洲人妻无码高清久久三区四区| 日韩精品免费高清视频在线| av亚洲天堂资源网站| 成人羞羞视频国产| 久久久人体| 搡老女人老91妇女老熟女| 国产小u女在线观看| 亚洲永久永久永久永久一级一级一级精品 | 午夜九九| www.久久99| 亚洲高清综合网| 久久婷婷五月天| 9997se| 99九九久久| 欧美操逼录像国产黄色国产| 人妻丝袜无 码视频专区| 欧美色性情| 日日干夜夜操视频h| 91伊人久| 国产伊人精品在线| 色穴精品| 色婷婷九月天天综合| 日日干日日操五月天伦理视频| 人人操人人肉久久精品| 国产乱码精品久久久久久| 无码免费精品高清| 亚洲在线网站| 伊人性在线视频| 老师充足的奶水小说| 人妻99p| 操操操五月天婷婷丁香影院| 91美女视频。| 99国内熟女露脸视频| 理论久久婷婷网 8| 性色av大全| 999精品久久久久久久| 东北女人| 99热免费精品| 加勒比无码一区二区三区| 国产亚洲日韩在线三区黑人| 2017亚洲天堂| 干B网| 色香91| 大香蕉色欲AV| 1204金沙人妻懂旧版免费| 国产天天骚| 嗯啊不要在线| 欧美日韩性感| www.婷婷五月天| 丁香久久| 日韩成人免费电影| 午夜丁香婷婷| 粉嫩av在线一区二区| 久久久久久久强迫| 国内亚洲高清无码| 91无码西班牙视频在线| 亚洲福利影院一区久久| 丰满人妻一区二区三区免费| 国产日韩怡红院| 天天看片青娱乐| 综合久久9| 91天天看| 综合在线导航一区| 亚洲中文日韩精品| 激情婷婷| 狠狠躁AV| 久久天堂网| 亚洲久久久久| 国产又黄又爽又刺激久久久久久| 中文字幕一区二区在线日韩精品| 国产精品干干干| 日本综合色图| 在线综合 亚洲 欧美中文字幕| 日日骚 av| 美女淫穴| 国产精品久久久午夜夜伦鲁鲁| 一区二区三区一亚洲中文字幕、综合区灬 | 天堂九九九九九九九九九| 天天日天天搞天天干| 男人亚洲天堂| 精品人妻一区二区三区四区石在线 | 可免费观看的av毛片中日美韩| 国产精品96| 成人无码电影在线观看网| 欧美成人午夜免费福利785| 伊色综合天堂色97| 欧美日韩少妇色情| 丝袜AV一区二区三区| 国产色综合亚洲色综合吹潮| 国产强奸无码乱伦| 天无日色综合| 18禁网站在线播放| 伊人丁香五月婷婷| 日日操丁香五月天| 欧美亚洲综合色| 夜夜爽夜夜摸夜夜操免费视频| 国产 大胆 对白| 国产强奸无码乱伦| AV 少妇 人妻 偷拍| 中文熟女五十乱码在线| 曰韩操B| 色播综合| 易易A毛视频| 丁香五月综合| 青娱乐妇女性生活| 亚洲中文字幕97久久精品少妇 | 强奸乱亚洲| 熟妇女伦乱视频视频| 艹比视频国产精品| 91精品成人| 国产精品人妻无码久久久老鸭窝| 日韩在线97| av中文在线| 国产又猛又粗又爽又黄| 最新日产中文在线麻豆| 久久久久9久久久久| 亚洲九月丁香| 国产精品第一区第一页| 国产综合久| 国产av热热色| 丰满翘臀美女影院视频| 操逼日批| 91欧美在线| 2020中文字幕在线| 97干天天| 国产日韩精品一区二区三区| 中字乱伦AV| 不卡av在线中文字幕| 亚洲人妻久久| 91日韩网站| 亚洲天天精品| 91国产美女丝袜足交精品视频| 国产一区二区三区中文字幕| 精品国产片亚洲一区| 久久riav中文精品| 欧美不卡在线一区二区| 九九九九精品九九九九| 中文欧丝袜诱惑| 一牛一区二区三区久久| a男人的天堂| 狠久久| 亚洲av总站| 97超碰美国| 国产无马av| 亚洲熟女av日韩熟女| 1000部熟女视频在线观看| 999精品久久久久久久| 亚洲图片 欧美电影| 亚洲综合色在线| 亚洲日韩熟女人妻高清在线| 欧美熟女丝袜| 亚洲drav色图| 亚洲国产蜜臀系列在线观看| 97频视在线| 日韩97视频| 激情文学小说一区二区 | 久久精品国产96精品亚洲拳交| 少妇xx精品| 国产精品久久久无码AV网站| 3d成人精品一区二区| 国产熟女乱论| 久久久国产成人一区二区三区在线 | 可以在线观看的黄色网址| 亚洲一区二区三区不卡国产欧美| 日韩簧片免费看| 日韩激情啪啪啪| 日韩欧美一级特黄大片| 亚洲福利中文字幕在线| 99热官网| 久久久久性熟视频| 二对二中文字幕。| 亚洲一二三| 亚洲情色综合网| 91热热色| 人人操人人摸人人骑| 伊人网青青| 久久精品中文字幕无码l| 91 亚洲 欧美 日韩 国产 综合| 五月婷婷爱六月丁香色| 久操九九九九| 夜夜人妻爽| 久久97超碰香蕉| 亚洲中文字幕一区二区| 男女一进一出视频久久| 再深点灬舒服灬太大了添视频| 国产综合网站在线播放| 婷婷丁香六月天| 亚洲影院小综合| 日韩人妻丝袜美腿中文| 亚洲色图A| 人人操 欧美| 国产精品自拍欧美在线| 久久黄色网址| 9 9无尺码天堂网| 在线中文字幕视频| 免费精品国偷自产在线在线| 手机在线视频国内精品| AV九九| 一区二区蜜臀| 久久人妻熟女一区二区| 精品人妻1区| 色综合久久888| 夜夜国产一区| 男人天堂2019| 国产亚洲日韩在线三区黑人| 天天爽爽爽爽| 精久久久| 日韩中文字幕国产| 九九热视频在线观看| 国产精品视频| 91东北熟女| 色婷亚洲五月在线观看| 18岁禁 茉莉成人久久| 91爱网| 国产超碰| 男人的天堂激情| 久久精品操| 蜜桃视频成a人v在线| 久久天天性久久伊人| 91爆操视频| 国产欧美伊人| 午夜操操操| 久草国产在线视频| 黑操B| 亚洲狠| 精品一区二区成人动漫| 最新av在线| 免费αV在线视频| 青草青青久久久久久国产| 亚洲欧美内射| 久久三| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 在线观看精品国产免费| 夜夜骑天天燥| 中文字幕精品一区二| 中文字幕 av v| 欧美天天搞| 久久香蕉网| 97精品视频在线播放| 51一区二区三区| 日韩天天本| 日本欧美中文字幕| 97干日韩| 国产偷人伦激情在线观看| 婷婷色色五月| 久热热| 国内91熟女人妻丝袜天天精品视频在线 | 欧美精品1区2区3区| 久操| 大香蕉五月天婷婷| 久久蜜桃一区二区| 国产亚洲在线观看| 九九九九九九九九九国产精品| 99热最新| 热G综合热G中文| 中文字幕一区日韩精| 日本久久久久久久久久| 九九AV| 加勒比海色香蕉婷婷| 亚欧美天堂在线| 国产精品白丝在线播放| 日韩精品人妻中文字幕久久久| 18禁在线视频| 999 久久久| 91足交| 人妻天天爽夜夜爽2| 日韩人妻一区二区精品| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 东京热大香焦| 亚洲aV性爱| 三四中文字幕| 蜜臀精品1区2区| 黄色片,com| 少妇特黄一区二区三区| 国产熟女免费观看久久| 9久9久| 人妻天堂综合网| 国内毛片欧美香蕉精品| 东京热不卡视频| 亚洲AV无码国产成人| 久久老熟女| 色婷婷在线视频精品导航| 国产亚洲精品农村妇女| 蜜汁欧美| 日韩在线人妻网站| 大色综合网| 97在线观看免费视频| 91九久| 思思热影视| 伊人91| 欧美日韩另类字幕中文| 人妻少妇一区二区| 上海一级黄片| 蜜臀视频网站| 东北女人的毛片| 综合色色网| 国产传媒av天美传媒在线| 四季AV一区二区凹凸精品小说| 亚洲AV成人无码久久精品播放| 91bbb| 亚洲系列欧美| 美女啊啊啊啊pc| 福利在线观看一区二区| 免费精品无码一级毛片牛牛影视| 黑人与人妻| 熟妇高潮一区二区免费视频| 亚洲精品亚洲人成在线麻豆| 亚洲影院成人| 国际精品久久久| 97视频7| 欧美少妇熟女| 欧美黄色片AAAAA| 国模私拍一区二区三区神乳| 蜜臀久久久99久久久久| 亚洲综合伊人| 国产精品午夜成人福利| 蜜桃久久一区二区三区| 久久久免费的精品| 浓厚中出中文字幕在线| 干B网| 男人天堂无码| www.男人天堂| 激情文学欧美| 白丝1区2区3区| 婷婷六月天| 亚洲综合一区二区| 亚洲无码免费看| 18禁无码永久免费无限制| 亚洲丝袜诱惑| 校园春色亚洲色图| 亚洲熟女综合网| 热99re69精品8在线播放| 精品国产AV一区天美传媒| 97色综合中文网| 超碰在线一区二区| 亚洲福利影院一区久久| 麻豆国产97在线| 一本色道久久天天射天天干| 第四色奇米影视777| 午夜.DJ高清在线观看免费7| 免费观看国产不卡av| 亚洲精品国产日韩无码AV永久免| 国产91丝袜 在线播放| 精品丰满熟妇人妻一区| 午夜福利 成人 91| 亚洲玖玖爱| 亚洲综合九| 天天日天天射天天干| 色五月69夫妻| 欧美超碰9798| 日韩在线AB| 男人天堂站| 欧美亚洲影视| 亚洲熟久久| 成人草草视频| 无码国产精品96久久久久孕妇| 久久久99免费| 亚洲码专区| 日韩AV电影网站| 久草婷婷| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 日日干夜夜欢| 亚洲 欧美 色图| 人妻干天天| 亚洲第一无码播放立川理惠| 亚洲老熟妇xxx| 黑人中出21连凳花野真衣| 亚洲综合夜色| 婷婷五月天激情四射| 日本性爰一道本| 99激情视频| 久操 高清| 蜜臀网址在线| 黑人美精品 A片| 久久婷婷视频| 日日黄色三级网站| 日韩一卡二卡三卡| 国产性久久久| 97WW精品| 一二三卡欧美日韩人妻免费精品| 久操97| 国产18精品亚洲精品| 欧美日韩淫加| 人妻久久| 太久视频| 国产精品制服丝袜中文字幕日韩一区二区三区| 久久精品视| 欧洲性爱无码区| 秋霞视频一区二区| 欧美日动态视频| 超碰色综合| 动漫爆乳3D奶水一区在线观看| 91jk色拍| 97久久网| 日本天天色| 久男人久久| 色欲三区| 三级片大波波| 中文字幕三四五区| 一级久久久久久久久久久| 狠狠干精品一二三四五六2022| 中文字幕福利视频一区二区三区在线观看| 亚洲成人在线高清| 97爱爱爱综合| 91亚洲影视| 亚洲欧美国产成人综合不卡| 99re69| 亚洲一区日韩精品| 天美av在线观看| 性欧美91| 毛片电影一区二区三区| 最新9久久久9免费视频| 亚洲性爱电影| 亚洲国产一级中文综合久久天堂在线免费观看| 欧美亚州综合网图片| 国产激情av女片自拍| 97这里只精品| 日韩人妻有码免费视频| 人妻无码后入| 国产精品亚洲色婷婷久久久| 神马久久久久眼| 中文字幕三四区| 久久久久久久一级黄色打同平台| 人人妻人人爽人人精品| 色小视频蜜乳| 青青草华人在线欧美在线| 国产 亚洲 丝袜 制服| 久草精品一区 | 91操人视频| 久久久久熟女| 六月色婷婷| 大香蕉中文在线| 夜夜爽爽爽| 日韩亚洲欧美中文字幕| 91九九九馒头| 五月丁香六月综合缴清无码 | 日韩精品在线视频,日韩精品……| 天天肏美女| 一级性爱视频免费在线| 97久久精品亚洲中六字幕| 国产精品无码成人精品| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 日本视频一区二区三区| 欧美中字不卡| 亚洲AV无码乱码在线观看性色| 综合熟妇一区二区三区| 久久久A∨| 天天看夜夜看日日干| 蜜桃视频一区二区三区在线观看| 777琪琪午夜免费A片| 走光一区92下载| 激情看片网站| 五十路熟女人妻一区二区在线观看| 美女露胸露奶头| 高清国产精品无码| 人人操人人精品影片| 天天爽天天干| 久久精品国产精品一区| 久久久久久9999| 激情久久久| 蜜臀在线视频| 天天内射| 日本色色色| 欧美传媒| 91精品少妇搡搡搡| 大香蕉伊人色偷偷在线| 操啊国产| 四季av一区二区凹凸精品小说 | 一级二级三级黑人无码| 夜夜嗨免费视频| 伊人影院中文字幕| 久久美女国产| 97免费视频在线| 精品乱码久久久久| 久久五月婷| 国产日韩色综合| 97鸡把在线视频| 天天天乱色综合全| 久操热| 免费自拍三级综合| 久久精品无码专区| 91精品成人| 丁香九月婷婷| 8x福利精品第一福利视频导航| 天天舔日美女视频| 久久精品老司| 五月丁香影视| 亚洲AV无码AV吞精久久久久| 男人精品区| 秋霞福利网| 欧美色图片91| 五月丁香激情啪啪| 亚洲国产欧美另类自拍| 国产精品国产精品国产| 九九免费影片| a人欧美综合天堂麻豆| 日韩三级一区| 亚洲黄网在哪免费看| 日本黄大片在线观看视频| 国产精品伦理| 大香蕉琪琪日本女优不卡| 99热97| 97色婷婷| 操逼网免费无码视频| 超碰国产精品久| 超碰午夜| 蜜臀久久99精品久久久久久酒店| 美熟女逼导航AV操逼| 日韩国产十八禁| 久久久久久久久久久人妻| 91人妻PORNY九色大屁股| 色噜噜精品一区二区三| 人人看人人插| 国产午夜精品理论片一二三区区| 综合亚洲欧美| 国产精品一区二区麻豆| 99re在线视频国产| 牛牛久久国产精品视频一二三| 91 丝袜在线| 五月黑AⅤ| 九九热在线视频| 韩国黄色片精品久久久| 亚洲午夜福利视频| 91成人久久| 凹凸视频在线观看伊人| 日韩性爱人人爱人人操| 内射小黄片| 国产亚洲日韩欧| 家庭乱伦国产精品| 亚洲国产一级黄色视频| 操逼操逼操| 久久综合九色综合欧洲98| 91精片| 婷婷超| 欧美大香蕉久| 国产野战露脸在线播放| 亚洲一区二区三区不卡国产欧美| 伊人网青青| 欧美91视频| 午夜AV人气不卡| 亚洲色色探花| 中文字幕123| www色日本| 亚洲成人免费在线| 中文字幕在线观看视频www| 色婷婷电影网| 97精品国产97久久久久久| 婷婷香蕉欧美在线一区二区三区 | 99久久国产精品免费高潮| 国产精品国产亚洲区艳妇糸列| 久久亚洲中文字幕视频| 天天懆天天日| 人人操,操人人| 综合色99|