久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

基于SpringBoot與Vue的高校選課系統(tǒng):高并發(fā)搶課與數(shù)據(jù)一致性實(shí)現(xiàn)

基于SpringBoot與Vue的高校選課系統(tǒng):高并發(fā)搶課與數(shù)據(jù)一致性實(shí)現(xiàn) 簡(jiǎn)介這份資源是面向高校計(jì)算機(jī)相關(guān)專業(yè)學(xué)生與Java開發(fā)學(xué)習(xí)者的畢業(yè)設(shè)計(jì)參考項(xiàng)目聚焦高校學(xué)生選課系統(tǒng)的完整實(shí)現(xiàn)方案可幫助讀者理解前后端分離架構(gòu)下的選課業(yè)務(wù)落地思路。項(xiàng)目后端以Java語言結(jié)合SpringBoot框架搭建數(shù)據(jù)庫采用MySQL 5.7持久層使用MyBatisPlus前端基于Vue.js與ElementUI構(gòu)建交互界面并通過Maven統(tǒng)一管理依賴整體遵循B/S模式瀏覽器即可訪問。壓縮包共695個(gè)文件約16.2MB其中131個(gè)java源文件承載核心業(yè)務(wù)邏輯98個(gè)vue文件對(duì)應(yīng)前端頁面組件另有xml配置、js腳本、css樣式、jpg與png圖片資源及sql相關(guān)文件等覆蓋從后端接口到前端展示的完整代碼結(jié)構(gòu)。系統(tǒng)涵蓋學(xué)生與教師賬戶維護(hù)、課程發(fā)布編排、選課執(zhí)行與沖突檢測(cè)、選課結(jié)果確認(rèn)查詢等模塊并支持教師上傳圖片、視頻等多媒體教學(xué)資源。目前已有74人學(xué)習(xí)適合需要選課系統(tǒng)賽題方案、代碼參考與架構(gòu)學(xué)習(xí)的技術(shù)人員。1. 選課系統(tǒng)為什么總在開學(xué)第一分鐘崩從標(biāo)題拆出真實(shí)戰(zhàn)場(chǎng)每年開學(xué)季教務(wù)系統(tǒng)崩上熱搜幾乎成了固定節(jié)目。學(xué)生掐著點(diǎn)刷新頁面轉(zhuǎn)圈選課按鈕點(diǎn)下去沒反應(yīng)等終于進(jìn)去了想選的課已經(jīng)滿了。這不是段子是很多高校教務(wù)處的真實(shí)壓力測(cè)試。基于 SpringBoot 與 Vue 的高校學(xué)生選課系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)本質(zhì)上要解決的就是這個(gè)問題在高并發(fā)搶課場(chǎng)景下保證課程容量不被超賣、每個(gè)學(xué)生的選課結(jié)果準(zhǔn)確、系統(tǒng)在壓力下不雪崩。這個(gè)標(biāo)題適合兩類人一是正在做課程設(shè)計(jì)或畢業(yè)設(shè)計(jì)的計(jì)算機(jī)專業(yè)學(xué)生需要一套能跑通、能講清楚技術(shù)選型理由的完整方案二是剛?cè)胄械?Java 工程師想通過一個(gè)真實(shí)業(yè)務(wù)場(chǎng)景理解 SpringBoot 后端與 Vue 前端的協(xié)作方式。選課系統(tǒng)看起來簡(jiǎn)單但它是典型的“讀多寫少、瞬時(shí)并發(fā)高、數(shù)據(jù)一致性要求嚴(yán)”的場(chǎng)景把這個(gè)問題吃透比做十個(gè)增刪改查的練手項(xiàng)目都有價(jià)值。我見過太多選課系統(tǒng)的實(shí)現(xiàn)停留在“能選就行”的層面結(jié)果一壓測(cè)就原形畢露。下面從架構(gòu)選型開始一步步拆到能復(fù)現(xiàn)的程度。2. 技術(shù)選型與項(xiàng)目骨架為什么是 SpringBoot Vue 而不是別的2.1 后端選 SpringBoot 的三個(gè)實(shí)際理由選型不是追新是算賬。高校選課系統(tǒng)的后端需求很明確快速開發(fā)、內(nèi)嵌容器部署、生態(tài)成熟。SpringBoot 在這三點(diǎn)上都是當(dāng)前 Java 生態(tài)里最穩(wěn)的選擇。第一自動(dòng)配置省掉了大量 XML。選課系統(tǒng)涉及數(shù)據(jù)庫、緩存、消息隊(duì)列、定時(shí)任務(wù)如果用傳統(tǒng) Spring光配置文件就能寫幾百行。SpringBoot 的 starter 機(jī)制把這些都封裝好了引入spring-boot-starter-data-redis就自動(dòng)配好連接工廠引入spring-boot-starter-web就自動(dòng)配好 DispatcherServlet。對(duì)于課程設(shè)計(jì)這種周期緊、人手少的場(chǎng)景省下來的時(shí)間可以花在業(yè)務(wù)邏輯上。第二內(nèi)嵌 Tomcat 讓部署變簡(jiǎn)單。傳統(tǒng) WAR 包要裝 Tomcat、配 server.xml、調(diào) JVM 參數(shù)SpringBoot 打成可執(zhí)行 JAR 后java -jar就能跑。配合 Maven 或 Gradle 插件構(gòu)建和啟動(dòng)一條命令搞定。我一般用 Maven因?yàn)楦咝-h(huán)境里 Maven 的教程和鏡像配置更普及。第三Spring 生態(tài)的中間件整合成本低。選課系統(tǒng)需要 Redis 做緩存和分布式鎖需要 RabbitMQ 或 RocketMQ 做異步削峰需要 MyBatis 或 JPA 做持久化。這些在 SpringBoot 下都有官方或社區(qū)維護(hù)的 starter版本兼容性由 Spring 官方 BOM 統(tǒng)一管理不會(huì)出現(xiàn)“這個(gè)庫依賴那個(gè)版本、那個(gè)庫又沖突”的玄學(xué)問題。注意SpringBoot 版本不要盲目追最新。3.x 要求 Java 17 起步很多學(xué)校機(jī)房還停留在 Java 8 或 11。如果課程設(shè)計(jì)環(huán)境不可控選 SpringBoot 2.7.x 更穩(wěn)妥它支持 Java 8 到 Java 17兼容性最好。2.2 前端選 Vue 的考量與工程結(jié)構(gòu)Vue 的核心優(yōu)勢(shì)是上手快、組件化清晰、與后端分離徹底。選課系統(tǒng)的前端頁面不算復(fù)雜登錄頁、課程列表頁、選課結(jié)果頁、管理員排課頁。用 Vue 3 的 Composition API 可以把每個(gè)頁面的邏輯收攏在setup里配合 Vue Router 做路由守衛(wèi)控制權(quán)限配合 Pinia 做全局狀態(tài)管理比如存儲(chǔ)當(dāng)前登錄用戶信息和已選課程 ID 集合。項(xiàng)目骨架我一般這樣組織course-selection/ ├── backend/ # SpringBoot 后端 │ ├── src/main/java/com/example/selection/ │ │ ├── controller/ # 接口層 │ │ ├── service/ # 業(yè)務(wù)邏輯層 │ │ ├── mapper/ # MyBatis 數(shù)據(jù)訪問層 │ │ ├── entity/ # 數(shù)據(jù)庫實(shí)體 │ │ ├── dto/ # 數(shù)據(jù)傳輸對(duì)象 │ │ ├── config/ # 配置類Redis、RabbitMQ、CORS │ │ └── SelectionApplication.java │ ├── src/main/resources/ │ │ ├── application.yml # 主配置 │ │ └── mapper/ # MyBatis XML │ └── pom.xml ├── frontend/ # Vue 前端 │ ├── src/ │ │ ├── views/ # 頁面組件 │ │ ├── components/ # 通用組件 │ │ ├── router/ # 路由配置 │ │ ├── store/ # Pinia 狀態(tài) │ │ ├── api/ # Axios 封裝 │ │ └── main.js │ ├── package.json │ └── vite.config.js └── README.md前后端分離的關(guān)鍵是接口約定。我習(xí)慣用 RESTful 風(fēng)格選課相關(guān)接口大致如下接口方法路徑說明獲取課程列表GET/api/courses?page1size20分頁查詢支持按名稱模糊搜索選課POST/api/selections請(qǐng)求體含 courseId從 Token 解析 studentId退課DELETE/api/selections/{courseId}邏輯刪除釋放容量我的選課GET/api/selections/my返回當(dāng)前學(xué)生已選課程管理員排課POST/api/admin/courses需要 ADMIN 角色2.3 數(shù)據(jù)庫表設(shè)計(jì)的最小可用集合表設(shè)計(jì)直接決定后面能不能扛住并發(fā)。核心就三張表學(xué)生表、課程表、選課記錄表。課程表里必須有一個(gè)capacity字段表示容量一個(gè)selected_count字段表示已選人數(shù)。選課記錄表用(student_id, course_id)做聯(lián)合唯一索引防止重復(fù)選課。CREATE TABLE course ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(128) NOT NULL, teacher VARCHAR(64) NOT NULL, capacity INT NOT NULL DEFAULT 0, selected_count INT NOT NULL DEFAULT 0, start_time DATETIME, end_time DATETIME, version INT NOT NULL DEFAULT 0, INDEX idx_name (name) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE selection ( id BIGINT PRIMARY KEY AUTO_INCREMENT, student_id BIGINT NOT NULL, course_id BIGINT NOT NULL, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_student_course (student_id, course_id), INDEX idx_course (course_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;version字段是樂觀鎖用的后面講并發(fā)控制時(shí)會(huì)展開。selected_count和capacity放在同一張表是為了在一條 UPDATE 語句里完成“判斷容量 扣減”的原子操作。3. 選課核心鏈路從點(diǎn)擊按鈕到數(shù)據(jù)落庫的完整實(shí)現(xiàn)3.1 選課接口的并發(fā)控制樂觀鎖 Redis 預(yù)扣選課最怕超賣。假設(shè)課程容量 50當(dāng)前已選 49兩個(gè)請(qǐng)求同時(shí)進(jìn)來都讀到 49都判斷小于 50都執(zhí)行加一結(jié)果變成 51。這就是典型的并發(fā)問題。解決方案分兩層。第一層用 Redis 做預(yù)扣把課程容量緩存到 Redis用 Lua 腳本保證判斷和扣減的原子性。第二層用數(shù)據(jù)庫樂觀鎖兜底防止 Redis 數(shù)據(jù)丟失或不一致。先看 Redis 預(yù)扣的 Lua 腳本-- keystore: course:stock:{courseId} -- argv[1]: 本次選課數(shù)量通常為 1 local stock redis.call(GET, KEYS[1]) if not stock then return -1 -- 緩存不存在需要回源 end if tonumber(stock) tonumber(ARGV[1]) then return 0 -- 庫存不足 end redis.call(DECRBY, KEYS[1], ARGV[1]) return 1 -- 預(yù)扣成功這段腳本在 Redis 單線程模型下執(zhí)行天然原子。返回 -1 表示緩存沒命中需要從數(shù)據(jù)庫加載后重試返回 0 表示沒搶到返回 1 表示預(yù)扣成功可以繼續(xù)走數(shù)據(jù)庫寫入。Java 側(cè)調(diào)用public SelectionResult selectCourse(Long studentId, Long courseId) { String stockKey course:stock: courseId; // 先嘗試 Redis 預(yù)扣 Long result redisTemplate.execute( new DefaultRedisScript(LUA_DECR_STOCK, Long.class), Collections.singletonList(stockKey), 1 ); if (result null || result -1) { // 緩存未命中從數(shù)據(jù)庫加載容量后重試 loadStockToRedis(courseId); result redisTemplate.execute( new DefaultRedisScript(LUA_DECR_STOCK, Long.class), Collections.singletonList(stockKey), 1 ); } if (result null || result 0) { return SelectionResult.fail(課程已滿); } // Redis 預(yù)扣成功走數(shù)據(jù)庫樂觀鎖寫入 try { int updated courseMapper.decreaseStock(courseId); if (updated 0) { // 數(shù)據(jù)庫扣減失敗回滾 Redis redisTemplate.opsForValue().increment(stockKey); return SelectionResult.fail(選課失敗請(qǐng)重試); } selectionMapper.insert(studentId, courseId); return SelectionResult.success(); } catch (DuplicateKeyException e) { // 重復(fù)選課回滾 Redis redisTemplate.opsForValue().increment(stockKey); return SelectionResult.fail(請(qǐng)勿重復(fù)選課); } }對(duì)應(yīng)的 MyBatis 更新語句用樂觀鎖update iddecreaseStock UPDATE course SET selected_count selected_count 1, version version 1 WHERE id #{courseId} AND selected_count lt; capacity AND version #{version} /update這里有個(gè)細(xì)節(jié)version需要從查詢結(jié)果傳入。實(shí)際寫法是先SELECT拿到當(dāng)前 version再帶著 version 去UPDATE。如果更新影響行數(shù)為 0說明在查詢和更新之間有人改了數(shù)據(jù)需要重試或直接返回失敗。提示Redis 預(yù)扣和數(shù)據(jù)庫扣減之間不是強(qiáng)一致。如果數(shù)據(jù)庫扣減成功但 Redis 回滾失敗會(huì)導(dǎo)致 Redis 庫存比實(shí)際少。生產(chǎn)環(huán)境需要定時(shí)任務(wù)對(duì)賬把 Redis 庫存重置為capacity - selected_count。課程設(shè)計(jì)場(chǎng)景下加一個(gè)每 5 分鐘執(zhí)行的對(duì)賬任務(wù)就夠。3.2 前端選課交互防重復(fù)提交與結(jié)果反饋前端不是只畫頁面。選課按鈕點(diǎn)下去之后要立刻禁用按鈕、顯示 loading防止學(xué)生狂點(diǎn)。用 Vue 3 的ref控制按鈕狀態(tài)const submitting ref(false) async function handleSelect(courseId) { if (submitting.value) return submitting.value true try { const res await selectCourseApi(courseId) if (res.code 200) { ElMessage.success(選課成功) await refreshCourseList() } else { ElMessage.warning(res.message || 選課失敗) } } catch (e) { ElMessage.error(網(wǎng)絡(luò)異常請(qǐng)稍后重試) } finally { submitting.value false } }submitting是一個(gè)響應(yīng)式布爾值為 true 時(shí)按鈕的:disabled綁定生效同時(shí)可以顯示“提交中…”文案。finally里恢復(fù)狀態(tài)保證無論成功失敗按鈕都能再次點(diǎn)擊。Axios 封裝里要加 Token 攔截和統(tǒng)一錯(cuò)誤處理import axios from axios const request axios.create({ baseURL: /api, timeout: 10000 }) request.interceptors.request.use(config { const token localStorage.getItem(token) if (token) { config.headers.Authorization Bearer ${token} } return config }) request.interceptors.response.use( response response.data, error { if (error.response?.status 401) { localStorage.removeItem(token) window.location.href /login } return Promise.reject(error) } ) export default request攔截器做了兩件事請(qǐng)求發(fā)出前自動(dòng)帶上 Token響應(yīng)返回后如果 401 就跳登錄頁。這樣每個(gè)頁面組件不用重復(fù)寫鑒權(quán)邏輯。3.3 課程列表的分頁與緩存策略課程列表是讀多寫少的典型。每次學(xué)生打開選課頁都要查一遍如果每次都走數(shù)據(jù)庫高峰期數(shù)據(jù)庫壓力很大。我一般用 Redis 緩存課程列表的第一頁因?yàn)榇蟛糠謱W(xué)生只看第一頁。public PageResultCourseVO listCourses(int page, int size, String keyword) { String cacheKey course:list: page : size : (keyword null ? : keyword); String cached redisTemplate.opsForValue().get(cacheKey); if (cached ! null) { return JSON.parseObject(cached, new TypeReferencePageResultCourseVO() {}); } PageHelper.startPage(page, size); ListCourseVO list courseMapper.selectByPage(keyword); PageInfoCourseVO pageInfo new PageInfo(list); PageResultCourseVO result new PageResult(pageInfo.getTotal(), pageInfo.getList()); redisTemplate.opsForValue().set(cacheKey, JSON.toJSONString(result), 30, TimeUnit.SECONDS); return result; }緩存時(shí)間設(shè) 30 秒是因?yàn)檫x課過程中課程余量變化快緩存太久會(huì)導(dǎo)致學(xué)生看到過期的余量。30 秒是一個(gè)折中既能擋住大部分重復(fù)查詢又不會(huì)讓數(shù)據(jù)太舊。管理員排課或修改課程后主動(dòng)刪除對(duì)應(yīng)的緩存 key。分頁用 PageHelper 插件PageHelper.startPage之后緊跟的查詢會(huì)自動(dòng)加 LIMIT。注意startPage只對(duì)下一次查詢生效不要把它寫在無關(guān)查詢前面。4. 避坑與排查選課系統(tǒng)最容易翻車的五個(gè)地方4.1 坑一Redis 預(yù)扣成功但數(shù)據(jù)庫寫入失敗庫存對(duì)不上現(xiàn)象壓測(cè)時(shí)發(fā)現(xiàn) Redis 里課程余量顯示還有 10 個(gè)但數(shù)據(jù)庫里selected_count已經(jīng)等于capacity學(xué)生點(diǎn)選課提示“課程已滿”但 Redis 預(yù)扣卻通過了。原因Redis 預(yù)扣和數(shù)據(jù)庫扣減是兩步操作中間可能因?yàn)閿?shù)據(jù)庫連接超時(shí)、樂觀鎖沖突、唯一索引沖突等原因失敗。失敗后如果忘記回滾 Redis就會(huì)導(dǎo)致 Redis 庫存虛高。解決在數(shù)據(jù)庫操作失敗的catch塊里必須回滾 Redis。更穩(wěn)妥的做法是用 Redis 的INCR把預(yù)扣的數(shù)量加回去。同時(shí)加一個(gè)定時(shí)對(duì)賬任務(wù)每 5 分鐘掃描所有課程把 Redis 庫存重置為capacity - selected_count。對(duì)賬任務(wù)的 SQL 很簡(jiǎn)單SELECT id, capacity, selected_count FROM course遍歷結(jié)果對(duì)每個(gè)課程執(zhí)行redisTemplate.opsForValue().set(course:stock: id, capacity - selected_count)。4.2 坑二Vue 打包后放進(jìn) SpringBoot 靜態(tài)目錄刷新 404現(xiàn)象開發(fā)時(shí)前端跑在 5173 端口后端跑在 8080一切正常。把 Vue 打包后的dist目錄拷到 SpringBoot 的src/main/resources/static下訪問首頁正常但刷新/courses頁面就 404。原因Vue Router 默認(rèn)用 history 模式刷新時(shí)瀏覽器會(huì)向服務(wù)器請(qǐng)求/courses這個(gè)路徑SpringBoot 找不到對(duì)應(yīng)的 Controller返回 404。解決在 SpringBoot 里加一個(gè)配置類把所有非 API 路徑轉(zhuǎn)發(fā)到index.htmlConfiguration public class WebConfig implements WebMvcConfigurer { Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/**) .addResourceLocations(classpath:/static/); } Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController(/{path:[^\\.]*}) .setViewName(forward:/index.html); } }addViewControllers里的正則[^\\.]*表示匹配不含點(diǎn)的路徑這樣/courses會(huì)轉(zhuǎn)發(fā)到index.html而/js/app.js這種帶點(diǎn)的靜態(tài)資源請(qǐng)求不會(huì)被攔截。4.3 坑三SpringBoot 版本太高導(dǎo)致 Java 8 環(huán)境跑不起來現(xiàn)象用 Spring Initializr 生成了 SpringBoot 3.2 的項(xiàng)目本地 Java 17 跑得好好的拿到學(xué)校機(jī)房 Java 8 環(huán)境里java -jar直接報(bào)UnsupportedClassVersionError。原因SpringBoot 3.x 要求 Java 17 起步編譯后的 class 文件版本是 61Java 8 的 JVM 只認(rèn)到 52。解決如果部署環(huán)境不可控直接降級(jí)到 SpringBoot 2.7.x。在pom.xml里把 parent 版本改成2.7.18同時(shí)把java.version設(shè)為1.8。注意 SpringBoot 2.7 的依賴坐標(biāo)和 3.x 有差異比如javax.servlet和jakarta.servlet的包名不同降級(jí)后需要把 import 改回javax。4.4 坑四選課記錄表沒有聯(lián)合唯一索引學(xué)生重復(fù)選課現(xiàn)象學(xué)生快速點(diǎn)擊兩次選課按鈕或者網(wǎng)絡(luò)重試導(dǎo)致請(qǐng)求重復(fù)發(fā)送數(shù)據(jù)庫里出現(xiàn)兩條相同的(student_id, course_id)記錄。原因表設(shè)計(jì)時(shí)只加了自增主鍵沒有對(duì)(student_id, course_id)做唯一約束。業(yè)務(wù)代碼里的“先查再插”在并發(fā)下不可靠。解決加聯(lián)合唯一索引UNIQUE KEY uk_student_course (student_id, course_id)。這樣即使兩個(gè)請(qǐng)求同時(shí)插入數(shù)據(jù)庫也會(huì)保證只有一條成功另一條拋DuplicateKeyException。Java 側(cè)捕獲這個(gè)異常返回“請(qǐng)勿重復(fù)選課”即可。4.5 坑五前端 Token 過期后接口全部 401但頁面不跳轉(zhuǎn)現(xiàn)象學(xué)生登錄后放置半小時(shí)再點(diǎn)選課所有接口返回 401但頁面沒有任何反應(yīng)學(xué)生以為系統(tǒng)卡死。原因Axios 響應(yīng)攔截器里只處理了業(yè)務(wù)錯(cuò)誤沒有統(tǒng)一處理 401 狀態(tài)碼。或者處理了但跳轉(zhuǎn)邏輯寫在組件里每個(gè)頁面都要重復(fù)寫。解決在 Axios 響應(yīng)攔截器里統(tǒng)一處理 401清除本地 Token 并跳轉(zhuǎn)登錄頁。注意跳轉(zhuǎn)要用window.location.href而不是 Vue Router 的push因?yàn)閿r截器里拿不到路由實(shí)例。跳轉(zhuǎn)前可以加一個(gè)判斷避免在登錄頁反復(fù)跳轉(zhuǎn)if (error.response?.status 401) { localStorage.removeItem(token) if (window.location.pathname ! /login) { window.location.href /login } }5. 壓測(cè)驗(yàn)證與一個(gè)容易被忽略的細(xì)節(jié)5.1 用 JMeter 模擬 500 人同時(shí)搶課寫完代碼不算完得驗(yàn)證。我用 JMeter 做過一輪壓測(cè)線程數(shù)設(shè) 500Ramp-up 設(shè) 1 秒循環(huán) 1 次模擬 500 個(gè)學(xué)生在 1 秒內(nèi)同時(shí)點(diǎn)選課。目標(biāo)課程容量設(shè) 50。測(cè)試計(jì)劃配置組件配置Thread Group500 線程Ramp-up 1s循環(huán) 1 次HTTP RequestPOST /api/selectionsBody 含 courseIdHTTP Header ManagerContent-Type: application/jsonAuthorization: Bearer ${token}Summary Report查看吞吐量、平均響應(yīng)時(shí)間、錯(cuò)誤率第一次跑錯(cuò)誤率 12%主要是“課程已滿”和“請(qǐng)重試”。查看數(shù)據(jù)庫selected_count正好 50沒有超賣。Redis 庫存也歸零。說明并發(fā)控制生效了。但平均響應(yīng)時(shí)間 800ms偏高。排查發(fā)現(xiàn)是每次選課都查了一次數(shù)據(jù)庫拿 version這個(gè)查詢?cè)?500 并發(fā)下成了瓶頸。優(yōu)化方案把 version 也緩存到 Redis選課時(shí)直接從 Redis 讀 version數(shù)據(jù)庫更新時(shí)帶上這個(gè) version。如果更新失敗再?gòu)臄?shù)據(jù)庫重新加載 version 重試一次。優(yōu)化后平均響應(yīng)時(shí)間降到 320ms錯(cuò)誤率降到 3% 以下。剩下的錯(cuò)誤主要是樂觀鎖沖突后的重試失敗屬于可接受范圍。5.2 一個(gè)容易被忽略的細(xì)節(jié)選課時(shí)間窗口校驗(yàn)很多實(shí)現(xiàn)只校驗(yàn)容量忘了校驗(yàn)選課時(shí)間窗口。學(xué)生可能在選課結(jié)束后通過直接調(diào)接口選課或者管理員還沒開放選課就有人搶跑。正確做法是在選課接口入口加時(shí)間校驗(yàn)public SelectionResult selectCourse(Long studentId, Long courseId) { Course course courseMapper.selectById(courseId); LocalDateTime now LocalDateTime.now(); if (now.isBefore(course.getStartTime())) { return SelectionResult.fail(選課尚未開始); } if (now.isAfter(course.getEndTime())) { return SelectionResult.fail(選課已結(jié)束); } // ... 后續(xù)并發(fā)控制邏輯 }這個(gè)校驗(yàn)要放在 Redis 預(yù)扣之前避免無效請(qǐng)求打到 Redis。時(shí)間窗口可以從數(shù)據(jù)庫讀也可以緩存到 Redis 并設(shè)置過期時(shí)間等于endTime過期后自動(dòng)失效。另外退課接口也要加時(shí)間窗口校驗(yàn)通常退課截止時(shí)間比選課截止時(shí)間早一兩天方便教務(wù)處統(tǒng)計(jì)最終名單。這些時(shí)間參數(shù)建議做成配置項(xiàng)放在application.yml里不同學(xué)期改配置就行不用改代碼。selection: window: select-start: 2025-02-20T08:00:00 select-end: 2025-02-25T22:00:00 drop-end: 2025-02-23T22:00:00用ConfigurationProperties綁定到一個(gè)配置類注入到 Service 里使用。這樣比硬編碼在代碼里靈活得多。5.3 我踩過的一個(gè)血淚教訓(xùn)早期做選課系統(tǒng)時(shí)我把 Redis 預(yù)扣和數(shù)據(jù)庫扣減放在同一個(gè)事務(wù)里想著“要么都成功要么都失敗”。結(jié)果發(fā)現(xiàn) Redis 操作不參與 Spring 的Transactional數(shù)據(jù)庫回滾了 Redis 不會(huì)回滾反而更容易出問題。后來改成“Redis 預(yù)扣 數(shù)據(jù)庫扣減 失敗手動(dòng)回滾 Redis 定時(shí)對(duì)賬”這套組合拳才穩(wěn)定下來。分布式場(chǎng)景下不要試圖用本地事務(wù)去包住兩個(gè)不同的存儲(chǔ)系統(tǒng)。接受最終一致用對(duì)賬兜底比追求強(qiáng)一致更實(shí)際。這個(gè)習(xí)慣我保持到現(xiàn)在任何跨存儲(chǔ)的操作先問自己“失敗了怎么補(bǔ)償”而不是“怎么讓它不失敗”。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久性爱大全| 国产伦乱91| 天堂无码精品国产久| 久久超碰大香蕉| 日韩一区二区三区四区五区| 试看60秒 爽| 欧美老妇综合网| 亚洲九月丁香| 人人 操人人 操人人| 综合色久欲| 欧美嗯啊……在线观看视频免费| 久久久久久久亚洲Av无码| 丰满熟女人妻一区二区三五十一路| 日韩午夜啪啪视频| 亚洲成a人在线观看久| 亚洲脚交| 欧美性Fer办公室秘书| 久久一二三四五六七八九区区区 | 日韩av影片在线观看| 亚州欧美另类| 天天内射| 日韩情色AV| 97资源站国产精品| 韩国三级三级BD在线| 99re国产中文字幕| 偷拍自拍在线视频观看| 国产一级内射无挡观看| 欧美v日韩v亚洲v最新在线| 国产精品一二三| 97 国产一区| 男人的天堂在线有码| 簧片免费看视频| 欧美18老人禁| 丰满人妻一区二区三区蜜桃视频| 欧美青青草视频| 久久亚洲天天做| 日韩另类色图| 中文字幕五区| 国产成人+综合亚洲+天堂| 欧美极品性爱天天射| 2024黄色视频| 美女操逼A A| 男女国产精品| 欧美AAAA黄片| 亚洲精品尤物yw在线影院| 97亚洲精品| 国产老女人久久毛| 日本一级特级毛片视频| 国产精品扒开腿做爽爽爽视频| 另类专区加勒比| 日本新免费二区三区| 成人老鸭窝人人在线视频| 台湾佬激情综合| 色天天野狼综合社区| 330dv亚洲成年视频网| 精品国产72| 亚洲 欧美 另类 日韩 人妻一区| 欧美 日韩 另类 亚洲| 欧美国产成人在线| 少妇人妻激情四射| h色99999| 偷拍亚洲视频一区二区三区四区| 综合五月天| 91精品人妻一品二品三品| 亚洲综合有码| 爱逼综合| 性色av大全| 国产强奸乱伦xd| 精品丝袜无码一区二区三APP| 日韩一级欧美一级国产一级台湾 | 日本精品五区| 亚洲图片色图欧美另类 | 日韩精品人妻中文字幕久久久| 人妻插插人妻人| 久久久久久久久久久999| 国偷自 一区| 欧日韩一二三f区| 青青在线视频免费| 国产精品无码成人精品| 国产www色在线观看| 欧美日韩99| 久久性爱视频| 麻豆影音天美视频| 色99色| 丁香五月成人| 秋霞鲁丝午夜无码一区二区三| 久久精品人妻一区二区| 97Ai亚洲| 新婚人妻扶着粗大强行坐下| 蜜桃色色网站视频三区| 67194无码不卡| 蜜臀AV成人精品蜜臀AV久久| 极品粉嫩一区二区| 超碰久久综合| 凹凸视频在线一区二区| 人人摸人人叼| 东北女人操比视频| 91美女视频| Blackedraw视频一区二区| 97天天爽| 久久久久久人| 国产乱人伦AVA麻豆软件.| 91碰碰| 夜夜操中文字幕| 99999精品| 国产日韩在线播放| 成人资源中文字幕在线观看| 欧美日韩一干二干| 中文字幕精品一区欧美| 久久精品视频久久久| 91欧洲入口| 国产女人和拘做爰视频 | 网友自拍第1页| 亚洲福利中文字幕在线| 乱色老一区二区三区的观看方式| 亚洲国产成人7777| 久久婷婷一区二| 性高潮久久久久久久久久久| 成年女人黄网站| 素人播放一区| 乱久久久| 欧美黄色片在线播放| 91Chinese在线| 九九九九一区| 免费一级欧美片片线观看| 日韩久久艹| av网站国产主播在线| 精品成人av一区二区三区在线| 日本久久女同性恋视频| 思思99热| 神马久久午夜| AV高清一区| 久久国产乱子伦精品免费女,网站| 91艹B视频| 久久嫩草国产成人一区| 天天看天天日天天操| 亚洲第一综合| 九九九久久久| 亚洲成人妻日韩在线| 熟女探花啪啪| 久久综合久色欧美综合狠狠| 囯产操逼片| 超碰97首页| 1禁看欧美黄片免费看| 日韩人妻精品中文字幕| 日韩中文字幕国产| 啊啊啊97视频| 日韩综合无码色欲vv| 亚洲av热热色| 香蕉国产97| 婷婷国产精品九区| 五月天婷精品激情| 日韩免费福利在线观看| 色色97爱| 久久久久久久久久久久九| 大香蕉免| 麻豆这里只有精品| 欧美72网页| 午夜福利国产欧美日韩夜夜| 日本大片日本一区二区免费高清| 亚洲国产丝袜熟女av | 清柠毛片| 亚洲自拍天堂| 欧美日综合| 久久黄黄| 亚洲精品中文字幕一区在线视频 | 一区二区三区四区免费视频| 超碰吊日色| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 99热只有| 日韩成人高清一区二区| 久久美国毛片| 免费人成在线观看网站品爱网| 国产第二页| www.久久| 国产精品无码av在线| 蜜臀AV一区二区三区激情综合| 97超碰欧美| 日本潮催一卡操| 2019亚洲男人天堂| 加勒比五月天| 欧美第一页| 久久久久元码视频| 欧美97av| 91情色| 婷婷国产精品一区二区| 欧美特大黄一级片片免费| 综合国产影视三级| av天堂天堂av日韩| 久久香蕉综合一本到3atv| A一区片| 国产操逼逼网| 婷婷色色五月天| 97干com| 五月天综合网| 无码人妻毛片丰满熟妇精品区| 欧美,日韩,中文,另类| 蜜臀aV午夜一区二区三区| 九九九色| 午夜精品久久久久久久久久蜜桃| 欧洲一区二区| 色哟哟511老熟女| 青青草视频久久| 国产精品禁久久久精品| 亚洲中文一区二区三区视频| 欧美乱妇狂野欧美在线视频| 欧美 亚洲精品首页| 国产一国产一级毛片古装| 欧美一级黄片免费播放| 天天情欲宗合网| 操人人| 五月丁香啪| 久久风骚城市人| 中文字幕狠狠玩| 麻豆久久久久久久久丝袜| 久热伊人| 97资源久久| 强奸乱亚洲| 久久精品成人一区二区三区蜜臀| 秋霞操逼片| 国产美女91视频| 男啪女色黄无遮挡免费观看| 激情亚洲天堂| 日本一级二级三级网站| 亚洲女优有码无码高清| 95人妻爽爽人人做人人澡| 992视频一区| 日本久操视频| 欧美另类精品xxxx| 91亚洲丝袜| 999精品国产高清一区二区| 性色中出| 国产美女自拍AV| 色婷婷久久综合超碰| 夜草网站| 亚洲影院无码在线| 99999精品视频| 九九九九九精品| 久久综合日韩亚洲欧美| 精品人妻一区二区三区四区石在线| 色色色热| 日韩啊V| 搡老女人老妇女老妇老熟女怎么读| 精品十三区| 人干人人人操人人摸| 99xav| 亚洲在线网站| 吊色| 香一区二区三区| 少妇无码999| 女优视频第10页| 欧美性爱18观看| 人妻丰满熟妇av无码区蜜桃| 久久蜜色情在线视频xxx免费观看| 伊人玖玖网| 97精品国产97久久久| 婷婷丁香五月综合| 日韩国产乱子伦App| 欧美猛交黑寡妇中文字幕| 99色| 亚洲精品丝袜-不卡成人免费……| 国产精品无码成人精品| 国产又黄又爽| 国产99热| 女性91网站| 中文字幕视频在线观看| 亚洲黑人在线| 国产97在线 | 亚洲| 加勒比av官网在线| 人妻少妇久久中文| 色婷婷A V一二三四区麻豆综合| 国产成人自拍视频在线| 中文字幕国产| www.99热| 福利伊人玖玖国产| 日本欧美一区二区三区视频麻豆| 亚洲另类欧美精品| 99久久婷婷丁香| 国产在线观看91精品一区| 日韩黄片影院| 综合 欧美 亚洲 日本| 亚洲性高潮| 精品国产乱码久久久| av黄图片在线观看| 一本精品日本在线视频精品| 很黄很色的视频在线观看| 伊人一级免费黄片| 国产中文字幕曰本毛片| 国模精品娜娜一二三区| 操我啊啊啊啊啊| 美日韩在线不卡人妻| 91视频观看网站| 日本操逼视频导航| 激情五月丁香五月| 97久久免费| 99热18这里只有精品| 人妻熟女一区二区在线视频| 中文乱码字字幕在线第5页| 最新岛国大片| JULIA一区二区三区在线播放| 色婷婷亚洲婷婷| 91大学精品激情戏| 美腿丝袜高跟网免费视频免费视频| 日韩操呦呦影院在线观看| 伊人久久亚洲色欲综合网站| 日本不卡在线二区三区| 久久精品中文字幕观看| 久久久久久一日韩字幕无码| a在线视频免费观看| 中文一区二区婷婷视频| 91欧美丨精品丨入口| 大香蕉中文网| 操逼网站地址| 97久久天天综合色天天综合色电影| 日日日骚女人精品| 蜜臀无码视频在线观看| 国产麻豆一级精品视频| 欧美韩国你懂得在线| 男女啊啊啊| 日本操逼视频不卡直接放| 免费一级毛片在线视频观看| 亚洲 欧美 另类 综合 偷拍| 国产精品乱码久久久久久久久| 一中国女人毛片水真多| 思思99热| 亚洲色交| 色优久久| 久久 精品| 日韩性爱网址| 中国熟女91| 以及麻豆国产入口在线观看免费| 韩国一区二区精品亚洲| 风月影院十八禁| 丁香六月啪| 狠狠入| 日韩中文字幕二区| 欧美手机在线综合| 国产精品一区二区黄片| 国产视频97| 美女刺激久久国产欧美| 人人贴人人摸| 亚洲青青草| 狠狠色色| 性色av大全| 色阁阁AV综合网| 婷婷五月色| 99精品人妻| 两性综合网| 久草毛片| 九九天堂| 天美麻豆一区二区三区| 国产av白丝| 精品综合久久久久久五月天| 日韩性爱1级片视频| 三级网站超变态精品| WWW啪啪的com| 日本精品一区二区三| 欧美日韩性爱无码| 五月丁香黄色网| 一区二区精品更新提醒| av天堂5| 99精品国产户外露出| 后入日本1234| 欧美激情 日韩精品| 国产AV久久野战精品| 色九九久九九| 亚洲男人天堂Av| 亚洲国产欧美一区二区潘金莲| 亚洲s色图| 视频在线观看一二三区| 亚洲一区二区性爱电影| 天美传媒麻豆一区二区三区国产精| 九九玖玖精品| 大香蕉AV在线| 久久精品色欧美aⅴ一区二区| 免费精品无码一级毛片牛牛影视 | 国产精品播放| 97chaopengongkai| 一区二区三区在线日韩影院观看| 伊人大香蕉在线| 欧美一级黄片免费播放| 中文有码9| 欧美影音在线| 日韩av色图综合| 亚洲人妻一区二区三区| 天天躁日日躁AAAXX| 欧美大香蕉同搞| 国产福利一区二| 中文子幕一二三| 97舔舔| 精品国产自在在线99| 久久久9品一区二区三区| 久久一二三四五六七八九区区| 嫩草 我啊~嗯~在线| 91综合网在线| 亚洲第一页第二页激情| 性无码专区2020| 日本淫乱女一区二区三区视频| 91丝袜在线播放| 国产激情在线| 日本亚洲熟女视频| 99热这里只有精品8| 亚欧日韩成人| www99热| 久超碰在| 加勒比AV天堂| 女优大全 - 91n| 中文字幕精品探花视频| 乱伦1色页| 欧美性生活免费网| 99ri在线视频| 麻豆精品A片免费观看| 伊人少妇久久久| 9久精品视频在线观看| 啊啊啊不要啊啊受不了了视频在线| 天天狠| 偷拍欧美综合| 爱丝福利| 欧美情色男人的天堂| 欧美人妻一区| 飘花国产午夜精品不卡| 强歼乱伦资源网| 人人人人人人少妇| 九九九九九九九九九九精品视频| 少妇大屁屁| 色9999日韩国产| 国产欧美岛国精品一区| 极品丝袜无码| 综合久久少妇中文字幕| 国产成人久久久精品免费AV| 黑人天8A∨高清网站| 十八禁电影伊人网| 人人操人人插人人摸人人干| 95精品在线| 九九热re99re6在线精品| 国产福利电影| 丰满人妻-区二区三区免费| 欧美草草| 久久无码成人| 欧美伦乱爱| 蜜臀av网址| 欧美大香蕉久| 欧美熟妇精品黑人巨大一二三区| 熟女熟妇一区二区三四区| 欧美一级黄色18片免费看| 亚洲乱色熟女一区| 91蜜臀在线久久久久| 综合亚洲网| 色综合色欲色综合色综合色综合| 国产天天看| 国产美女销魂在线观看不卡| 国产伦精品一区二区三区在线观 | 国产精品露脸在线观看| 96精品久久久久中文字幕| 成人怡红院| 国产又色又爽又舒服的三级视频| 99久久9| 天天综合91入口| 国模无码一区二区三区在线| 亚洲熟女偷拍在线观看| 98超碰欧美| 色性荡荡荡荡视频| 精品中文字幕第一页| 久久精品国产亚洲粉嫩| 97操在线| 天天添天天干电影| 亚洲精品人体| 欧美三级不卡| 日本人妻最新在线中| 色97| 免费αⅴ在线观看| 国产成人精品一区| 九九热在线视频| 欧美日韩大黄片| 亚洲双插| 91 手机在线播放 绯色| 国内毛片婷婷六月色| 91久久婷婷| 国产精品久久久777| 亚洲精品成人激情在线| 欧美成年人性爱视频免费观看| 大香蕉青青9| 日韩欧美麻豆大片| 免费黄色片子| 欧美亚洲色图另类国产| 在线视频一区二区传媒| 波多野结衣之双飞调教在线播放| 国产精品视频白浆免费| 久久久一区二区三区四曲免费听| 午夜福利无毒不卡| 亚洲国产成人精品999| 成年无码动漫av片无尽在线| 亚州综合网| 美女啊啊啊啊pc| 国产后入内射| 欧美天堂第二区| 日韩 欧美 国产 麻豆| 东北女人被操| 欧美激情综合色综合啪啪五月| 久久东京热久久| 探花激情视频| 一线黄色免费性爱片| 日韩免费中文字幕视频| 日韩另类色图| 色激情综合网站| 五月天婷婷社区| 日韩电影免费网站麻豆视频| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 久久精品欧美一区二区三区不卡| 乱伦熟女论坛| 手机在线播放国产福利| www.国产高潮精品| 97久久资源| 欧美色五月| 蜜桃精品一区二区三区ww| 欧插网站| 亚洲情色综合网| 日本黄色精品| 91人妻视频| 亚av顶级裸体一区二区三区四区五区 | 快灬快灬 一下爽蜜桃在线观看| 伊人四虎综合| 亚洲天堂精品日韩电影| 中文字幕,人妻,日韩| 日韩成人大片在线观看| 三级色综合| 午夜国产综合视频在线观看| 凹凸视频在线观看伊人| 久久天天艹| 综合久久中文字幕综合日韩精品| 啊视频在线| 啊啊啊97视频| 国产精品香蕉| 围产精品一区二区三区视频播放| 欧美专利1区2区3区4区5区免费| 亚洲综合69| 啊啊啊啊免费视频| 久久香蕉影院| 国产成人主播| 26UUU欧美日本| 久久婷婷精品| 骚日日av| 五月天社区| 岛国不卡超碰护士AV在线播放| 91夜色| 大香蕉手机视频| 国产精品69久久久久久久 | 风骚少妇视频中文字幕| 精品亚洲国产成人精品| 人妻在线中出视频| 色欲久久99精品久久| 免费精品无码一级毛片牛牛影视| 五月天激情小说| 精品无人区麻豆乱码1区2区图片 | 亚洲一级黄色毛片| 亚洲一区日韩| 久久久久久人体| 色小视频蜜乳| 亚洲人天堂| 青青操97| 久久久久久电影| 97天天综合网| 狠狠爱夜夜干| 久9热| 男人干美女| 伊人精品久久网站| 1204人成网站色www| 色综合99| 国产视频第2页| 亚洲综合中文字幕有码| 男生通女生屁股| 加勒比大香蕉视频在线| 大屁股人妻女教师撅着屁股| 久久高清无码夜夜操| 一区二区激情国产熟女| 午夜视频好爽啊| 欧美后入式| 一区二区娱乐网站| 精品亚洲天堂| 国产妇女精品视频青青草| 丁香六月婷| 日日夜夜青青草母狗| 亚洲国产精品V?在线播放| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 91欧美经典| 91九久| 久久性爱大全| 黄色电影观看久久9| 加勒比海色香蕉婷婷| 青青草狠狠撸| 又摸又舔在线观看网站| 另类图片五月天| 岛国黄色短视频| 日本人妻中文字幕精品| 日韩激情电影中文字幕| 天天影视亚洲| 久久大黄片| 欧美九九九| 欧美在线l亚洲| 日本超碰在线国产一区| 无码国产精品久久久久| 大二网站亚洲| 啪啪性爱免费视频| 精品传媒在线一区| 好吊色青靑草| 玖玖综合视频| 天天摸天天操视频| 天天综合~91| 日本ZZ高免费A级视频| 亚州色图狠狠干| 96AV久久久| 成人天天看站长推荐| 欧美黑人91| 欧美日韩97在线| com 首页 18岁 禁区 女优 免费 精选 同城| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 成人AV素股で擦久久| 成人片在线播放| 激情五月天婷婷| 婷婷国产精品九区| 青青草五月天| 久久禁| 欧美天天弄| www国产无码| 玖玖玖玖精品国产剧情| 亚洲色系另类精品国产| 欧美性爱无码一区二区三区| 在线色导航| 性爱视频啪啪啪啪| 亚洲黄色网址视频| 欧美成va视频网站| 911av网站免费观看| 美女刺激久久国产欧美| 久久久久久九九九九-美女久久久久久久-成人AV| 亚洲黄日韩无码专区| 中出789在线视频| 久久视频,这里只有精品 | 亚洲高清欧美总合| 中文字幕一区二区视频在线观看| 色九久| 人妻丰满熟妇一区二区三| 色婷婷五月天| 国产自产91区13区| 色97国产69香蕉| 78精品| 国产强奸91| 天天插天天射| 欧美色图99| 亚洲欧美国产中文视频| 91狠狠综合久久久久久| 蜜臀久久久| 亚洲丝袜综合| 国产午夜激片Av毛片不卡| 久jiu久神马影院| 色淫网站优优视频| 去干网最新版| 一区二区三区日韩欧美| 亚洲色图欧美| 天天操天天插| 啊v在线观看视频| caorenqi shipin| 99999国产| 亚洲另类综合欧美| 啊啊啊啊啊好多水| 亚洲国产综合久久久性感熟妇| 久久久久久国产成人| 五月丁香大香蕉| 亚洲第2页| 亚洲欧美变态| 色婷久久| 大香蕉伊人网| 欧美激情 日韩精品| 天天操夜夜操| 伊人久久久日韩一区| 极品尤物自安慰| 亚洲宗合网| 婷婷五月天激情四射| 可以在线观看的黄色网址| 锕锕好爽 死我在线观看| 啪啪一区| 伊人精品久久网站| 婷婷久久五月综合激情| 女上位精品在线| 国产成人亚洲精品自产在线| 日韩中文字幕视频| 欧美在线|亚洲| 富二代亚洲精品99| 欧美日韩性爱视屏免费看了| 色欲久久99国产精品久久久久久| 一区二区偷拍拍视频| 婷婷在线视频在线观看| 丝袜 中出 制服 人妻 美腿 中文字幕| 久久五月视频| 欧美久久人妻少妇一区二区| 亚洲各类熟们中文字幕| 大香蕉一区二区在线观看.| 美日韩在线不卡人妻| 亚洲激情网一二三四区| 成人性爱美曰韩| 人人操人人操人人人操| 91人妻最真实刺激绿帽| 国产又粗又长又大的视频| 日本一区二区三区欧美日韩中文字幕| 国语精品内射在线观看| 欧美Ⅴ性爱| 夜夜欧美| 亚洲人精品久久久| 日本中文字幕一区| 大香网伊人久久综合网eew| 五月天啪啪| 色婷五月天| 亚洲色图大香| 骚逼高潮久久精品| 免费人成毛片乱码| 91精品人妻偷情| 国产亚洲精品激情| 九九九九热| 国产精品盗摄 偷窥盗摄| 夜夜嗨一区二区三区三州加勒比| 老熟妇一区二区三区啪啪| 色欲人妻一区二区在线| 亚洲中文字幕97久久精品少妇| 久热这里只有精品9| 亚洲 日本 不卡| 俺也射| 中文字幕一品色图| 国产女主播视频在线观看| 日韩天天综合| 人人操,人人液| 一区不卡在线观看av| 国产久久av| 乱论91| 亚洲激情综合| 操逼内射干逼白丝91| 超碰97在线色男人??| 欧美 日韩第一性色| 伊人久久AV诱惑悠悠| 9999久久久| 操逼网站网站| 中文字幕精品日韩中文字幕| 小视频玖玖| 一起草日韩| 丁香五月激情五月| 伊人久久大香线综合无码| 超碰社区97| 日本九九久久99| 日本布卡一区二三区| 成人蜜乳小视频网站| 免费黄色A片| 日本人体九九九九九九| 色拍偷亚洲| 久久久久96| 天天射天天| 国产1769在线| 在线 亚洲 网爆 自拍| 久热久操| 婷婷超| 国产精品久久久无码AV网站| 91色情黑丝搞鸡在线观看一区二区三区三州 | 337p大胆噜噜噜噜噜91Av| 嗯嗯,啊啊,国产精品| 9超碰免费| 欧美性性性| 久久九色| 日韩成人网址| 国产亚洲日本| 黄色无码高清黄色无码网站| 精品少妇一区二区三区在线视频| 久久久久9999妇女| 超碰人妻久久| 日韩性爱毛片操骚逼| 爽爽淫人网| 亚洲综合伊人| 99精品欧美一区二区三区桃色| 一区二区三区机械有限公司| 国产农村妇女精品1区二区| 欧美熟妇色| 国产情侣自拍在线播放| 大香蕉欧美国产日韩高潮| 思思热一热婷婷热一热| 九九九九欧美| 一级成人性爱| 青青草亚洲一区| 久久青青草在线视频| 国产一区二区三区影片| 热热色色综合| 先锋色眉乱伦资源| 亚洲美女30b| 日韩免费中文字幕视频| 无码9区| 大粗鳼巴久久久久| 日本中文字幕在线视频| 中文字幕乱偷人妻久久艾草网| 国内精品a| 五月婷婷hd| 久久草草亚洲蜜桃臀| 91精品电影18| 久久久久夜夜夜夜| 日韩人妻少妇中文字幕| 91n欧美| 发朗少妇买婬全视频中文| 日韩天天综合| 伊人色综合网| 清纯唯美亚洲综合| 91久久国产综合久久| 欧美日韩亚洲少妇寂寞影院正在播放 | 四虎视频在线观看| 翔田千里A片一区二区| 婷婷三区| 性爱网站一区二区| 人妻 制服 日韩 中文 在线| 91东京热男人的天堂| 色偷偷色偷偷欧美日韩| 国产特级毛片AAAAAA高潮流水 | 在线观看亚洲专区| 精品少妇人妻一区二区三区| 色爱国产| 欧亚日韩中文在线| 在线中文字幕极品av| 日本高清免费一本视频在线观看| 人妻在线大香蕉| 亚洲欧美日韩综合在线尤物| 最新av中文字幕高清| 91久久青青草原精品| 青青青草伊人精品| 蜜臀99久久精品久久久久久| 91 丝袜在线播放| 无码不卡八戒| 日韩色香| 精品美女少妇一区二区| 人妻喷水| 麻豆成人影音在线| 波多野结衣之双飞调教在线播放 | 蜜臀久久99精品久久久久| 操国产高清| AV免费在线播放一区| 日日夜夜天天| 啊啊啊好舒服好爽啊啊啊视频| 夜夜嗨免费视频| 天久久久噜噜噜久久国产精品爽爽 | 97爱碰| 一区二区三区高清| 1级黄色夫妻对换性交免费看| 日本性感人妻91| 金莲网址| 五月天激情综合网| 日韩天美| 久久久月天| V A在线| 五月丁香啪啪| 动漫区日韩区欧美区| 尤物av网站免费在线播放| 天天爱天天操| 男人的天堂一区| 91N综合网| 久湿久久 | 久久久精品视频免费观看| 人人妻人人澡人人爽人人精品浪潮 | 大香蕉色网| 丁香五月综合| 久久久久久亚洲Av无码| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 99热综合在线| 久草视频制服诱惑| 啊啊啊啊啊啊在线| 综合网色| 亚洲精品黑丝| 日韩精品国产一区二区| 九九热免费在线国产视频伊人五月| 天天干天天狼在线视频| 亚州再线| 岛国不卡超碰护士AV在线播放| 色乱二区| 6080yy午夜理论三级一区二区三区无码| 91视频综合网| 农村妇女精品一区二区| 98色网| 日本成人电影资源网| 白丝一区| 激情四射婷婷六月天| 午夜天堂网| 一区二区 韩日AV| 激情视屏国产乱伦强奸| 日韩免费看在线黄色片| 四虎在线视频| 内射卯月麻衣| 亚州色站 日韩电影| 精品久久視頻在线| 青草av在线| 日韩国产乱子伦App| 性饥渴少妇av无码毛片| 美女久久久| 婷婷国产精品一区二区| 97欧美久久久久久久| 艾草av| 婷婷啪啪| 欧美日韩 强奸乱伦| 亚洲啪啪视频免费| 九九综合九九综合| 亚洲国产综合久久久性感熟妇| 日日夜夜干| 国产毛片在线| 成人麻豆av电影网站| 人妻献身系列第54部| 欧美性爱日韩高清| 国产精品一区二区手机看片| 久久超碰国产一区二区三区| 老熟女网站| 蜜臀久久99精品久久久久久| 大逼色网站| 久久伊人影院| 三四中文字幕| 91高潮| 啊啊啊爽爽| 91天堂丝袜美腿| 日韩有码回春沙龙第一页| 天美一区在线| 色香网| 欧美大的香蕉有线电视视频| 亚洲欧洲日韩中文字幕一区| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 亚洲精品一二牛牛| 天天懆天天日| 精品视频免费在线一区| 少妇3P性爱自拍| 亚洲欧洲精品视频发布| 欧美日韩一区二区三区四区蜜桃| 性开放中文AV高清无码免费看| 色综合V| A片大香蕉在线| 99精品视频在线观看免费| 久草视频在线视频在线视频在线观看| 少妇高潮特黄A片| 成人国产精品三级A片| 欧美在线视频99| 热天堂一区二区| 91久久堂| 青青青草原| 96超碰网| 成人情色综合网| 欧美色图片| 爽极品影院| 九九色图| 青青草在线成人视频| 亚洲色图欧美另类在线| 亚洲国产中文字幕| 国产视频第二页| 国产亚洲色停停久久99精品91| 日日操丁香五月天| 亚洲高清无码在线桃色| 香蕉综合网| 亚洲欧美日韩有码| 九草九九九| 国产自制av蜜乳| 亚洲成?V人片在线观看福利| 亚洲精品丝袜-不卡成人免费……| 五月丁香啪啪啪| 做爱福利视频一区二区| 日本新免费二区三区| 亚洲人妻日日日| 国产亚洲欧美每日在线| 色色色欧美| 99久久这里只有精品| 后入式视频国产自| 久久精品一区二区| 国产成人亚洲精品无码古代早漏男 | 91c色| 欧美三级一级| 欧美色图自拍| 亚洲天堂男人天堂网| 少妇3P性爱自拍| 五月丁香啪啪网| 青青草大香蕉在线视频| 无码人妻系列少妇| 七月婷婷综合| 伊人色综合网电影| 99久久com免费视频′| 四虎精品一区| 91丝袜在线观看| 中文?日韩?免费?精品| 亚洲图片色图欧美另类| 首页中文字幕中文字幕免费| 一本久道久久综合狠狠爱| 长长久久88视频| 碰人碰碰人人开房人肉| 人人做,人人操,人人摸| 欧美日韩丝袜| 天天操福利视频综合网站| 精品人妻中文字幕4399| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 日本精品国产视频| 亚州综| JIZZJIZZ国产精品喷水| 性老妇一区二区三区| 亚洲97综| 五月天婷婷综合网| 大香网伊人久久综合网eew| 97资源久久| 99精品免费| 久久天堂网| 人妻日日干| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 二三四区精品| 国产精品九九九| 蜜臀久久99精品久久综合| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 色天天野狼综合社区| 国产黄片在线免费观看| A一级色女| 亚洲国产一区二区入口| 粉嫩久久久久| 欧美一级黄片视频在线| 亚洲成人色情五月天丁香花| 操逼免费视频无码国产| 97干天天| 亚洲美女AV无码| 日韩在线视频1234| 色吧91| 亚洲精品国产AV天美传媒| 成 人 A V免费视频在线观看| 青青草国产亚洲精品久久| 操国产逼| 美女啊啊啊啊pc| 国产91美女视频| 五月综合视频| 91久久久亚洲| 国产av高清版| 国产又黄又爽又刺激久久久久久| 日韩午夜国产| 日本精品无码三级网站| 婷婷九月国产| 91n处女在线观看| 婷婷久草一区二区三区| 97美日韩视频| 亚洲最大91网| A 天堂| 欧美色图成人网一区二区 | 国产亚洲日韩在线三区黑人| 久久熟女久| 亚洲婷婷综合网| 男人天堂无码| 人人妻人人爽一区二区三区| 日韩乱伦影音先锋| 精品无码一区二区三区| 中文字幕成人| 99久久国产精品免费高潮| 欧美激色| 2017天天操天天日| 97在线资源| 99草精| 一区二区三区日韩欧美| 国产一区二区三区中文字幕| 婷婷久久五月天| 淮穴色AV| 久久中日麻豆| 91精品国产长腿丝袜美女| 欧美亚洲20p| 试看福利| 欧洲性人爱视频| 东京男人天堂| 久久透逼视频| 国产树林里野战在线看| 超91综合网| 亚洲情色第一页| 日本日皮视频逼| av日韩在线观看电影| 看看小穴| 九九综合久久中文字幕| 妇人噜噜| www.91理论| 毛片99-全集电影手机免费观看完整-B029AV | 精品黄色电影| 一区中文字幕二区日韩| 亚洲天堂7777| 91久久久亚洲| 啊啊啊好大好湿| 五月综合色| 免费精品人妻一区二区三| 欧美淫乱视频| 亚洲综合影片| 色婷婷小说| 亚洲精品毛片在线观看| A 天堂在线观看视频| 久久一本大香蕉| 91粉芽高清在线一区二区| 中文字幕乱码人妻二区三区| 国产免费一区| 99自拍B亚洲 | 东北女人| 天综合网| 日韩精品中文字幕二区| 后入国产| 国产丝袜高跟美女av免费观看| 中美日韩毛片| 亚洲丝袜二区| 欧美一级做a爰片免费视频| 性色av大全| 中文字幕蜜乳av| 97神马久久| 国产和美国毛片| 久久草草欧美精品| 国内毛片婷婷六月色| 日韩欧美麻豆 | 啪啪啪大香蕉| 国产亲戚伦亲在线| 嫩呦国产一区二区三区AV| 精品国产乱码久久久久久久久久毛片| 色九九九九| 99色综合| 国产av美女被艹的乱叫| 亚洲第一页第二页激情| 亚洲美腿丝袜香蕉影视欧美成人| 国产人伦精品一区二区三区| 久久亚洲欧美中文字幕国语| 国产强奸乱伦欧美| 亚洲综合20p| 精品九区| 久久久久久九九九| 9Ⅰ超碰| 变态另类专区| 国产欧美另类久久久精品课程| 天欧美在线| 国产高清在线自在拍69| 人妻色情天天操| 91成人国产综合久久精品蜜月| 亚州再线| 欧美传媒一区| 97国产亚洲中文在线| 蜜桃色院一区久久 | 亚洲日韩熟女人妻高清在线| www.高清无码诱惑一区.com | 无码天堂| 中文字幕黄片在线| 女色综合| 亚洲网站一区二区在线| 日韩成人无码| 99e久久国产精品| 亚洲成人一区二区精品| 乱伦日本色图AⅤ| 欧美特大黄一级片片免费| 日本久久网| 久久天天摸| 亚洲乱色视频一区、二区在线| 免费网站观看www在线观| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 欧美国产一区二区三区麻豆传媒| 丰满搜索结果 -第18页- 久久高清无码| 超碰97资源大奶| 91AV天堂| 91欧美另类| 大香交| 酒色综合网| 中文熟女五十乱码在线| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 亚洲激情视频| 粉嫩久久久久| 欧美综合 站| 免费男人的天堂| 超碰 欧美| 男人的午夜天堂|