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

ARTICLE DETAIL

資訊詳情

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

前后端分離的智能面試刷題系統(tǒng):從Spring Boot到Vue 3的完整實(shí)踐

前后端分離的智能面試刷題系統(tǒng):從Spring Boot到Vue 3的完整實(shí)踐 這個(gè)項(xiàng)目嚴(yán)格來說是去年秋招間隙做出來的起因特別簡(jiǎn)單用常見的刷題產(chǎn)品總覺得不順手錯(cuò)題本太散、沒有知識(shí)點(diǎn)維度的統(tǒng)計(jì)、還總被推薦一些早就掌握的題。于是我就想著干脆自己造一個(gè)智能面試刷題系統(tǒng)既能滿足日常刷題需求又順便把前后端分離的架構(gòu)完整走一遍。整個(gè)項(xiàng)目從設(shè)計(jì)到第一版上線大概用了三周技術(shù)棧選的是 Spring Boot Vue 3前端走 RESTful API 跟后端通信核心特色是答題記錄驅(qū)動(dòng)的一套推薦邏輯和可視化統(tǒng)計(jì)。這篇文章把我當(dāng)時(shí)的決策過程、數(shù)據(jù)庫(kù)設(shè)計(jì)、實(shí)現(xiàn)細(xì)節(jié)、以及上線后踩過的坑都整理出來理論和代碼都有對(duì)正在做畢設(shè)或想加深架構(gòu)理解的開發(fā)者會(huì)比較有參考價(jià)值。1. 項(xiàng)目的真實(shí)起點(diǎn)一個(gè)刷題工具的需求演進(jìn)1.1 痛點(diǎn)分析為什么需要專門做一套刷題系統(tǒng)刷題這件事看起來極其簡(jiǎn)單注冊(cè)一個(gè)賬號(hào)然后對(duì)著題庫(kù)一題一題點(diǎn)就是了。但真正堅(jiān)持用一個(gè)月以后會(huì)發(fā)現(xiàn)盲目刷題有一個(gè)非常致命的問題你根本不知道自己哪里薄弱只會(huì)被動(dòng)地按照題目順序一路點(diǎn)下去今天錯(cuò)的知識(shí)點(diǎn)明天就忘下周又錯(cuò)一遍。我在做這個(gè)項(xiàng)目之前專門觀察了自己和身邊幾個(gè)準(zhǔn)備面試的同學(xué)的使用習(xí)慣。大家刷題時(shí)最有價(jià)值的動(dòng)作其實(shí)是提交答案那一刻的判斷過程和看解析后的復(fù)盤過程。但市面上通用產(chǎn)品大多只把判斷對(duì)錯(cuò)這一步留給了你錯(cuò)題回收、知識(shí)點(diǎn)統(tǒng)計(jì)、復(fù)習(xí)提醒這些環(huán)節(jié)要么很弱要么藏得很深。所以我自己做的第一版需求就非常明確要有一條完整的刷題—記錄—分析—推薦—再刷題閉環(huán)而不是一個(gè)單純堆砌題目的文檔系統(tǒng)。這個(gè)系統(tǒng)的用戶其實(shí)只有兩類一類是求職者需要在短期內(nèi)快速補(bǔ)足薄弱知識(shí)點(diǎn)另一類是運(yùn)營(yíng)題庫(kù)的人需要一個(gè)趁手的工具把題目和知識(shí)點(diǎn)維護(hù)好。畢設(shè)或者個(gè)人項(xiàng)目最怕的就是功能無限膨脹所以我在立項(xiàng)時(shí)就把邊界卡得很死不做社區(qū)、不做社交、不做課程售賣只做跟有效刷題強(qiáng)相關(guān)的功能。1.2 功能邊界劃定與角色設(shè)計(jì)第一版的功能清單是這樣定的。用戶端只有五個(gè)核心模塊注冊(cè)登錄、刷題練習(xí)、模擬面試、錯(cuò)題本、學(xué)習(xí)統(tǒng)計(jì)。管理端是三個(gè)題庫(kù)管理、知識(shí)點(diǎn)管理、用戶數(shù)據(jù)概覽。登錄注冊(cè)這個(gè)模塊沒什么好說的唯一要注意的是密碼不能明文存我用的是標(biāo)準(zhǔn)加鹽哈希。刷題練習(xí)是主入口用戶可以選擇按順序刷、按知識(shí)點(diǎn)刷、或者直接進(jìn)入智能推薦模式。模擬面試是一個(gè)獨(dú)立的會(huì)話式場(chǎng)景按照崗位方向和難度生成一套題答題過程中有倒計(jì)時(shí)結(jié)束后給出得分和解析。錯(cuò)題本不是簡(jiǎn)單收藏夾它要記錄每個(gè)錯(cuò)題的錯(cuò)誤次數(shù)、最近錯(cuò)誤時(shí)間并且可以一鍵把錯(cuò)題重新變成一套練習(xí)卷。學(xué)習(xí)統(tǒng)計(jì)則把答題記錄聚合起來按天輸出刷題熱力圖按知識(shí)點(diǎn)輸出正確率和掌握度雷達(dá)圖。管理端的題庫(kù)管理要覆蓋題目新增、編輯、上下架、批量導(dǎo)入。知識(shí)點(diǎn)管理維護(hù)一棵知識(shí)點(diǎn)樹每個(gè)題目可以掛到一個(gè)葉子節(jié)點(diǎn)上。用戶數(shù)據(jù)概覽我做得比較克制只展示注冊(cè)用戶數(shù)、刷題總量、平均正確率這些基礎(chǔ)指標(biāo)。管理端和用戶端共用同一套后端接口權(quán)限靠 JWT 里的 role 字段區(qū)分后端在最外層攔截器里做角色校驗(yàn)這樣兩個(gè)前端應(yīng)用都能保持比較薄的邏輯。1.3 為什么堅(jiān)持前后端分離很多在校同學(xué)做系統(tǒng)時(shí)習(xí)慣把頁(yè)面模板和后端渲染混在一起理由是這樣簡(jiǎn)單減少跨域問題。但我個(gè)人強(qiáng)烈建議這類偏業(yè)務(wù)型的項(xiàng)目一開始就走前后端分離原因有三個(gè)。第一前端交互復(fù)雜度決定了它不適合服務(wù)端渲染。刷題頁(yè)面有倒計(jì)時(shí)、選項(xiàng)狀態(tài)、實(shí)時(shí)統(tǒng)計(jì)圖表、答題記錄更新這些都是典型的 SPA 場(chǎng)景用傳統(tǒng)模板一個(gè)個(gè)同步渲染會(huì)非常痛苦。第二一個(gè)后端 API 能同時(shí)喂給用戶端、管理端甚至以后接一個(gè)小程序代碼不需要重寫。第三前后端分離以后接口邊界變得清晰我可以先把接口文檔定好再讓兩個(gè)部分并行推進(jìn)整個(gè)開發(fā)節(jié)奏會(huì)快很多。當(dāng)然也要清醒認(rèn)識(shí)到分離的代價(jià)跨域配置、登錄態(tài)管理、接口聯(lián)調(diào)都是以前不需要操心的東西。這些問題在后面的各部分里都有對(duì)應(yīng)解法不存在無解的情況只是需要多學(xué)幾種新技能而已。2. 技術(shù)選型與架構(gòu)設(shè)計(jì)前后端分離的骨架搭建2.1 后端用什么、為什么不后悔后端技術(shù)棧是 Spring Boot 3.x Java 17 MyBatis-Plus MySQL 8 Redis。為什么這么選其實(shí)是在學(xué)習(xí)價(jià)值和落地速度之間做平衡。如果只是想跑通一個(gè)項(xiàng)目用 Node.js 寫接口可能更快但考慮到系統(tǒng)涉及復(fù)雜的數(shù)據(jù)統(tǒng)計(jì)、事務(wù)處理和權(quán)限模型Java 生態(tài)的穩(wěn)定性是實(shí)打?qū)嵉膬?yōu)勢(shì)。Spring Boot 幫我把絕大多數(shù)配置自動(dòng)化了我只需要關(guān)注 Controller、Service、Mapper 這一層業(yè)務(wù)代碼。MyBatis-Plus 的單表 CRUD 和分頁(yè)插件非常好用條件構(gòu)造器寫動(dòng)態(tài)查詢也很順手復(fù)雜統(tǒng)計(jì)我用自定義 XML 寫 SQL兩邊互不干擾。Redis 我用在兩個(gè)地方。第一是緩存知識(shí)點(diǎn)統(tǒng)計(jì)結(jié)果統(tǒng)計(jì)接口如果每次都去 MySQL 聚合全表數(shù)據(jù)量大了以后響應(yīng)會(huì)明顯變慢所以我在寫入 answer_record 時(shí)會(huì)同步把對(duì)應(yīng)知識(shí)點(diǎn)的統(tǒng)計(jì)緩存刪除下次讀取時(shí)再重新計(jì)算。第二是存放模擬面試的上下文一場(chǎng)面試過程中的進(jìn)度、剩余時(shí)間、題目列表都存在 Redis 里過期時(shí)間設(shè)成兩小時(shí)既能防止接口頻繁命中數(shù)據(jù)庫(kù)也能自然清理掉不活躍的會(huì)話。2.2 前端選型與工程化配置前端用了 Vue 3 Vite Pinia Vue Router Element Plus這套組合現(xiàn)在基本是中小型管理系統(tǒng)的默認(rèn)選項(xiàng)但選它不純粹是因?yàn)榱餍?。Vue 3 的組合式 API 對(duì)答題頁(yè)這種邏輯密集的頁(yè)面特別友好。選項(xiàng)式 API 寫小頁(yè)面沒問題一旦頁(yè)面里有倒計(jì)時(shí)、答題狀態(tài)、抽題邏輯、提交反饋邏輯就會(huì)散落在各個(gè)生命周期鉤子里用 setup 語法可以把同一塊業(yè)務(wù)的 ref、computed、watch 聚在一起維護(hù)成本低一個(gè)量級(jí)。Pinia 比 Vuex 輕省掉 mutation 這層概念在個(gè)人項(xiàng)目里少寫不少樣板代碼。Element Plus 我只按需引入不整包加載避免首屏?xí)r間被組件庫(kù)拖垮。Vite 帶來的體驗(yàn)提升是感知最強(qiáng)的。以前用 Webpack 啟動(dòng)一套前后端分離項(xiàng)目冷啟動(dòng)十幾秒都是常態(tài)改一行代碼還要等編譯。Vite 基于原生 ESM 實(shí)現(xiàn)按需編譯項(xiàng)目不管多大首啟基本都是秒級(jí)熱更新也是毫秒級(jí)反饋。開發(fā)刷題系統(tǒng)要反復(fù)在兩個(gè)頁(yè)面之間跳轉(zhuǎn)調(diào)整樣式這個(gè)體驗(yàn)優(yōu)勢(shì)能省下大量時(shí)間。2.3 接口規(guī)范、權(quán)限模型與跨域處理前后端分離項(xiàng)目能不能順利聯(lián)調(diào)接口規(guī)范起決定性作用。我定義了一個(gè)很簡(jiǎn)單的統(tǒng)一返回包裝類后端所有接口出參都是 { code, message, data }業(yè)務(wù)異常通過全局異常處理器轉(zhuǎn)成對(duì)應(yīng)的 code前端只需要在響應(yīng)攔截器里統(tǒng)一判斷 code。分頁(yè)接口統(tǒng)一接受 page 和 size返回 PageResult里面包含 total、records 兩個(gè)字段避免每個(gè)接口各搞一套返回結(jié)構(gòu)。資源命名走 RESTful 風(fēng)格/api/questions、/api/answer-records、/api/exam-sessions。這類系統(tǒng)里面試題目和答題記錄都是完整資源用 RESTful 的方式描述非常自然。前端請(qǐng)求路徑不再出現(xiàn)動(dòng)詞接口語義也更清晰。權(quán)限模型沒有上 Spring Security而是用 JWT 加攔截器的輕量方案。登錄成功后后端返回一個(gè)包含 userId 和 role 的 JWT前端放在 localStorage 里每次請(qǐng)求通過 axios 攔截器加在 Authorization 頭。后端攔截器對(duì)所有 /api/** 請(qǐng)求做 token 校驗(yàn)管理端接口額外檢查 role 是否為管理員解析失敗或角色不對(duì)直接返回 401 和 403。這套方案對(duì)中小項(xiàng)目完全夠用代碼少也容易讀懂。跨域問題我分開處理。開發(fā)環(huán)境用 Vite 的 proxy 把 /api 代理到后端地址瀏覽器看到的是同源請(qǐng)求不存在跨域。生產(chǎn)環(huán)境用 Nginx 反向代理直接把對(duì) /api 的請(qǐng)求轉(zhuǎn)發(fā)到 Java 服務(wù)同樣不需要后端開啟 CORS。這樣處理的好處是減少攻擊面也更貼近真實(shí)線上部署的形態(tài)。而且開發(fā)環(huán)境和生產(chǎn)環(huán)境的行為保持一致前端代碼不需要根據(jù)環(huán)境維護(hù)兩套 baseURL排查接口問題時(shí)只需要抓 Nginx 日志和 Java 應(yīng)用日志兩處就夠了。3. 數(shù)據(jù)模型設(shè)計(jì)與核心業(yè)務(wù)實(shí)現(xiàn)3.1 數(shù)據(jù)庫(kù)到底建了幾張表我把表控制在六張核心表不建一堆中間表來增加維護(hù)成本。設(shè)計(jì)原則只有一個(gè)所有后續(xù)要做統(tǒng)計(jì)和推薦的數(shù)據(jù)必須在產(chǎn)生那一刻就能支撐查詢避免統(tǒng)計(jì)時(shí)到處 join。表名關(guān)鍵字段說明userid, username, password_hash, nickname, role用戶表role 區(qū)分普通用戶/管理員knowledge_pointid, name, parent_id, weight知識(shí)點(diǎn)樹weight 表示重要度questionid, type, difficulty, point_id, stem, options, answer, analysis, status題庫(kù)type 區(qū)分選擇題/簡(jiǎn)答題/編程題answer_recordid, user_id, question_id, point_id, difficulty, is_correct, answer_content, use_time, created_at答題流水表業(yè)務(wù)核心wrong_bookid, user_id, question_id, error_count, last_wrong_at, review_status錯(cuò)題狀態(tài)表exam_sessionid, user_id, mode, difficulty, question_ids, status, score模擬面試會(huì)話表這里我想強(qiáng)調(diào) answer_record 這張表。它本質(zhì)上是一張事實(shí)表每一行代表一次真實(shí)的刷題行為。字段里冗余了 point_id 和 difficulty雖然打破了盡量不冗余的潔癖但對(duì)統(tǒng)計(jì)性能幫助很大按知識(shí)點(diǎn)算正確率時(shí)不需要再回表查 question 表直接 group by point_id 就行。建議在這張表上建立聯(lián)合索引 (user_id, point_id, created_at)這是整個(gè)系統(tǒng)最高頻的查詢路徑。當(dāng)初如果不建這個(gè)索引統(tǒng)計(jì)數(shù)據(jù)一多接口響應(yīng)時(shí)間會(huì)從毫秒級(jí)一路漲到秒級(jí)。3.2 刷題主流程一次完整答題的數(shù)據(jù)流轉(zhuǎn)一次完整答題的數(shù)據(jù)流轉(zhuǎn)是整個(gè)項(xiàng)目里最核心的一條鏈路。用戶點(diǎn)開始刷題后前端向后端請(qǐng)求推薦題目后端根據(jù)推薦策略返回一道題用戶提交答案后端判斷對(duì)錯(cuò)寫入 answer_record更新掌握度緩存和錯(cuò)題本最后把正確答案、解析和新掌握度返回給前端。提交答案的處理邏輯用代碼寫是這樣Transactional public AnswerResult submitAnswer(SubmitRequest request) { Question question questionMapper.selectById(request.getQuestionId()); boolean correct question.getAnswer().equalsIgnoreCase(request.getAnswer()); AnswerRecord record new AnswerRecord(); record.setUserId(request.getUserId()); record.setQuestionId(question.getId()); record.setPointId(question.getPointId()); record.setDifficulty(question.getDifficulty()); record.setCorrect(correct); record.setUseTime(request.getUseTime()); answerRecordMapper.insert(record); masteryCache.evict(request.getUserId(), question.getPointId()); if (!correct) { wrongBookMapper.upsert(request.getUserId(), question.getId()); } return new AnswerResult(question, correct); }注意事務(wù)注解一定不能少。一開始我漏了事務(wù)結(jié)果出現(xiàn)用戶提交答案后answer_record 寫入了而錯(cuò)題本沒有更新的情況自我排查時(shí)非常難受。因?yàn)樵谕皇聞?wù)里要么全部成功要么全部回滾這條鏈路絕不能出現(xiàn)中間狀態(tài)。3.3 錯(cuò)題本與刷題統(tǒng)計(jì)的底層邏輯錯(cuò)題本用 upsert 語義實(shí)現(xiàn)這是一個(gè)容易想錯(cuò)的地方。如果每次答錯(cuò)都 insert 一條錯(cuò)題記錄同一個(gè)題在錯(cuò)題本里會(huì)出現(xiàn)多條展示時(shí)還要去重邏輯非常別扭。正確做法是在錯(cuò)題表里用 (user_id, question_id) 建唯一索引答錯(cuò)時(shí)執(zhí)行存在就累加錯(cuò)誤次數(shù)不存在才插入的更新語句。復(fù)習(xí)狀態(tài)我是用一個(gè) review_status 字段管理的初始值是等待復(fù)習(xí)用戶把錯(cuò)題重新做對(duì)一次后變成已掌握下次再錯(cuò)再回退。這個(gè)字段我一開始沒想清楚直接把錯(cuò)題表當(dāng)收藏夾用后來加了字段才讓復(fù)習(xí)一下變成可操作的動(dòng)作。前端在錯(cuò)題本里提供篩選條件只看待復(fù)習(xí)、只看已掌握加上一鍵復(fù)習(xí)按鈕比單純展示所有錯(cuò)題實(shí)用得多。統(tǒng)計(jì)模塊相對(duì)直接。按天刷題量用一個(gè) SQL 就能查出來SELECT DATE_FORMAT(created_at, %Y-%m-%d) AS day, COUNT(*) AS total FROM answer_record WHERE user_id #{userId} GROUP BY day ORDER BY day;知識(shí)點(diǎn)掌握度統(tǒng)計(jì)類似group by point_id 后計(jì)算正確率和答題量前端再用雷達(dá)圖渲染出來。這套統(tǒng)計(jì)鏈路不復(fù)雜但前提是 answer_record 表的結(jié)構(gòu)一開始就設(shè)計(jì)對(duì)數(shù)據(jù)來源不能亂統(tǒng)計(jì)結(jié)果才有意義。4. 智能推薦策略讓刷題有方向而不是瞎碰4.1 可解釋的推薦比看不見的玄學(xué)推薦更重要說到智能很多人第一反應(yīng)是上協(xié)同過濾或者跑一個(gè)神經(jīng)網(wǎng)絡(luò)模型。但對(duì)這類個(gè)人項(xiàng)目來說效果并不好用戶和題目的交互矩陣極度稀疏冷啟動(dòng)問題根本繞不開而且推薦結(jié)果無法解釋用戶會(huì)困惑為什么給我推這道題。我的設(shè)計(jì)原則是把推薦做成可解釋的。推薦一道題時(shí)前端可以明確展示推薦理由比如你最近關(guān)于二分查找的掌握度偏低推薦完成這道題。這種可解釋性既讓用戶信服也讓代碼邏輯更好維護(hù)。推薦鏈路只依賴 answer_record 和 knowledge_point 兩張表可控性很強(qiáng)后續(xù)想調(diào)整規(guī)則也只是改一個(gè) Service 的事情。從實(shí)際使用反饋來看用戶對(duì)這種知道為什么推題的接受度比我預(yù)期高很多。4.2 掌握度計(jì)算與推薦優(yōu)先級(jí)掌握度是整個(gè)推薦策略的核心指標(biāo)。我不采用簡(jiǎn)單的歷史正確率因?yàn)檎_率沒法體現(xiàn)時(shí)間衰減很久以前錯(cuò)過的知識(shí)點(diǎn)如果最近一直做對(duì)應(yīng)該認(rèn)為它正在被掌握。所以用帶時(shí)間衰減的加權(quán)平均核心邏輯如下public double calculateMastery(ListAnswerRecord records) { double sumWeight 0.0; double sumCorrect 0.0; for (AnswerRecord record : records) { double days Duration.between(record.getCreatedAt(), LocalDateTime.now()).toDays(); double weight Math.exp(-days / 7.0); sumWeight weight; sumCorrect record.isCorrect() ? weight : 0.0; } return sumWeight 0 ? sumCorrect / sumWeight : 0.5; }衰減周期設(shè)成 7 天相當(dāng)于一周前的答題權(quán)重衰減到約 37%兩周前基本忽略。這個(gè)參數(shù)我一開始是拍腦袋定的但實(shí)測(cè)體驗(yàn)比純正確率平滑很多后來也就沒有再調(diào)。需要注意的是掌握度計(jì)算不要放在每次請(qǐng)求里實(shí)時(shí)掃全表正確做法是答題提交時(shí)更新知識(shí)點(diǎn)的掌握度緩存推薦接口直接讀緩存。推薦優(yōu)先級(jí)分三層。第一層是最薄弱知識(shí)點(diǎn)下、且重要度 weight 高的未做題目直接強(qiáng)推薦。第二層是掌握度在 0.4 到 0.6 之間的知識(shí)點(diǎn)說明處于邊界狀態(tài)需要加強(qiáng)。第三層是近期完全沒有刷過題的知識(shí)點(diǎn)用隨機(jī)池?fù)埔粌傻纴肀3指采w面。每次后端生成一個(gè)候選題池在池內(nèi)隨機(jī)選一道返回避免用戶連續(xù)刷到同一題。這套規(guī)則我用一個(gè)策略接口封裝每層策略只負(fù)責(zé)篩選候選題后面想加按崗位過濾或者按題目熱度排序也只是新增策略類的問題。4.3 模擬面試與智能組卷的輕量實(shí)現(xiàn)模擬面試模式是為了給用戶一個(gè)完整的作答節(jié)奏。用戶選擇崗位方向和難度后后端按知識(shí)點(diǎn)權(quán)重進(jìn)行配額抽題保證一套試卷覆蓋多個(gè)知識(shí)點(diǎn)而不是全抽到同一個(gè)點(diǎn)。組卷邏輯聽起來復(fù)雜落實(shí)下來其實(shí)就是一個(gè)按知識(shí)點(diǎn)配額的抽樣算法先算出每個(gè)知識(shí)點(diǎn)要抽多少題再?gòu)脑撝R(shí)點(diǎn)的題目池里隨機(jī)抽抽過的題要放到排除集合里避免重復(fù)。核心思路用代碼寫是這樣MapLong, Integer quotaMap buildQuotaMap(knowledgePoints, totalCount); for (Map.EntryLong, Integer entry : quotaMap.entrySet()) { ListQuestion pool questionMapper.selectByPointAndDifficulty( entry.getKey(), difficulty, excludedIds); selected.addAll(randomPick(pool, entry.getValue())); }選擇題提交后立刻自動(dòng)判分簡(jiǎn)答題初版采用關(guān)鍵詞匹配評(píng)分把參考答案里預(yù)先標(biāo)注的核心關(guān)鍵詞和用戶答案做包含比對(duì)按命中率給分編程題因?yàn)樵诰€判題工程量太大第一版只展示參考答案讓用戶自評(píng)。分?jǐn)?shù)統(tǒng)計(jì)和面試報(bào)告仍然完整生成用戶可以翻看每個(gè)知識(shí)點(diǎn)的表現(xiàn)。5. 前端落地與體驗(yàn)打磨5.1 SPA應(yīng)用的結(jié)構(gòu)規(guī)劃前端項(xiàng)目結(jié)構(gòu)按照視圖、狀態(tài)、網(wǎng)絡(luò)三層來劃分。src/views 只放頁(yè)面組件src/stores 放全局狀態(tài)src/api 統(tǒng)一封裝網(wǎng)絡(luò)請(qǐng)求。API 層不對(duì)業(yè)務(wù)頁(yè)面暴露 axios 實(shí)例只暴露 getQuestionById、submitAnswer 這樣的語義化方法。頁(yè)面組件里不出現(xiàn)任何請(qǐng)求方法邏輯只認(rèn) store 和 api 層的返回值。views 下目前有 Login、Dashboard、QuestionBank、Practice、MockInterview、Stats、AdminQuestion、AdminKnowledge 這些頁(yè)面。路由用 Vue Router 管理菜單和路由表一一對(duì)應(yīng)用戶端和管理端通過不同的路由前綴和導(dǎo)航菜單隔離。目錄結(jié)構(gòu)清爽之后新加頁(yè)面很少會(huì)牽扯到舊代碼這個(gè)收益在開發(fā)到中后期體現(xiàn)得非常明顯。5.2 登錄態(tài)與路由守衛(wèi)的處理前后端分離最容易出問題的是登錄態(tài)。我的處理方案是token 同時(shí)存在 localStorage 和 Pinia 里頁(yè)面刷新時(shí)從 localStorage 恢復(fù)保證刷新后不丟登錄狀態(tài)。axios 請(qǐng)求攔截器統(tǒng)一在請(qǐng)求頭里加 Authorization響應(yīng)攔截器遇到 401 時(shí)清掉用戶狀態(tài)并跳轉(zhuǎn)到登錄頁(yè)。核心代碼http.interceptors.request.use(config { const userStore useUserStore() if (userStore.token) { config.headers.Authorization Bearer ${userStore.token} } return config }) http.interceptors.response.use( res res.data, err { if (err.response?.status 401) { useUserStore().logout() router.push(/login) } return Promise.reject(err) } )路由守衛(wèi)是第二道防線。在 beforeEach 里判斷如果訪問的是需要登錄的頁(yè)面且本地沒有 token直接跳登錄頁(yè)。要注意把登錄頁(yè)、注冊(cè)頁(yè)加入白名單否則會(huì)出現(xiàn)登錄時(shí)跳轉(zhuǎn)登錄頁(yè)的循環(huán)問題。這個(gè)坑我踩過表現(xiàn)形式是用戶輸完賬號(hào)密碼剛要點(diǎn)登錄頁(yè)面就被守衛(wèi)踢回登錄頁(yè)現(xiàn)象非常詭異排查了幾分鐘才發(fā)現(xiàn)是白名單漏配導(dǎo)致的。5.3 從交互細(xì)節(jié)到性能優(yōu)化性能優(yōu)化我做了五件事。組件庫(kù)按需引入用 Vite 的插件自動(dòng)把未使用的 Element Plus 組件搖掉路由懶加載每個(gè)頁(yè)面拆成獨(dú)立 chunk初始加載只下載首屏資源題目列表用分頁(yè)加條件篩選不做一次性全量加載ECharts 圖表按需引入只注冊(cè)用到的雷達(dá)圖和熱力圖模塊長(zhǎng)列表的統(tǒng)計(jì)頁(yè)用虛擬滾動(dòng)避免幾千個(gè)節(jié)點(diǎn)同時(shí)渲染。交互細(xì)節(jié)上答題頁(yè)最值得打磨。選項(xiàng)點(diǎn)擊后要有即時(shí)選中態(tài)提交過程中按鈕置灰防重復(fù)提交倒計(jì)時(shí)離開頁(yè)面時(shí)銷毀定時(shí)器防止內(nèi)存泄漏。還有一個(gè)容易忽略的點(diǎn)用戶從刷題頁(yè)跳到別的路由再回來答題狀態(tài)要能恢復(fù)我通過把當(dāng)前題目ID和已選答案存在 Pinia 里來解決。這些細(xì)節(jié)不復(fù)雜但用戶感知非常明顯也是產(chǎn)品打磨和半成品之間的核心差別。6. 部署實(shí)戰(zhàn)與高頻踩坑記錄6.1 Nginx Spring Boot 的部署組合部署方案很簡(jiǎn)單后端打成 jar 包用 systemd 守護(hù)進(jìn)程跑在 8080 端口前端 npm run build 后把 dist 目錄扔給 Nginx。Nginx 同時(shí)承擔(dān)靜態(tài)文件服務(wù)和反向代理配置如下server { listen 80; server_name your-domain.com; root /var/www/dist; index index.html; location /api/ { proxy_pass http://127.0.0.1:8080/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location / { try_files $uri $uri/ /index.html; } }這個(gè)配置有兩個(gè)容易踩的坑。一個(gè)是 proxy_pass 后面的路徑因?yàn)楹蠖私涌谝彩?/api 開頭所以保留了 /api/ 后綴避免路徑拼接錯(cuò)誤另一個(gè)是 try_files 的 fallback 一定要落到 /index.html否則前端路由刷新時(shí)會(huì)出現(xiàn) 404。生產(chǎn)環(huán)境上線后我還加了 systemd 的自動(dòng)重啟機(jī)制Java 進(jìn)程如果意外退出會(huì)被自動(dòng)拉起來省掉半夜爬起來重啟服務(wù)的情況。6.2 典型問題與排查速查表我把上線前后遇到的高頻問題整理成一張表基本覆蓋了這個(gè)項(xiàng)目里出現(xiàn)過的所有典型故障。現(xiàn)象原因解法頁(yè)面刷新后回到登錄頁(yè)沒有從 localStorage 恢復(fù) token初始化時(shí)從 localStorage 寫入 Pinia401 后循環(huán)跳轉(zhuǎn)登錄頁(yè)白名單配置漏了登錄頁(yè)在路由守衛(wèi)里顯式放行 /login接口返回跨域錯(cuò)誤開發(fā)代理沒配置Vite proxy 指向正確后端地址直接訪問異步路由刷新 404Nginx 沒有 fallback配置 try_files $uri $uri/ /index.html錯(cuò)題本出現(xiàn)重復(fù)記錄沒有唯一索引 / 沒做 upsert加聯(lián)合唯一索引改 upsert SQL統(tǒng)計(jì)圖數(shù)據(jù)比實(shí)際少事務(wù)未提交或條件不一致統(tǒng)一使用 created_at 并按天分組模擬面試出現(xiàn)重復(fù)題目組卷抽樣沒有排除已選題用排除集合記錄已選題目 ID這些坑基本都屬于知道原理后一分鐘解決不知道原理要查半天的類型。我把它們寫進(jìn)項(xiàng)目 README 的部署清單里后面維護(hù)或給其他人接手時(shí)會(huì)省掉很多溝通成本。6.3 做完這個(gè)項(xiàng)目我才明白的幾件事第一接口設(shè)計(jì)比實(shí)現(xiàn)接口更花時(shí)間但收益最大。我前期把接口文檔定義清楚后前后端開發(fā)幾乎不需要互相等待遇到的返工也比以往項(xiàng)目少很多。第二數(shù)據(jù)表設(shè)計(jì)決定功能上限。answer_record 冗余字段這個(gè)決定讓后面的統(tǒng)計(jì)、推薦、錯(cuò)題分析都變得簡(jiǎn)單如果當(dāng)時(shí)圖省事不冗余現(xiàn)在每個(gè)統(tǒng)計(jì)接口都要回表 join性能和可讀性都會(huì)下降。第三前后端分離不是為了炫技它帶來的真正價(jià)值是讓用戶端、管理端、未來可能的客戶端共享一套業(yè)務(wù)能力把重復(fù)代碼壓縮到最低。最后再分享一個(gè)經(jīng)驗(yàn)。這個(gè)項(xiàng)目最有價(jià)值的不是某個(gè)頁(yè)面寫得多漂亮而是那套刷題記錄—掌握度計(jì)算—推薦的數(shù)據(jù)鏈路。你在實(shí)現(xiàn)類似系統(tǒng)時(shí)不管智能功能做多深都要先把 answer_record 這張事實(shí)表設(shè)計(jì)好讓它能完整表達(dá)每一次刷題行為。數(shù)據(jù)扎實(shí)了后面加規(guī)律提醒、加復(fù)習(xí)計(jì)劃、加任何智能玩法都只是在一個(gè)穩(wěn)定的地基上添磚加瓦。我做完這個(gè)項(xiàng)目后再刷題最大的變化是心里清楚自己到底該補(bǔ)哪一塊而不是憑感覺亂翻題庫(kù)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
殴美在线AⅤ| 日本裸体久久色噜噜| 亚洲AV无码黄色强奸| 婷婷深爱五月| 日韩精品人妻中文字幕久久久| 蜜区区视频79 | 国产妇女精品视频青青草| h无码动漫在线观看| 久久久久亚洲Av无码专区老牛影视 | 久久精品91| 欧美激情片一区二区| 欧洲精品二区| 91麻豆天美国产欧美日| 亚洲图片 91| 婷婷五月天福利| 麻豆2区1区天美| 91在线页| 国产视频大全| 韩日欧亚a级| 国产一国产一级毛片古装| 国产400孕妇孕交群| 国产色图乱伦| 思思热er精品视频| 天天日少妇逼AV| 精产国品一区二三产品| 中出人妻中文字幕91在线| 久9爱经典视频| 日日超碰亚洲| 国产激情av女片自拍| 第四色色综合91| 日本亚洲嫩草影院啪啪| 中文字幕五月婷婷免费| 久久一区二区三区入口| 啊好大好舒服| 天天干夜夜鈤| ji熟女.com| 欧美亚洲丝袜人妻制服99| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 97在线视频观看网站| 91 手机在线播放 绯色| 国产老太乱伦一区| 国产超碰在线一区| 国产资源中文字幕在线| 人妻一区二区三区| 狠狠色综合网| 精品一区二区三区蜜桃臀赵总 | 九一精品牛牛一区二区| 日韩精品人妻中文字幕有码午| 免费一级毛片在线视频观看| 色婷婷五月综合激情中文字幕| 成人免费看吃奶视频网站| 男人天堂网址| 日韩欧美午夜一区二区| 久久性爱精品一区| 91在线视频观看国产| av网站免费线看| 中文字幕精品探花视频| 天天综合网91| 久久国产逼| 在线观看一级α片刺激高潮视频| 日本羞羞的视频在线播放| 国产精品不卡高清在线观看| 国产美女自拍AV| 国产乱伦亚洲色图高清无码| 强奸乱伦av电影| 玖玖爱免费观看视频| 立川理惠加勒比无码| 久久久久久精品免费看A级| 激情干在线| 红杏大香蕉| 蜜桃久久综合视频| 亚洲中文字幕乱码无码一区二区| 欧美色图私拍91| 亚洲天堂人人妻| 96AV精品| 久久一二三四五六七八九区区| 日本淫穴在线| 強姦亂倫a| 亚洲AV秘 精品久久老牛影视| 免费作爱一级视频| 91老司机在线视频免费观看| 91欧美丨精品丨入口| 日本2020一区二区| 国产婷婷综合在线观看| 久久久久13| 精品99999久久久久久| 久久久久密臀视频| 欧美十八禁视频| 免费观看的黄色的网站| 淫妻综合网| 日欧毛片久久| 亚洲欧美首页| 亚洲国产麻豆一区二区三区| www.狠狠干.coom| 久干网| 人妻内射一区二区在线视频| 欧美经典一区二区三区| 综合网,亚洲,欧美| 伊人久久亚洲色欲综合网站 | 乱伦日本色图AⅤ| 黄污污污污| 亚洲高清少妇| 永久免费av无码网站国产app| 精品一区二区综合熟妇| 青青草吊丝| 91 偷| 久久夜黄色无码A级大片| 99久re热视频精品98| 91成人国产综合久久精品蜜月| 97超碰影音| 99亚洲国产精品色一区二区三区| 天天插天天射| 色香综合天天影视综合 | 日韩美女啪啪一区| 亚洲男人天堂2013| 岛国AB视频| 日韩乱码Av| 1204人成网站色www| 国产毛片片精品天天看视频| 天天爽夜夜欢视| 中出欧美| 最新欧洲欧美日本激情网站| 亚洲成人在线播放| 久操免费观看| 丁香六月婷婷久久综合| 婷婷10月天青娱乐| 丁香五月婷婷啪啪| 婷婷色综合欧美日韩| 日韩精品99999| 国产一区在线看| 国产自产自拍| 九九拍拍精品视频在线播放 | 色狠人在线99| 18禁无码永久免费无限制| 亚洲另类综合欧美| 国内毛片热久久思思热| 福利一级版子| 国产精品久久久三级无码| 欧美亚洲涩涩| 无码免费精品高清| 久久 久久国内精品亚洲| 久久久精品电影| 欧亚日韩三区| 曰韩成人免费视频| 啪啪啪亚欧美视频| 中文字幕在在线观看网站| 国产精品福利视频| 成人日韩中文字幕| 日本日皮视频逼| 日本 情色 1区2区3区| 桃花色涩综合影院| 91欧美网| 色臀aV| 免费观看欧美日韩操逼视频| 人人玩人人添人人澡免费| 天色综合网| 小日子操bb在线看| 精品国产a∨一区天美传媒| 337p大胆噜噜噜噜噜91Av| 久久久久久久久久久久97| 尹人大香蕉视频在线| ji熟女.com| 欧美成人色| 午夜无遮挡男女啪啪视频| 校园春色综合色| 日日噜噜夜夜狠狠视频无| h色99999| 精品久久久久,69国产成人精| 日韩福利电影网| 久久只有精品一区二区三区| 五月天婷精品激情| 日本视频在线中文字幕| 久草久日| 国产久久日韩网站导航| 丁香五月综合| 先锋影音av先锋一区| 日本淫穴在线| 国产精品肉丝自拍| 亚洲一区日韩| 黄色免费网| 久久青娱乐| 狠狠躁AV| 亚洲人妻一区二区三区| 久久91视频| 精品对白久久不卡| 亚洲色婷婷综合久久一区二区三区| 97中文超碰| 日韩中文字幕人妻视频| 欧美图片校园春色| 九九九精品一区二区无码| 五月综合色| 日韩欧美午夜视频在线| 99人妻碰碰碰久久久久禁片| 人人操超碰在线| 四季AV一区二区凹凸精品小说| 国产成人无码网站在线视频| 免费簧片在线观看| 午夜福利1区2区3区| 久久是精品| 国产精品久久久蜜臀| 噜噜噜狠狠色综合| 国产高清视频无码在线| 天天色欧美| 欧美在线第五页| 美女黑人91神马| 91美女在线精品视频| www.国产高潮精品| 日本五十路熟女一区二区| 色臀AV| av草草在线电影| 97超碰资源网| 美女91在线观看| 亚洲另类综合欧美| 五月婷婷色| 综合久久欧美| 精品国产乱码久久久久久口爆网站| 国产精品成人AV片免费看网站| 国产区在线| 啊啊啊 在线| 另类老少妇| 久操影视| 9997se| 久久精品国产亚洲5555| 九九九九亚洲| 成人怡红院| 久久久555| 天天影视91看看| 久久99干一本高清| 精品97久久| 天天操妹子| 俞拍久久国应视频| 26uuu最新| 亚洲欧美色图小说| 伦伦成年午夜免费视频| 亚洲一区二区三区欧美日韩| 日本福利二区视频| 国产一级片| 九月婷婷综合| 超碰亚洲97| 99re3这里只有精品| 欧美 亚洲 大香| 不卡码视频| 新视频sss国产| 夜夜国自区| 国产精品高朝久久久久久久| 成人片在线播放| 男人天堂免费| 国产精品一区二区后入| 麻豆2区1区天美| 色婷婷成人综合| 国产最新AV| av一区二区三区四区五区久草臀| 亚洲天堂久| 午夜精品久久久久久久久久久久久| 97在线看| 国产小视频91| 夜夜嗨av午夜成人| 怡红院成人av| 97在线免费| 国产高清在线观看欧美| 亚洲精品 大香蕉| 欧美成人色| 99热线麻豆 | 艹我哪美一区无码| 97免费视频在线观看视频| 大色网久久| 青青免费在线视频一区| 五月综合视频| 综合av影片| 亚洲色图91| 日韩人妻 中文字幕| 一品道视频一区二区三区| 超碰这里只有精品| 97天堂| 天天干人人干天天日97| 啊啊啊不要啊啊受不了了视频在线| 午夜精品久久久久久久99| 日本阿v天堂在线观看| 多乙久久久久久| 久久精品无码熟妇一区二区三区视频导航| 久久人妻熟女一区二区| 日本九九九九| 性交一区二区在线播放| 国产亚洲精品A在线观看下载| 婷婷伊人网| 97在线青| 亚洲欧美中文一区二区三| 久超碰在| 大香蕉伊人75| 婷婷五月天色| 色97欧美| 澳门特级毛片免费观看| 夜夜做夜夜爽精品视频| 欧美经典一区二区三区 | 后入式福利| 香蕉久久AⅤ...| 久久的网站啊啊啊啊啊| av激情亚洲五月天| 91亚洲精品青草| 亚洲中文字幕av| 自拍大香蕉乱插| 情色五月天网| 国产一级137片内射麻豆| 久久25| 91无遮挡| 国产福利夜| 日本东京热久久久电影| 人妻夜夜爽天天爽麻豆三区网站| 黑人综合网| 午夜天堂啪啪| 国产深喉| 久热9| 校园激情狠狠四射| 日本在线一二| 欧美AAAA黄片| 久久超碰av在线| 2018天天干在线视频| 夜草欧美| 91c色| 丝袜色综合| 久久高清欧美国产| 青娱乐黄色录像| 蜜臀国产AV中文字幕| 在线中文字幕视频| 日韩中文字幕av在线播放| 波多野结衣被操50分钟免费视频| 日韩不卡网操逼中文字幕日韩| 国产毛片在线| 成人精品久久| 91亚洲精品青草| 国产无码久久高清| 第四色亚洲色图| 少妇综合网| 丝袜美腿校园春色| 亚洲高清无码免费观看视频| 白嫩少妇| 欧美性Fer办公室秘书| 色99视频| 国产一区二区成人av在线播放| 亚洲精品欧洲精品| 亚欧韩av| 亚洲丝袜诱惑| 欧美一二级| 超碰99在线| 啊啊啊网站| 97超碰逼| 久久久久久国产精品| 丰满人妻一区二区三区蜜桃视频| 亚洲熟妇无码一区二区三区| 亚洲九月丁香| 青娱乐国产剧情av一区| 欧美色图片欧美色图| 裸体美女国产免费久久久网站| 成人性爱免费播放| 啊啊啊啊好疼| 天天摸夜夜操视频| 九九视品黄色| 九九热久久99精品re| 熟女少妇一区二区三区| 爱丝福利| 裸体1区| 能看的AV| 狠狠爱综合| 免费的黄片有限公司| 亚洲一区二区av| 欧美天堂第二区| 六十路日本| 亚洲成aⅴ人片不卡无码| av天堂加勒比| 操少妞在线视频| 久久久久久中文字幕中文字幕最新| 思思热久久成人| 97干97色| 麻豆成人AV| 久久精品国产精品| 欧美亚洲日韩16色| 91 亚洲 欧洲| 另类图片五月天| 国产亲戚伦亲在线| 丰满人妻一区二区三区性色| av网站免费看| 自拍啪啪视频| 999热日韩精品| 九九九九九九视频| 色综和网| 神马久久久久久久久久久久| 密臀在线免费观看| 大稥蕉免费视频这里只有精品| 黄色av一区二区在线| 日韩免费在线观看不卡| 国产精品久久久吖| 一区二区三区亚洲| 波多野42部无码喷潮在线观看| site:sinbotex.com| 中国和日本人色哪个不下载能放| 蜜臀va69| 可免费观看的av毛片中日美韩| 午夜在线播放| 日韩色香| 中国操逼无码| 91丝袜在线观看| 91丝袜在线观看| 精品久| www国产无码| 亚洲无992tv| 丁香色狠狠色综合久久小说| 老子午夜伦不卡影院| 日本成人免费一区二区三区| 日韩字幕一区| 福利在线观看一区二区| 中文字幕乱在线伦视频中文字幕乱码在线| 午夜影美女日鸡鸡天天视频国产| 日逼国产| 欧美日韩第一页| 大香蕉伊人色偷偷在线| 欧美一区二区日韩传媒搭讪精品| 性色中出| 91精品少妇搡搡搡| 天堂性色| 日韩av电影成人在线| 嗯啊视频免费在线观看| 亚洲欧美国产其他二区| 亚洲日本成人动漫| 操b网站亚洲无码| 欧美青青视频| 亚洲国产精品无石码久久| 欧美岛国精品在线观看| 国产成人无码高清| 内射日韩大臀美女| 伊人991| 丝袜视频网国产90| 91亚州| 日韩美女啪啪一区| 五月天综合| 亚洲日韩青青草色月| 亚洲欧洲激情| 日韩三级伊人| 亚洲激情av| 欧美72网页| 婷婷20月天青娱乐| 久久受www免费人成| 国产日韩在线播放| 中文字日本乱码| 久久久免费视频18| 国产拍偷精品网站| 日本99久久| 69视频福利导航| 99热欧美| 91综合在线| 在线中文字幕极品av| 91一起操| 龙兴卡官方查询| 97亚洲精品| 国产精品久久久久久片| 免费视频在线观看啊啊啊啊啊| 97热视频在线观看| 级做a爱无码性色永久免费| A久久| 99精品久久久久久| 男人天堂黄片| 久久中文色图| 这里只有精品97| 性做久久久久久久| 日韩久久艹| 婷婷色综合欧美日韩| 色婷网| 啊啊啊好舒服好爽啊啊啊视频| 九九九九九九精品| 日本熟妇人妻中出视频| 久久九精品| 黄片qw| 插入综合网| 午夜欧美精品久久久| 成人八戒网站| 麻豆AV96熟妇人妻| 久久男人精品| 婷婷丁香一区二区三区| 成年人网站在线免费观看| 成人五月香网在线| 欧美亚洲系列| 七久久久| 精品免费视频国产一区| 人妻精品综合中文字幕在线| 亚洲AV色图一区| 日韩免费大片一级播放| 久久綜合很很很| 中文字幕99999| 九九九九九九九精品视频| 天天舔天天日天天射| 日本日逼高清| 好好的日:com久久九九| 国产一进一出视频网站| 日日干日日操五月天伦理视频| 精品一级| 97精品一二区| 国产成人精品必看| 2017超碰| 黄网在线播放| 天天综合网网欲色| 中美日韩毛片| 欧美日韩性爱无码| 欧美 日韩第一性色| 91精品大奶人妻| 伊香蕉综合久久久久久久噜噜噜| 婷婷丁香六月天| 亚洲欧美小说| 久久伊人青青草| 亚洲AV秘 精品久久老牛影视| 色九九综合AV| 青青草日韩无码| 精品人妻中文字幕高清| 超碰97色色| 日本三级网页| 日本大香蕉综合网红本杳社区| 国产亚洲一黄| 懂色av色欲av蜜臀av| 久久人体一区二区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 爱丝福利| 99re9在线| 欧美亚洲素人制服精品| 欧美午夜熟妇黑人精品91| 亚洲骚女一区二区三区| 久久久久久国产无码精品| 精品97久久| 97 视频在线| 久久五十路熟女人妻| 黑白配性爱AV成| 男人的天堂在线2| 黄片视频,下载| 肥佬影院91| 五月天伊人| 丁香成人五月天| 欧洲欧美视频一区二区| 老熟女综合| 情色五月天网| 久久熟女人| 国产动漫操逼视频| 这里只有精品视频在线观看麻豆| 精品一级| 香蕉大久久久| 久久男人网| 99色在线| 无码WWW免费视频网站| 好爽视频在线观看视频| 久久久久久久综合,国产| 熟女一区二区| 五月丁香六月婷| 黄色大香焦1级‘′‘| 三级日韩一区二区三区| 麻豆成人影音在线| 亚州欧美在线| 国产黑白丝在线| 试看福利| 亚洲永久AV无码精品秋霞| 东京热激情视频一二三区| 亚洲国产麻豆一区二区三区| 女性91网站| 欧美成人精品一区| 久久天堂网| 亚洲国产精品久久久久婷婷老年| 91爱看| 五月婷婷色| 日韩操人| 国内毛片无码一级毛片| 人妻激情偷乱视三区频一区二区| 亚洲午夜福利在线影院| 综合操逼| 91干熟女| AV九九| 免费观看的av| 欧美天天插| 性站| 看黑人AV不卡| 性色中出| www.男人天堂| 久久久九九九九| 麻豆国产成人精品| 久久机热| 青青伊人久久| 97操综合| 男人天堂新在线| 综合色一区三区二区| 九九九九免费| 久久国产在线一区二区| 无码一区二区精品视频久久久春药| 中国AAAAAA黄色片| 韩国一级婬片A片无码天美| 国产亚洲精品美女久久久| 久草视频在线视频在线视频在线观看| av在线免费一区二区| 十八禁视频一区二区| AV乱伦专区| 影音先锋每日最新资源在线观看 | 大香蕉520| 大香蕉碰| 超碰地址97| 欧美综合在线第一页| 992大香蕉| 国语av狠狠色丁香婷婷综合激情| 亚洲无码太久| 亚洲欧美日韩夜夜| 野狼激情网| 色麻豆AV| 99re6在线视频播放免费精品| 天美传媒AV在线播放| 欧美不卡在线一区二区| 国模少妇一区二区三区| 骚逼高潮久久精品| 美女毛片999| 欧美性色欧美| 奇米四色网| 操逼天美3区| 色99视频| 色天堂综合| 东京热,男人的天堂| 天天看天天日| 激情五月天社区| 欧美亚洲国产自久久| 爱丝福利| 日韩免费三级黄片电影| 久久久成人国产精品无码| 国产超碰国产97| 久草老司机| AV麻豆免费一区| 桃花色涩综合影院| 亚洲成人妻日韩在线| 国产一二三在线视频五十路| 精品日韩人妻视频| 欧美视频在线第3页| 日韩精品电影| 100啪啪视频大全| 黄色性爱网网| 国产精品suv一区| 青娱乐91| 秋霞欧美性爰视频| 好舒服视频| 男女啪啪啪18禁网站| 中文字幕成人| 无码操逼天堂| 精品欧美А∨无码黑人大荫蒂| 天天影视色香色欲| 91久久18禁| 亚洲97| 国模少妇一区二区三区| 精品久久九| 午夜福利1区2区3区| 欧插网站| 91天天综合| 在线观看日韩av不卡| 成人欧美日超碰| 日韩免费看在线黄色片| 亚洲乱色视频一区、二区在线| 97精品全部| www.色操逼| 热久久无毒不卡| 在线一道啪| 日本东京热大香蕉a片| 在线播放成人高清免费视频| 国产少妇与亚洲av| 97综合网| 不卡九肏| 成人无码在线视频网站| 欧美香蕉视xxx| 国产精品剧情| 大鸡吧尹人在线| 日本成人在线不卡一区二区三区| 91麻豆天美国产欧美| 夜夜欢天天干| 久久色激情一区二区三区| 91香蕉国产尤物视频| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 97视频观看| 国产激情在线| 欧美一区二区亚洲天堂| 欧美91精彩| 操逼操逼逼操操逼91| 五月婷婷青青草娱乐伊人| 无码不卡八戒| 国产少妇高潮| 亚洲无线码一区国产欧美国| 欧日韩一二三f区| 婷婷月色| 大香蕉乱级| 美骚妇av高清在线| 天堂俺去俺来也www久久婷婷| 日韩精品人妻中文字有码在线| 国产精品老师| CCYY草草影院地址入口| 国产精品午夜精品| 中美日韩毛片| 午夜一区| 日韩性爱毛片操骚逼| KK色在线影院| 久久精9| 午夜精品视频777| 99re免费| 国产精品久久久久久久免牛肉蒲团| 亚洲最大网站av| 久久69| 久久九精品| 99热成人| 岛国网址国产 | 热99这里只有精品| 国产精品一二三免费网站| 欧洲乱码视频| 4虎在线观看| 国产传媒午夜理伦精品| 婷婷丁香五月激情啪啪| 男人的天堂在线| 久久精品午夜国产亚洲AV无码| 人人考人人摸人人干| 亚洲欧洲小说图片视频 | 又粗又长又爽在线观看| 欧美BT 亚洲色图| www欧美91| 九九热免费国产视频婷婷伊人| 色欲av国内精品久久久久久| 国产久久久9999| 欧美国产精品| 亚洲综合首页| 青青草男人天堂| 午夜寂寞欧美| 国产高清成人免费视频| 国产视频第2页| 中文字幕成人| 夜夜操青青草| 国产捆绑一区| 青青草在线视频美女| 97蜜桃综合| 欧美一级黄片免费播放| AV天堂国产| 人妻丝袜一区二区三区在线| 日韩午夜国产| 爆乳免费黄网站| 亚洲AV无码国产成人| 在线观看亚洲成人精品| 91 综合网| 91天天综合在线观看| 欧美视频激情久久久久久| 色av中文字| 五月天色图影视| 五月婷婷激情综合| 色色色色电影网| 国产精品无码在线| 午夜福利免费福利视频| 免费黄色片。| av日韩国产一区二区| 日本十八禁免费看污网站| 欧美精品久久96人妻无码| 久操免费观看| 欧美一区二区男人天堂| 四虎av在线| 91bbbbbb| 亚洲国产精品成人久久蜜臀| 亚洲图片欧美| 丰满人妻aA一区二区三区| 国产在线观看一区二区三区| 欲香欲色| 五十路三级片| 成人精品在线观看| 中文字幕一区av| 欧美另类色图片| 国产91精品久久久久久久网曝门| 99在线观看| 麻豆人妻精品一区二区| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 欧美三级不卡| 综合久久99亚洲人妻中文在线| 日影院久久婷婷夜夜网| 992大香蕉| 欧州一区二区三区四区| 天天天天天天天天天天干美女| 欧美网站免费| 夜夜操av亚洲一区二区| 激情四射熟女丝袜| 青青色在线观看| 欧美性爱中文字幕无线码| 99综合视频一体| 国产25页| av亚欧| 色五月激情网| 欧美性五月| 久久精品国产亚洲妲己影视| 澳门特级毛片免费观看| a人欧美综合天堂麻豆| 欧美性爱一区二区三区| 老司机老司机午夜影院| 嗯嗯嗯啊啊啊操的我好爽| 91九色丨风韵犹存| 偷看洗澡一二三区美女| 久久精品国产精品| 久久精品国产AV一区二区三区| 97人肏| 久久久久久久9| aaa一级黄片| 少妇熟女视频一区二区三区| 91精品女厕偷拍视频| 九X超碰| 一级人妻性爱视频| 青青草日本中文字幕| 一起草三级AV电影在线观看 | 亚洲综合113页| 91w欧美| 伊人成人情色综合| 免费精品国偷自产在线在线 | 又粗又长又爽在线观看| 国产精品欧美激在线| 3P乱轮视频| 久草资源在线视频官方总站日韩丝袜美腿 | 中文字幕在线日亚洲9| 999国产精品999久久久久久| 婷婷五月天成人网| 91欧洲国产成人久久精品网站| 97中文天堂| 国产不良强奸视频免费看| 久久久久921| 国产AV高清AV无码| 色香综合| 欧美日韩天堂| 91狠狠综合久久久久久| 色欲天天婬色婬香WWW夜色| 国产精品午夜成人福利| 日韩精品视频在线观看一卡二卡| 欧美骚少妇| 熟妇高潮一区二区免费视频| 色屁屁影院www国产| 少妇熟女视频一区二区三区| 日日夜夜狠狠| 人人摸人人干人人拍97| 97免费在线观看| 欧美亚洲se91| 中文字幕 人妻不满 在线视频| 日韩av电影成人在线| 超碰久超碰久| 任你干在线视频| 亚洲美欧999| 激情五月婷婷综合| www.av在线观看| 亚洲性爱乱操x| 2019久久久久久久久福利| 久久男人精品| 色婷婷成人| 涩涩这里只有精品视频| 成人青青草原伊人| 国产精品久久久吖| 1769精品一区二区三区| 东北操逼| www.男人天堂| 国产第11页| 伊人久久国产免费观看视频| 亚洲综合图片在线| 美女一区二区国产精品| 狠狠干综合| 欧美A√综合网| 男女国产精品| 91人妻做a观看视频| www.色五月| 制服丝袜第二页| 欧美一级在线观看成人| 国产区91柔拿会所技师| 热久久91婷婷| 欧美色吧综合| 大香蕉专区| 久久超碰免费的| 久久色网| www.夜夜操| 欧美高潮| 久久精品日韩| 精品久久九| 97一区二压| 国产精品不卡高清在线观看| 99自拍视频在线观看| 人妻激情在线视频| 日本狂喷奶水在线播放212| 加勒比在线视频一区二区三区| 殴洲老熟女| 青青草一本道福利视频| 九九九九一级| 欧美视频一| 97婷婷色| 国产自产22区| 亚洲无码超碰免费| 色老汉玖玖爱| 大干人妻| 日本www操操操| 一道本东京热加勒比一区二区三区| 国产人妻精品一区二区三区秋霞| 少好三P| 日韩精品资源专区二区| 国产1769在线| 另类视频在线| 嫩草美女久久| 中文字幕超碰CAO| 最新av中文字幕高清| 亚洲综合色男人网| 日韩欧美日韩| 亚洲精品一区二区三区新线路| 亚春色色| 野狼激情网| 在线观看高清AV| 美女露胸露奶头| 妇女视频网站| 国产AV天美传媒一区二区三区 | 2020中文字幕| 97在线资源| 熟女精品va中文字幕| 少妇第一页| 最新日产中文在线麻豆| 福利五区| 99久久久久| 久久人| 亚洲国产一区二区三区在线| 97av在线观看| 91国产美女丝袜足交精品视频| 日韩免费av片高清无码| 日韩99神马视频播放| ..日韩av毛片精品久久久| 久偷拍欧美日韩三区| 色官网在线| 凹凸精品熟女在线观看| 国产欧美日韩臀| 亚洲五码一区二区三区| 亚州综| 欧美日韩亚洲高清不卡一区二区三区| 97在线精品观看视频| 久久女女| 乱老熟女一区二区三区| 日本肉体xxxx裸交| 欧美影院一区二区三区| 蜜臀一二三区| 天天天肏屄欧美| 91久久久久久久久18| 亚洲网站一区二区在线| 日韩电影中文字幕| 丝袜视频一区二区在线播放国产中文| 国产精品一级片在线看| 人人操人人干xxx| 久久线上视频免费看| 欧美91网站| 亚洲 se图 欧美电影| 国产精品国产拍高清AV| 久操com| 超碰97人人cao| 草久在线| 哈哈操 大香蕉| 日韩97精| 蜜臀av网址| 蜜臀av中文字幕| 欧洲精品久久| 日本一天色道久久久精品视频| 91九久| 北京专精特新企业招聘信息| 亚州色交| 亚洲天堂电影精品一区| 大香蕉综合网| 五月丁香| 极品五月天噜噜| 盗摄 精品 另类 一区| 99热免费| 97干色天堂| 一区二区不卡| 超碰 国产熟女精品一区| 久久九九热| 极品色综合| 亚洲图片欧美| 两女互慰AV高潮喷水在线观看| 色在线综合| 91动漫操逼视频| 欧美色五月| 青青草手机在线免费观看| 粉嫩小泬久久久一区二区| 综合熟妇一区二区三区| 亚洲国产精品成人久久蜜臀| 日韩成人私密一级精品av| 可以免费观看的日韩av毛片| 高清国产av无码| 欧美97日韩| 亚洲深夜福利| 懂色中文一区二区三区| 亚洲AV成人在线| 九九成人精品| 婷婷午夜清品久久久久久久性色视频观| 亚洲97在线| 亚洲性爱无码乱伦av| 香一区二区三区| 婷婷8月天青娱乐| 九九精品无码专区免费| 日本高清电影欧美色图| baiduhicn.com。| 2020久久免费视频| 久久综合九九| 激情文学亚洲| 综合 欧美 亚洲 日本| 国产精品久久久久久夜夜夜| 午夜精品久久久99热蜜桃的功能特点| 日韩欧美性吧婷婷乱伦大香蕉| 92人人操人人| 夜夜爽夜夜摸夜夜操免费视频| 中国操逼无码| 亚洲综合性感在线| 色色毛片| 女生自91网站| 爽极品影院| 青青草成人视频在线观看二区| 青娱乐二区免费| 欧美亚综合色图| 一级片视频啪啪| 午夜精品久久久99| 国产操伦| 91嫩草在线| 91色久| 超碰2017| 国产成人主播| 欧美日本国产日韩激情视频| 日韩无码久久熟女一级片| 乱伦av麻豆| 久久精品无码专区| 91肏屄网| 国产美女mm131爽爽爽爽| 亚洲色天堂九9| 国产精品麻豆成人AV艾秋| AV中亚| 中出后入| 亚洲欧洲偷拍一区| 麻豆国产视频精品观看| 国外91| 大香蕉十区| 99久久精品无码一区二区| 九七超碰人人乐| 欧美成人亚洲精品| 国产原创剧情在线丝袜 | 99色骚| 女人天堂AV五区在线| 人人潮人人摸| 无码不卡亚洲成?人片| 久久久禁| 色天使大香蕉| 五月丁香啪啪| 91成人精品在线播放| 97综合久久| 99re6在线视频播放免费精品| 麻豆区99999| 亚洲另类综合欧美| 国产视频一区二区免费| 91在线超高颜值国产| 精品对白久久不卡| 精品国产乱码久久久久久久| 青青操在线亚洲视频观看欧美在线| 97福利视频| 在线v中文字幕一区二区三区| 秋霞一级鲁丝片A片| 天堂性色| 狠狠爱夜夜| 亚洲在饯| 久久人妻熟女一区二区| 人妻夜爽夜夜爽| 亚洲色图欧美色图在线播放| 懂色av中文字幕一区二区三区天美| 小草精彩毛片| 欧美成人国产精品| av操操不卡| 综合免费无码中文| 日韩久久.一级黄色片| 97在线青| 亚洲综合网电影91| 桃色人妻在线视频| 日韩在线观看三级电影| 综合在线导航一区| 丰满欧美少妇| 精品欧美日韩在线观看| 91婷婷| 中国黄色特级精品一区二区三区片| 亚洲AV无码AV吞精久久久久| 天天拍天天操| 超碰一区二区| 影视综合无码少妇| 亚洲国产剧情少妇激情| 嗯嗯啊啊啊好爽| 亚洲性爱无码乱伦av| 欧美 熟女 日韩| 日本在线观看网址| 亚州宗合另类| 久9九综合在线| 亚洲操操操| 噜噜噜噜久久久精品免费| 国产AV无码AV| 久久久久久裸体| 日韩一性一交一A片俄罗斯| 久久久性爱视频| 夜夜操美女| 夜夜嗷嗷一区二区| 高清一区AV无码| 福利一级版子| 特级毛片特黄久久免费看 | 美国一区二区三区视频| 亚洲综合图文| 波多野结衣一级视频| 1024手机看片欧美日韩| 人摸人人操人| 亚洲深夜福利| 情侣开房子拍 日韩无码 女的很漂亮| 日本熟妇人妻一区二区三区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 青青青在线高清视频在线一二三四区 | 欧美呦呦性爱| 日韩中文字幕宗合在线| 欧美性爱系列| 夜夜躁狠狠躁日日躁av| 天天综合有色网| 午夜无码精品免费看性色| 欧美日韩精品青青| 97久久久久久久精| 日韩国产欧美伦理在线| 人妻夜爽夜夜爽| 91偷拍欧美亚洲| 在线综合色| 人人操,人人液| 国产精品第一页国产大屁股视频免费区i| 色色色色综合网| αⅴ天堂| 人妻另类 专区 欧美 制服| 免费亚洲国产精品久久一区| 91粉芽高清在线一区二区| 久久首页| 黄片视频观看| 夜夜躁狠狠躁日日躁av| 任你干在线视频| 青青操在线亚洲视频观看欧美在线| 久久香蕉国产线看观看猫咪av| 成人AV超碰免费在线| 亚洲色交| 99re28在线观看| 伊人久日| 96久久久精品| 人妻在线大香蕉| 色鬼在线综合| 久草视频制服诱惑| 日韩AV电影网站| 天天操狠狠日夜夜干超碰撸com视频在线观看| 97精品视频| 久久内射| 欧美,亚洲,日韩,v,天堂,手机在线观看| 日日天天久久啊啊aaa| 天天爽天天爽| 亚洲福利中文字幕在线| 草草影院最新网址| 看全色黄大色大片免费视频| 91色s| 日本加勒比无码专区一二三| 91久精品| 丁香五月影院| 欧美视频边做饭边橾| 中文精品一区二去| 国产品精品自在在线午夜免费| 欧美后入式| 美女91av| 91网站18+| 日本免费一区二区不卡| 欧亚成人在线视频|