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

ARTICLE DETAIL

資訊詳情

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

SpringBoot+Vue自習室預約系統(tǒng)實戰(zhàn):從數(shù)據(jù)庫設計到并發(fā)防超賣

SpringBoot+Vue自習室預約系統(tǒng)實戰(zhàn):從數(shù)據(jù)庫設計到并發(fā)防超賣 做自習室預約系統(tǒng)這件事我前后折騰了大半個月踩了不少坑也積累了不少心得。這個基于SpringBoot Vue的MVC自習室管理和預約系統(tǒng)大概是很多計算機專業(yè)同學畢業(yè)設計或課程項目的熱門選題也是很多小型創(chuàng)業(yè)團隊做共享空間管理時愿意參考的一套基礎架子。今天我把整套系統(tǒng)的設計思路、核心代碼、數(shù)據(jù)庫方案和部署細節(jié)完整梳理一遍特別是那些網(wǎng)上教程一般不會主動告訴你的坑都一并寫出來。這套系統(tǒng)能做什么簡單說就是三件事管理自習室和座位信息、讓用戶在線預約座位、提供后臺的數(shù)據(jù)統(tǒng)計和基礎管理能力。技術棧非常經(jīng)典后端SpringBoot MyBatis MySQL前端Vue Vue Router Axios整體遵循MVC分層思想。適合正在做課設、畢設的學生也適合想快速搭一套輕量級預約系統(tǒng)的開發(fā)者。1. 為什么做這個系統(tǒng)需求拆解與技術選型1.1 自習室預約到底解決了什么問題去圖書館或者付費自習室搶座位的經(jīng)歷相信不少人都有過。傳統(tǒng)方式要么是線下排隊登記要么是微信群接龍再原始一點就是放一張紙自己簽名。這些問題很典型座位狀態(tài)不透明去了才發(fā)現(xiàn)滿座管理員無法實時掌握使用率座位長期被占但沒人來用戶和管理員之間信息斷層投訴和糾紛不少。所以我做的這套系統(tǒng)核心就是解決三個問題座位資源可視化、預約流程線上化、管理數(shù)據(jù)可統(tǒng)計。用戶端看到的是一個座位圖哪些座位空閑、哪些被占一目了然預約操作點幾下就能完成取消、續(xù)約也能自助處理。管理員端則能看每日預約量、座位利用率、用戶活躍度這些關鍵指標不用再靠Excel手工統(tǒng)計。系統(tǒng)角色劃分也很清晰普通用戶負責預約、取消、查看個人記錄管理員負責自習室和座位維護、預約審核或關閉、查看統(tǒng)計報表。這套RBAC基于角色的訪問控制模型不復雜但足夠支撐起一個完整的業(yè)務閉環(huán)。1.2 SpringBoot Vue MyBatis MySQL這套組合的取舍我在一開始也糾結過技術選型。Node.js Express做后端Python Django最終還是選了SpringBoot這套組合理由非常實際。SpringBoot是目前國內(nèi)企業(yè)級開發(fā)占有率最高的框架之一。它最核心的價值就是簡化配置內(nèi)嵌Tomcat一個jar包就能跑起來不需要額外部署WAR包。配合Maven或Gradle管理依賴幾行配置就能集成MyBatis、MySQL、Redis這些中間件。對于校內(nèi)項目或者中小團隊來說SpringBoot的學習資料最豐富遇到問題的解決方案也最多這個優(yōu)勢在開發(fā)中非常實際。Vue選擇的是Vue 2還是Vue 3我建議新項目直接上Vue 3 Composition API。2025年這個時間點Vue 2已經(jīng)停止維護了生態(tài)里新的UI庫也基本都適配Vue 3。Vue全家桶里真正開發(fā)必須掌握的就三樣Vue Router負責頁面路由Pinia或Vuex負責狀態(tài)管理Axios負責和后端接口通信。MyBatis和MySQL的組合更是經(jīng)典中的經(jīng)典。MySQL是開源關系型數(shù)據(jù)庫里生態(tài)最成熟的安裝部署簡單性能足夠中小規(guī)模應用使用而且和SpringBoot整合非常順滑。MyBatis則讓你保持對SQL的完全控制權復雜查詢不會被ORM框架的限制卡住。有些人會問為什么不用MyBatis-Plus我這里用原生的MyBatis是為了把XML映射和動態(tài)SQL這些底層機制講清楚理解了這一層再上手MyBatis-Plus就是一天的事。2. 數(shù)據(jù)庫設計與核心表結構2.1 核心數(shù)據(jù)表用戶、自習室、座位、預約單數(shù)據(jù)庫設計是這套系統(tǒng)的地基表結構設計得好不好直接影響后續(xù)業(yè)務邏輯的復雜度。我設計的核心表一共有五張用戶表、自習室表、座位表、預約單表還有一張管理員表。下面把每張表的重點字段講清楚。用戶表比較常規(guī)重點字段有id、用戶名、密碼BCrypt加密存儲、手機號、角色標識user/admin、狀態(tài)字段和創(chuàng)建時間。密碼一定不能明文存儲這個是最基本的安全底線。狀態(tài)字段用來表示賬號是否被凍結方便管理員做限制。自習室表相對簡單一個自習室包含名稱、位置、開放時間、座位總數(shù)、描述信息。這里有個小設計點座位總數(shù)不要冗余存儲而是通過統(tǒng)計座位表中某個自習室id的數(shù)量實時計算。如果你想優(yōu)化查詢性能可以在自習室表里加一個total_seats字段做冗余但要注意維護數(shù)據(jù)一致性。座位表是整套系統(tǒng)的核心字段包括id、自習室id、座位編號自習室內(nèi)唯一、座位類型比如單人桌、雙人桌、靠窗座位、安靜區(qū)座位等還有座位狀態(tài)和座位坐標等。為什么加坐標字段因為前端要渲染座位圖沒有坐標你就無法準確把座位畫在對應位置上。預約單表字段最多也是最容易設計出錯的一張表。核心字段有預約單號業(yè)務編號方便人工核驗、用戶id、自習室id、座位id、預約日期、開始時間、結束時間、狀態(tài)字段待使用/已使用/已取消/已過期等、創(chuàng)建時間。這里要特別強調(diào)一個設計經(jīng)驗業(yè)務上需要向用戶展示的編號和數(shù)據(jù)庫主鍵id一定要分開。數(shù)據(jù)庫主鍵autoincrement的id不要直接暴露給用戶因為會泄露系統(tǒng)數(shù)據(jù)量也容易被人遍歷接口。2.2 座位狀態(tài)與預約狀態(tài)的流轉(zhuǎn)設計狀態(tài)設計是最容易做亂的環(huán)節(jié)。我前后改了三版才理清。核心思路是把座位狀態(tài)和預約狀態(tài)拆開不能混在一起。座位只有三種狀態(tài)空閑、占用、禁用。占用表示這個座位在當前時間段被預約了禁用是管理員手動關閉某些座位比如空調(diào)壞了、燈管不亮臨時維修。這里有一個非常容易掉坑的地方座位本身沒有“時間”的概念。同一個座位早上可能是空閑的下午可能是占用的。所以我用的是預約記錄來反推座位狀態(tài)而不是在座位表上存一個update_status_time字段。座位表上的status字段更準確說是“運營狀態(tài)”可用或禁用。真正的實時占用狀態(tài)由一個視圖或查詢接口動態(tài)計算當前時間范圍內(nèi)是否存在未取消的預約記錄。預約狀態(tài)我設計了四個待使用、已完成、已取消、爽約。待使用是預約成功但還沒到時間已完成是使用時間結束后系統(tǒng)自動更新或管理員手動確認已取消是用戶主動取消爽約則定義了這樣一個規(guī)則預約時間開始后30分鐘內(nèi)未簽到自動標記為爽約。這套狀態(tài)機看似簡單但最終落庫的時候要注意狀態(tài)字段不要用數(shù)字盡量用字符串varchar存英文枚舉值比如BOOKED、FINISHED、CANCELLED、NO_SHOW。項目組里新人接手時看到字符串狀態(tài)一看就懂看到0和1還得猜含義。2.3 并發(fā)防超賣唯一約束與樂觀鎖并發(fā)問題是在做預約系統(tǒng)時最需要提前思考的地方。多個用戶同時點擊同一個座位的預約按鈕如果處理不當就可能出現(xiàn)“超賣”——一個座位同一時間被預約給多個人。我用了三層機制解決這個問題。第一層是數(shù)據(jù)庫唯一約束。在預約單表上建一個聯(lián)合唯一索引字段組合是seat_id 預約日期開始時間。這樣數(shù)據(jù)庫層面就保證了同一座位在同一時段只能有一條有效預約記錄。只要用戶取消預約原記錄變成取消狀態(tài)新預約才能再次插入。要注意唯一索引必須帶上狀態(tài)條件嗎MySQL不支持函數(shù)索引的寫法比較復雜所以我的做法是取消的記錄不物理刪除但預約唯一索引只約束status為生效狀態(tài)的記錄。怎么實現(xiàn)這就要用到MyBatis動態(tài)SQL插入前先執(zhí)行一個“活性檢查”查詢確認該座位該時間段沒有狀態(tài)為待使用/已使用的記錄再執(zhí)行插入。數(shù)據(jù)庫唯一索引用來做最后一道兜底它能攔截掉極短時間內(nèi)出現(xiàn)的并發(fā)沖突。第二層是業(yè)務層面的互斥鎖。我選擇在Service層中使用synchronized關鍵字按座位維度加鎖——更嚴謹?shù)淖龇ㄊ鞘褂脭?shù)據(jù)庫的悲觀鎖SELECT ... FOR UPDATE鎖住座位表的行再執(zhí)行插入。但由于自習室預約場景并發(fā)量不會特別高synchronized鎖綁定座位id字符串的intern方法即可滿足需求。不過使用synchronized注意鎖的粒度要細不要鎖整個方法否則所有座位的預約都會互相阻塞性能瞬間崩掉。第三層是兜底的異常處理。即使前面兩層都過去了最后一步插入時如果唯一索引沖突拋了DuplicateKeyException也要捕獲這個異常并轉(zhuǎn)成友好的業(yè)務提示“該座位已被手速更快的小伙伴預約了”。用戶看到這個提示體驗還算可以不會覺得自己點了個假按鈕。3. 后端MVC架構落地與關鍵代碼解析3.1 項目分層Controller、Service、Mapper到底各管什么MVC三層架構在SpringBoot項目里已經(jīng)演化成更細的分層Controller層、Service層、Mapper層再外加一個entity/model層放實體類dto層放參數(shù)對象vo層放返回結果對象。很多人剛學的時候容易把Controller寫成“萬能類”所有邏輯都塞里面這是典型的錯誤姿勢。我的分包結構是標準做法直接照著建就行com.studyroom ├── controller // 接口層接收請求、校驗參數(shù)、返回結果 ├── service // 業(yè)務層處理核心邏輯、事務控制 │ └── impl ├── mapper // MyBatis的數(shù)據(jù)訪問接口 ├── entity // 數(shù)據(jù)庫表對應的實體類 ├── dto // 接收前端參數(shù)的傳輸對象 ├── vo // 返回給前端的結果封裝 ├── config // 配置類比如跨域配置、攔截器配置 ├── common // 通用類統(tǒng)一返回結果、異常處理、常量 └── utils // 工具類Controller層只做三件事接收參數(shù)、調(diào)用Service、返回統(tǒng)一結果對象。它不應該出現(xiàn)任何具體的業(yè)務判斷邏輯。比如預約請求進入Controller后它要做的就是把預約參數(shù)綁定成一個DTO類傳給Service然后返回Result.success(data)。至于校驗座位是否存在、時間是否合法、用戶是否重復預約這些全在Service里完成。Service層是業(yè)務邏輯的核心所有判斷、計算、狀態(tài)流轉(zhuǎn)都在這層完成。這里有件事需要注意涉及多表更新的操作比如取消預約需要同時修改預約狀態(tài)、更新座位運營狀態(tài)、可能要寫一條操作日志必須在Service方法上標注Transactional。否則就算第一句SQL執(zhí)行成功第二句報錯數(shù)據(jù)庫留下臟數(shù)據(jù)排查起來極其痛苦。Mapper層就純粹是數(shù)據(jù)訪問。接口方法的注解或XML里的SQL只負責和數(shù)據(jù)庫打交道不做運算不做判斷把查詢結果原樣返回。我在項目里統(tǒng)一使用XML文件寫SQL因為動態(tài)SQL標簽如if、where、foreach在XML里可讀性更高復雜聯(lián)表查詢也好維護。簡單的單表查詢用注解Select也可以但為了風格統(tǒng)一我全部走了XML。3.2 MyBatis的XML映射與動態(tài)SQLMyBatis的XML文件是這個項目里一眼看上去最繁瑣、但實際最靈活的部分。它最大的優(yōu)勢就是動態(tài)SQL。比如管理員在后臺篩選預約記錄會有多個篩選條件按狀態(tài)查、按日期查、按自習室查、按用戶手機號查。這些條件組合起來可能幾十種情況如果全寫死在Java代碼里那打補丁得累死。我的做法是這樣的用一個Map或一個DTO接收所有查詢參數(shù)然后在XML里用where標簽if標簽動態(tài)拼接。這樣當某個參數(shù)為空時對應的SQL條件片段就不會拼進去查詢語句會自適應變化。下面是一個預約記錄分頁查詢的XML片段select idselectReservationPage resultTypecom.studyroom.vo.ReservationVO SELECT r.id, r.reservation_no, r.room_id, r.seat_id, r.user_id, u.username, u.phone, r.reserve_date, r.start_time, r.end_time, r.status, r.create_time FROM reservation r LEFT JOIN user u ON r.user_id u.id where if teststatus ! null and status ! AND r.status #{status} /if if testroomId ! null AND r.room_id #{roomId} /if if testreserveDate ! null AND r.reserve_date #{reserveDate} /if if testkeyword ! null and keyword ! AND (u.username LIKE CONCAT(%, #{keyword}, %) OR u.phone LIKE CONCAT(%, #{keyword}, %)) /if /where ORDER BY r.create_time DESC LIMIT #{offset}, #{pageSize} /select這里有個細節(jié)值得留意LIKE查詢的寫法。我之前見過有人直接在Java代碼里拼好%...%再傳到SQL里這樣也work但存在注入風險。用CONCAT函數(shù)在SQL層拼接更安全。LIMIT后面的offset和pageSize用#{}參數(shù)占位MyBatis會自動做預編譯防SQL注入。這一點是面試高頻考點也是實際開發(fā)必須養(yǎng)成的好習慣。另外resultType和resultMap的選擇上我大部分聯(lián)表查詢用resultType直接映射到VO對象只要數(shù)據(jù)庫字段名和VO屬性名通過下劃線轉(zhuǎn)駝峰映射就能對上。需要在application.yml里開啟map-underscore-to-camel-case: true這個配置。3.3 預約與取消預約的接口實現(xiàn)預約接口是整個系統(tǒng)最核心的接口它的實現(xiàn)邏輯我拆成了五個步驟參數(shù)校驗、重復檢查、沖突檢查、座位狀態(tài)檢查、插入預約單。下面把關鍵代碼的思維流程講一遍。參數(shù)校驗階段要檢查必傳字段用戶id、自習室id、座位id、預約日期、開始時間和結束時間。開始時間必須早于結束時間預約日期不能是過去日期。這些校驗放在Service里能保證即使繞過前端校驗也攔得住。重復檢查就是檢查同一個用戶同一個時間段內(nèi)是否已經(jīng)有預約。規(guī)則可以做成一個用戶同一時間段只能有一個有效預約避免“占著茅坑不拉屎”的惡意預約行為。沖突檢查則查座位在目標時間段是否已有其他用戶的預約。座位狀態(tài)檢查要查座位的運營狀態(tài)是否可用。如果這個座位被管理員標記為禁用那預約請求要直接拒絕。最后一步才是生成預約單狀態(tài)設為待使用同時返回給前端一個預約成功的提示和預約單號。取消預約的邏輯相對簡單但要仔細考慮時間限制。我設定的規(guī)則是預約開始時間前30分鐘允許取消已經(jīng)超過時間就只能走“超時未到”流程。這里有一個特殊處理取消操作要同步做兩件事改預約單狀態(tài)為已取消同時如果當前沒有其他預約占用該座位座位狀態(tài)恢復為空閑。為了讓讀者更好理解我把核心的Service方法偽代碼寫出來Override Transactional(rollbackFor Exception.class) public ReservationResponse reserve(ReserveRequest request) { // 1. 參數(shù)校驗 if (request.getStartTime().compareTo(request.getEndTime()) 0) { throw new BizException(開始時間必須早于結束時間); } // 2. 檢查用戶是否已有沖突預約 int count reservationMapper.checkUserConflict( request.getUserId(), request.getReserveDate(), request.getStartTime(), request.getEndTime()); if (count 0) { throw new BizException(你已有同時段的預約記錄); } // 3. 檢查座位是否可用 Seat seat seatMapper.selectById(request.getSeatId()); if (seat null || SeatStatus.DISABLED.getCode().equals(seat.getStatus())) { throw new BizException(座位不可用); } // 4. 檢查座位同一時段沖突 int seatConflict reservationMapper.checkSeatConflict( request.getSeatId(), request.getReserveDate(), request.getStartTime(), request.getEndTime()); if (seatConflict 0) { throw new BizException(該座位當前時段已被預約); } // 5. 生成預約單 Reservation reservation new Reservation(); reservation.setReservationNo(generateReservationNo()); // ... set other fields reservationMapper.insert(reservation); return ReservationResponse.from(reservation); }generateReservationNo我是這樣生成的每天日期字符串加六位隨機數(shù)比如20250601 823471。加上唯一索引防止極端情況下兩個單號撞車。這個單號的價值主要體現(xiàn)在線下場景自習室管理員看到單號就能快速在系統(tǒng)里查到對應預約比用數(shù)據(jù)庫id好太多。4. Vue前端實現(xiàn)與交互細節(jié)4.1 項目初始化與路由設計前端用Vue腳手架創(chuàng)建項目后首先要裝依賴vue-router負責路由pinia負責狀態(tài)管理axios負責發(fā)HTTP請求element-plus或vant做UI組件庫。我這套PC端管理類頁面比較多選的是Element Plus。路由設計我采用了動態(tài)路由的思路登錄成功之后根據(jù)后端返回的角色信息動態(tài)添加路由。普通用戶能訪問的路由是首頁、自習室列表、座位預約、我的預約、個人中心管理員能額外訪問座位管理、自習室管理、預約管理、數(shù)據(jù)統(tǒng)計。這樣避免把所有路由一次性注冊用戶手動輸入URL訪問不該進的頁面直接被404或重定向。實現(xiàn)核心是在router.beforeEach的全局前置守衛(wèi)中加邏輯取到用戶的token再根據(jù)角色拼接需要動態(tài)添加的路由。這個方案要注意一個問題刷新頁面時路由會被重置必須在刷新前把路由信息存到pinia或localStorage里下次進入時再重新addRoute。4.2 自習室列表與選座交互用戶進入預約流程的核心路徑是選擇自習室 - 查看座位圖 - 點擊座位 - 確認預約信息 - 提交成功。自習室列表頁比較簡單就是一個卡片列表。每個卡片展示自習室名稱、位置、開放時間、剩余座位數(shù)。剩余座位數(shù)不要單獨寫死而是每次查詢時動態(tài)計算。我這邊是用一個接口獲取所有自習室再返回每個自習室的可用座位數(shù)。座位圖是前端開發(fā)中最需要花心思做的一塊。我設計了一個Canvas繪制的座位平面圖后端返回每個座位在自習室中的相對坐標(x, y)前端根據(jù)坐標繪制座位方塊不同狀態(tài)的座位用不同顏色區(qū)分綠色空閑可點擊、灰色已占用、黃色被選中。用戶點擊空閑座位后彈出側(cè)邊欄顯示預約時間選擇器選好時間段后提交。這個交互看似簡單但雷區(qū)不少。最大的坑是點擊事件綁定。如果你用div渲染多個座位事件冒泡可能導致用戶點一個座位被判定成點擊另一個。解決辦法是為每個座位設置唯一的data-index屬性事件處理時用event.target.dataset.index來鎖定目標而不是依賴事件對象的其它屬性。另外還要給選中的座位做高亮并且一定要處理用戶點擊A座位再點擊B座位的情況上一次選中的狀態(tài)要取消掉。具體到座位坐標返回的接口設計我推薦一次返回該自習室當天所有座位信息的列表包含id、座位編號、x坐標、y坐標、狀態(tài)。前端拿到數(shù)據(jù)后渲染即可。這里不要在選座時才逐個請求座位詳情會造成大量HTTP請求拖慢頁面響應。4.3 狀態(tài)管理用戶信息與預約狀態(tài)Pinia是Vue 3官方推薦的狀態(tài)管理庫相當于是Vuex的進化版。它的代碼比Vuex簡潔很多去掉了mutationsaction里直接改state。我把用戶登錄信息、token、預約篩選條件這些全局共享數(shù)據(jù)都放進了Pinia。實際開發(fā)中比較關鍵的是Token管理。用戶登錄成功后后端返回一個token我用的是JWT前端把token存到localStorage里同時設置axios的請求攔截器在每次請求前自動把token放進請求頭Authorization字段。響應攔截器里做統(tǒng)一錯誤處理后端返回401時自動清除token并跳轉(zhuǎn)登錄頁返回業(yè)務錯誤碼時直接彈出ElMessage提示用戶。預約狀態(tài)的響應式更新也很重要。用戶成功取消一個預約后之前座位圖上對應座位的狀態(tài)還顯示為灰色已占用但數(shù)據(jù)庫里已經(jīng)變成空閑了。這時候必須觸發(fā)數(shù)據(jù)刷新。我的做法是把當前自習室的座位數(shù)據(jù)存到Pinia的管理模塊里取消預約成功后調(diào)用seatStore的fetchSeats方法重新拉取座位數(shù)據(jù)保證UI和數(shù)據(jù)庫狀態(tài)一致。千萬別圖省事只在前端改一個座位狀態(tài)變量一旦刷新頁面就露餡而且并發(fā)情況下用戶看到的可能是過期數(shù)據(jù)。5. 部署運行與常見問題排查5.1 本地快速啟動初始化SQL與配置文件整套系統(tǒng)跑起來的第一步是初始化數(shù)據(jù)庫。提前把建庫建表SQL腳本準備好包括核心表數(shù)據(jù)和幾個測試用戶數(shù)據(jù)。MySQL 8.x版本要注意字符集數(shù)據(jù)庫和表都用utf8mb4而不是utf8因為utf8在MySQL里不是標準的四字節(jié)UTF-8emoji等特殊字符存不進去會報錯。這個問題非常隱蔽排查很久才發(fā)現(xiàn)的。后端配置文件application.yml里我最常被問到的幾個配置server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/study_room?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue username: root password: 123456 jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT8 mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.studyroom.entity configuration: map-underscore-to-camel-case: trueserverTimezoneAsia/Shanghai是很多新人忽略的地方。MySQL 8.x驅(qū)動默認時區(qū)是UTC如果不指定查出來的時間會比本地時間早8小時預約時間的顯示全部錯亂。allowPublicKeyRetrievaltrue這個參數(shù)是在用caching_sha2_password認證插件時需要的不加會報Public Key Retrieval is not allowed錯誤。5.2 高頻報錯與解決方案我把開發(fā)和部署中遇到的幾個高頻問題整理成表。這些問題都是新手期最容易觸發(fā)、且真實項目里也極有可能再現(xiàn)的。問題現(xiàn)象原因解決方案Failed to configure a DataSourceapplication.yml找不到配置或類掃描路徑不對檢查注解SpringBootApplication所在包是否能掃描到配置類Invalid bound statement (not found)mapper接口和XML文件未綁定檢查XML文件位置是否在mapper-locations配置路徑下方法名是否一致Cannot load driver class: com.mysql.cj.jdbc.DriverMySQL驅(qū)動未引入在pom.xml中引入mysql-connector-java依賴版本需與本地MySQL對應日期錯亂少8小時時區(qū)配置未設置增加serverTimezoneAsia/Shanghai參數(shù)跨域請求被攔截前后端端口不一致在SpringBoot中配置CorsFilter或使用CrossOrigin注解前端請求404或500后端接口路徑或參數(shù)名不一致用瀏覽器開發(fā)者工具的Network面板查看具體請求和響應唯一索引沖突Duplicate entry同一座位同一時間段重復預約在Service中執(zhí)行沖突檢查并捕獲異常返回友好提示跨域問題我要單獨說。我開發(fā)時前端跑在5173端口Vite默認后端跑在8080端口兩者端口不同瀏覽器攔截跨域請求很正常。解決方式有兩種后端統(tǒng)一配置一個CorsFilter允許指定源和指定方法另一個是后端使用Spring Cloud Gateway等網(wǎng)關代理但單機開發(fā)時一個CorsFilter就夠用了。生產(chǎn)環(huán)境建議使用Nginx做反向代理把前端靜態(tài)文件和后端接口放到同一個域名下從根源上規(guī)避跨域。5.3 性能與并發(fā)優(yōu)化心得自習室預約這類系統(tǒng)的并發(fā)量不會特別夸張但是某些高峰時段例如圖書館的期末復習周還是會有一波瞬間高并發(fā)。我的優(yōu)化經(jīng)驗分三檔。第一檔是前端限流。座位圖上的座位數(shù)量有限用戶需要先選擇時間段再提交避免所有人都同時在預約按鈕上狂點。提交按鈕設置60秒的防重復點擊限制用戶操作邏輯上先攔住一部分無效請求。第二檔是后端緩存。熱門自習室的座位狀態(tài)數(shù)據(jù)可以緩存到Redis減少數(shù)據(jù)庫的查詢壓力。但緩存會讓數(shù)據(jù)狀態(tài)有一定的延遲需要配合緩存過期時間或者消息通知主動失效。自習室預約系統(tǒng)的數(shù)據(jù)一致性要求并不那么高因為用戶查詢座位狀態(tài)時看到有一兩秒的延遲完全可以接受但預約提交瞬間必須讀最新數(shù)據(jù)。第三檔才是數(shù)據(jù)庫性能優(yōu)化。給預約單表建立合適的聯(lián)合索引預約日期狀態(tài)自習室id座位表建立自習室id索引用戶表手機號建唯一索引。這幾種索引組合能覆蓋絕大部分業(yè)務查詢場景。不要盲目給所有字段加索引寫多讀少的字段加索引反而拖慢插入速度。還有一個經(jīng)驗是盡量把復雜SQL拆分。比如統(tǒng)計報表需求每日預約量、座位利用率、自習室排行。這類統(tǒng)計查詢在數(shù)據(jù)量小的時候用一條SQL就能搞定但數(shù)據(jù)量一旦上來group by和子查詢會讓數(shù)據(jù)庫壓力劇增。我的做法是把統(tǒng)計任務拆成定時任務每天凌晨用Spring Boot的Scheduled注解生成當天的統(tǒng)計匯總數(shù)據(jù)存到統(tǒng)計表前臺展示時只需查統(tǒng)計表查詢性能提升非常明顯。6. 從課設到真實項目的提升點從一個能跑起來的課設系統(tǒng)到一個稍微接近生產(chǎn)環(huán)境的應用中間還差幾個關鍵動作。整理項目時我用下面幾條標準來衡量系統(tǒng)成熟度也可以對照看看你的項目卡在哪一檔。第一是日志鏈路。開發(fā)階段print()完事直接輸出到控制臺沒問題但部署到服務器后就必須依賴日志定位問題。我用的方案是Logback按天滾動切割ERROR級別和INFO級別分開輸出。預約成功、取消、失敗這些核心操作至少記錄一條INFO日志包含用戶id、座位id和操作結果方便日后做問題排查。第二是參數(shù)校驗的規(guī)范化。不要在前端做了一堆校驗就認為萬事大吉。后端必須用JSR 303的Valid注解做參數(shù)校驗在DTO字段上標注NotNull、NotBlank、Length等注解寫起來零成本但能攔截掉大量無效請求。第三是接口文檔。以前很多小團隊不愛寫接口文檔前后端聯(lián)調(diào)靠口頭溝通效率極低。后來普遍的方案是集成SpringDoc或Swagger啟動項目后自動生成接口文檔。另一個更好維護的方式是寫Apifox或Postman的接口集合把每個接口的請求參數(shù)和返回結果固化下來新成員接手時直接看接口集合就能上手不用讀一遍源碼。第四是數(shù)據(jù)安全。密碼加密使用BCrypt登錄接口加簡單的驗證碼或圖片驗證碼做防爆破。預約的接口要驗證當前登錄用戶和操作對象是否一致防止通過篡改請求參數(shù)操作他人的預約記錄。這個越權問題在課設里常常被忽略但在真實項目中屬于高危漏洞。我用的是攔截器加ThreadLocal保存當前登錄用戶信息Service層取用戶id時統(tǒng)一從這個ThreadLocal取前端傳來的任何user_id都不作為權限判斷依據(jù)。7. 實操中的個人體會整個項目做完回頭復盤我最大的感受是技術選型重要但比技術選型更重要的是對業(yè)務邊界和狀態(tài)變化的清晰認知。這套系統(tǒng)的業(yè)務本質(zhì)并不復雜就是一個座位的占用時間片管理但圍繞這個本質(zhì)展開的字段設計、狀態(tài)流轉(zhuǎn)、并發(fā)控制、交互體驗每一環(huán)都會決定系統(tǒng)的穩(wěn)定性和易用性。對我個人來說動手做一個項目永遠比看書看視頻學得快。遇到問題靠搜索引擎、靠官方文檔、靠上下文調(diào)試慢慢解決踩過坑的記憶最牢固。也建議你把這個項目跑起來之后嘗試加一個功能或者換一種實現(xiàn)方式比如把座位預約改成計數(shù)預約、加一個基于Redis的排隊功能、把統(tǒng)計報表改成圖表可視化。不要照著我寫的代碼抄一遍就完事改造的過程中你才會真正理解哪一步為什么這么設計。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
麻豆一区在线| 亚洲激情视频| 99久久免费看精品国产一区| 国产一区二区三区影片| 超碰午夜| 九九九精品成人免费视频小说| 国产网红精品| 亚州熟妇精品| 国产野战露脸在线播放| 操逼无毒无码免费视频| 天堂а√在线最新版在线| 人妻中文字幕日韩电影| 亚洲激情色片| 欧美91视频| 旡码电影特区| 97碰| 婷婷尹人大香蕉免费| 欧美中文狠| 超碰91在线| A一区片| 超碰超碰欧美| 视频不卡中文字幕| 人妻在线臀日韩| 精品在线蜜臀| 麻豆2区1区天美| 一区二区三区成人| 国产精品自在线发布| 色噜噜综合在线| 97视频在线免费观看| 97久久视频| 性91| 中文字幕少妇色| 日韩性爱啪啪视频| 美腿丝袜高跟网免费视频免费视频| 26UUU欧美日本| 毛片17S| 中文字幕精品免费一区二区| 97公开久久| 操一操摸一摸| 蜜桃精品视频一区| 波多野42部无码喷潮在线观看| 密臀AV在线| 91碰超| 亚州高清av| 国产成人精品亚洲日本| 精品欧美老熟女一二区| 欧美 牲| 手机看片1025| 玖玖爱一区在线| 人妻一区视频| 88在线一区二区三区| 五月丁香综合啪啪| 色色香蕉| 资源新线在线天堂| 无码高清专| 国产操伦| 色香AV| 玖玖爱一区在线| 丰满人妻无码一区二区三区| 美女十八禁| 婷婷五月天AV| 无码人妻精品一区二区中文| 性生活性生大爱77AV国产| 怡红院视频在线| 久久男人精品| 丝袜综合网| 好看的久久不射无码影视影院| 亚洲高清无码在线桃色| 91午夜无码| 秋霞一级视频在线观看免费| 精品国产a∨一区天美传媒| 少妇蜜汁| 成人精品在线| 99九九精品| 欧美熟妇操操视频| 84YTCOM性无码| 国产suv精品一区| 一区二区偷拍拍视频| 婷婷丁香五月天综合东京热| 九九综合久久| 91熟女丨91老女人| 欧美黄片欧美黄片xxx| 欧美视频第二页| 啊啊啊啊啊在线| 五月天婷婷色色| 欧美综合自拍亚洲综合图| 一本精品日本在线视频精品 | 久久一本大香蕉| 九九视频黄色片| 亚洲蜜桃V妇女| 九九九精品一区二区无码| 你懂的在线观看区国产| 磁力99AV| 天天躁日日躁成人字幕aⅴ| 天无日色综合| 思思热免费在线视频| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚洲宗合网| 国产真乱mangent| 久久女人视频| 欧 美 自 拍 偷 拍| 啊啊啊啊啊好大好舒服想要| 秋霞影音一区二区三区| 国产乱码久久久| 99这里有精品| 中文字幕在线高清男人的天堂| 欧美成熟性爱精品| 国产大学生口爆吞精合集| 蜜屁Av| 国产伦乱91| 久热这里只有精品9| 九九热精品免费视频| 日韩无码三级影院| 99夜夜操| 天天干夜夜鈤| 久久久九九九九| 色欧美天天| 国产一级内射无挡观看| 中文字幕熟女人妻丝袜| 97国产伦理| 校园春色综合色| 国产精品无码AV网站| 校园春色五月天| 锕锕好爽 死我在线观看| 天天日B狠狠操| 在线观看国产黄色| 国产精品欧美日韩久久| 91啦人妻| 人妻一区二区三区四区视频| 欧美成人精品欧美一级乱黄一区二…| 夜夜 中文视频rt| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 午夜男女爽爽爽影院视频| 久久婷婷亚洲欧| 国产视频一区二区在线| 素人美腿视频网站| 人妻精品综合中文字幕在线| 9Ⅰ老熟女| 偷拍 亚洲 欧美| 激情一区二区三区在线观看| 国产做?爰片久久毛片?片美国| 国产成人91一区二区三区| 久艹日日日| 黑人综合网| 久99在线免费观看视频| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 大香蕉琪琪日本女优不卡| 嗯嗯啊啊用力视频免费| 久久色一区| 欧洲中文字幕| 2026国产精品视频| 中文字幕在线第二页| 少妇蹲下买菜露大唇0| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 免费看污网站| 1204av韩国| 久久精品国产久精国产| 亚91网| 黑人免费福利视频| 国产69精品久久久久99尤物| 国产日比| 欧美后入视频| 久久久久久97| 国产精品制服丝袜清纯唯美 | 久久草视频污视频| 久久久久久久亚洲Av无码| 91亚·色| 色香伊人| 天天草天天日| 日韩女模中文造逼| 99啪啪视频| 亚洲十八禁止| 国内毛片欧美香蕉精品| 丁香九月激情啪| 精品国产污一区二区三区| 欧美精品久久| 亚洲一区二区三区春色| 亚洲精品视频在线播放| 一区中文字幕二区日韩| 天天操天天谢| 在线观看无码三级少妇| 亚洲无套久久嗯嗯| 美女黄页网站| 爽 好舒服 无码刺激久久| 97国产色综合| 狠狠超| 亚洲啪啪性视频| 国产精品一区二区后入| 26uuu久久| 色av中文字| 人妻少妇精品久久久| 亚洲欧美高清无码| 亚洲AV资源| 精品1区2区3区| 五月天久久久| 亚洲Av诱惑| 欧美疯狂做爰xxxx| 78操B| 五月丁香网站| 超碰综合97在线| 欧美综合娱乐久久| av九九| 天天综合-91入口| 新久久AV| 色九九九九九九| 色婷婷导航| 欧美传媒一区| 日韩精品一区的| 婷婷10月天青娱乐| 国产小黄片在线免费观看| 久久香蕉网| 另类小说欧美激情校园春色| 韩国久久97| 强被迫伦姧在线观看无码网站| 蜜臀色乳| 99热成人| 亚洲一卡2卡3卡4卡乱码网站| 日韩资源网| 这里都是精品在线观看| 亚洲天天在线| 久久激情四射婷婷丁香五月天| 99色色网| 欧美极品性爱天天射| 九九九九97| 天天看天天综合成人网| 久久亚洲中文字幕视频| 91超碰在线观看| 久久久久久久久久久97| 国产91乱伦| 91精片| 精品一国2| 欧美拳交在线播放| 日韩视频啪啪| 18禁美女裸体无遮挡啪啪| 无毛精品| 久久国模av| 久久久A∨| 操逼片中文| 99在线精品观看99| 免费观看啪视频| 久久久999| 九九热精品视频六| av麻豆啪啪| 中文字幕狠狠玩| 国产亚洲精品激情| 国产又黄又粗的视频| 四季AV一区二区凹凸精品小说| 国产动漫操逼视频| 久久麻豆一区二区| 操我啊啊啊啊啊| 综合五月婷婷| 香蕉久久国产AV一区二区| 国产精品嫩草影院午夜两性| 玖玖久久久| 亚洲毛片久久| 欧美色图综合| 伊人一区二区在线播放| 亚洲欧美自拍偷拍| 一起草欧美| 日韩精品三区四区| www.高清无码诱惑一区.com | 中文字幕天堂在线| 麻豆视频国产一区二区| 久久久久久国产成人| 亲子敌伦对白在线播放| 成全在线观看免费观看| 日日操免费视频| 国产操操日韩三级黄| 嗯啊抽插大香蕉网页| av在线免费一区二区| 国产AV无码AV| 国产精品亚洲一区二区三区四区| 日本三级日本三级99| 在线另类| 97欧美精品综合| 三级网站超变态精品| 精品99999| 欧洲亚洲人人爽爽视频| 人妻五十路在线| 品亲网欧美品亲网| 亚洲色9| 久久精品亚洲东京热色播| 五月天激情四射| 亚洲影视综合网| caopeng97| 久热久| 老司机福利社视频在线观看| 日韩av情韩国爱禁区av一区二区| 天天综合网亚洲综合网| 国产尤物在线三区| 91综合在线| www.大香| 少妇同性| 中文字幕丝袜| 色就色综合| 成全在线观看免费观看| 色色五月天婷婷| 久久鲁夜| 日韩丝袜二区| 欧美性生活内射| 99热这里都是精品| 国产日韩怡红院| 国产黄色在线播放观看| 亚洲av综合伊人久久| 亚洲三级。日韩三级| 久久久一区二区三区三州| 欧美激情综合| 肉丝中文无码高清| 人人操人人插人人摸人人干| 欧亚洲精品有视频| 美女9118禁| 综合久久欧美| 精吧天堂| 国产第25页在线观看| 黄色成品网站| 免费无码婬片AAAA片直播色戒| 1769一区二区| 日韩高清一二三| 成人三一级一片aaa| 欧美日韩国产中文精品字幕自在自线,| julia ann久久| 一线黄色免费性爱片| 精品无码一二三四区| 日韩一级二级三级在线不卡观看完整| 亚川综合视频| 亚洲国内精品成人不卡| 国产精品96| 色五91| 国产一区在线看| 91oumei| 免费视频一二三区| 91丝袜美女| 97在线免费| 校园春色欧美色图| 9久在线视频只有精品| 欧洲Au麻豆| 欧美日韩另类在线| 天天内射| 天天干天天干天天| 国产乱伦视频污| 国产性爱欧美性爱在线 | 欧美日韩激情无码专区| 97色欧洲| 九一性生活免费视频| 国语精品内射在线观看| 啊啊啊好大好深| 中文字幕 人妻不满 在线视频| 粉嫩久久久极品| 亚洲Av无码成人精品国产| 精品中文日韩字幕视频| 国产乱码精品一区二区三区四川| 久久久国产护士丝袜美腿一| 亚洲天堂性爱| 国产无码精品高清| 人妻色情天天操| 色女综合| 欧美天天插| 中文字幕成人| 日韩人妻无码专区| 国产福利一区二| 男人的天堂kva| 天美麻豆精品视频99| 操逼视频国产无套| 日韩免费看在线黄色片| 久久粉色| 国产乱码久久久| 久久中久文96| 1024午夜激情男人的天堂| 色哟哟1区2区| 欧洲亚洲人人爽爽视频| 加勒比少妇AV婷婷六月天超碰超碰| 激情婷婷五月天| 欧美日韩国产中文精品字幕自在自线| 91狠狠综| 欧美亚洲素人制服精品| 中文字幕乱码人妻一区二区三区,99精品| 四虎av在线| 成年女人一区| 久热久操| 日本影视久久免费| 亚洲熟女综合网| 黄页网站成人免费| 精品无吗m| 丰满人妻一区| 亚州九九九精品视频| 久久久啊啊啊| 青草精品视频一日本久久久久网站| 欧美色图私拍91| 精品国产72| 97频视在线| 亚洲在钱| 久久永久无码人妻视频| 毛片久久| 国产成人无码网站在线视频| 在线黄色污污网站| 欧洲熟妇xxXx欧美老妇裸体| 91最新综合| 日韩精品一区二区人人人| 中国一级特黄大片护士| 99r九九| 天天综合网~91| 亚洲精品乱码久久久久久蜜桃麻豆 | 99国产精品免费| 亚洲国产97| 欧美精品1区2区3区| 加勒比伊人影院| 久久亚洲国产成人| 一区二区三区四区五区高清无码永久视频| 综合网少妇| 免费一级视频特黄色大片| 99精品高潮| 91精品亚洲内射孕妇| 97国伦国色| 国产亚洲99久久精品熟| A啊啊在线观看| 岛国激情视频在线观看| 操淫穴亚洲五月丁香 | 美国一区二区三区视频| 九九热精彩视频| 日本日皮视频逼| 丁香7月婷婷| 婷婷中文字幕| 欧美性生活男人的天堂| 亚洲 另类 丝袜 自拍 动漫| A 天堂在线观看视频| 欧美97se| 人人污日韩一区二区| 中国zzijzzijzzwww精品| 肉丝无码中文高清| 99啪| 久精品无码av一区二免费国产在线观看 | 亚洲资源吧| 中文字幕在线观看AV| 特级特黄一级毛片免费| 999久久芭蕾| 亚洲精品蜜桃久久久一区二区三区| 91亚洲高清| 精品成人女人久久| 特污免视频| 综合久久久久久久综合网| 亚洲天堂久久| 中 文字幕一区二区三四 五 区日 日 骚 | 日韩欧美俄罗斯A片| 中文字幕在线免费观看| 欧美亚洲91| 亚洲色图加勒比| 激情四射五月天| 逼操网站| 一级成人性爱| 粉嫩av平台| 九久久精| 超碰碰97资源站| 四虎免费视频| 日本高清加勒比| 亚洲免费97免费| 久久久久日本视| 啪啪综合网| 探花精品视频| 亚洲偷拍自拍在线视频| 可以在线观看AV的网站| 免费av在线播放二区| 久久夜夜| 九七超碰| 欧美亚洲国产91在线| 人妻少妇精品视频一区二区三区| 欧美亚洲天天| 激情在线青青操| 久久久一区二区三区麻豆| 亚洲色图 图片| 加勒比海成人视频网| 亚洲情色图片区| 日本天天干天天搞一区| 欧美国产有色电影| 粉嫩av一区二区三区四季| 亚洲精品一卡二卡三卡福利视频网站 | 六月婷婷激情| 97视频在线观看播放与子乱对白在线……| 日韩三级久久久| sss视频华人在线| 亚洲欧洲无码97久久精品| 久久久久国产| 青青草这里只有精品| 91欧美亚洲| 欧美伊人久久综合网| 亚洲欧美变态| 日本人体九九九九九九| 亚洲日韩美国人妻| 久久9久| 青娱乐淫乱1314| 91女网站| 欧美精品庄| 东京热男人的天堂网| 久久精品电影在线| 亚洲欲色9532548967一区| 亚洲日韩天堂| 第四色亚洲色图| 亚洲成人性爱网站在线播放| 91爱看| 校园春色AV天堂| 国产精品999zyz| 蜜臀99久久精品| 熟妇熟女亚洲天堂网| 久欲AV| 夜夜影视四色| 99性爱在线观看| 天天综合91在线| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 九九av| 中文字幕黄色一起草| 一区操逼日比视频| 国产日韩人人| 98精品国产乱码久久久久久| 性交一区二区在线播放| 日本顶级天天操狠狠操夜夜操中文字幕| 人妻加勒比东京热| 曰韩av中文字幕专区| 麻豆天美传媒在线视频天堂| 黄页av| 五月天综合| 91在线丝袜| 操逼啊啊啊91| 加勒比av官网在线| 中国乱伦一区二区| 操逼短片| 美女黄频a美女大全免费皮| 麻豆伊人网| 日韩精品一区二区日韩| 久9爱经典视频| 色伊人91| 精品97久久| 人妻啊啊人妻啊啊| 国产精品不卡av免费在线观看| 伊人久久88国产女| 综合久久少妇中文字幕| 大香蕉在线视频重口味毛片在线| 精品一区二区国产日韩| 好看的91视频| 乱欲一区二区| 欧美激情专区| 四虎国产成人精品免费一女五男| 亚洲欧洲综合成人av一区| 欧美亚州色的图| 色墦五月丁香| 免费久久一级毛片大黄| 91色综合| 丰满搜索结果 -第18页- 久久高清无码| 日韩日本欧美在线观看| 999综合色| www.99在线| 啪啪啪东京| 久久黄黄黄| 99精品丰满人妻| 99热免费| 日本一级性爱| 丰满人妻一区二区三区四区| 天天看片青娱乐| 韩国国产欧美情侣视频在线| 色综合久久久久| 国产家庭乱伦网址| 亚洲熟伦熟妇AV无码春色| 亚洲色天堂九9| 午夜毛片高清免费不卡| 小草三级久久观看| 日本色婷婷| 无码聚合| 少妇高潮对白在线观看| 久久受www免费人成| 人妻一区二区三区熟女| 亚洲日韩资源| 嫩草黄页| 尤物视频偷拍免费| 97国产色图| 欧美老妇综合网| 91色碰| 亚洲日本加勒比在线| 97色婷婷| 2020视频1区2区3区| 九九色热| 久久婷婷国产一区二区色| 9久久精品| 人妻啊啊人妻啊| 色色五月天婷婷| 九九AV| 国产精品久久久久绯色| 久草资源在线视频官方总站日韩丝袜美腿 | 六月丁香啪啪| 精品少妇一区二区三区免费观看| 97超碰jingpin| 人妻精品综合中文字幕在线| 亚洲一二三精品久久网| WWW.加勒比人妻一区不卡.com| 五月婷婷hd| 男人的亚洲天堂| 九九九不卡| 日本一级真人黄色性爱视频| 中文乱码字字幕在线第5页| se吧提供91精品国产91久久久久久 | 成人一道本免费视频| 国产乱色国产精品免费视| 久久鲁干| 中文字幕丝袜人妻| 综合天天。| 激情综合网激情综合| 2019久久久久久久久福利| 久草精品热视| 91丝袜美腿网站| 伊人久久国产免费观看视频| 操学生天天| 欧美日韩日产免费网站看| 国产品精品自在在线午夜免费| 日韩无码嘿咻黑热久| 日韩综合第八区国产精品| 国产欧美日韩在线不卡第一页| 超碰在线1234区| 国产原创剧情在线丝袜| 99re欧美| 青青草自拍视频在线播放| 国内毛片欧美香蕉精品| 欧洲精品人妻| 色欲天天综合网| 91av熟女人妻| 一区二区亚州激情久婷婷欧美| 首页中文字幕中文字幕免费| 亚洲欧美伦综合| 天天综合网91入口| 亚洲第一无码播放立川理惠| 2017天天操| 亚洲精品蜜桃久久久久久久| 国产精品一区二区黄片| 绯色一区二区三区不卡少妇| 欧美国产操逼| 日本久操视频| 日韩一级成人毛片免费观看 | 黄人人操人人操| 97人人色| 亚洲性猛交| 欧美 亚洲 综合 制服| 操高情无码| 日本黄大片在线观看视频| 偷窥自拍亚洲| 九一综合网| 五月天久久婷婷亚洲| 91丨九色丨国产打屁股| 久久社区一区二区三区| 操国产逼| 青草精品视频-日本久久久久网站| 情色五月天网| 色女综合| 久久色一区| 亚洲熟女国产综合另类| 九九性视频| 蜜乳av首页| 久久9久久| 国产无马av| 久久久少妇诱惑精品视频| 人人操人人操人人操人人操人人操人人人11.CM | 91中文精品日韩欧美在线 | 国产成人亚洲精品无码古代早漏男 | 91伊人久久在线| 久久国产乱子伦精品免费女人| 久久久久9| 久久婷婷综合国际产色怕| 久久久久久免费电影| 亚洲精品视频在线播放| 久久天堂| 青青草色插素人| 日韩成人电影AV| 91九九| 品亲网欧美品亲网| 欧美十八禁在线看| 在线视频97| 五月天久久婷婷亚洲 | 五月天精品| 99国产在线绯色一区| 爱欲AV| AND人妻系列| 熟妇艹鸡八| 久久一二三四不卡 | 最新三级网址| 中文字幕日韩人妻视频一区二区三区 | 欧洲性爱无码区| 天天看精品动漫视频一区| 亚洲日韩美女丝袜美腿人妻视频| 国产农村妇女毛片精品久久| 国产97在线播放| 欧美日韩制服| 探花视频免费观看国产专区| 97在线观看| 日韩激情毛片一级久久久| 久久黄色视频一区二区三区| 十八岁啪啪视频免费看| 青青草天天亲夜夜操网| 日本熟妇一区二区三区| 大香蕉伊人在线成人AV在线观看| 97超碰资源网| 99少妇| 亚洲成人精品在线一区| 欧美大香蕉专区网| 91亚·色| 欧亚日韩综合精品国产| 精品天堂| 国产 日韩 欧美高清| www.色婷婷色综合| 日日干夜夜欢| 东京太热男人的天堂久久久| 96久久精品一二三区色欲| 久啪| 欧美日韩激情无码专区| 天天摸天天碰天天添青青| 国产一国产一级毛片古装| 九九黄色视频在线观看| 91丝袜美女| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 啪啪综合网| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 天天操福利视频综合网站| 国产蜜臀在线| 97碰久久| 秋霞一级视频在线观看免费| 一区黄二区黄| 欧美丰满少妇交换91欧美精品| 久久久久9999| 丁香五月婷婷五月| 欧美日本不卡| 青草草免费网站av| 熟妇在线视频一区二区| 东北女人操比视频| 女沟厕偷窥piss小便| 男人的天堂无码| 麻豆区久久久久亚| 国产自制av蜜乳| 七月丁香婷婷| 欧美美女在线高潮999| 午夜.DJ高清在线观看免费7| 亚洲中文字幕一区| 国产97在线 | 亚洲| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 午夜福利在线视频1000| 欧美一级特黄淫片在线观看| 91碰碰| 国产女人高潮视频| 亚洲欧洲综合成人av一区| 夜夜操夜夜高潮夜夜爽国产精品区| 色色激情五月天| 久综合国内精品自在自线| 免费国产| 色老汉色| 性爱综合网| 日韩中文字幕人妻视频| 欧美中日韩XXXX| 久久水蜜臀亚洲AV无码精品| 自拍欧美| 亚洲欧美人妻| 国产精品久久久吖| JIZZJIZZ亚洲女人被躁| 欧美se亚洲| 久久黄片国产一区二区| 欧美激情亚洲情色| 女生看匆91网站| 欧美天堂日韩三级国产传媒| 男插女青青影院| B049AV在线播放| 密臀成人视频久久久| 另类欧美色| 人人操 欧美| 中国一区二区亚洲人妻| 伊人五月天| 熟女在线视频| 国产后入内射| 精品久| 免费少妇一区二区| 岛园激情| 中文字幕加勒比海高清无码免费视频| 91精品国久久久久久无码| 春色综合免费| 日本韩高清无砖码22o| 日韩亚洲中文字幕在线| 中出91| 日本黄色裸日本黄色裸体| 色九九九九九九| 亚洲āv网址在线观看| 无码在线亚洲| 老熟女区| 天天夜夜久久| 久久精品| 欧美激情超碰777| 免费看欧美美女黄色大片 | 久久久久久久九九九九九九| 偷拍色图| 香蕉欧美| 99久久综合| 精国久久一区二区三区98| 女人久久久| 国产 三级自拍| 日韩在线人妻网站| 天天92av| 亚洲福利中文字幕在线| 久久精9| 天天操夜夜操| 97人人射| 四虎精品一区| 亚洲精品白浆高清久久久久久| 99碰碰| 智利AV在线网| 亚洲 日本 国产 综合| 超91综合网| 亚洲精品九九九九九九| 天天综合网日韩7799| 亚洲最大黄网| 色图综合| 99精品网| 日韩精品亚洲一二三| 精品亚洲国产成人av网站| 欧美三级免费伊人| 91精品91久久久久77777俄罗斯老妇姓x| 在线视频日韩欧美国产| 久久伦理视频久久大香蕉视频| 99精品国产户外露出| 伊人AAA| 欧美高清91| 91超碰人人操| 91中文字幕在线观看| 国产精品色片一区二区| 亚洲男人的天堂在线看| 亚洲无码国产精品久久| 夜夜嗨av午夜成人| 亚洲日韩在线a不卡99精品| 91九久| 久久婷婷电影网| 91色女| 女人精品内射国产99| 亚洲综合97中文网| 午夜毛片亚洲精品片国产久久久| 99视频只有精品| 青青草在线视频播放器| 国产日比| 天天爽天天操啊啊啊| 欧美日韩高潮喷水91| 亚州综合色| 刺激性视频黄页| 蜜乳成人AV| 97 九色| 日本一区二区成人在线| 人伦四五区| 九九这里只有精品| 美女啊啊啊啊啊| 美腿色图| 欧美大香蕉同搞| 1204人成网站色www| 97人人干| 成人午夜高潮av猛片| 精品亚洲俞拍视频一区| AV污污污污| 久久精品国产亚洲av水密被窝| 96精品在线| 日韩av电影成人在线| 成人一区二区三区四区| 美女被艹尤物视频| 久久78| 亚洲色图国产另类| 综合自拍| 91精品国产91综合久久蜜臀| 色五月第四色| 亚欧国产无码精品在线| 999精品久久久久久久| 久久av色| 色综合尤物| 日韩视频中文字幕| 日韩精品影视| 香蕉在线一区二区三区| 亚洲好看强奸乱伦| 欧美综合天堂| 综合 青草 伊久久 影院 综合| 色情乱伦AV| 日日爱99| 情色五月天就去干| 夜夜爽妓女| 久操不卡视频| 亚洲日韩精品久久久久一区壹牛| 另类专区加勒比| 欧美制服另类丝袜| 国产成人免费观看在线视频| 亚洲色婷婷久久久综合日本 | 啪啪啪精品视频| 国产97亚洲| 午夜精品久久久久久久| 二区熟妇韩日| 91九色精品熟女内射| 国内毛片无遮挡国产| 91 偷| 制服中出中文人人精品| 97天天爽| 国产精品久久伊人| 无码人妻精品一区二区中文| 草草草视频| 久久精品电影| 亚洲 欧美 另类 综合 偷拍| 99热在线播放| 手机看片1024你懂的国产| 久久日韩精品一区二区| 黄页av| 蜜桃网熟妇| 裸体1区| 蜜伊人色综合97| 人妻啊啊人妻啊啊| 欧美99热| 欧美激情中文字幕另类小说| 欧美一区二区三区四区综合| 99re免费| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 狠狠干,狠狠操| 亚洲国产午夜真人一级片中文字幕精品黄网站| 国产强奸AV在线| 狠狠操使劲操| 国产深喉视频一区二区| 亚洲天堂另类| 亚州色图欧美色图| 亚洲诱惑天堂 | 日本一区视频在线观看| 青娱乐国产剧情av一区| 1区2区3区视频| 欧美色性情| 九九九国产| 中文字幕一区二区三区人妻不卡| 午夜福利一区二区三区四区五区色婷婷| 欧美一二在线| 91爰爱欧美| 嗯嗯,好大,好爽,好骚| 久久av网| 成人在线视频一区| 牛牛久久国产精品视频一二三| 亚洲一区二区三区麻豆传媒| 成人影 天天操 亚洲| 91在线美女| 九九久久久九九| 亚洲 图片 欧美 色图| 欧美久久毛片基地| 亚洲中文字幕日产无码久久| 欧美78| 人人爽夜夜玩视频| 久操视频在线| 亚洲 欧美 第一页| 2017亚洲天堂| 人人爱人人乐人人操| 伊人一级免费黄片| 欧美国产欧美在线观看| 可以在线观看AV的网站| 亚洲国产日韩欧美熟妇在线| 色一情一乱一乱一区91Av| 久操大香蕉手机视频在线看| 99这里有精品| 亚洲少妇激情视频| 亚州Av天美传媒| 亚洲a色| 久久性爱视频免费看| 操婢日韩| 8050午夜少妇无码| 青草视频在线看看看看看看看看看| 久久久com| 精品美女少妇一区二区三区| 操死我了啊啊啊| 国产成人精品网站| 色综合一本| 国产三级中文有码在线视频| 成人av免费观看| 啊啊啊啊啊操我视频| 伊人色综合欧美| 人人妻人人爽| 久久久久久电影| 人妻人人操| 97色欧州| 狠狠色五月亚洲91| AⅤ片水多多| 亚州操逼网| 国产自产91区13区| 人妻大香蕉| 思思热在线视频在线| 97欧美性爱| 热天堂一区二区| 九九九精品色乱九九九| 97天堂| 欧亚性爱视频免费看| 淫淫总合网| 天天操天天日青青草超碰av| 精品国产Av无码久久久伦古装| 久久国产乱子伦精品免费女人| 大香蕉综合网| 少妇精品久久久| 超碰97护士| 福利色色| 天天综合网1| 丝袜AV一区二区三区| 搡老女人老妇女AAA一VU麻豆| 美女刺激久久国产欧美| 亚州熟妇精品| 国产精品不卡高清在线观看| 十八禁啪啦拍视频无遮挡| 欧美图片色综合| 一区二区三区高清| 日本熟妇人妻中出视频| 久久伊人网视频一区二区三区 | 91国产精品在线看| 久久 久久国内精品亚洲| 人人搞人人插人人操| 五月婷丁香| 欧美亚洲色的图| 久久无码成人| 女同性恋一区二区三区精品视频| 日韩综合97p| 免费强奸av| 日本中文字幕一区| 看免费的黄片| 日本天堂网| 91中文字幕| 天天日少妇逼AV| 91操熟女视频| 天天日天天干天天整| 日韩人妻精品中文字幕| 立川理惠被中出无码| 国产精品老熟女一区二区| 久热精品在线| 蜜乳AV色欲AVAV无码| 亚洲欧美日韩国产丝袜自拍中文| 蜜乳视频网站| 色狠人在线99| 少妇熟女1区2区3区| 国产欧美一区二区| 国产精品午夜AV完会免费| 欧美色图天堂在线| 超碰色97| 欧美|91色综合| 啊啊啊爽爽| 久久国产乱子伦精品免费女,网站| 美女91在线| 水澄无码AV| 九九亚洲精品| 欧美78P| 色区久久| 欧美日韩另类激情图片| 色吧五月| 色九久| 女同亚洲欧美一二三区久久电影| 2017天天操| 超碰97欧美在线| 亚洲伊人成综合成人网| 岛国AV一区二区电影| 色屁屁影院www国产| 在线97在线| 性色av蜜臀av色欲aV| 91国精产品| 欧美 亚洲 偷拍自拍| 天天干夜夜鈤| 欧美日韩性感| 性爱视频免费网址| 青青欧洲黑| 曰韩成人免费视频| 伊人宅男大香蕉| 人妻熟女字幕一区二区| 日韩成人无码| AV丝袜少妇| 中国女人内射6XXXXX| 国产精品午夜福利| 亚洲人精| 亚洲无线码欧洲精品区别| 任你干在线视频| 大香蕉综合| 亚洲国产美女久久久久| 夜草欧美| 五月激情视频| 精品人妻免费观看| 怡红院成人av| 五月天激情四射| 精品蜜乳AV免费观看| 欧美天天综合站| 91久久久久免| 久久性爱精品一区| 蜜臀久久99精品久久久久电影| 性爱动态120秒| 日韩国产欧美伦理在线| 欧美另类丝袜熟女| 中日韩久久人妻一区二区| 日韩不卡a级视频专区| 超碰九7| 天天摸天天舔天天操| 97五月天| 亚欧成人综合影院| 天天拍夜夜| 欧美熟女丝袜| 淫淫总合网| 蜜乳AV网址| 91网九色蝌蚪操熟女| 欧美96交| 日韩不卡码| 欧美图片偷拍| 久久久久成人亚洲国产| 国产精品视频内谢女人| 中日992视频| 蜜桃视频精品一区二区三区| 午夜免费福利视频一区| 国产日逼视频| 丰满人妻一区二区三区色-百度| 亚洲综合骚逼| 欧美熟妇乱码在线一区| 亚洲夜夜欢无码一区二区 | 激情综合网五月婷婷五月天| 久久久久少妇| 色网亚洲人| 91AV天美在线视频| 97色欧州| 久久婷婷国产一区二区色| 久久久久久AⅤ无码免费肉站| 欧美日韩另类在线| 蜜桃av色偷偷av老熟女| www.久久超碰| 啊啊啊不要嗯嗯在线观看| 九热大香蕉| 日韩欧美亚洲国产日韩| 97人人操人人干| 国产小u女在线观看| 乱伦一区二区三区‘| 2024年最新色情网站在线观看| 欧美色九九| 亚洲精品97久久中文字幕| 2019午夜福利视频| WWW.加勒比人妻一区不卡.com| 久久久99久9| 激情自拍 校园春色| 91丨九色丨东北熟女| 国产女性无套 免费观看| 蜜桃视频成a人v在线| 亚洲精品国产无码高清| 欧美大香蕉久| 2023天天操夜夜操| 在线午夜成人无码视频| 啊啊啊爽爽| 大奶的诱惑| 熟女人妻一区二区三区| 欧美se综合| 亚洲性高潮| 啊啊啊久久| 综合 亚洲 欧美| 欧洲精品一级二级精品综合视频综合| 欧美色图校园春色| 蜜臀Av一区二区三区| aV中文麻| 九九九久久久W精品| 麻豆天美在线| 日本Suv精品一区二区| 国产精品96久久久久久| 丰满人妻一区二区三区蜜桃视频| 夜夜精品视频| 国产一级高清免费观看| av毛片aaaaa免费看| 无码区蜜乳| 国模不卡| 欧美视频在线视频免费va| 欧美成人精品A片免费一区99| 天天爱天天韩国日本牛牛牛牛| 人妻天天夜夜爽一区二区| 亚洲AV乱码专区国产噜噜亚洲 |