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

ARTICLE DETAIL

資訊詳情

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

Spring Boot家教管理系統(tǒng)全棧實(shí)戰(zhàn):數(shù)據(jù)庫(kù)設(shè)計(jì)、JWT鑒權(quán)與部署

Spring Boot家教管理系統(tǒng)全棧實(shí)戰(zhàn):數(shù)據(jù)庫(kù)設(shè)計(jì)、JWT鑒權(quán)與部署 春招那會(huì)兒我接過(guò)不少私活其中很大一類(lèi)就是幫本科生把畢業(yè)設(shè)計(jì)從能跑打磨到能答辯。做得最多的就是Spring Boot管理系統(tǒng)什么圖書(shū)借閱、宿舍管理、校園考勤換一層業(yè)務(wù)殼子骨架都大同小異。但說(shuō)實(shí)話基于Spring Boot家教管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)這類(lèi)題目是我覺(jué)得最有業(yè)務(wù)味道、也最能體現(xiàn)設(shè)計(jì)能力的一個(gè)選題。它不像圖書(shū)管理那樣只對(duì)著CRUD猛懟里面既有用戶(hù)角色劃分、又有訂單和課時(shí)結(jié)算這種完整流程還牽扯到權(quán)限控制和時(shí)間沖突校驗(yàn)。今天我就以這個(gè)題目為例子把我做這類(lèi)項(xiàng)目的完整思路、表結(jié)構(gòu)設(shè)計(jì)、后端落地、前端聯(lián)調(diào)、以及那些文檔里絕對(duì)不會(huì)寫(xiě)的坑一次性講清楚。這篇文章適合誰(shuí)適合正在做家教管理系統(tǒng)畢設(shè)的同學(xué)適合想系統(tǒng)地走一遍Spring Boot全棧項(xiàng)目的初學(xué)者也適合接單幫別人做畢設(shè)的開(kāi)發(fā)同行。我會(huì)按照真實(shí)項(xiàng)目的推進(jìn)順序來(lái)寫(xiě)從選題理由到數(shù)據(jù)庫(kù)設(shè)計(jì)從JWT鑒權(quán)到定時(shí)任務(wù)每一段都是實(shí)操后的總結(jié)不是那種只給截圖不給代碼的教程。1. 為什么我推薦用Spring Boot做家教管理系統(tǒng)選題與技術(shù)選型的真實(shí)考量1.1 家教業(yè)務(wù)的核心痛點(diǎn)信息不對(duì)稱(chēng)與流程管理先聊一個(gè)最基礎(chǔ)的問(wèn)題家教管理系統(tǒng)到底要解決什么如果你只是把它當(dāng)成一個(gè)增刪改查的練習(xí)那答辯的時(shí)候很容易被問(wèn)住。家教行業(yè)本質(zhì)上是一個(gè)撮合平臺(tái)牽涉到的角色至少有四類(lèi)家長(zhǎng)、學(xué)生、家教老師、平臺(tái)管理員。傳統(tǒng)模式下大家靠微信群和電話溝通信息極度分散上課時(shí)間靠口頭約定課時(shí)費(fèi)算不清楚老師放鴿子了家長(zhǎng)也沒(méi)處投訴。所以一個(gè)合格的家教管理系統(tǒng)至少要管住三件事誰(shuí)來(lái)教、誰(shuí)來(lái)學(xué)、怎么結(jié)算。老師和學(xué)生的匹配關(guān)系、課程的時(shí)間安排、課后的評(píng)價(jià)與課時(shí)確認(rèn)這三條線是最核心的。你去看很多高分畢設(shè)論文功能列表拉得很長(zhǎng)但業(yè)務(wù)主線也就是這三條。想明白這一點(diǎn)你在做需求分析的時(shí)候就不會(huì)跑偏。這也是為什么我不建議把題目改成家教信息發(fā)布系統(tǒng)或者家教預(yù)約平臺(tái)——管理這兩個(gè)字意味著你要做的不僅僅是一個(gè)信息墻而是一套有狀態(tài)流轉(zhuǎn)、有角色權(quán)限、有業(yè)務(wù)流程的后臺(tái)系統(tǒng)這恰恰是Spring Boot最擅長(zhǎng)的領(lǐng)域。1.2 技術(shù)選型對(duì)比Spring Boot、SSM、SSH該怎么選很多同學(xué)在開(kāi)題的時(shí)候會(huì)糾結(jié)學(xué)校老師讓用SSMSpring SpringMVC MyBatis我看網(wǎng)上全是Spring Boot的教程到底選哪個(gè)我的建議很直接優(yōu)先Spring Boot除非導(dǎo)師硬性規(guī)定SSM。理由有三個(gè)第一Spring Boot的自動(dòng)配置機(jī)制幫你省掉了大量XML配置尤其是數(shù)據(jù)源、事務(wù)管理器、攔截器這些東西以前在SSM里要手寫(xiě)一堆配置文件Spring Boot通過(guò)starter依賴(lài)和application.yml幾行配置全搞定了。這不是偷懶而是把精力騰出來(lái)放在業(yè)務(wù)邏輯上。第二招聘市場(chǎng)和開(kāi)源社區(qū)早就倒向Spring Boot了你寫(xiě)簡(jiǎn)歷的時(shí)候精通Spring Boot比熟悉SSM有說(shuō)服力得多。哪怕你只是做畢設(shè)用Spring Boot也是給自己攢經(jīng)驗(yàn)。第三Spring Boot 2.x和3.x選誰(shuí)的問(wèn)題。我的建議是選2.7.x。為什么因?yàn)?.x要求JDK 17起步而且很多第三方starter的兼容性還停留在2.x時(shí)代。你如果是為了穩(wěn)定把畢設(shè)做完JDK 8 Spring Boot 2.7.x MyBatis-Plus這套組合最穩(wěn)踩坑最少。當(dāng)然如果你的導(dǎo)師要求新那Spring Boot 3.2 JDK 17也可以但你要做好某些老教程代碼不能直接抄的心理準(zhǔn)備。2. 需求邊界畫(huà)清楚后面寫(xiě)代碼才不擰巴2.1 四類(lèi)角色的權(quán)限劃分管理系統(tǒng)的核心思想就是不同人看到不同的東西。家教系統(tǒng)里我通常設(shè)置四種角色權(quán)限從上到下是角色核心操作范圍特殊能力管理員全站用戶(hù)管理、科目管理、訂單總覽強(qiáng)制下架違規(guī)老師、處理投訴家長(zhǎng)發(fā)布需求、搜索老師、發(fā)起預(yù)約對(duì)已完成的課時(shí)進(jìn)行確認(rèn)/評(píng)價(jià)家教老師發(fā)布可授課程、查看預(yù)約、提交課時(shí)上傳資質(zhì)證明、維護(hù)可授課時(shí)間學(xué)生查看課程、提交試聽(tīng)申請(qǐng)綁定在家長(zhǎng)賬號(hào)下這里有個(gè)細(xì)節(jié)很多人不注意學(xué)生和家長(zhǎng)在業(yè)務(wù)上經(jīng)常是分離的。小學(xué)生上課是家長(zhǎng)付費(fèi)、家長(zhǎng)選老師但真正上課的是孩子。所以在數(shù)據(jù)模型里學(xué)生信息應(yīng)該獨(dú)立建表家長(zhǎng)賬號(hào)通過(guò)student_id關(guān)聯(lián)到孩子。如果你偷懶只做一個(gè)用戶(hù)表角色字段后面做家長(zhǎng)查看孩子的上課記錄這個(gè)功能時(shí)就會(huì)非常別扭。2.2 核心業(yè)務(wù)流從預(yù)約到授課到結(jié)算我建議你把業(yè)務(wù)流程先畫(huà)出來(lái)不是畫(huà)給答辯看是畫(huà)給自己寫(xiě)代碼時(shí)理清頭緒。家教系統(tǒng)的核心鏈路通常長(zhǎng)這樣家長(zhǎng)搜索老師 → 按科目、區(qū)域、價(jià)格篩選家長(zhǎng)發(fā)起預(yù)約 → 提交期望的上課時(shí)間老師確認(rèn)/拒絕 → 確認(rèn)后生成課程訂單實(shí)際上課完成 → 老師提交課時(shí)記錄家長(zhǎng)確認(rèn)課時(shí) → 系統(tǒng)自動(dòng)累計(jì)已確認(rèn)課時(shí)結(jié)算階段 → 家長(zhǎng)充值/支付老師申請(qǐng)?zhí)岈F(xiàn)這條鏈路最大的特點(diǎn)是存在狀態(tài)機(jī)。預(yù)約訂單的狀態(tài)至少要有待確認(rèn)、已確認(rèn)、已拒絕、進(jìn)行中、已完成、已取消。數(shù)據(jù)庫(kù)里最好用一個(gè)status字段專(zhuān)門(mén)存這個(gè)狀態(tài)而不是通過(guò)刪記錄來(lái)表示取消。別小看這個(gè)設(shè)計(jì)答辯老師最喜歡問(wèn)的就是訂單取消后數(shù)據(jù)怎么處理你在表里保留狀態(tài)字段直接就能答上來(lái)。2.3 容易被忽視的非功能需求很多同學(xué)做畢設(shè)只盯著功能清單結(jié)果答辯的時(shí)候被一句你這個(gè)系統(tǒng)并發(fā)怎么樣問(wèn)懵。我不主張你為了畢設(shè)去搞微服務(wù)、消息隊(duì)列這種重武器但有幾個(gè)非功能需求你要心里有數(shù)參數(shù)校驗(yàn)手機(jī)號(hào)格式、價(jià)格區(qū)間、時(shí)間格式后端的Validated注解不能省別把校驗(yàn)全丟給前端。日志記錄操作日志表要建至少記錄誰(shuí)在什么時(shí)間做了什么操作關(guān)鍵業(yè)務(wù)操作如取消訂單必須留痕。異常處理全局異常處理器要寫(xiě)不然前端動(dòng)不動(dòng)就拿到一個(gè)帶堆棧的500頁(yè)面體驗(yàn)太差。這些不是加分項(xiàng)而是基本素養(yǎng)。答辯老師可能不會(huì)逐行看代碼但如果你能主動(dòng)說(shuō)一句我用攔截器做了JWT登錄校驗(yàn)用全局異常處理器統(tǒng)一了返回格式印象分直接上一個(gè)檔次。3. 數(shù)據(jù)庫(kù)設(shè)計(jì)家教系統(tǒng)的地基怎么打3.1 核心表結(jié)構(gòu)用戶(hù)、課程、訂單、課時(shí)記錄數(shù)據(jù)庫(kù)設(shè)計(jì)這一個(gè)章節(jié)在論文里能寫(xiě)十幾頁(yè)但落到具體表結(jié)構(gòu)我建議你抓住五張主表和幾張輔助表user表用戶(hù)表CREATE TABLE user ( id bigint(20) NOT NULL AUTO_INCREMENT, username varchar(50) NOT NULL COMMENT 登錄賬號(hào), password varchar(255) NOT NULL COMMENT BCrypt加密后的密碼, nickname varchar(50) DEFAULT NULL, phone varchar(20) DEFAULT NULL, role tinyint(4) NOT NULL COMMENT 1-管理員 2-家長(zhǎng) 3-老師 4-學(xué)生, status tinyint(4) DEFAULT 1 COMMENT 1-正常 0-禁用, create_time datetime DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY uk_username (username) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;teacher_profile表老師信息擴(kuò)展表因?yàn)槔蠋熡锌颇?、教學(xué)年限、認(rèn)證狀態(tài)、課時(shí)費(fèi)等維度單獨(dú)拆一張表更清爽用user_id關(guān)聯(lián)。course_order表預(yù)約/課程訂單表CREATE TABLE course_order ( id bigint(20) NOT NULL AUTO_INCREMENT, order_no varchar(32) NOT NULL COMMENT 訂單編號(hào), teacher_id bigint(20) NOT NULL, student_id bigint(20) NOT NULL, parent_id bigint(20) DEFAULT NULL, subject_id bigint(20) NOT NULL COMMENT 科目, start_time datetime NOT NULL COMMENT 上課開(kāi)始時(shí)間, end_time datetime NOT NULL COMMENT 上課結(jié)束時(shí)間, duration int(11) DEFAULT 2 COMMENT 課時(shí)長(zhǎng)(小時(shí)), unit_price decimal(10,2) NOT NULL COMMENT 每小時(shí)單價(jià), total_amount decimal(10,2) NOT NULL COMMENT 總價(jià), status tinyint(4) NOT NULL DEFAULT 0 COMMENT 0-待確認(rèn) 1-已確認(rèn) 2-已拒絕 3-進(jìn)行中 4-已完成 5-已取消, create_time datetime DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;lesson_record表課時(shí)記錄表老師上完課之后提交家長(zhǎng)確認(rèn)后這個(gè)狀態(tài)才變成已完成這個(gè)表是為結(jié)算服務(wù)的。這幾張表之間的外鍵關(guān)系我不建議真的在數(shù)據(jù)庫(kù)里加物理外鍵邏輯外鍵就夠了。理由是MyBatis-Plus做聯(lián)表查詢(xún)的時(shí)候物理外鍵反而容易造成麻煩而且如果老師被刪除、但訂單還要保留歷史記錄物理外鍵會(huì)擋住這種邏輯刪除的需求。3.2 字段設(shè)計(jì)上的幾個(gè)細(xì)節(jié)決策這里分享幾個(gè)容易踩坑的點(diǎn)第一價(jià)格永遠(yuǎn)用DECIMAL不要用FLOAT或DOUBLE。浮點(diǎn)數(shù)在計(jì)算機(jī)里是近似存儲(chǔ)0.1 0.2可能等于0.30000000000000004。金額字段一旦出現(xiàn)精度問(wèn)題結(jié)算那一步就全亂了。DECIMAL(10,2)足夠應(yīng)付單價(jià)和總價(jià)。第二時(shí)間字段建議直接存datetime不要存字符串。有人圖方便把上課時(shí)間存成2025-06-01 14:00這種字符串后面如果要查某個(gè)時(shí)間段有哪些老師在教或者做時(shí)間沖突校驗(yàn)字符串比較會(huì)把你折騰瘋。MySQL的datetime字段配合BETWEEN語(yǔ)句比字符串好用一百倍。第三邏輯刪除比物理刪除安全。用戶(hù)誤操作刪除了一條課時(shí)記錄如果物理刪了數(shù)據(jù)就沒(méi)了。我一般在每張業(yè)務(wù)表加一個(gè)deleted字段0/1查詢(xún)的時(shí)候默認(rèn)過(guò)濾掉deleted1的記錄。MyBatis-Plus里用TableLogic注解就能自動(dòng)實(shí)現(xiàn)所以這個(gè)成本極低。第四訂單號(hào)要單獨(dú)生成不要用自增ID當(dāng)訂單號(hào)。自增ID暴露了業(yè)務(wù)量而且用戶(hù)看到訂單號(hào)是58這種會(huì)有種不正規(guī)感。你可以用時(shí)間戳隨機(jī)數(shù)生成訂單號(hào)比如yyyyMMddHHmmss 兩位隨機(jī)數(shù)或者直接用IdWorker.getIdStr()MyBatis-Plus自帶雪花算法實(shí)現(xiàn)一行代碼搞定。4. Spring Boot后端落地骨架搭建與關(guān)鍵接口實(shí)現(xiàn)4.1 目錄分層controller-service-mapper的職責(zé)邊界后端工程的包結(jié)構(gòu)我建議按模塊化來(lái)分而不是按層級(jí)分。什么概念按層級(jí)分是controller包下放所有Controllerservice包下放所有Service按模塊分是order包下同時(shí)有OrderController、OrderService、OrderMapper。模塊化的好處是改動(dòng)一個(gè)功能時(shí)你只需要在一個(gè)包結(jié)構(gòu)內(nèi)跳轉(zhuǎn)代碼閱讀成本低很多。推薦包結(jié)構(gòu)com.example.tutor ├── common // 通用類(lèi)返回結(jié)果、異常處理、常量 │ ├── Result.java │ ├── GlobalExceptionHandler.java │ └── BusinessException.java ├── config // 配置類(lèi)攔截器、跨域、密碼加密器 ├── security // JWT相關(guān)TokenUtil、JwtInterceptor ├── user // 用戶(hù)模塊 │ ├── UserController.java │ ├── UserService.java │ ├── UserMapper.java │ └── entity/User.java ├── order // 訂單模塊 └── lesson // 課時(shí)模塊這里一定要記住Controller只做參數(shù)接收和結(jié)果返回不寫(xiě)業(yè)務(wù)邏輯。我見(jiàn)過(guò)太多人把數(shù)據(jù)庫(kù)更新語(yǔ)句直接寫(xiě)在Controller里當(dāng)時(shí)寫(xiě)起來(lái)爽后面調(diào)試的時(shí)候想死。Service層是核心業(yè)務(wù)邏輯全部放Service里Controller保持薄薄一層。4.2 登錄認(rèn)證JWT方案在單體應(yīng)用中的實(shí)現(xiàn)家教系統(tǒng)里沒(méi)有任何一個(gè)接口可以裸奔放行除了登錄和注冊(cè)。我的做法是用JWT做無(wú)狀態(tài)認(rèn)證全套流程是用戶(hù)登錄后端校驗(yàn)用戶(hù)名密碼密碼用BCryptPasswordEncoder校驗(yàn)。校驗(yàn)通過(guò)后生成Token把用戶(hù)ID、角色封裝進(jìn)Token的claims里。前端把Token存到localStorage每次請(qǐng)求在Authorization頭帶上。后端寫(xiě)一個(gè)攔截器攔截非白名單路徑解析Token并放行。核心代碼大致是這樣Configuration public class WebConfig implements WebMvcConfigurer { Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(jwtInterceptor()) .addPathPatterns(/api/**) .excludePathPatterns(/api/auth/login, /api/auth/register, /api/subject/list); } }public class JwtInterceptor implements HandlerInterceptor { Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token request.getHeader(Authorization); if (token null || !token.startsWith(Bearer )) { throw new BusinessException(未登錄或登錄已過(guò)期); } // 解析Token如果簽名不對(duì)或過(guò)期會(huì)拋異常 Claims claims JwtUtil.parseToken(token.replace(Bearer , )); request.setAttribute(userId, claims.get(userId)); request.setAttribute(userRole, claims.get(role)); return true; } }這里有個(gè)容易踩的坑攔截器拋異常全局異常處理器接得住嗎需要注意攔截器preHandle里拋出的異常如果你是注冊(cè)在WebMvcConfigurer里全局異常處理器是能接到的但如果你用HandlerInterceptor實(shí)現(xiàn)類(lèi)里的邏輯拋了異常而你的異常處理器沒(méi)有配置對(duì)前端會(huì)收到亂碼。解決辦法是確保ControllerAdvice生效并且自定義異常類(lèi)里別吞掉堆棧信息。Token如果要實(shí)現(xiàn)用戶(hù)被禁用后立刻失效光靠JWT是做不到的因?yàn)镴WT是無(wú)狀態(tài)的。我提供兩個(gè)方案一是把Token有效期設(shè)短一些比如2小時(shí)配合前端重新登錄機(jī)制二是在user表加一個(gè)token_version字段每次登錄1JWT里存這個(gè)版本號(hào)服務(wù)端校驗(yàn)時(shí)比對(duì)版本號(hào)。方案二在畢設(shè)里屬于亮點(diǎn)功能答辯可以主動(dòng)講。4.3 業(yè)務(wù)接口設(shè)計(jì)的幾個(gè)原則有幾個(gè)接口設(shè)計(jì)的原則我寫(xiě)代碼的時(shí)候一直在用原則一接口返回結(jié)構(gòu)要統(tǒng)一。所有接口都返回ResultT里面包含code、message、data三個(gè)字段。成功時(shí)code200失敗時(shí)code500或者業(yè)務(wù)碼。前端拿到這個(gè)結(jié)構(gòu)統(tǒng)一處理不需要每個(gè)接口單獨(dú)寫(xiě)異常邏輯。原則二列表查詢(xún)千萬(wàn)別只做一個(gè)findAll。分頁(yè)查詢(xún)是標(biāo)配前端傳pageNum和pageSize后端用MyBatis-Plus的Page對(duì)象一行代碼就能搞定分頁(yè)public PageCourseOrder getOrderPage(Long userId, int pageNum, int pageSize) { LambdaQueryWrapperCourseOrder wrapper new LambdaQueryWrapper(); wrapper.eq(userId ! null, CourseOrder::getParentId, userId) .orderByDesc(CourseOrder::getCreateTime); return orderMapper.selectPage(new Page(pageNum, pageSize), wrapper); }LambdaQueryWrapper這個(gè)類(lèi)強(qiáng)烈推薦使用它用lambda表達(dá)式引用列名編譯期就能查出字段名錯(cuò)誤比寫(xiě)字符串parent_id安全得多。原則三修改和刪除要加是本人操作校驗(yàn)。比如老師想取消一個(gè)訂單你得先查出訂單里的teacher_id是不是當(dāng)前登錄用戶(hù)不是就拒絕。這個(gè)邏輯雖然簡(jiǎn)單但很多初學(xué)者會(huì)忘這是數(shù)據(jù)安全的基本底線。5. 前端聯(lián)調(diào)與打包Vue Spring Boot的協(xié)同細(xì)節(jié)5.1 接口約定與聯(lián)調(diào)環(huán)境家教管理系統(tǒng)的前端我一般用Vue 3 Element Plus理由不用多說(shuō)組件成熟、文檔豐富、招聘要求里也常出現(xiàn)。前后端分離開(kāi)發(fā)時(shí)最大的問(wèn)題是跨域。Spring Boot后端解決跨域很簡(jiǎn)單寫(xiě)一個(gè)配置類(lèi)Configuration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(http://localhost:8081) // 前端地址 .allowedMethods(GET, POST, PUT, DELETE) .allowCredentials(true) .maxAge(3600); } }如果你用了Shiro或者Spring Security跨域配置要放行預(yù)檢請(qǐng)求OPTIONS不然瀏覽器先發(fā)個(gè)預(yù)檢請(qǐng)求被攔截你后面真正的請(qǐng)求壓根發(fā)不出去。前后端接口字段的命名也要提前約定好。我習(xí)慣后端返回駝峰命名比如createTime前端直接用不做轉(zhuǎn)換。MySQL里的create_time通過(guò)MyBatis-Plus的駝峰映射自動(dòng)轉(zhuǎn)成createTime所以Java實(shí)體類(lèi)里也是駝峰三層命名一致省去很多煩惱。5.2 Vue打包放進(jìn)Spring Boot的坑與處理很多同學(xué)做完前后端分離老師卻說(shuō)我要一個(gè)能直接跑的東西這時(shí)候就需要把Vue打包后放到Spring Boot里打成單jar運(yùn)行。步驟很簡(jiǎn)單在Vue項(xiàng)目根目錄執(zhí)行npm run build生成dist目錄。把dist里的文件復(fù)制到Spring Boot的src/main/resources/static目錄下。重新打包Spring Bootjava -jar啟動(dòng)后直接訪問(wèn)http://localhost:8080/就能看到前端頁(yè)面。但這里有幾個(gè)坑幾乎必踩坑一Vue路由的history模式會(huì)導(dǎo)致刷新404。如果你用history模式路由訪問(wèn)/order/list刷新頁(yè)面時(shí)Spring Boot會(huì)把請(qǐng)求交給DispatcherServlet找不到對(duì)應(yīng)的/order/list接口就會(huì)返回404。解決辦法是在后端加一個(gè)路由轉(zhuǎn)發(fā)規(guī)則Controller public class RouteController { RequestMapping(value /{path:[^\\.]*}) public String forward() { return forward:/index.html; } }這個(gè)正則[^\\.]*的意思是路徑里不含點(diǎn)號(hào)就轉(zhuǎn)發(fā)到index.html這樣既能放行靜態(tài)資源js/css帶點(diǎn)號(hào)又能解決前端路由404。這個(gè)配置在畢設(shè)答辯里是一個(gè)很能加分的點(diǎn)因?yàn)榇蟛糠滞瑢W(xué)根本不會(huì)遇到這個(gè)問(wèn)題??佣岸苏?qǐng)求的BaseURL要跟部署環(huán)境適配。開(kāi)發(fā)時(shí)前端代理指向http://localhost:8080打包之后前端頁(yè)面和后端同源了如果代碼里還硬編碼了http://localhost:8080部署到服務(wù)器上就廢了。我的做法是在Vue里用環(huán)境變量區(qū)分// .env.development VITE_API_BASE_URL /api // .env.production VITE_API_BASE_URL /api開(kāi)發(fā)時(shí)配置Vite代理轉(zhuǎn)發(fā)生產(chǎn)時(shí)因?yàn)橥此圆恍枰?。這樣代碼里就統(tǒng)一寫(xiě)axios.post(${baseUrl}/order/create)不會(huì)出現(xiàn)環(huán)境切換的麻煩??尤募蟼髀窂絼e用相對(duì)路徑。家教老師上傳資質(zhì)證明教師資格證照片很多同學(xué)會(huì)把文件保存到static/upload/目錄下這在本地跑好好的部署到服務(wù)器上就出問(wèn)題。更好的做法是配置一個(gè)絕對(duì)路徑的上傳目錄通過(guò)application.yml里的file.upload-path配置然后用一個(gè)虛擬路徑映射到它Configuration public class FileConfig implements WebMvcConfigurer { Value(${file.upload-path}) private String uploadPath; Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/upload/**) .addResourceLocations(file: uploadPath /); } }這樣前端訪問(wèn)/upload/xxx.jpg就能拿到圖片而文件本體存在服務(wù)器某個(gè)固定目錄不會(huì)因?yàn)橹匦麓虬黬ar而丟失。6. 實(shí)測(cè)中踩過(guò)的坑與優(yōu)化建議6.1 Spring Boot版本和依賴(lài)兼容性問(wèn)題這幾個(gè)月我?guī)腿舜罱ōh(huán)境時(shí)遇到最多的報(bào)錯(cuò)九成出在版本上。Spring Boot 2.7.x對(duì)應(yīng)MyBatis-Plus的mybatis-plus-boot-starter要選3.5.x但如果你用Spring Boot 3.x要求MyBatis-Plus 3.5.3以上并且包名會(huì)變從com.baomidou變到com.github.pagehelper這種邊邊角角的兼容問(wèn)題則更隱蔽網(wǎng)上老教程的代碼直接復(fù)制過(guò)來(lái)多半跑不起來(lái)。我的建議是做畢設(shè)就鎖死一套經(jīng)過(guò)驗(yàn)證的組合別追求最新。推薦組合如下組件推薦版本JDK1.8或11Spring Boot2.7.18MyBatis-Plus3.5.3.1MySQL驅(qū)動(dòng)8.0.33Hutool5.8.xJJWT0.11.5Hutool這個(gè)工具庫(kù)我強(qiáng)烈推薦里面封裝了日期處理、加密、文件上傳、驗(yàn)證碼生成等等常用方法能少做很多輪子。JJWT是標(biāo)準(zhǔn)的Java JWT庫(kù)0.11.5版本對(duì)JDK 8友好別去用io.jsonwebtoken:jjwt的舊坐標(biāo)那是另一個(gè)坑。6.2 定時(shí)任務(wù)的實(shí)現(xiàn)與注意事項(xiàng)家教系統(tǒng)里天然需要定時(shí)任務(wù)比如課時(shí)開(kāi)始前2小時(shí)給老師發(fā)提醒訂單超過(guò)24小時(shí)未確認(rèn)自動(dòng)取消月底生成賬單。Spring Boot的定時(shí)任務(wù)用Scheduled注解就夠Component public class OrderAutoCloseTask { Scheduled(cron 0 0 * * * ?) // 每小時(shí)執(zhí)行一次 public void closeExpiredOrders() { // 查詢(xún)狀態(tài)為待確認(rèn)、創(chuàng)建時(shí)間超過(guò)24小時(shí)的訂單批量改為已取消 } }但凡是定時(shí)任務(wù)就避不開(kāi)幾個(gè)細(xì)節(jié)一是cron表達(dá)式別寫(xiě)錯(cuò)。Spring Boot的cron是6段有時(shí)7段秒 分 時(shí) 日 月 周網(wǎng)上抄的表達(dá)式多半是Quartz的7段跑不起來(lái)別慌把首位去掉試試。二是定時(shí)任務(wù)默認(rèn)是單線程串行執(zhí)行的。如果你有多個(gè)定時(shí)任務(wù)默認(rèn)情況下它們是排隊(duì)完成的如果某個(gè)任務(wù)執(zhí)行時(shí)間過(guò)長(zhǎng)會(huì)卡住后面的任務(wù)。要并發(fā)執(zhí)行就配置一個(gè)TaskScheduler并設(shè)置線程池大小。這個(gè)點(diǎn)回答系統(tǒng)如何優(yōu)化性能時(shí)可以作為一個(gè)小亮點(diǎn)。三是線上環(huán)境里定時(shí)任務(wù)要關(guān)注冪等性。比如自動(dòng)取消超時(shí)訂單這個(gè)任務(wù)如果執(zhí)行到一半服務(wù)器重啟了重啟后任務(wù)會(huì)重新執(zhí)行你怎么保證不會(huì)重復(fù)取消我的辦法是任務(wù)執(zhí)行前判斷訂單當(dāng)前狀態(tài)只有在待確認(rèn)狀態(tài)才執(zhí)行取消已經(jīng)取消的跳過(guò)天然冪等。6.3 上線前要做的安全加固畢設(shè)雖然很多只需要在本地演示但如果你想把項(xiàng)目放到服務(wù)器上給老師遠(yuǎn)程看以下安全措施一個(gè)都別省密碼加密禁止明文存密碼BCryptPasswordEncoder起步這個(gè)Spring Security自帶不需要引入全套Security框架單獨(dú)引入spring-security-crypto依賴(lài)即可。SQL注入防堵MyBatis-Plus的LambdaQueryWrapper參數(shù)綁定天然防注入但如果是手寫(xiě)XML里的${}傳參就要小心能用#{}就別用${}。越權(quán)訪問(wèn)防護(hù)JWT里存了role但后端不能只看前端傳的role每個(gè)角色接口的鑒權(quán)必須依賴(lài)攔截器里從Token解析出的角色不能信任前端請(qǐng)求體里的字段。限制敏感接口的請(qǐng)求頻率比如發(fā)送短信驗(yàn)證碼、登錄接口這種加個(gè)簡(jiǎn)單的Redis計(jì)數(shù)器限制頻率。如果項(xiàng)目還沒(méi)引入Redis也可以先用一個(gè)ConcurrentHashMap手動(dòng)計(jì)數(shù)兜底差距區(qū)別只在分布式環(huán)境上。7. 寫(xiě)在最后的項(xiàng)目落地個(gè)人體會(huì)這個(gè)家教管理系統(tǒng)從建表到全部功能跑通我前后花了大概四天。如果只是為自己做三天就夠剩下一天全部消耗在環(huán)境和聯(lián)調(diào)上了。給我的最大感受是寫(xiě)業(yè)務(wù)系統(tǒng)的核心能力不是把代碼敲出來(lái)而是把業(yè)務(wù)關(guān)系理清楚——學(xué)生要不要單獨(dú)建表訂單狀態(tài)怎么流轉(zhuǎn)課時(shí)確認(rèn)之后錢(qián)怎么算這些問(wèn)題想清楚了Spring Boot只是一個(gè)順手的工具代碼寫(xiě)起來(lái)非???。但如果你一上來(lái)就悶頭建工程寫(xiě)CRUD后面改表的代價(jià)會(huì)教你做人。另一個(gè)實(shí)操建議是從中間表入手寫(xiě)代碼不要從頭表寫(xiě)起。我每次都是先做訂單表和課時(shí)記錄表因?yàn)檫@兩張表關(guān)聯(lián)了其他所有表把它們跑通了用戶(hù)表和科目表怎么接都順理成章。最后留一個(gè)可以當(dāng)答辯加分項(xiàng)/擴(kuò)展方向的小提示家教系統(tǒng)的推薦邏輯其實(shí)特別適合做簡(jiǎn)單化處理比如同科目?jī)?yōu)先、同區(qū)域優(yōu)先、價(jià)格從低到高排序就可以用一句SQL完成如果你想再深入一步還可以引入用戶(hù)評(píng)價(jià)分作為排序權(quán)重這就是一個(gè)輕量級(jí)協(xié)同過(guò)濾的雛形。這句話你寫(xiě)在論文結(jié)論部分比空談未來(lái)可以接入大數(shù)據(jù)分析要具體得多也更能體現(xiàn)你真的想過(guò)系統(tǒng)演進(jìn)的方向。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
51国产午夜精品视频| 加勒比久久av| 国产曰批免费观看久久久| 亚州综合电影| 青青草天天亲夜夜操网| 国产兽交视频在线播放| 日1区2区3区2020| 九九毛片这里只有精品| 无码天天操| 91亚洲欧美综合高清在线| 国产亚洲精品一区二区三区| 亚洲熟女av中文字幕| 综合日本女人伊人| 亚洲AV成人无码久久精品播放| 亚洲色婷婷综合久久一区二区三区| 91ise欧美| 国内毛片国产专区二| 久久久久九九九| 1000午夜黄色| 欧美亚综合色图| 极品极品色影院| 天堂v无码免费视频| 亚洲激情在线| 97视频观看| 国产无套粉嫩白浆在| 国产av激情无码久久天堂| 啊啊啊慢点| 欧美精品久久| 另类av天堂| 狠狠狠狠狠狠| 日本一级性爱| 日本成人电影资源网| 91操操操操| 日韩91网| 91欧美情色| 色亚洲欧美| 无码人妻精品一区二区三区九九| 欧美日韩精品久久| 怡红院怡春院| 亚洲免费精品一区| 小草三级久久观看| 97五月天| 少妇三P| 91蜜臀熟女| 伊人99热| 麻豆久久视频在线地址| 日韩99神马视频播放片在线播放| 婷色五月| 91在线欧色| 大香蕉免费中文| 五月丁香六月婷| 毛片电影一区二区三区| 在线观看日韩av不卡| 中文字幕亚洲永久精品| 精品久久久久久中文| 天天懆天天日| 国产激情在线| 日韩性色b| 台湾佬激情综合| 婷婷五月色| 99青草| 欧美一区二区在线资源| 欧美性第1页| 日韩人妻精品中文字幕| 欧美在线|亚洲| 加勒比海人人操超碰在线| 天天色黄色影院天天操| 欧美福利视频啊啊啊啊| 国产精品麻豆视频网站| 午夜国产综合视频在线观看| 激情自拍 校园春色| 国产h小视频在线观看免费| 亚洲全色网| 日本色色色| 婷婷五月天福利| 好吊妞转入那个网| 在线黄色污污网站| 少妇精品久久久八区九区| 美女天天干| 中文操逼字幕| 人妻人人操| 夜夜嗨AV蜜臀av| 久久大陆| 亚洲丝袜综合| 久久久网站| 亚洲。日韩。欧美| 一本大道久| 又粗又长又大国产不卡| 蜜乳av一区二区| 人妻av在线| 97精品视频免费| 狠日操| 黄网色一区二区三区四区精品| 日韩三级一区| 四虎影视永久在线观看精品免费网站| 97欧美色| 中文字幕一区二区日韩网| 99re公开精品免费视频| 亚州精品一区二区三区香中文字幕在线| 日本一区二区三区欧美日韩中文字幕| 91老熟女91老女人| av毛片aaaaa免费看| 午夜福利视频在线一区| 亚洲情色一区三区| 午夜在线播放| 激情五月丁香五月| 亚洲男人天堂视频| av在线观看不卡网站| 中文字幕在线日亚洲9| 性色高清在线| 欧美AB在线| 26uuu国产免费观看| 欧美亚洲第1页| 97人人色| 91网站18在线观看| 一级性爱视频免费观看| 长长久久曰曰夜夜成人网| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 97碰| 三级三级三级日本99| 欧美 亚洲 综合 制服 另类| 尤物黄色在线观看网站| 91色图片| 人人玩人人添人人澡免费| 五月天激情视频| 久久中文字幕女同性恋一区| 日本国产高清色www视频在线| 日本青青草在线| 国产精品操| 偷拍 精品另类 凸凹了四区| 九九热精品| 亚洲一区日韩| 欧美色网| 9久热| 夜夜嗨一区二区三区三州加勒比| 久久九九视频九九视频| 色拍偷亚洲| 久久男人网| 日本操逼无码| 色第一页| 一区二区三区免费岛国片| 综合av影片| 18禁中文字幕| 久欲AV| 亚州欧美总和| 婷婷色在线| 99精品成人免费看| 91 综合 色| 伊人久久在线视频观看| 免费99精品国产自在在线| 热久久国产精品视频大陆精品| 97精品国产精品免费观看| 人人做,人人操,人人摸| 久草毛片电影怡| 99久久久久久亚洲精品不卡| 男女香蕉一区二区| 丁香六月婷| 精品九九九九九| 岛国小电影| 精品国产三级av韩国在线| 色爱欲亚洲| 一个国产在线综合网站| 99精品无码| 五月天婷婷成人网| 啪啪性爱免费视频| 青青青草伊人精品| 一区二区三区网站日日骚| 成人精品在线观看| 日本成人免费一区二区三区| 久偷拍欧美日韩三区| 亚洲国产麻豆一区二区三区| 中文字幕国产在线天堂| 秋霞一区二区三区四区五区六区七区| 国产高清成人mv在线观看| 超碰人妻中文在线| 伊人五月天青青草婷婷| 久久综合99| 欧美成人贴图| silk lablo在线观看一区二区| 国产又操| 91宗合网| 色97综合中文字幕| 看看小穴| 天天躁日日躁AAAXX| 97色碰| 人妻激情视频| 亚洲精品人伦一区二区| 亚洲精品一二牛牛| 亚洲自拍天堂| 99久久无码| 亚洲啪啪性视频| 东北老熟女| 91熟女综合| 国产在线精品偷| 91美女网站| 欧美青青草视频| 欧洲无码一区二区| 亚洲AV成人在线| 操逼免费视频无码国产| 日本1区2区不卡视频| 日韩电影免费网站麻豆视频| 99操| 亚洲精品一二三四区| 五月丁香激情综合| 天天天天天天天天天天干美女| 成人av毛片在线观看| 啊啊啊 在线| 精品9区| 精品国产一区二区三区久久久蜜臀 | 亚州欧美在线| 欧美日日人人天天| 久久久久久波多野吉衣高潮| 日夜干射色啊| 婷婷五月天无码 | 超碰97国产欧美| 亚洲日韩黑丝| 亚洲丝袜诱惑| 免费操逼91| 中文字幕成人乱码熟女精品国50| 久久亚洲一区二区色婷婷| 人人操人人射人人干| 97色涩| 97人人模人人爽人人| 亚洲?V高清一区二区三区尤物| 97欧美综合网| 校园春色 亚洲| 97欧美日韩精品| 9九九国产| 色网1| 欧洲亚洲天堂精品| 丝袜视频网国产90| 欧美色图99| 9美女超碰在线免费观看| 欧美97se| yaouchengrenav| 无码高清操逼网址| 一级特级aaaa毛片免费观看| 神马久久久久久伦理片| 免费A V在线| 破苞ⅩXXX性无码动漫无码| 亚洲欧美在线观看2021 | 日日干男人的天堂| 久久人体一区二区| 伊人久久婷婷| 啊啊啊好湿久久| 嗯嗯啊啊视频一区二区三区| 高清孕妇孕交 交孕妇| 日产精品久久久一区二区| 欧美大的香蕉有线电视视频| 成人午夜高潮av猛片| 日韩中文字幕人妻视频| 亚洲午夜av| 亚州操操穴网| 久久成人午夜狠狠| 亚洲综合伊人无码久久| 999久久久免费精品国产牛牛| 国产精品爆乳懂色蜜乳| 中文字幕精品日韩中文字幕| 精品久久視頻在线| 欧美 日韩 婷婷 五月| 国产AB视频| 夜夜欢天天干| 亚洲中文日韩欧美大香蕉视频| 亚洲精品视频在线播放| 好吊色一区| 老鸭窝在线视频播放| 91老熟女| 无码少妇精品一区二区60岁老人| 久操 高清| 99少妇内射| 中国操逼无码| 人妻少妇精品一区二区三区| 亚洲人码13| 欧美91变态| 久久国内| 日韩在线97| 中文字幕黄色一起草| 高清无码一区二区三区| 玖色AV| 人妻少妇久久| 九月丁香婷婷色| 手机av天堂久久久久| 麻豆区久久久久亚| 国产v亚洲v日韩v欧美v片另类| 日韩国产乱子伦App| 天美传媒国产原创中文字幕亚洲欧美另类| 久啪| 亚洲密乳AV| 国产原创精品| 国产精品美女久久久久久网站| 欧美视频边做饭边橾| 日韩中文字幕熟妇人妻| 伊香蕉综合久久久久久久噜噜噜| 欧美另类综合久久| 国产强奸无码乱伦| 天天色综合天天操| 亚洲天堂日本| 欧美色www亚洲国产阿娇要播| 日日A∨| 国产成人天堂| 99热最新| 夜夜爽爽爽| 99草精| 天天综合欧美| 91熟女丨老女人| 美女91色黄18| 欧美综合区| 91av熟女人妻| 少妇三p| 风月影院男女十八禁| 青青国产精品在线| 9久精品| 免费A V在线| 久久东京伊人一本到鬼色| 中文字幕熟女人妻丝袜| 91激情综合| 综合色拍| 校园春色宗合网| www.97在线| 人人喜人人妻| 男人天堂站| 91在线页| 欧美日韩高潮喷水91| 国内精品伊人久久久久影院会| 啪啪啪大香蕉| 丝袜狂射91| 久久 亚洲 日韩 人妻| 内射日韩大臀美女| 黄页av| 欧美女同在线| 97亚洲自在精品在线观看| 亚洲天堂人妻熟妇视频| 中文字幕AV片| 国产成人无码网站在线视频| 最新亚洲黄色免费电影| 人妻少妇无码| 丁香五月色| 欧美97日韩| 夜夜嗨一区| 91春色| 青青在线视频日韩欧美| 熟女精品一区二区在线观看| 一本一道人妻久久一区二区三区| 色五月av| 中国黄色特级精品一区二区三区片| 香伊人在线| 国产成人拍国产亚洲精品| 亚洲鸥美色图| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 97久久久精品| 国产专区第一页| 婷婷五月成人| 青草园大香蕉| 亚欧高清| 久久久久国产一区二| 99re3这里只有精品| 欧美在线中M| 操久久久久| 91爆操视频| 绯色AV粉色AV蜜臀AV| 亚洲无码视频免费在线观看网址!| 性爱乱伦一区| 好湿好紧视频| 看大黄色大片原件| 91久热这里只有精品| 超碰 欧美| 蜜乳AV色欲AVAV无码| 青青草日本中文字幕| 午夜精品久久久99| 日韩性爱啪啪视频| 国产精品一级特黄aaa大片在线观看| 在线综合色| 精品性爱一二三区| 欧美色青| 2024年最新色情网站在线观看| 麻豆精品A片免费观看| 操逼日韩无码 | 亚洲牲交| 欧美青青草视频| 99re这里只有精品3| 任你爽视频| 国产精品毛片?v一区二区三区| 成人开心网在线视频| 亚洲国产欧美中文永久| 美女啊啊啊啊啊啊| 亚洲熟妇乱女区二区三区| 18禁无码永久免费无限制| 伊人色综合超碰| 久久久精品无码亚免费| 96久久久| 久久爽爽精品| 五月激情综合网| 免费观看国产小粉嫩喷水精品午| 偷拍在线观看视频| 志村玲子视频一区二区| 中文字幕国产| 草草草草视频| 欧美日韩人妻少妇 一区二区三区| 日韩久久三区| 国内毛片无码一级毛片| 人人操人人操人人人操| 69精品| 精品少妇一区二区| 国产嫩草精品A88AV在线| 国产精品麻豆视频网站| 777超碰| 91天天爱| 欧美日韩不卡a片| 中文字幕丰满人妻日本| 天天综合AV| 久久久久久九九九九九| 综合色色网| 久久香蕉影院| 中文字幕国产精品1区| a在线观看| 日本www操操操| 蜜乳AV一区二区三区四| 欧美黄色大香蕉一区二区| 成人性爱美曰韩| 黄色高清无码无码破解免费暗网| 九九伊人网| 98一区二区精品| 视频在线观看一二三区| 五月丁香| 日韩 女同 综合| 天天日美女的B| 亚洲性刺激| 亚洲最新Av| 中文字幕国产| 久久婷婷五月天| 六月激情婷婷| 欧美伦乱爱| 视频在线97| 日日爱99| 操美女高潮抽搐白浆| 无码9区| 婷婷色香| 国产美女91| 欧美黄色大片在线观看 | 中文字幕精品专区搜索结果91| 日韩精品午夜操呦呦不卡影院 | 日本97久久久精品| 97在线亚洲| 天天干天天舔| www.色五月| 欧美日韩精品国产91| 青青草男人天堂| 91丨人妻丨国产丨丝袜| 中文字幕aⅴ在线视频| 色婷婷电影网| 亚洲系列欧美| 自拍偷拍第26| 色av中文字| 99色在线| 亚洲 欧美 偷拍 唯美| 天天摸,夜夜摸| 99国产在线 精品 视频| 天天日夜夜| 青娱乐 青青青操 日逼| 五月天啪啪| 91蜜臀熟女| 国产欧美一区二区| 日韩欧美三级| 偷看洗澡一二三区美女| 伊人网在线观看| 久久97超碰| 啊啊啊啊嗯嗯嗯用力好爽| 日韩av色图| 一二三区操逼国产91| 成人自拍三级在线观看| 欧美熟妇人体| 手机看片91人妻| 久久思思热| 国产精品一区二区三区在线| 亚洲天堂 视频你懂的| 亚州色图片在线色| 亚洲日本韩国在线| 干b网| 99精品视频在线观看免费| 亚洲第一二区另类图| 中文字幕在线免费观看2| 欧美超碰人妻97| 久久久久久69国产一区二区| 日本新免费二区三区| 偷拍三区| 中文字幕久久精视频久久大全| 国产成人99久久亚洲综合| 男人的天堂在线2| 国产精品ww久久| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 欧美黄页在线| 欧美亚洲中文| 熟啊v色欧美热| 岛国激情视频在线观看| 精品久久久久久久久久久久| 亚洲 一区二区 自拍| 高清肉丝中文无码| www.色婷婷色综合| 91爱| 丝袜狠狠草尤物人妻av91| 黄片视频,下载| 校园春色中文字幕AV| 免费簧片在线观看| 中文字幕欧美丝袜07资源| 男人天堂2019亚洲| 五十路六十路七十路熟婆| 乱老熟女一区二区三区| 99综合网| 欧美成人性爱视频在线播放| 青青欧洲黑| 亚洲成?V人片在线观看福利| 偷拍视频青青草在线视频| 九月丁香婷婷色| 国产馆| 无码人妻一区二区三区色欲aⅴ | 日韩久久三区| 久久久性| 91老司机精品| 欧美少妇色综合| 大香蕉五月天| 天天干人人乐| 国产情色第一第二页在线观看| 自拍大香蕉乱插| 亚洲乱妇p22| 欧洲亚洲人人爽爽视频| 最新欧美色网| 综合操逼| 国产真乱mangent| 伊人网一本| 日韩一999精品| 啪啪AV导航| 中文字幕av亚洲精品| 久草精品视频| 欧美日韩国产传媒在线精品| 大香蕉520| 亚洲欧美综合区自拍另类| 国产精品一区二区密臀| 亚洲久久东京热一二三四五区视频| 乱老熟女一区二区三区| 青青草天天亲夜夜操网| 91东京热男人的天堂| 亚洲图片另类| 国产中午字一暮区| 伊人991| 艳美熟妇先锋一二三区| 8050无码八戒| 成人性爱av| 天天综合亚洲综合| 国内一级精品| 欧美综合传媒| 久久精品91| 妇女视频网站| 亚洲中文制服诱惑| 婷婷在线视频| 亚洲中文字幕久久无码精品| 日本视频在线中文字幕| 色婷婷A V一二三四区麻豆综合| 99热超碰| 97干日韩| 99国产人成精品| 精品人妻伦一二三区久久| 日韩精品人妻一| 天堂69亚洲精品中文字| 日韩无码一级黄色av片| 欧美美女视频| 亚洲欧美清纯| 在线亚洲欧美| 精品亚洲| 一二三区操逼国产91| 精品无码欧美三级| 麻豆国产精品午夜视频| 天堂v无码免费视频| 三男一女不戴套的A片| 四虎精品永久在线播放| 中文视频在线观看| 操www| 亚洲国产成人精品999| 欧洲黄色网| 亚洲精品无码久久AV| 在线岛国新天堂8| 国产黄色小视频网站| 欧美极品性爱天天射| 美女尤物人人操| Sekablack无码一区| 亚洲码在线中文在线观看| 成人26uuu| 国产激情在线| 超碰吊日色| 东京热av影院| 国产野战露脸在线播放| 国内毛片国产专区二| 五月丁香社区婷婷日韩欧美精品影院 | 370p日韩欧美亚洲精品| {男男暴菊gay无套网站| 女同性恋久久| 成人情色一区二区| 欧美极品女人的天堂| 久久久久9久久久久| 日本精品国产视频| 岛国天天午夜影院传媒网| 日韩欧美女求操每天更新| 亚洲欧美综合| 蜜臀操逼黄色视频操的好爽| 日韩精品99999| 大香蕉十区| av一区二区三区四区| 亚洲精品97| 亚洲91网| 亚洲在饯| 日韩去日本高清在| 9/A片| rivers-china.com| 亚洲天堂精品日韩电影| 亚洲一区二区三区中文字幕| 亚洲欧洲偷拍一区| 中文字幕女同在线| 91色宗合| 动漫爆乳3D奶水一区在线观看| 九九毛片这里只有精品| A男人的天堂| 欧州91高潮| 日本成人电影资源网| 97视频在线观看播放与子乱对白在线……| 色欲人妻一区二区在线| 91精品导航| 日韩av在线播放不卡| 青青草在线成人视频| 土豪酒店各种姿势玩弄极品幼稚| 热无码中文亚洲H一道本一区二区| 综合欧美日本三级| 日韩综合97P| 色图综合网| 91狠狠综合久久| 久久综合久色欧美综合狠狠| 懂色中文一区二区三区| 天天干,天天日| 一摸二插三插| 婷婷色香| 99在线视频播放| 视频国产成人精品日本亚洲18| 在线视频日韩欧美国产| 99热18这里只有精品| av黄图片在线观看| 蜜桃久久一区二区三区| 亚洲高清综合网| 国产又色又爽又舒服的三级视频 | 97欧美日韩综合| 粉嫩粉嫩一区性色AV片| 大香蕉伊人在线成人AV在线观看| 亚洲性爱成人| 亚洲男人天堂2012| 亚洲男人久久综合天堂| 亚熟在线| 日B操| 1二区9| 天天谢天天干| 91无码中出人妻视频| 男人的天堂久久久| 女优视频第10页| 欧美美女视频| 日韩性爱小视频在线观看| 涩涩久久精品| 夜夜影视四色| 91国产伊人大香蕉| 色色五月婷婷| 91日韩国产欧美亚洲另类精盘州至城都| 翔田千里无码一区| 日韩中文字幕宗合在线| 黄色网址在线免费观看| 四虎精品永久在线观看| 亚洲成人在线播放| 97爱综合| 情侣操 逼视频99| 草草网站影院白丝内射| 搡老女人老91妇女熟女| 亚洲一区二区三区AV无码| 人妻少妇久久中文| av在线资源| 躁躁躁日日躁2020| 国产二区三区粉嫩在线| 久久成人午夜精品影院 | 999久久久免费精品国产牛牛| 91狠狠综合久久久久久| 天天做天天爱夜夜爽毛片试看| 国产精品人妻无码久久久互動交流| 国产精品黄色三级av| 免费啪啪av| 99re69| 欧美精品99久久久**| 99日免费视频中文字幕| 91强在线播放| 亚洲日韩美国人妻| 亚洲深夜福利| 日韩二三区| 人人摸.人人色| 天天操熟妇| 五月天黄色av| 日本Xx性爱| 亚洲区小说| 91色综合激情| 人人干人人操人人..com| 久久黄人人爽视频| 欧美 日韩 婷婷 五月| 一区二区日韩欧美久久| 精品偷拍13p欧美dodk视频| 久超碰这里只有精品| 精品国产91久久久久久一区黄无| 精品伊人久久久大香线蕉小说| 大二网站亚洲| 麻豆成人影音在线| 日本最新免费韩国1区2区视频播放| 天天拍天天操| 极品极品色影院| 内射小黄片| 97天天日| 国产97/欧美| 91欧美性| 亚洲综合网图| 丁香九月激情啪| 久久久久久亚洲Av无码| 欧美激情在线观看视频| 呻吟 欧美 日本 中出| 国产无遮挡| 熟妇熟女视频一区二区三区| 激情视屏国产乱伦强奸| 中文字幕在线免费观看2| 青青操在线视频| 先锋音影AV| 天操老女人| 97舔舔| 荡小穴在线观看| 一区二区三区激情在线观看| 不卡av在线中文字幕| 日韩熟女操逼| 日躁天天爽爽| 亚洲超碰97| 99热欧美| 久久久少妇诱惑精品视频| 欧洲一区二区三区免费| 国产精品乱人伊人网| 精品精品精品| 玖玖在线视频| 国产乱码久久| 五月天婷婷激情| 欧洲色色| 色欧美天天| 日韩成人免费电影| 五月丁香| 五月天综合| 天美精品av| 久久久蜜桃一区二区三区| 女同在线视频一区| 国产丝袜视频| 日韩啪啪啪啪啪| 二色av| av中文在线| 午夜精品99久久久久传媒| 激情综合网五月婷婷五月天| 欧美日韩激情无码专区| jizzjizz欧美| 人人妻人人狠人人| 女人双腿搬开让男人桶| 97久久视频| 色蜜AV| 亚洲精品国产av天美传媒| 青青草啪啪网| 后入精品| 婷婷五月天激情四射| 精品一区二区2| 97干色| 国产9 9在线 | 亚洲| 天天色,天天干,天天干| aaaa少妇高潮大片| 欧美 亚洲 综合 制服| 精品人妻1237| 嗯嗯啊啊日韩精品| 九九九偷拍| 综合伊人激情| 爱av免费| 亚洲色图久久精品蜜| 国产精品。| 国产日韩中文字幕欧美| 国产高清自拍| 中文字幕精品一区二区精| 五月丁香影视| 综合网久久| 91制服丝袜| 视频一区二区免费在线| 新版天堂中文资源8在线| 97av在线视频| 国产SV一线| 国产精品乱码久久久| 亚洲影院365| 日韩女模中文造逼| 91爱综合| 五月天AV资源| 天天射天天操天天干天天吃2018| 精品性爱无码在线播放| 亚洲情色婷婷五月天| 超碰偷拍| 日本黄色精品专区网站| 97在线精品观看视频| 婷婷五月花| 青女在线| 中文字幕艹艹| 99国产精品自在自在| 日韩有码专区| 亚洲欧美中文日韩视频中国语| 欧美亚洲性爱一区二区| 麻豆天天躁天天揉揉AV| 日韩AV无码网站| 色色色综合| 国产精品天干天干综合网麻豆| 亚洲加勒比久久日本道| 蜜乳AV一区二区三区四| 国产激情在线| 色香伊人| 18禁看网站一区| 裸体美女国产免费久久久网站| 激情综合av| 思思热在线视频免费| 欧美一区二区亚洲天堂| 四虎在线观看网站| 免费成人在线观看91| 日本久久久久久久久| 亚洲综合另类色图| 日va操| 9精品在线| 国产传媒午夜理伦精品| 91亚洲不卡一区| 天天综合亚洲综合| www.色五月| 97超碰中文字幕| 久久久亚洲高清不打码| 人妻插插人妻人| 在线αⅴ| 中文字幕国产精品1区| 日韩色香| 99色在线| 国产精品999aaa| 亚洲丝袜色| 欧美人妻少妇| www.狠狠干.coom | 亚洲天堂久久久久久粉红视频| 五月丁香六月综合缴清无码| 日本天天操| 人人妻人人澡人人爽久久av| 欧美成人一区二区三区在线播放| 亚洲影视第一页| 看黄片视频免费| 大奶啊啊好爽 | 国产一区二区三区视频在线看| 综精品久久久aaaa| 91亚洲色人| 绑缚麻绳人妻寝取完整版| 天天草天天日| 色呦呦、国产精品| AV女资源| 春色校园综合网| 色香av| 顶级少妇BT天堂| 看免费一级在线播放毛片| 久久水蜜臀亚洲AV无码精品| 一个国产在线综合网站| 韩日自拍| 丁香色色网| 欧美乱伦专区| 艳尻美人妻| 人妻81p| 中出91视频| 欧亚乱色熟一区二区三四区| 老外又粗又长一晚做五次| 亚洲日韩乱码中文无码蜜桃臀网站| 日本操嫩b网| 欧美亚洲91| 日韩一999精品| 黄色网址在线免费观看| 欧美另类天堂| 国产嫩草精品A88AV在线| 一级毛片久久久久久久女人18| AV男人天堂网| 看日韩美女二区三区免费操逼视频 | 91欧美综合| 久久国产精品熟女人妻| 亚洲欧美日韩精品久| 日韩福利电影网| 97丝袜亚洲在线播放| 色99在线| 高清无码一区二区三区| 国产精品乱码久久| 欧美一区二区成人一卡| 99精品无码| 久久精品欧美一区二区三区不卡| 九九九九亚洲| 加勒比日本在线| 欧美夜夜狠| 在线色导航| 久久97| 97资源站久久| 午夜啊啊啊| 另类天堂| 夜间福利片1000无码| 久久东京热久久| 我爱操| 男人久久精品| 日韩av熟女一区二区三区成人| 91快色色色色色| 大二网站亚洲| 日本熟妇人妻一区二区三区| a片亚洲一本通视频| 天天欧美欧美亚洲网| 中文字幕精品区先锋资源| 绯色一区二区三区不卡少妇| 亚洲成成熟女人综合一区二区| 欧美美女在线高潮999| 亚洲春色激情小说| 91操人| 91久久精品中文字幕| 亚洲第一视频 欧美风情 日韩| 熟女高潮合集-永久久久-成人AV| 日韩欧美视频青青| AV免费在线播放一区| 秋霞久久亚洲精品成人| 亚洲天堂精品日韩电影| 国产97免费视频| 职场同事知名国产国产精品久久欧美日韩| 久操 高清| 男人亚洲91首页在线| 屌色在线97视频| 自拍偷拍2025在线观看| 懂色AV蜜臀无码精品APP| 黑人精品XXX一区一二区| 人人爱人人乐人人操| 加勒比综合88| 诱惑网综合| 精品人妻久久久久一区二区三区| 国产精品夜夜夜| 中文字幕诱惑制服人妻丝袜美丝袜美| 亚洲美女 晚间男人天堂 | 欧美亚洲清纯| 欧洲精品一二三在线| 曰本熟女视频| 日韩AV电影网站| 91人妻素女| 久久性爱城| 亚洲精品一区中文字幕乱码| 噜噜噜无码AV一级一级久久影院| 免费久久精品麻豆一区二区av| 黄页视频网站野外| 国产一区二区在线电影| 午夜福利免费福利视频| 国产超碰| 丁香婷婷大香蕉| 内射白嫩美女| 伊人97色天使| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 婷婷三区| 欧美中文狠| 超碰在线成人电影| 一二三四区电影| 蜜臀在线视频| 国产9 9在线 | 亚洲| 国产精品亚洲天堂网址| 人妻81p| 丁香五月久久| 曰韩精品九九无码| 中出789在线视频| 91五月天| 麻豆一区在线| 精品人妻久久久| 青青操网| 探花熟女,姿勢到位,體驗感也到位| 一区二区三区激情在线观看| 久久五月丁香| 精品然女一区二区| 欧美性天天影院| 啊啊啊啊啊好多水| 欧美性性性| 日本免费一级AAA大片器| 色婷婷五月综合激情中文字幕| 亚洲成人免费在线| 久久少妇视频| 99re在线视频这里只有精品| 午夜精品久久久| 第四色奇米影视777| 99久久九九| 丰满少妇人妻久久久久久| 天美传媒AV国产在线| 久9无限国产| 久久天天艹| 99re视频在线观看这里只有精品| 色综合中文字幕不卡| 日本五区不卡| 91色交| 国内三级自拍小视频在线观看| 青青操少妇| 日本 情色 1区2区3区| a片 xxxx受爽视频| 在线精品福利免费播放| 99re9这里只有精品| 欧亚揄拍偷拍精品视频| 国产精品一区二区手机看片| 亚洲综合成人网| 欧美一二三区四五区| 亚洲中文字幕一区二区| 欧美激情性久久久久久| 国产久久一区二区午夜| julia中文字幕在线观看| 午夜性生活av免费在线看| 日韩人妻播放| 男女打扑克高清网站| 欧美三级偷拍| 国产欧美日韩一区二区三区| 黑丝91视频| 伊人国产AV| 人人操人人大香蕉| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 亚洲综合骚逼| 97在线免费观看视频| 亚洲超碰AV| 97香蕉人人乳| 国产欧美在线观看免费观看| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 女生看匆91网站| 一级片视频啪啪| 天天日天天插| 一二三啪啪专区| 色约约一区=区三区| 国产91啪| 天天日天天射天天干| 欧亚日韩中文在线| www.人人cao| 屁股久久久久久久久| 国产极品美女高潮无套在线观看 | 日韩综合无码一区久久92| 亚洲欧洲综合视频在线| 99久在线精品99re8| 久久精品中文字幕无码l| 亚洲欧美日韩有码| 蜜乳成人AV| 青青草吊丝| 一级成人性爱| 亚洲和欧美裸体美女双飞视频| 亚洲日韩人妻中文字幕一区| 亚洲综合另类欧美久久久| 日韩有码专区| 日本熟妇熟色97一本在线观看| 日韩91网| 另类在线| 男人在线天堂| 蜜臀久久久久久999| 日本视频在线中文字幕| 懂色AV中文| 综合激情二| 日韩 欧美 国产 麻豆| 黄片国产精品一区二区| 亚洲天天影视色综合| 久久美女福利是上海美女| 一区超碰一区| 日韩欧美视频青青| 久久激情婷婷| 成人A片男人的天堂| 欧美大香蕉同搞| 天天干人妻| 99亚洲天堂| 蜜臀th| 国产av尤物| 欧 美 自 拍 偷 拍| 日本五十路在线| 欧美99热| 亚洲日韩精品久久久久一区壹牛 | 不卡av在线中文字幕| 97AV在线免费观看| 婷婷五月天色色| 日语五十路和六十路亚洲国产精品| 97 亚洲 日韩 欧美 在线| 国产精品久久久久久久AV大片| 亚洲国产剧情少妇激情| caoni国产亚洲av| 天天久久| 色好看av| 亚洲色久| 免费的很黄很污的全部视频| 乱操9999| 中文字幕视频2区| 午夜.DJ高清在线观看免费7| 久久久999国产| 草伊人高潮喷水超碰| 亚洲导航深夜福利| 超碰91在线| 亚洲天天精品| 嗯嗯啊操我| 国产性久久久| 99少妇| 另类视频在线| 99操碰| 日韩极品无码B| 91丰满| 嗯嗯啊啊好疼| 天天狠| 色色色色电影网| 中日韩一区二区三区欧美| 天堂av最新电影网| 免费看污网址| 婷婷午夜| 午夜精品探花| 一本大道不卡一二三区| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 亚洲一区二区三区AV无码| 色综合加勒比| 黄色工厂这里只有精品| 97精品视频免费| 亚洲 欧美 中文 日韩超碰| 探花熟女,姿勢到位,體驗感也到位| 天天综合网91| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 日韩黄色一区二区三区| 中文字幕丰满人妻日本| 久久久久熟女| 九九久精品| 99青青草国产视频| 美女露胸露屁股| 日韩人妻资源在线看| www.大香| 18禁美女裸体无遮挡啪啪| 91模特在线观看| 另类老少妇| 亚洲男人天堂视频| 色av中文字幕| 夜夜騷av、一區二區| 人妻密肉在线观看| 91狠狠综合久久久久久| www.91久久| 国产免费一区在线观看| 欧美αv.com| 2019久久久久久久久福利| 乱伦色图网址是多少| 97在线免费| 亚洲国产美女久久久久 | 一道本东京热加勒比一区二区三区| 狠狠操天天干| 亚州精人品大香蕉| 中文字幕jul-617人妻熟女| JULIA一区二区三区在线播放| 岛国福利在线精品播放| 亚洲无码精品AV久久久| 一个人免费视频观看在线WWW | 在线另类| 亚洲精品一区中文字幕乱码| 动漫爆乳3D奶水一区在线观看| 3p国产欧美99热| 日本久久网| 丁香婷婷啪啪| 熟女精品一区二区三区| 六六久久日韩不卡| 色99视频| 久久人妻97久久久久久久| 激情网色| 久久国产对白激情浪潮| 久久天堂婷婷网|