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

ARTICLE DETAIL

資訊詳情

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

基于Spring Boot與Android的家教服務(wù)平臺(tái)全棧設(shè)計(jì)與實(shí)現(xiàn)

基于Spring Boot與Android的家教服務(wù)平臺(tái)全棧設(shè)計(jì)與實(shí)現(xiàn) 1. 項(xiàng)目背景與整體設(shè)計(jì)思路這個(gè)選題我第一眼看到就想拍大腿典型的技術(shù)棧好看業(yè)務(wù)能落地型畢設(shè)題目。Spring Boot做后端接口Android做前端移動(dòng)端中間再配上MySQL存數(shù)據(jù)一套完整的家教服務(wù)平臺(tái)就出來(lái)了。你說(shuō)它是管理系統(tǒng)其實(shí)本質(zhì)上是一個(gè)雙向匹配的在線平臺(tái)——家長(zhǎng)端找家教、家教端接單子中間夾雜訂單、評(píng)價(jià)、排課、結(jié)算這一條完整的業(yè)務(wù)鏈。先聊聊為什么這個(gè)題適合做畢業(yè)設(shè)計(jì)因?yàn)樗膹?fù)雜度剛好卡在能把你和其他人區(qū)分開(kāi)的位置。你要是只做一個(gè)普通的CRUD管理系統(tǒng)老師一眼就能看穿但加上訂單狀態(tài)機(jī)、教師等級(jí)認(rèn)證、家長(zhǎng)評(píng)價(jià)體系之后整個(gè)系統(tǒng)的業(yè)務(wù)完整性立刻不一樣了。而且Spring Boot Android這個(gè)組合本身就自帶話題性答辯的時(shí)候老師問(wèn)什么你都能接得上話。再說(shuō)說(shuō)場(chǎng)景怎么拆。一個(gè)合格的家教平臺(tái)至少要覆蓋三類角色管理員、家長(zhǎng)、家教老師。家長(zhǎng)端要能瀏覽老師列表、按科目篩選、看評(píng)分、下單預(yù)約家教老師要能上傳資質(zhì)、管理自己的課程時(shí)間、接受或拒絕訂單管理員則要負(fù)責(zé)審核老師資質(zhì)、處理投訴、統(tǒng)計(jì)平臺(tái)數(shù)據(jù)。這三條線合在一起才是完整的家教管理系統(tǒng)缺了任何一條線都只是半成品。從技術(shù)演進(jìn)的角度看其實(shí)現(xiàn)在很多人會(huì)糾結(jié)要不要用小程序替代Android端我的看法是畢設(shè)直接用Android原生就行原因后面工具選型部分詳細(xì)說(shuō)。這里先明確一個(gè)共識(shí)——做這個(gè)項(xiàng)目的核心目標(biāo)不是真的上線運(yùn)營(yíng)而是通過(guò)一個(gè)完整的全棧項(xiàng)目展示你對(duì)前端交互后端接口數(shù)據(jù)庫(kù)設(shè)計(jì)的整合能力。2. 技術(shù)選型與核心原理2.1 Spring Boot 3.x MyBatis Plus 的組合邏輯后端我推薦直接用Spring Boot 3.x配合MyBatis Plus這是目前Java系畢設(shè)里的主流搭配。Spring Boot負(fù)責(zé)把整個(gè)Web服務(wù)的骨架搭起來(lái)內(nèi)嵌Tomcat一行代碼都不用配就能跑起來(lái)這對(duì)時(shí)間緊張的畢業(yè)生來(lái)說(shuō)太友好了。MyBatis Plus相比純MyBatis的優(yōu)勢(shì)在于單表CRUD根本不用寫SQLBaseMapper里那些insert、selectById、updateById直接拿來(lái)用省下來(lái)的時(shí)間都?jí)蚰惆延唵螤顟B(tài)機(jī)多寫兩個(gè)狀態(tài)了。不過(guò)我要提醒一句MyBatis Plus不是萬(wàn)能藥多表關(guān)聯(lián)查詢老老實(shí)實(shí)自己寫XML里的SQL別硬套它那個(gè)Wrapper很多時(shí)候查出來(lái)的字段對(duì)不上會(huì)讓你排查到懷疑人生。接口設(shè)計(jì)上走RESTful風(fēng)格統(tǒng)一返回Result對(duì)象code message dataAndroid端拿到這個(gè)結(jié)構(gòu)體再解析協(xié)作效率會(huì)高很多。權(quán)限認(rèn)證用JWT登錄成功后頒發(fā)一個(gè)有效期為24小時(shí)的tokenAndroid端保存到SharedPreferences里每次請(qǐng)求帶上Authorization頭就行。為什么不用SessionAndroid端不像瀏覽器會(huì)自動(dòng)管理Cookie用JWT免去了很多會(huì)話同步的麻煩而且天然支持無(wú)狀態(tài)擴(kuò)展這點(diǎn)在答辯的時(shí)候可以拿出來(lái)說(shuō)。2.2 Android原生開(kāi)發(fā)到底選Java還是Kotlin現(xiàn)在去搜Android開(kāi)發(fā)相關(guān)內(nèi)容鋪天蓋地都是Kotlin但我不建議畢設(shè)一上來(lái)就啃Kotlin除非你之前已經(jīng)用Kotlin寫過(guò)項(xiàng)目。原因是大部分學(xué)校的Android課程還是用Java教的你需要在短時(shí)間內(nèi)同時(shí)搞明白Activity生命周期、RecyclerView適配器、網(wǎng)絡(luò)請(qǐng)求回調(diào)這幾個(gè)硬骨頭沒(méi)必要再疊加一門新語(yǔ)言的認(rèn)知負(fù)擔(dān)。當(dāng)然你完全可以最后沖刺階段把代碼重構(gòu)成Kotlin這屬于錦上添花。但核心邏輯用Java寫完并且能跑通比什么都強(qiáng)。Android端架構(gòu)上我建議MVP就夠了Activity當(dāng)View層Presenter負(fù)責(zé)業(yè)務(wù)邏輯Model管數(shù)據(jù)。MVVM也行但LiveData ViewModel這套組合對(duì)于畢設(shè)來(lái)說(shuō)有點(diǎn)over-engineering你還要處理生命周期綁定的細(xì)節(jié)時(shí)間不劃算。網(wǎng)絡(luò)框架用OkHttp Retrofit。Retrofit的注解式接口定義方式非常適合這種前后端分離的協(xié)作模式后端接口一定義好Android端照著接口文檔寫interface就行自動(dòng)把JSON解析成Java對(duì)象。JSON解析就用Gson簡(jiǎn)單直接都是Java系的東西配合格外順暢。2.3 數(shù)據(jù)庫(kù)選型和表結(jié)構(gòu)設(shè)計(jì)的第一性原理MySQL 8.0是標(biāo)配這沒(méi)什么好糾結(jié)的。關(guān)鍵在于表結(jié)構(gòu)怎么設(shè)計(jì)——這決定了你的業(yè)務(wù)邏輯是清晰還是混亂。我見(jiàn)過(guò)太多人做畢設(shè)時(shí)隨手下兩張表就開(kāi)始寫代碼結(jié)果到后面訂單狀態(tài)一復(fù)雜整個(gè)系統(tǒng)直接崩盤。一個(gè)家教平臺(tái)的核心表我建議至少包含這些用戶表user、老師詳情表teacher_info、科目表subject、老師科目關(guān)聯(lián)表teacher_subject、訂單表order、排課表course_schedule、評(píng)價(jià)表review、收藏表favorite、公告表notice。這些表之間的外鍵關(guān)系要不要物理外鍵我建議不要邏輯外鍵就夠了。畢業(yè)設(shè)計(jì)階段物理外鍵的維護(hù)成本大于收益而且你答辯時(shí)完全可以說(shuō)生產(chǎn)環(huán)境通常禁用物理外鍵以保證擴(kuò)展性這反而是加分項(xiàng)。訂單狀態(tài)這塊單獨(dú)強(qiáng)調(diào)一下用int類型存狀態(tài)碼0待支付、1待上課、2已上課、3已完成、4已取消、5退款中。不要直接存字符串狀態(tài)碼配合常量類或者枚舉類使用可讀性照樣高而且后續(xù)要統(tǒng)計(jì)所有退款訂單這種數(shù)據(jù)的時(shí)候?qū)慡QL會(huì)舒服很多。3. 后端核心模塊設(shè)計(jì)與實(shí)現(xiàn)3.1 基于JWT的登錄認(rèn)證與角色權(quán)限控制登錄這塊是整個(gè)系統(tǒng)的入口做得不好后面全崩。我的方案是登錄接口接收手機(jī)號(hào)和密碼校驗(yàn)通過(guò)后用JJWT庫(kù)生成tokentoken的payload里塞userId和role字段1管理員、2家長(zhǎng)、3老師然后返回給客戶端。后續(xù)請(qǐng)求通過(guò)攔截器解析token把用戶信息放到ThreadLocal里業(yè)務(wù)層隨時(shí)能拿到當(dāng)前操作人。角色權(quán)限控制用一個(gè)自定義注解RequireRole配合Spring攔截器在handler執(zhí)行前做校驗(yàn)。比如發(fā)布公告這個(gè)接口標(biāo)注RequireRole(1)家教接單接口標(biāo)注RequireRole(3)家長(zhǎng)下單接口標(biāo)注RequireRole(2)。代碼看起來(lái)是這樣PostMapping(/order/create) RequireRole(2) public ResultString createOrder(RequestBody OrderCreateRequest request) { // 業(yè)務(wù)邏輯... }攔截器里先解析token再檢查當(dāng)前用戶角色是否匹配注解要求不匹配直接返回403。另外密碼存儲(chǔ)必須用BCrypt加密spring-security-crypto這個(gè)依賴單獨(dú)拎出來(lái)用就行不需要引入整套Spring Security。BCrypt有個(gè)特點(diǎn)每次加密同一個(gè)密碼得到的密文都不一樣因?yàn)閮?nèi)部帶了隨機(jī)鹽這比MD5那種固定哈希值安全一個(gè)數(shù)量級(jí)。3.2 家教檢索的核心算法與實(shí)現(xiàn)家長(zhǎng)端最核心的功能就是搜索家教這決定了平臺(tái)的使用體驗(yàn)。我的實(shí)現(xiàn)邏輯是按科目id 區(qū)域 價(jià)格區(qū)間 綜合評(píng)分做組合篩選分頁(yè)返回教師列表。綜合評(píng)分的計(jì)算是(科目匹配分?jǐn)?shù)×0.4 教齡分?jǐn)?shù)×0.2 評(píng)價(jià)分?jǐn)?shù)×0.4)每個(gè)維度都?xì)w一化到0-5分用這個(gè)算出來(lái)的分?jǐn)?shù)做排序。這個(gè)算法的關(guān)鍵在于打分的規(guī)則要講得清楚答辯的時(shí)候這是重點(diǎn)展示環(huán)節(jié)。你在代碼里封裝一個(gè)ScoreCalculator類從teacher_subject表里取科目匹配度從teacher_info里取教齡從review表里AVG出評(píng)價(jià)分然后按權(quán)重加總。排序整合在SQL里做也行但如果在Java層計(jì)算你就必須注意N1查詢的問(wèn)題——每個(gè)老師都要查一次評(píng)價(jià)表的話10個(gè)老師就是11次查詢。我當(dāng)時(shí)是先把教師列表一次性查出再按id批量查相關(guān)數(shù)據(jù)內(nèi)存里做匹配性能至少快3倍。3.3 訂單狀態(tài)機(jī)與排課沖突校驗(yàn)訂單是整個(gè)平臺(tái)的主線我用一個(gè)簡(jiǎn)單的狀態(tài)機(jī)來(lái)管理待支付0→ 待上課1→ 已完成2待支付超過(guò)30分鐘自動(dòng)取消家長(zhǎng)可以主動(dòng)取消待支付和待上課狀態(tài)的訂單上課完成后雙方確認(rèn)訂單進(jìn)入已完成狀態(tài)此時(shí)家長(zhǎng)才能評(píng)價(jià)。每次創(chuàng)建訂單前必須要做排課沖突校驗(yàn)這是很多粗制濫造系統(tǒng)會(huì)漏掉的地方。校驗(yàn)邏輯是查詢老師在該時(shí)間段開(kāi)始時(shí)間到結(jié)束時(shí)間是否存在時(shí)間重疊的已接訂單或已排課記錄存在一律拒絕創(chuàng)建訂單。SQL這樣寫SELECT COUNT(*) FROM order WHERE teacher_id #{teacherId} AND status IN (1, 2) AND #{endTime} start_time AND #{startTime} end_time這個(gè)重疊判斷條件很經(jīng)典兩個(gè)區(qū)間[a,b]和[c,d]存在交集只要滿足c b且a d即可。我在第一次實(shí)現(xiàn)時(shí)寫成了start_time BETWEEN #{startTime} AND #{endTime}結(jié)果漏掉了訂單完全包含已有排課的情況后來(lái)才發(fā)現(xiàn)這種寫法只覆蓋了一部分重疊場(chǎng)景。改成交集條件后各種邊界情況全部覆蓋了。3.4 評(píng)價(jià)系統(tǒng)與教師評(píng)分動(dòng)態(tài)更新評(píng)價(jià)表的設(shè)計(jì)要精細(xì)一點(diǎn)id、order_id一個(gè)訂單只能評(píng)價(jià)一次所以這個(gè)字段加唯一索引、rating1-5分、content、create_time。家長(zhǎng)提交評(píng)價(jià)后transaction里要同時(shí)做兩件事插入評(píng)價(jià)記錄、更新老師的綜合評(píng)分。評(píng)分字段放在teacher_info表里冗余存儲(chǔ)這樣列表頁(yè)展示老師評(píng)分就只需要查教師表不需要每次都聚合review表。但這里有個(gè)體驗(yàn)細(xì)節(jié)容易忽略評(píng)價(jià)必須要在訂單完成后7天內(nèi)提交超過(guò)時(shí)間就鎖定不能再評(píng)。這個(gè)限制一方面防止惡意刷評(píng)價(jià)另一方面也督促家長(zhǎng)及時(shí)反饋。在代碼上就用一個(gè)update語(yǔ)句配合時(shí)間條件來(lái)控制寫起來(lái)很輕量。4. Android端核心模塊與實(shí)現(xiàn)4.1 項(xiàng)目架構(gòu)與Navigation底部導(dǎo)航設(shè)計(jì)Android端我遵循單Activity多Fragment的設(shè)計(jì)主界面一個(gè)MainActivity底部三個(gè)Tab首頁(yè)找家教、訂單我的訂單、我的個(gè)人中心。Fragment之間的切換用FragmentManager FragmentTransaction不需要引入Navigation組件——那個(gè)對(duì)畢設(shè)來(lái)說(shuō)配置太繁瑣而且你現(xiàn)在不熟的話踩坑成本太高。底部導(dǎo)航欄用BottomNavigationView菜單資源里定義三個(gè)item每個(gè)item對(duì)應(yīng)一個(gè)Fragment的tag切換時(shí)show/hide而不是replace。為什么這么做因?yàn)閞eplace每次都會(huì)重新走一遍Fragment的生命周期導(dǎo)致網(wǎng)絡(luò)請(qǐng)求重新執(zhí)行用戶翻個(gè)Tab回來(lái)數(shù)據(jù)全部刷新一遍體驗(yàn)非常差。show/hide的方式能保留Fragment的狀態(tài)實(shí)測(cè)滑動(dòng)列表位置不會(huì)被重置。4.2 Retrofit網(wǎng)絡(luò)層封裝與響應(yīng)統(tǒng)一解析Android端網(wǎng)絡(luò)層是整個(gè)項(xiàng)目最容易寫亂的地方。我的做法是定義ApiService接口用注解聲明后端所有接口然后用Retrofit.Builder創(chuàng)建實(shí)例配合GsonConverterFactory做JSON轉(zhuǎn)換。統(tǒng)一的響應(yīng)體Result 在Android端也用對(duì)應(yīng)結(jié)構(gòu)體映射解析完判斷code是否為200不是就直接toast提示后端返回的消息。網(wǎng)絡(luò)請(qǐng)求的異步處理用Retrofit的Callback機(jī)制就好不要因?yàn)閳D新鮮去引入RxJava。那會(huì)讓數(shù)據(jù)流變得復(fù)雜而且你如果之前沒(méi)接觸過(guò)響應(yīng)式編程光理解Observable和Observer的關(guān)系都要花不少時(shí)間。Callback雖然寫起來(lái)顯得啰嗦但邏輯清晰——onResponse處理成功、onFailure處理失敗很適合這個(gè)項(xiàng)目。兩三年前我?guī)腿伺挪檫^(guò)一個(gè)bug用戶上傳頭像后圖片一直沒(méi)顯示查了半天發(fā)現(xiàn)是Android 10對(duì)文件訪問(wèn)權(quán)限收緊直接用file://協(xié)議打開(kāi)相冊(cè)選中的URI會(huì)崩潰。解決方案是用ContentResolver把URI拷貝到應(yīng)用私有目錄再交給Glide加載。這個(gè)坑新手必踩畢設(shè)里做頭像上傳功能時(shí)一定要提前處理。4.3 教師列表展示與篩選交互設(shè)計(jì)教師列表頁(yè)用RecyclerView CardView的組合每個(gè)item展示老師的頭像、昵稱、主教科目、教齡、綜合評(píng)分和價(jià)格。篩選條件用BottomSheetDialog彈出面板里面放科目、區(qū)域、價(jià)格范圍等選項(xiàng)點(diǎn)擊確定后重新請(qǐng)求列表接口。滑動(dòng)加載更多用RecyclerView的OnScrollListener實(shí)現(xiàn)監(jiān)聽(tīng)最后一個(gè)可見(jiàn)item的位置是否接近總數(shù)是就加載下一頁(yè)。這里有個(gè)細(xì)節(jié)需要加一個(gè)isLoading標(biāo)志位防止重復(fù)請(qǐng)求否則用戶快速滑動(dòng)時(shí)可能同時(shí)觸發(fā)多次分頁(yè)請(qǐng)求數(shù)據(jù)順序就亂套了。每頁(yè)我設(shè)20條一屏剛好放5個(gè)卡片滑動(dòng)兩三屏才觸發(fā)一次加載交互節(jié)奏剛剛好。5. 數(shù)據(jù)庫(kù)設(shè)計(jì)實(shí)戰(zhàn)與核心建表語(yǔ)句5.1 核心表結(jié)構(gòu)全解析把完整的建表SQL都貼出來(lái)不現(xiàn)實(shí)挑幾張核心表說(shuō)。用戶表是最基礎(chǔ)的字段包括id、phone、password、role、nickname、avatar、status、create_time。這里phone要加唯一索引platform登錄直接綁定手機(jī)號(hào)不搞郵箱注冊(cè)那套復(fù)雜流程。訂單表的字段設(shè)計(jì)直接決定業(yè)務(wù)邏輯好不好寫CREATE TABLE order ( id bigint(20) NOT NULL AUTO_INCREMENT, order_no varchar(32) NOT NULL COMMENT 訂單編號(hào), parent_id bigint(20) NOT NULL COMMENT 家長(zhǎng)用戶ID, teacher_id bigint(20) NOT NULL COMMENT 老師用戶ID, subject_id bigint(20) NOT NULL COMMENT 科目ID, start_time datetime NOT NULL COMMENT 上課開(kāi)始時(shí)間, end_time datetime NOT NULL COMMENT 上課結(jié)束時(shí)間, price decimal(10,2) NOT NULL COMMENT 訂單金額, status int(11) NOT NULL DEFAULT 0 COMMENT 訂單狀態(tài), create_time datetime NOT NULL, update_time datetime NOT NULL, PRIMARY KEY (id), KEY idx_teacher_time (teacher_id,start_time,end_time) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;order_no用yyyyMMddHHmmss 3位隨機(jī)數(shù)生成這是最簡(jiǎn)單不會(huì)重復(fù)的方式。索引設(shè)計(jì)上聯(lián)合索引teacher_id, start_time, end_time能極大加快排課沖突校驗(yàn)的查詢速度這個(gè)索引在真實(shí)場(chǎng)景中就是量級(jí)上的性能差異。5.2 一對(duì)多與多對(duì)多關(guān)系的處理策略教師和科目之間是多對(duì)多關(guān)系需要一張關(guān)聯(lián)表teacher_subject來(lái)維系字段就三個(gè)id、teacher_id、subject_id??颇勘肀旧碓谙到y(tǒng)里基本就是一個(gè)靜態(tài)字典數(shù)學(xué)、英語(yǔ)、物理、化學(xué)、語(yǔ)文、生物、歷史、地理、政治、鋼琴、繪畫、編程。畢設(shè)階段直接在SQL初始化腳本里INSERT進(jìn)去就行不用專門做科目管理功能。老師詳情表teacher_info和用戶表是一對(duì)一關(guān)系存放老師專屬的信息教齡、學(xué)歷、學(xué)校/機(jī)構(gòu)、教學(xué)風(fēng)格、每小時(shí)價(jià)格、可教區(qū)域等。為什么不分一張表全塞進(jìn)user里因?yàn)榧议L(zhǎng)端的用戶根本不需要這些屬性分表后邏輯更清晰而且這也能向老師展示你掌握了垂直分表的設(shè)計(jì)思路。6. 核心業(yè)務(wù)流程與代碼實(shí)現(xiàn)6.1 下單流程的完整時(shí)序下單是整個(gè)系統(tǒng)里橫跨前后端最多的業(yè)務(wù)建議先從時(shí)序?qū)用胬砬宄议L(zhǎng)在教師詳情頁(yè)點(diǎn)擊預(yù)約試聽(tīng)→ 選擇上課時(shí)間和時(shí)長(zhǎng) → 后端校驗(yàn)老師是否空閑 → 創(chuàng)建訂單狀態(tài)為待支付→ 家長(zhǎng)確認(rèn)支付 → 模擬支付成功回調(diào) → 訂單狀態(tài)變?yōu)榇险n??紤]到畢設(shè)沒(méi)辦法接真實(shí)支付渠道我用的方案是做一個(gè)模擬支付頁(yè)面點(diǎn)擊確認(rèn)支付后直接跳轉(zhuǎn)一個(gè)模擬支付成功的回調(diào)接口接口把訂單狀態(tài)更新為待上課。這個(gè)方案雖然是模擬的但業(yè)務(wù)閉環(huán)是完整的答辯時(shí)說(shuō)明實(shí)際生產(chǎn)可替換為微信/支付寶官方SDK就夠了。6.2 接口定義與Android端調(diào)用對(duì)齊前后端接口對(duì)齊的關(guān)鍵在字段命名。后端返回的JSON字段統(tǒng)一用駝峰命名法和Java屬性保持一致這樣Gson解析時(shí)不需要額外寫SerializedName注解。日期格式統(tǒng)一為yyyy-MM-dd HH:mm:ss直接作為字符串傳輸Android端用SimpleDateFormat解析出Date對(duì)象再格式化展示。我列幾個(gè)核心接口路徑POST /api/auth/login登錄、GET /api/teacher/list教師列表、GET /api/teacher/detail/{id}教師詳情、POST /api/order/create創(chuàng)建訂單、GET /api/order/my我的訂單、POST /api/review/submit提交評(píng)價(jià)。這些接口路徑在設(shè)計(jì)階段就要定好寫進(jìn)接口文檔里前后端各自照著文檔開(kāi)發(fā)能少吵很多架。6.3 教師端接單與日程管理老師端的核心場(chǎng)景是接單和排課。在我的日程頁(yè)面老師可以看到自己所有時(shí)間段的排課情況支持手動(dòng)添加和刪除排課。排課數(shù)據(jù)存在course_schedule表里字段包含teacher_id、start_time、end_time、type1空閑、2已預(yù)約、3不可約。對(duì)老師來(lái)說(shuō)這條時(shí)間軸就是他的可售賣資源。比較有意思的是推薦算法在這里的應(yīng)用當(dāng)家長(zhǎng)瀏覽教師列表時(shí)我調(diào)了一個(gè)活躍推薦排序因子近期有排課活動(dòng)的老師權(quán)重升高。這個(gè)功能看著不起眼但能體現(xiàn)你對(duì)業(yè)務(wù)的理解深度——平臺(tái)需要鼓勵(lì)老師保持活躍而不是注冊(cè)完就消失。7. 前端關(guān)鍵頁(yè)面與交互實(shí)現(xiàn)7.1 教師詳情頁(yè)的信息層級(jí)設(shè)計(jì)教師詳情頁(yè)直接決定家長(zhǎng)會(huì)不會(huì)下單。我按這樣的信息層級(jí)排布最頂部是大圖頭像和名字下面一排展示教齡、學(xué)歷、評(píng)分三個(gè)標(biāo)簽再往下是ta的可教科目和價(jià)格區(qū)間繼續(xù)往下是個(gè)人介紹和教學(xué)風(fēng)格最后是評(píng)價(jià)列表。整個(gè)頁(yè)面用NestedScrollView包裹評(píng)價(jià)列表嵌套R(shí)ecyclerView時(shí)要注意設(shè)置setNestedScrollingEnabled(false)否則會(huì)出現(xiàn)滑動(dòng)沖突。頁(yè)面底部固定一個(gè)預(yù)約試聽(tīng)按鈕顏色用平臺(tái)主色點(diǎn)擊后彈BottomSheetDialog選擇上課時(shí)間。這個(gè)按鈕要一直懸浮在頁(yè)面底部用戶瀏覽完所有信息后最自然的動(dòng)作就是點(diǎn)擊它。7.2 下拉刷新和加載狀態(tài)的細(xì)節(jié)處理頁(yè)面加載狀態(tài)我用三種視圖管理加載中顯示居中ProgressBar加載失敗顯示帶重試按鈕的提示視圖加載成功顯示內(nèi)容。用ViewStub按需inflate這三種狀態(tài)視圖比動(dòng)態(tài)addView效率更高也避免了視圖層級(jí)過(guò)深的問(wèn)題。下拉刷新用SwipeRefreshLayout在onRefresh回調(diào)里重新請(qǐng)求第一頁(yè)數(shù)據(jù)請(qǐng)求完成后調(diào)用setRefreshing(false)結(jié)束動(dòng)畫。這里有個(gè)很多人會(huì)忽略的坑如果刷新請(qǐng)求失敗一定要結(jié)束刷新動(dòng)畫否則用戶會(huì)看到轉(zhuǎn)圈圈停不下來(lái)的詭異狀態(tài)。正確做法是在finally代碼塊里調(diào)用setRefreshing(false)。8. 系統(tǒng)優(yōu)化點(diǎn)與進(jìn)階提升方向8.1 服務(wù)端性能優(yōu)化三板斧畢設(shè)如果能展示出性能優(yōu)化意識(shí)答辯老師通常會(huì)高看一眼。我做了三件事第一教師列表接口開(kāi)啟了Spring Cache緩存key為teacherList:page:{page}:size:{size}緩存過(guò)期時(shí)間60秒有效降低數(shù)據(jù)庫(kù)壓力第二熱門科目和評(píng)價(jià)數(shù)據(jù)用Redis緩存你就算只寫幾行RedisTemplate的get/set代碼也足夠展示你對(duì)緩存技術(shù)的理解第三SQL層面盡量覆蓋索引避免在查詢條件中使用函數(shù)導(dǎo)致索引失效。這里說(shuō)個(gè)實(shí)際的緩存一致性經(jīng)驗(yàn)我在寫評(píng)價(jià)和更新教師評(píng)分的事務(wù)里手動(dòng)刪除對(duì)應(yīng)教師的緩存key這樣下次請(qǐng)求時(shí)就能拿到最新的評(píng)分?jǐn)?shù)據(jù)。這種寫操作刪緩存的玩法雖然是Cache Aside Pattern的基礎(chǔ)操作但在畢設(shè)里能自己悟出來(lái)并寫出來(lái)說(shuō)明你確實(shí)理解了緩存的核心邏輯。8.2 Android端體驗(yàn)優(yōu)化細(xì)節(jié)Android端可以做很多小而美的優(yōu)化圖片加載用Glide配置占位圖和錯(cuò)誤圖列表頁(yè)的item布局用ConstraintLayout減少布局嵌套層級(jí)提升渲染速度大列表加setHasFixedSize(true)告訴RecyclerView尺寸不變跳過(guò)重新測(cè)量布局的過(guò)程。另外建議在項(xiàng)目里加一個(gè)BaseActivity和BaseFragment把網(wǎng)絡(luò)請(qǐng)求的Loading對(duì)話框和錯(cuò)誤Toast統(tǒng)一封裝。這樣每個(gè)頁(yè)面的代碼會(huì)清爽很多而且這種框架思維是導(dǎo)師喜歡的風(fēng)格。8.3 功能擴(kuò)展的想象空間做完全部功能后可以想想還有哪些地方能擴(kuò)展增加消息推送功能的話可以用WebSocket實(shí)現(xiàn)站內(nèi)聊天增加后臺(tái)數(shù)據(jù)分析的話可以在管理員端加訂單統(tǒng)計(jì)報(bào)表按天/周/月維度展示GMV增長(zhǎng)曲線增加推薦系統(tǒng)的話可以基于用戶行為記錄做猜你喜歡的教師推薦。這些擴(kuò)展方向在論文的未來(lái)展望章節(jié)里寫出來(lái)既能體現(xiàn)你思考的深度又不會(huì)給自己增加實(shí)際工作量。我當(dāng)年就是這么干的老師看完后特意在答辯時(shí)問(wèn)了一圈擴(kuò)展方案的技術(shù)實(shí)現(xiàn)思路。9. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄9.1 跨域問(wèn)題與Android請(qǐng)求失敗的區(qū)分前后端聯(lián)調(diào)時(shí)最容易碰到的就是請(qǐng)求失敗。如果你用瀏覽器調(diào)試接口發(fā)現(xiàn)一切正常但Android端請(qǐng)求總是走onFailure大概率是網(wǎng)絡(luò)請(qǐng)求被拒絕。排查方法先在AndroidManifest.xml確認(rèn)加了INTERNET權(quán)限——這個(gè)問(wèn)題出現(xiàn)頻率高到令人發(fā)指再看是不是用了http明文請(qǐng)求Android 9.0之后默認(rèn)禁止明文流量需要在manifest里配置usesCleartextTraffictrue或者在networkSecurityConfig里配置域名白名單。如果你是后端接口在瀏覽器里直接訪問(wèn)出現(xiàn)跨域報(bào)錯(cuò)記得加一個(gè)CorsFilter或者用CrossOrigin注解解決。這在前后端分離項(xiàng)目里是必踩的坑提前處理能省一晚上時(shí)間。9.2 時(shí)間參數(shù)時(shí)區(qū)和格式不一致問(wèn)題Java后端默認(rèn)的日期解析格式是ISO標(biāo)準(zhǔn)的yyyy-MM-ddTHH:mm:ss.SSSZ但前端傳來(lái)的可能是yyyy-MM-dd HH:mm:ss直接用RequestBody接收會(huì)導(dǎo)致解析失敗。解決方案是用JsonFormat注解標(biāo)注時(shí)間字段的格式同時(shí)指定timezone為GMT8避免時(shí)區(qū)偏移導(dǎo)致時(shí)間差8小時(shí)的問(wèn)題。這個(gè)坑我第一次做項(xiàng)目時(shí)踩過(guò)排查了整整一個(gè)晚上最后發(fā)現(xiàn)是Jackson反序列化默認(rèn)不帶解析自定義格式導(dǎo)致的。后來(lái)我在所有LocalDateTime字段上都加了JsonFormat(pattern yyyy-MM-dd HH:mm:ss, timezone GMT8)從此再?zèng)]為時(shí)間格式頭疼過(guò)。9.3 Android內(nèi)存泄漏的幾個(gè)典型場(chǎng)景Android端的內(nèi)存泄漏問(wèn)題可以從源頭避免Activity里持有靜態(tài)Context引用、Handler匿名內(nèi)部類持有Activity引用、網(wǎng)絡(luò)請(qǐng)求回調(diào)在Activity銷毀后仍然執(zhí)行、Bitmap沒(méi)有及時(shí)回收。我的建議是網(wǎng)絡(luò)請(qǐng)求用ApplicationContext起步回調(diào)回來(lái)后判斷Activity是否已經(jīng)isFinishing是就直接return不再更新UI。實(shí)際項(xiàng)目里我用IntentService處理頭像上傳的任務(wù)這樣Activity銷毀了任務(wù)也能繼續(xù)執(zhí)行上傳完成后再通過(guò)EventBus通知刷新。雖然EventBus現(xiàn)在有點(diǎn)被嫌棄但畢設(shè)里用起來(lái)非常順手而且這套模式在真實(shí)項(xiàng)目中也很常見(jiàn)。10. 部署發(fā)布與環(huán)境配置經(jīng)驗(yàn)10.1 后端打包部署的完整流程后端部署我用的是阿里云的一臺(tái)2核4G的輕量應(yīng)用服務(wù)器操作系統(tǒng)Ubuntu 22.04安裝JDK 17和MySQL 8.0。打包時(shí)用mvn clean package -DskipTests生成jar包通過(guò)scp命令傳到服務(wù)器 /home/app 目錄下用nohup java -jar xxx.jar app.log 21 啟動(dòng)。生產(chǎn)環(huán)境和本地環(huán)境用不同的application-xxx.yml配置文件通過(guò)啟動(dòng)參數(shù)--spring.profiles.activeprod指定。數(shù)據(jù)庫(kù)連接、Redis地址這些敏感配置不要寫死在代碼里通過(guò)環(huán)境變量注入。這樣代碼倉(cāng)庫(kù)里的配置都是脫敏的安全習(xí)慣從畢設(shè)就開(kāi)始養(yǎng)成。10.2 Android簽名打包與真機(jī)調(diào)試Android端調(diào)試時(shí)強(qiáng)烈建議直接連真機(jī)調(diào)試不要用模擬器。模擬器雖然看起來(lái)方便但冷啟動(dòng)慢、GPS模擬麻煩、相機(jī)權(quán)限需要額外配置這些限制都會(huì)影響家教App這種真實(shí)業(yè)務(wù)App的調(diào)試體驗(yàn)。我用的是小米手機(jī)開(kāi)USB調(diào)試Android Studio直接識(shí)別設(shè)備一鍵run到手機(jī)上看到效果的速度比模擬器快三倍。正式簽名打包時(shí)在build.gradle里配置好簽名證書生成release APK放到服務(wù)器上提供下載。這里有個(gè)加分項(xiàng)可以做一張二維碼用Android的Scan QR Code功能掃碼下載安裝包演示的時(shí)候非常炫酷而且讓老師感覺(jué)到這個(gè)系統(tǒng)真的是可交付的。11. 項(xiàng)目答辯指南與亮點(diǎn)包裝11.1 演示流程圖與核心賣點(diǎn)提煉答辯演示的時(shí)候按這條主線講故事從家長(zhǎng)搜索家教開(kāi)始 → 查看老師詳情和評(píng)價(jià) → 選擇時(shí)段預(yù)約試聽(tīng) → 支付創(chuàng)建訂單 → 老師端確認(rèn)接單 → 排課日程更新 → 上課完成后評(píng)價(jià) → 評(píng)分動(dòng)態(tài)更新到列表頁(yè)。這條鏈路一氣呵成能向老師展示整個(gè)系統(tǒng)的完整度和業(yè)務(wù)閉環(huán)。核心賣點(diǎn)提煉三個(gè)詞全棧前端Android后端Spring Boot數(shù)據(jù)庫(kù)MySQL、閉環(huán)訂單狀態(tài)從創(chuàng)建到完成全流程管理、體驗(yàn)教師篩選、評(píng)分算法、排課沖突校驗(yàn)這些功能細(xì)節(jié)。這三個(gè)詞在匯報(bào)開(kāi)場(chǎng)就拋出來(lái)定好基調(diào)后面演示的時(shí)候不斷呼應(yīng)。11.2 常見(jiàn)答辯問(wèn)題應(yīng)對(duì)策略老師最愛(ài)問(wèn)的問(wèn)題基本集中在幾個(gè)方向?yàn)槭裁催x這個(gè)技術(shù)棧訂單狀態(tài)是怎么管理的并發(fā)場(chǎng)景下有沒(méi)有考慮超賣問(wèn)題你作為畢設(shè)項(xiàng)目怎么防止一個(gè)老師的同一時(shí)間段被多個(gè)家長(zhǎng)同時(shí)預(yù)約超賣問(wèn)題這個(gè)值得提前做準(zhǔn)備。我在下單接口里用數(shù)據(jù)庫(kù)層面的條件更新來(lái)保證原子性UPDATE teacher_schedule SET status 2 WHERE id #{id} AND status 1如果返回影響行數(shù)為0說(shuō)明已經(jīng)被搶了這一點(diǎn)在并發(fā)場(chǎng)景下能保證不會(huì)出現(xiàn)同一位老師同一時(shí)段被兩個(gè)人約走的情況。把這條SQL的邏輯在答辯時(shí)講出來(lái)老師就能看出來(lái)你確實(shí)思考過(guò)并發(fā)問(wèn)題。還有老師會(huì)問(wèn)JWT和傳統(tǒng)Session有什么區(qū)別為什么不用OAuth2.0你的回答思路是JWT無(wú)狀態(tài)適合移動(dòng)端和分布式場(chǎng)景OAuth2.0更適合開(kāi)放平臺(tái)給第三方授權(quán)登錄的場(chǎng)景我們這個(gè)系統(tǒng)自己管理用戶體系JWT方案更簡(jiǎn)潔高效。最后再說(shuō)說(shuō)做這個(gè)項(xiàng)目我個(gè)人的心態(tài)變化。剛開(kāi)始寫訂單模塊的時(shí)候我以為最難的是Android界面怎么畫得好看但真正做下來(lái)才發(fā)現(xiàn)數(shù)據(jù)庫(kù)表怎么設(shè)計(jì)、接口怎么定義、狀態(tài)怎么流轉(zhuǎn)才是核心難點(diǎn)。前端界面反而是在后端邏輯理清楚之后水到渠成的事情。所以如果你也在準(zhǔn)備做一個(gè)類似的系統(tǒng)我真心建議你先花三天時(shí)間把表結(jié)構(gòu)和接口設(shè)計(jì)文檔寫透再動(dòng)手寫代碼。你會(huì)發(fā)現(xiàn)后面的開(kāi)發(fā)速度快到超乎想象而且這種先設(shè)計(jì)再編碼的做事習(xí)慣到實(shí)際工作中比掌握某個(gè)具體框架值錢得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲AV麻豆Aⅴ无码电影一| 成人a v在线播放免费| 色老大| 91色s| 综合自拍| 91N综合网| 国产成人AV麻豆| 日本狂喷奶水在线播放212| 久久99手机免费视频| 亚洲欧美日韩精品久久久一区二区| 97视频www| 国产精品无码av嫩草| 天天日骚逼熟女| 亚洲熟女中文字幕在线| 亚洲天堂加勒比| 嗯嗯嗯不要不要免费视频| 精品国产丝袜一区二区三区乱码| 亚洲美女黄色| 欧亚乱色熟一区二区三四区| 1禁看欧美黄片免费看| 国产日韩美女小穴视频网站不卡| 亚洲综合99999| 簧片免费看视频| 亚洲在线网站| 欧美色999| 久久久久久九| 亚洲h片在线免费观看| 日韩精品人妻中文字幕不卡乱码| 丁香五月婷婷基地| 亚洲精品一二牛牛| 97色网| 青青草原伊人网| ...日韩成人一区二区三区字幕| 97超碰jingpin| 思思热久久成人| 国产精品精品系列在线观看| 欧美瑟综合| 啊啊啊不要嗯嗯在线观看| 怡红院视频在线| 成年女人黄网站| AV色天香在线| 2010男人的天堂| A V视频日本| 五月婷婷丁香六月丁香| 欧美偷拍| 国产剧情在线| chaopen97久久| 97天天搞在线| 色女99一级片在线观看| 熟女乱伦二区| 国产日韩在线播放| 韩日无码在线观看| 激情小说日韩无码| 日韩97P| 东京热综合久久一区二区| 青青草色插素人| 五月丁香婷婷啪啪| 国产成人在线观看综合| 婷婷情色综合网| 搡老女人老妇女老妇老熟女怎么读| 色噜噜狠狠色综无码久久合欧美| 亚洲人妻av| 国产精品成人无码av| 久久精品国产99精品亚洲蜜... | 亚洲精品无码成人久久久99| 3P乱轮视频| 日本孕妇一区二区视频操逼免费看| 肉丝中文无码高清| 日韩中文字幕精品一二三事国产精品| 国产精品久久| 日韩精品视频在线观看一卡二卡| 欧美大香蕉在线观看| 亚州色图欧美| 国产久久男人天堂| 东方亚洲在线操逼天堂| 高清无码91| 97色网| 欧美人妻一区| 人人操av| 中文字幕十五区| 色路综合| 日本国产高清色www视频在线| 六月丁香久久| 亚欧美天堂在线| 中文字幕 一区二区 亚洲无码| 国产二区三区粉嫩在线| 嗯嗯不要视频| 婷色五月天| 天天影视射综合网| 亚洲男人久久综合天堂| 色婷婷视频| 性爱动态120秒| 91美女中出| 18精品一区| 后入福利| 欧美性爱免费短视频| 伊人天天久久动态图| 亚洲国产成人精品久久久国产成人一区二区| 亚洲综合另类小说色区亚洲成av人片在www | 夫妻天天操岛国视频| 97在线免费观看| 日本操大逼| 97人人爱人人做人人乐| 神马九九九| 四虎午夜影院| 夜夜夜久久| 99国内熟女露脸视频| 后入式免费视频| 欧美婷婷| 蜜臀无码一区二区| 99在线免费公开视频| 麻豆天美久久91| 97操综合| 久99热| 老色鬼成人精品视频下载大在线观看| 乱伦av麻豆| 91亚洲黑人| 午夜欧美精品久久久| 粉嫩绯色AV一区二区在线| 天天舔九色婷婷| 男人的天堂日韩| 国产亚洲日韩欧| http://qxhbdz.com| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 免费人成?大片在线播放| 69精品人人人人| 欧美日韩插逼视频| 东京热熟女亚洲视频网站| www熟女乱伦com| 69AV女优男人的天堂| 一区二区高清视频| 91色黑人少妇| www.久久制服糖| 神马午夜久久久| 狠狠久久手机视频精品| 日本黄色裸日本黄色裸体| 在线播放成人高清免费视频| 中出789在线视频| 欧美黄色片在线播放| 亚洲视频小说| 日本久久久久久久久| 中文字幕丰满人妻日本| 丁香激情五月天| 91操熟女视频 | 静品嫩模一区二区| 亚洲日韩精品一区二区| 奸色色 男人天堂 天天射| 操国产高清| 日本丝袜美腿人妻九九| 亞洲久久直播| 欧美色图 色综合图| 黄色网址久久精品欧美喷水| 人妻丰满熟妇一区二区三| 91美女视频在线免费观看| 欧美十八禁在线看| 强奸乱伦AV网址| 欧美在线视频观看一二三四区高清| 久久无码电影| 激情小说亚洲| 天天干1区2区在线| 日韩在线AB| 丰满人妻一区二区三区性色| 久久久久九九九九九| www.色婷婷.com| 性夜影院爽黄A爽免费动漫| 蜜臀99999| 操逼视频免费日韩无码| 男啪女色黄无遮挡免费观看| 欧美韩国你懂得在线| 国产精品蜜乳AV| 高清无码人妻久久久一区二区三区aⅴ| 91N五十路| 日本中文字幕在线电影| 无码人妻精品一区二区中文| 国产精品成人午夜福利| 男人的天堂久久狠| 国产一区二区三区不卡手机在线| 探花在线免费观看视频国产一区| 超碰午夜| 亚洲另类久操网| 一区二区三区四区免费视频| 26UUU欧美日本| 国产91专区| 中文字幕少妇色| 人妻丰满熟妇一区二区三| 99re99在线视频| 日韩精品电影| 亚洲天堂第一页| 久久99热这里只频精品6学生| 亚洲天堂一区二区久久| 欧美色网| A级国产欧美激情在线| 精品久久97观看在线视频| 在线情色电影 91大 | 2019久久久久久久久福利| 美女网站91| 欧美极品色| 久久久网一区| 日韩精品人妻中文字幕久久久| 日韩一区二区精品视频| 激情五月综合网| 中国一区二区亚洲人妻| 亚洲第一免费视频| 69精品人人人人| 色y情视频免费看| 黄片www视频免费| 91色亚洲| 伊人久久AV诱惑悠悠| 性欧美| 国产精品久久久久久久久久二区三区| 天美一区在线| 茄子社区国产精品| 97国产精品在线观看| 日韩特一级久久| 91九色丰满高潮| 激情四射婷婷六月天| 久久综合久色欧美综合狠狠| 久久一本大香蕉 | 伊人久久综合影院精品久久久 | 91久久久久免| 久久99国产综合精品女同| 欧美日不卡| 久视频在线观看| 亚洲国产剧情少妇激情| 黄网站黄视频网站进入口| 白丝少妇一区二区| 五月婷婷青青草娱乐伊人| 视频二区熟女人妻| 欧美性爱一区二区三区| 日韩中文字幕宗合在线| 91熟女视频网| 99re9| 人妻一二三区| 强奸乱伦av电影| 操逼日韩无码 | 六月婷婷色综合| 国产少妇肉丝在线观看| 啊啊啊啊在线观看网址| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 婷婷精品视频| 97一区二区蜜臀| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 人人看人人插| 日本一久是| 无码精品啪啪啪一区二区三区三州| 亚洲天堂一二| 黄色AAAAAAAAAAA大片| 亚洲精品99| 中文字幕精品丝袜| 夜夜嗨一区| 极品销魂美女一区二区 | 久久久九九| 火箭成精品视频884必出精品| 98久久| 黄色高清无码无码破解免费暗网| 久久秀这里有精品| 日本三级精品| 人人操人人操人妻人| 亚洲?V高清一区二区三区尤物| 日韩免费在线视频观看| 无码人妻一区二区一牛影视| 久久久涩| 女同性恋久久| 内射中国少妇高清视频免费视频 | 成人性爱全视频观看| 欧美日日夜夜| 嗯嗯不要视频| 国产麻豆一级精品视频| 欧美日韩国产人人| 久久精品久久久久久久久| 99re久久| 亚州色图片在线色| 天天躁日日躁AAAAXXXX国产| 亚州操操穴网| 84YTCOM性无码| 免费一级毛片在线视频观看| 日韩精品大香蕉伊人在线| 日韩15p| a网站免费观看| 懂色av中文字幕一区二区三区天美| 久久久久九九九| 丁香五月婷婷基地| 伊人午夜福利视频| 日本视频一区二区三区| 女人的天堂大香蕉网| 日本欧美m v精品网站加| 国产区日韩区在线观看| 亚洲综合色男人网| 美女91| 色色热| 在线视频资源| 国产精品色| 亚洲图片视频小说| 欧美黄片视频在线观看免费 | 成人精品一区二区91毛片不卡| 日韩国产欧美伦理在线| 欧美72网页| 高潮内射在线| 欧州91高潮| 亚洲综合色男人网| 亚洲在线网站| 亚洲熟久久| 精品人妻av在线播放| 少妇第一页| 日韩无码黄色片| 91老熟女91老女人| 丁香五月激情综合国产| 人妻第一页| 韩日精品四区| A级片日韩欧美国产欧美视频精选观看 | 丁香五月天久久精品视频一区二区三区| 中文字幕蜜乳av| 一区黄二区黄| 香伊人在线| 色综合20p| 强奸乱伦资源| 91熟女在线| 骚乳在线| 超碰成人国产| 欧美福利视频啊啊啊啊| 香蕉免费一区二区三区不读| 性爱乱伦一区| 91n欧美| 色诱中文字幕| 午夜欧美女人操逼| 丰满人妻一区二区三区蜜桃视频| 绑缚麻绳人妻寝取完整版| 97精品熟女少妇一区 | 婷婷丁香六月| 岛国1区2区3区在线观看| 亚洲国产青青| 亚洲日韩肥臀视频在线观看| 男人天堂黄片| 秋霞怕怕片| 99爱爱| 夜夜操二区| 欧亚成人| 玖玖爱在线视频免费观看| 九九九草| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 久久久成人国产精品无码| 99av| 99re6国产精品99re| 婷婷亚洲综合| 岛国色情视频在线观看| 天天色图| 深喉吞精| 密臀成人视频久久久| 日韩乱码Av| 一区二区 电影 亚洲| 亚洲国产成人精品无码专区| 国产精品 视频| 操淫穴亚洲五月丁香 | 丰满人妻一区二区三区免费| 欧美97se| 久久久九九| 97超碰天天爱天天爱| 精品超碰国产| 日韩一级片在线看| 人人操人人操人人操人人操人人操人人人11.CM | 99国产精品| 亚州精品人妻一二三区| 欧美乱色| 精品成人无码| 九九九久千久久激情蜜桃在线看 | 蜜臀久久99'精品久久久| 国产精品久久久久绯色| 热久久这里只有精品| 少妇3P性爱自拍| 操逼A∨| 欧美人妻熟女在线| 中文熟女五十乱码在线| 亚州日韩97| www.99热在线只有精品| 97se综合网| 国产精品青青草| 丁香五月av| 婷婷色导航| 每日更新AV| 久久婷婷综合国际产色怕| 大黄片做爱的大的| 在线国产福利网址导航| 18禁美女裸体无遮挡啪啪| a片在线播放| www.99色| 可以在线观看的黄色网址| 亚洲精品一区二区精华| 久久国产熟女影院| 亚一综合久久久久久久久久| 黄片com.| 色综合色欲色综合色综合色综合| 日本123区操B视频| 可以免费观看的av| 中文字幕老熟妇黄色视频| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 久久一二三四五六七八九区区区 | 99操| 日本一区二区三区精品| 330Dv国产女人终合视频极品人与兽| 久久久草成人网站久久久草成人久久久草久久久 | 狠狠操天天干| 日韩精品人妻系列无码天堂| 老女人91| 97超碰欧美| 操逼视频国产无套| 极品尤物自安慰| 色婷婷五月综合激情中文字幕| 立川理惠加勒比无码| 一本道综合色图| 97亚洲一区| 加勒比海人人操超碰在线| 亚州色图欧美色图| 9999久久久| 中文字幕精品一区二| 日本一区二区做爱的视频| 午夜男人一级A片7777| 91 亚洲 欧洲| 国产天美传媒精品| 人妻熟女一区二区在线视频| 一级婬片120分钟试看| 亚洲精美粉嫩嫩泬在线观看| 啊啊啊好爽快点啊啊啊嗯嗯| #NAME?| 激情综合 婷婷五月 红杏| www久久国产精品| 国产成人无码高清| 物尤视频一区二区| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 狠狠爱夜夜| 夜夜操美女| 丁香婷婷久久| 日日噜噜夜夜久久亚洲一区二区| 天天综合-91入口| 丝袜熟女一区二区三区| 亚洲欧美九九九| 99视频自拍区| 欧美激情性爱视频网站| 亚州色站 日韩电影| 综合亚洲网| AV污污污污| 久久伊人在线五区| 干B网| 久久久精品视频免费观看| 国产精品九9| 97色欧洲| 国产亚州高清国产拍精| 好屌色综合| 97亚洲综合影院| 高清在线偷拍自拍视频| 欧美玖玖爱免费玖玖| 天天夜躁日日躁狠狠2002| 五月天色综合| 蜜臀久久99精品久久久久久成人小说 | 国外91| 思思视频免费看网站| 丁香激情五月天| 十八禁电影伊人网| 国产尤物AV尤物在线观看不卡| 亚洲日本男人天堂网| 日比av无码| 国产伦乱91| 久久亚洲色图中文字幕| AAAAAAAAA黄片| 亚洲网污污污污| 1人人看人人摸人人操| 成人无码专区精品视频| 久久精品一区二区一8| 久久久久久人妻| 91 综合网| 日本综合色图| 亚洲色图欧美| 97爱爱爱综合| 日韩一区二区精彩视频| 久久一二三四不卡 | 天堂av2019| 97国产精品视频| 成人在线视频二区| 天天看天天日天天操| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 九一国产精品| 在线v中文字幕一区二区三区| 欧美综合网1| 亚乱色| 久久精品国产97欧美精品亚洲| 中文字幕免费看大片| 一本一道久久综合久久| 95人妻爽爽人人做人人澡 | 强奸乱亚洲| 超碰人妻97| 天天干一区二区| 中国AV美女| 欧美熟女丝袜| 婷婷大香蕉| 曰韩中文人妻视频| 久久久中文版| 久久婷色| 明星性猛交ⅹxxx乱大交| 99久久综合| 欧美人妻精品一区二区| 久久这里只| 久久偷拍人| www.色婷婷色综合| 乱伦日本中文自拍| 自拍啪啪视频| 久久久久ab| 色五月丁香五月| 超碰在线欧美性爱激情| 亚洲AV永久无码精品成人调教| 大香蕉97久久| 亚洲日韩美国人妻| 超碰在线人人射| 国产精品不卡一区二区电影| 久久↗↗| 五月天久久婷婷亚洲| 欧美亚洲日本视频久久久| 啊啊啊啊啊啊啊啊在线观看| 麻豆精品天美| 夜夜爽33333| 色情乱伦AV| 亚州熟女乱伦| 天天综合色图| 人妻喷水| 国产免费一区| 亚洲五区熟女| 97色五月天完| 丁香五月色情| 日本国产欧美高清在线| 青娱乐老司机视频| 97天天综合| 老司机福利社视频在线观看| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 久久日本熟女精品一区| 116美女午夜| 日本99视频| 中文字幕亚洲永久精品| 人人摸.人人色| 精品综合久久久久久五月天| 黄色工厂这里只有精品| 91精品久久久久久| 日本高清一本二本免费不卡| 亚州色图欧美| 歐美性天天| 中文有码第五页| 亚洲 欧美 中文 日韩超碰| 无套内射性感少妇视频| 操屄不卡视频| 欧美久久伊人| 播播亚洲小说亚洲| A 在线网址| 91在线视频国产网站| 一二三区精品视频| 校园春色美腿丝袜| 国产熟女少妇一区| 久久人妻办公室视频| 激情黄色片在线观看| 97欧美精品| 色路综合| 国产精品96| 99色热| 丰满欧美放荡少妇在线| 久伊人网78| 日韩av情韩国爱禁区av一区二区| 99热大香蕉伊在线| 天天拍天| 久久精品99久久久久久| 97视频在线观看网站| 午夜后入| 超碰在线1234区| 中文字幕AV片| 极品色电影院| 欧美激情 亚洲色图| 欧美综合色| 亚洲第一视频 欧美风情 日韩| 992大香蕉| 色妇综合网| 欧美日韩大香蕉| 超碰色老头| 天美91| 亚洲欧美另类激情小说| 91被操| 天天操夜夜操狠很操| 国产一区二区三区视频在线看| 成人性爱AV在线免费观看| 人人操人人舒服| α√在线| 色婷婷电影网| 97 国产一区| 超碰97在线中文| 亚洲性综合11| 久久伊人最新网址视频| 伊人久久综合精品欧美| 精品色色| 97爱爱影院| 九九九九九九成人| 99热线麻豆| 久久久久久九九九| 国内亚洲精彩视频在线| 不卡免费av在线播放| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 午夜高清成人在线视频| 国产 日韩 欧美 人妻 熟女 中文 69人妻精品一区二区绯色 | 亚洲一区二区三区久久 亚洲一区二区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 黄片在线免费在线观看| 殴美牲| 黄色不卡视频| 九一性生活免费视频| 香蕉视频欧美一卡二卡| 免费一级黄色录像影片| 青青欧美在线| www.acm成人黄色毛片| 青春草莓视频在线观看网址| 国产乱人伦AVA麻豆软件.| 色九月婷婷| 热热热热日日漂亮永久永久国产日| 亚洲色性| 免费作爱一级视频| 精品久久99| 亚洲精品久久一区二区三区蜜桃臀| 日韩肏逼视频| 中文字幕一区日韩精| 干B| 蜜桃久久一区二区| 婷婷啪啪| 欧美日韩97在线| 久久久新亚洲AV| 五月天社区| 秋霞鲁丝午夜无码一区二区三| 东北毛片| 99这里有精品视频| 女一区二区| 欧美综合在线第一页| 91人妻人人澡人人爽人人精品| 五月丁香啪啪啪| 热热色色综合| 久久久久久国产手机AV| 丝袜综合| 91操操操操| 亚洲黑丝在线| 十八禁黄色| 涩五月婷婷| 熟妇高潮二区三区| 欧亚免费视频| 91国产丝袜美女| 日日操免费视频| 日han少妇无码| 国产精品白领在线观看| 一二三啪啪专区| 欧美高清第一页| 男女打扑克高清网站| 91狠狠综合久久| 亚洲阿v天堂无码z2018| 一二三四视频在线社区中文字幕| 内射老妇BBWX0C0CK| 中文久久一区| 一个人免费视频观看在线WWW| 在线综合 亚洲 欧美中文字幕 | 国产精品一区av在线| 北条麻妃99精品青青久久| 日本操逼视频免费| 天天色悠悠激情| 成年人网站在线免费观看| 夜夜操夜夜爽夜夜高潮| 久久首页| 东京热99999| 日韩,欧美,中文在线| av网页一区二区三区| 蜜臀AV成人精品蜜臀| 岛国AB视频| 大香蕉伊然在亚洲91| 91粉嫩萝控精品福利网站_精品影音先锋国| 亚洲熟妇综合久久久久久| 色色色五月婷婷| 97亚洲中文| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 精品国产www久久| 色狠狠一区二区三区香蕉| 色色色热| 澳门黄片一香蕉视频| 欲香欲色天天天综合和网| 岛国在线一区二区三区| 91痴汉| 综合五月天| 99视频这有这里有精品| 亚洲熟妇综合久久久久久| 日本免费中文一区二区三区四区| 天天cao在线| 国产精品视频播放| 久久精品亚洲成a人天堂| 野狼福利社区| 妇人噜噜| 国产精品 久久久精品一牛| 91天堂丝袜美腿| 老鸭窝亚洲毛片| 欧美性爱三区二区| 亚洲色阁| 黄站在线免费观看| 亚洲有码 欧美精品| 久思思热视频在线观看| 中文字幕1区2区| 99国产精品免费| 日韩成人电影AV| 国产女同在线观看视频| 亚洲 欧美 日本 国内 首页| 欧洲免费一区二| 色五月婷婷久久| 亚洲国产成人精品999| 日韩欧视频| 久婷婷一区| 一色网男人的天堂| 1769精品一区二区三区| 日韩性爱人人爱人人操| 肥佬影院91| 91挑色欧美| 九九九九88| 免费综合亚洲中文| 亚洲第2页| 操逼网站网站| 97精| 蜜臀久久99精品久久久久电影| 国产乱人妻精品入口| 91色综| 五月天激情婷婷| 可以在线观看的黄色网址| 97超碰超碰| 欧美精品系列| 天天看高清麻豆| 18岁禁 茉莉成人久久| 婷婷中文字幕| 久久ww| 日韩av不卡在线观看| 嗯啊抽插大香蕉网页| 久久在线观看免费视频 | 亚洲天堂男人在线| 3P乱轮视频| 囯戸精品高潮呻吟旡码| 九九无码| 亚洲天堂精品日韩电影| 78精品在线| 久久久久女教师免费一区| 久久久免费懂色| 美女网站黄页| 97一区二区三区视频| 97超碰免费人人性爱| 激情露脸爱| 91麻豆天美国产| 亚洲91亚洲| 蜜桃精品一区二区三区ww| 亚洲天堂区| 久久精品欧美一区蜜桃| 天美国产三级传媒| 2017亚洲天堂| 天天影视之亚洲综合网| 日本高清视频在线观看黄已三辽| 久久久久久少妇| 亚洲图片 91| 超碰 另类 欧美| www.99热在线只有精品| 国内97干免费看| 亚洲综合骚逼| 99re28在线观看| 日日摸日日碰夜夜爽视频| 另类天堂| 午夜福利一区二区影院| 日韩精品免费高清视频在线| 欧美成人AⅤ大片在线观看| 美女被艹尤物视频| 99爱在线视频| 国产精品久久久777| 精品999日本| 亚洲成人AB| 色噜噜狠狠色综无码久久合欧美| 操屄日韩| 午夜120视频在线观看| 久久婷婷伊人| 蜜桃精品一区二区三区ww| 日韩精品电影| av天堂加勒比| 八戒午夜福利理论片| 欧美性爱中文字幕无线码| 99久久婷婷国产综合| 日韩av女优在线免费一区| 亚av顶级裸体一区二区三区四区五区| 久操视频免费观看| 经典丝袜一区| 国产一级内射高清视频| 天天干人人看综合| 久久久国产成人一区二区三区在线| 中文字幕日韩人妻视频一区二区三区| 五月丁香色婷婷| 久久超碰亚洲人| 天天综合91入口| 色欲天天综合久久久无码网中文| 国产91乱伦| 婷婷五月天影院| 日日日日做夜夜夜夜做无码97| 黑人在线91| 亚洲天堂7777| 91原创在线观看| 欧美日韩小说| a片偷拍视频| www.91色综合| 91欧美丨精品丨入口| 翔田千里AV无码秘 三区| 色婷婷视频| 激情图片亚洲色图| 综合网亚洲在线| 国产高清MV操逼视频| 殴美性色a级欧美| 无码二级三级| 欧美一级久久久久久久大片动画| 99热超碰| 欧美色吧综合| 日本熟妇人妻中出视频| 操九九九九九九| 婷婷人妻激情| 柠檬AV导航| 久久蜜色情在线视频xxx免费观看| 女生久久网| 亚欧成人中文字幕一区| 欧美影音在线| 精品无码一区二区三区| 暖暖精品二区三区观看| 中文三一区| wwwss在线观看| 国产精品视频播放| 欧美日韩狠狠爱| 欧美性爱视频免费一区一A| 青青操少妇| 亚洲天天天| 人妻人人做人人澡人人爽欧美一区| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 97碰碰日本乱偷人妻中文的| 狠狠久久手机视频精品| 日韩天美| 91免费看一区二区三区| 久久久久久久一级黄色打同平台| 亚洲 欧美 日本 国内 首页| 欧美性天天影视| 噜噜噜噜久久久精品免费| 多乙久久久久久| 久久久久人| 国产AV毛片| 欧美黑人91| 国产精品成人无码av无码免费| 亚洲人人夜夜澡人人爽| 国产精品一级毛片不卡视| 久久人妻一区二区三区高清 | 国产成人精品午夜福利| 欧美aaaaaaa| 熟女高潮精品一区二区| 嫩草影院性色| 国产免费小视频| 色呦呦、国产精品| JIZZJIZZ亚洲女人被躁| 密臀AV在线| 国产野战露脸在线播放| 色偷偷综合91久久噜噜| 欧美中出1| 亚洲欧美人妻| av在线人气| 美女午夜福利免费视频| 久久久久久裸体| 日韩欧美视频青青| 亚洲欧美色图| 伦理日韩国产久久| 大香蕉宗合网在线| 天天干天天操天天操夜夜操天天操 | 亚洲日韩青青草色月| 伊人专区一区二区三区| 亚洲图片婷婷五月天| 强奸乱伦日韩AV| 色色五月婷婷| 偷拍亚洲高清图片| 中文字幕第95页| 超碰97人妻在线| 久久婷婷视频| 91AV天堂| 欧美成人免费在线观看| 国产精品久久久久久片| 午夜天堂精品久久久久91| 骚女高跟AV在线| 91视频综合网| 在线性黄高清免费视频| 综合网~91综合网| 99精品伊人| 欧美A片中文字幕| 亚洲图片 91| 另类欧美| 黄色一区二区秘书性感| 天天弄欧美| 午夜啪| 人人色人人操在线| 玖玖爱伊人玖玖爱| 人妻丝袜一区二区三区在线| www久久久| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 欧美.亚洲.另类.丝袜.制服.诱惑| 亚洲自拍欧美国产首页网曝 | 亚洲欧美国产日本一区二区三区| 中文字幕88av在线| 亚欧高清| 国产精品 午夜福利| 成熟熟女国产精品一区二区| 激情五月天插| 97网址97| 乱伦av麻豆| 播播亚洲小说亚洲| 天天干夜夜鈤| 九九免费影片| 91精品久久久久久77777| 91美乳| 亚洲综合校园春色| 久久超碰大香蕉| 国产农村妇女精品1区二区| 天天插夜夜爽| 97一本大道亚洲一区| 噜噜噜无码AV一级一级久久影院| 欧美日韩欧美| 另类av综合久久| 国产女人与拘做受视频免费| 欧美人妖内射| 免费视频在线观看啊啊啊啊啊| 八戒午夜福利理论片| 熟女久久| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 狠狠色五月亚洲91| 99热这里只有精| 黄色一区三区| 日韩精品-原创伙伴| 欧美激情另类一区二区| 97超碰公开| 歐美一級亂黃99在綫精品| 黄色电影观看久久9| 91成人无码| 好爽要喷了| 嗯嗯啊啊用力视频免费| ?亚洲伊人伊成久久人综合网| 亚洲图片欧美| 午夜经典| 高清孕妇孕交 交孕妇| 中文字幕视频2区| 国产超碰在线| 日韩av在线播放不卡| 在线观看色视频| 97超级久久强资源| 91粉芽高清在线一区二区| av强奸乱轮| 在线观看无码三级少妇| 肏逼视频日本| 亚洲男人天堂AV| 日本韩高清无砖码22o| 青青草原av| 大逼色网站| 九九热只有精品| 人妻丝袜美腿中文字幕| 国产农村妇女精品| 84YTCOM性无码| 国产乱码久久久| 欧美96精品在线| 欧美999| 69XX一中文字幕人妻91| 国产成人一级av88| 亚洲一本色道中文无码aV天美| AAAAAAAAA黄片| 伊人女女资源在线观看| 日本 成 人 小说 电影 一区二区| 99碰碰| 九九视品黄色| 欧美中文字幕一区 | 亚州精人品大香蕉| 亚洲欧洲无码97久久精品| 好屌色综合| 中文字幕二区| 天堂v无码免费视频| 欧美大香蕉久| 久久久久国产精品喷潮免费观看臀 | 大香蕉久| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 国产精品麻豆视频网站| 国语国产操逼伊人AV网| 成人午夜视频免费播放| 91精品人妻一区二区三区蜜桃臀| 国产欧美黑人丰满在线| 久久免费少妇| 欧洲一级性爱视频在线观看| 91九色精品熟女内射| 九草在线大香蕉| 欧美丝袜91| 亚洲中文国际强奸字幕| 2025亚洲男人天堂| 91操熟女视频| japan日本高清乱xxxx| 美欧老女人97| 男人的天堂2019| 色麻豆AV| 男人精品天堂一区| 美女黄色一级A视频| AV乱伦专区| 亚洲精品91| 75大香蕉| 色五月婷婷网| 国产无套粉嫩白浆在| 亚洲天堂2020| 国产免费一区| 青青草五月天| 东京热视频网| Av色五月| 乱伦图一区| 久久亚洲人妻| 欧美伊人久久综合网| 动漫片子网站3黄| 高清无码一区二区三区| 自拍二页| 亚洲经典啪啪| 1769一区| 欧美激情色婷婷花野真衣一区二区| 国内毛片欧美香蕉精品| 国产亚洲禁久一区二区| 爱爱久久| 五月丁香激情综合网| 欧美18 在线观看| 青青伊人加勒比海| 日本精品一区二区不卡| 国产成人久久久精品免费AV| 欧美美女视频| 啊啊好多水| gogogo免费高清看中国国语| 粉嫩国产精品久久粉嫩| 人乳av| 99亚洲精品| 91欧美巨乳| 激情综合婷婷| 日1区2区3区2020| 男人的天堂2018东京热啪啪啪| 肉丝中文无码高清| 日本一区二区亚洲综合| 日韩欧美丝袜诱惑| 97日韩欧美| 成人精品视频一区二区| 久久九九视频九九视频| 精品久久久久久久久久久久| 成人性爱av.com| 97超碰欧美精品| 夜草欧美| 先锋色眉乱伦资源| 草草草视频在线免费看| 九九人妻| 天天插夜夜爽| 亚洲情色在线| 国产九九久久久精品| 丁香六月啪啪| 狠狠干综合| 国产成人+综合亚洲+天堂| 人人操人人大香蕉| 中文字幕亚洲热播人妻| 被男人添B超爽视频| 中文字幕一区二区日韩网| 秋霞午夜成人福利片片| 中文字幕欧美丝袜07资源| 中文字幕欧美日韩三级| av三级电影在线播放| 高清视频一区| 少妇天堂| 97超碰色色| 在线观看亚洲成人精品| 人妻啪| 亚洲av影院在线观看| 亚洲精品日日夜夜52| 99成人| 色哟哟1区2区| 久久成人精品| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 色汉综合| 熟女被操视频网址| 国产精品一二三区福利| 啊啊啊好爽快点啊啊啊嗯嗯| 嗯嗯啊啊操死我| 日韩电影天堂视频二区三区| 黄久在线| 国产美女自拍AV| 日韩国产成人自拍视频| 亚洲情色1区| 亚洲国内精品成人不卡| 蜜汁欧美| 亚洲精品影视老司机| 91久久久久免| 青青草在线视频美女| 人人模人人看| 人成午夜免费大片| 中文字幕文字幕无码一区二区三区电影99| 青青草无码视频| 91av一区二区在线观看| 99性爱| 九九热精彩视频| 欧美Aⅴ| 亚洲午夜免费狠狠干| 综合欧美色图| 爱我干综合| 日韩精品人妻中文字幕久久久| 亚洲欧美清纯| 国产精品熟女丝袜一区二区| 人妻少妇精品久久久| 成人一二| 一区二区三区蜜桃成人撸久久东京热| 男人的天堂日韩| 国产精品一区二区a| 亚洲欧美精品一区天堂久久 | 欧美性暴力猛交| 视频一区二区三区精品| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 日韩无码a片| 伊人九九九| 亚洲欧洲色情高清| 岛国片在线观看视频亚洲| 亚洲天天更新| 学生妹天天看| 青娱乐蜜桃臀AV色婷| 国产粉嫩出水在线播放| 综合另类| 日本黄色天堂| 六月婷婷综合| 大色综合| 神马久久久久久久久久| 亚洲一区二区三区中文字幕| 97爱b| 欧美亚洲日本视频久久久| silk lablo在线观看一区二区| 噜噜噜狠狠色综合| 好属操| 国产精品久久久久av| 美女网站91| 97干色天堂| 亚洲精品aa久久伊人 | 狠狠综合| 在线岛国新天堂8| 日韩精品第3页| 国产原创自拍| 欧美性生活男人的天堂| 黑人精品久久97| 亚洲综合中文字幕有码| 国产对白刺激视频| 久久精品国产亚洲av水密被窝| 五月婷婷丁香| 亚洲熟妇A V黑人| 天天干一干| 欧美人黑A片无码免视费| 宅男91视频在线播放| 九九伊人网| 亚洲成人一区二区精品| 亚洲中文字幕熟女| 欧美人妖内射| 欧美日韩人妻精品一区二区三区| 精品久久久九九九孕妇| 国产超碰在线| 99自拍视频| 亚洲激情综合| 亚洲色诱惑| 婷婷亚洲天堂|