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

ARTICLE DETAIL

資訊詳情

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

SpringBoot+Vue前后端分離旅游平臺實戰(zhàn):從開發(fā)到部署上線

SpringBoot+Vue前后端分離旅游平臺實戰(zhàn):從開發(fā)到部署上線 花兩周時間把一個前后端分離的旅游平臺從零跑到部署上線是什么體驗說實話這和網(wǎng)上那些只教你某個局部功能的教程完全不同——你面對的是數(shù)據(jù)庫建模、接口設(shè)計、Vue頁面開發(fā)、前后端聯(lián)調(diào)、服務(wù)器部署一整條鏈路任何一個環(huán)節(jié)出問題整個項目就卡住。我做的這個桂林旅游景點導(dǎo)游平臺用的是SpringBootVueMyBatisMySQL這套經(jīng)典組合前后端完全分離源碼和部署流程都整理好了。如果你正在找畢業(yè)設(shè)計題目或者想通過一個完整項目把前后端分離開發(fā)整個流程徹底打通這篇可以當(dāng)你的參考路線圖里面包含了我實際踩過的坑和調(diào)通的細(xì)節(jié)不是那種只貼代碼不解釋的筆記。1. 為什么拿桂林旅游景點導(dǎo)游平臺做實戰(zhàn)項目——選題邏輯與需求拆解1.1 旅游類業(yè)務(wù)為什么適合練前后端分離做項目練手或畢業(yè)設(shè)計最怕兩件事一是業(yè)務(wù)太抽象邊界不清楚做著做著不知道該寫什么功能二是業(yè)務(wù)太復(fù)雜比如電商下單加庫存加支付物流一個人根本扛不住。旅游景點導(dǎo)游平臺恰好處在一個非常合適的區(qū)間。它的核心業(yè)務(wù)就是展示景點、規(guī)劃線路、下單預(yù)訂、用戶互動天然分成游客端和管理端兩塊。游客端需要的是景點瀏覽、搜索篩選、查看詳情、預(yù)訂門票、收藏和評論管理端需要的是維護景點數(shù)據(jù)、管理訂單、審核內(nèi)容。這種雙端結(jié)構(gòu)就是前后端分離開發(fā)最常見的業(yè)務(wù)形態(tài)前端界面偏展示型后端接口偏數(shù)據(jù)管理型兩邊各自的復(fù)雜度都不算高但加在一起能把整套開發(fā)流程完整覆蓋。從技術(shù)角度講它涵蓋的知識點非常典型列表查詢、條件檢索、分頁、詳情展示、表單提交、登錄狀態(tài)管理、文件上傳景點圖片、關(guān)聯(lián)表查詢、一對多數(shù)據(jù)組裝。這些技能幾乎是所有后端開發(fā)崗位的日常做完這個項目再去接觸電商、外賣、預(yù)約類系統(tǒng)你會發(fā)現(xiàn)業(yè)務(wù)變了但套路完全一樣基本可以平移。另外桂林景區(qū)的數(shù)據(jù)模型有天然的可擴展性比如漓江、陽朔、龍脊梯田這些景點可以掛多個分類、多條線路、若干圖片這為設(shè)計多對多關(guān)系和復(fù)雜的查詢條件提供了真實場景不用為了演示而硬造需求。1.2 功能模塊與頁面流轉(zhuǎn)先畫清楚再寫代碼我動手之前先把功能邊界列了一張表避免開發(fā)中途加需求導(dǎo)致返工。這里分享我當(dāng)時整理的核心模塊清單游客端景點列表按分類篩選、關(guān)鍵詞搜索、景點詳情圖片輪播、介紹、評論、線路推薦一日游/兩日游、門票預(yù)訂下單、個人中心我的訂單、我的收藏管理端登錄校驗、景點管理增刪改查圖片上傳、分類管理、線路管理、訂單管理查看和狀態(tài)更新、評論管理頁面流轉(zhuǎn)是這樣的用戶進入首頁看到輪播圖和推薦景點點擊景點進入詳情頁可以收藏、評論、選擇線路進行預(yù)訂下單后進入個人中心查看訂單狀態(tài)管理員通過獨立端口登錄進入后臺操作維護數(shù)據(jù)前端把操作結(jié)果通過API同步到數(shù)據(jù)庫。整個流程走下來前后端能覆蓋到的交互模式基本都有了。1.3 技術(shù)選型的實際取舍沒有微服務(wù)也沒有盲目上全家桶技術(shù)選型上我堅持一個原則能用簡單方案解決的問題不引入額外復(fù)雜度。后端用SpringBoot做基礎(chǔ)框架MyBatis做持久層MySQL存數(shù)據(jù)前端用Vue寫頁面配合Vue Router做路由、Axios做請求管理端和游客端放在同一個前端工程里用路由和權(quán)限去區(qū)分而不是拆成兩個獨立應(yīng)用。沒有引入微服務(wù)的原因很直接這個體量的業(yè)務(wù)單體應(yīng)用完全夠用拆微服務(wù)只會增加服務(wù)注冊、配置中心、網(wǎng)關(guān)這些和學(xué)習(xí)目標(biāo)無關(guān)的負(fù)擔(dān)。沒用MyBatis-Plus而用原生的MyBatis是我刻意的選擇——原生MyBatis能讓你理解Mapper接口、XML映射、動態(tài)SQL、結(jié)果映射這些底層機制一旦換成MyBatis-Plus這些細(xì)節(jié)會被封裝掉大半寫起來爽了但底層理解容易留下盲區(qū)。當(dāng)然項目后期我也嘗試過換MyBatis-Plus來做對比確實省事不少這個放到后面擴展部分細(xì)說。如果你參考過若依框架會發(fā)現(xiàn)它的前后端分離版也是SpringBootVue但若依更像是一個快速開發(fā)腳手架帶了一整套代碼生成器和管理系統(tǒng)模板對于學(xué)習(xí)來說容易迷失在框架自帶的功能里自己從零搭一遍反而對每個環(huán)節(jié)的理解更扎實。2. 后端落地SpringBootMyBatisMySQL的數(shù)據(jù)模型與接口設(shè)計2.1 數(shù)據(jù)庫表設(shè)計九張表如何撐起整個業(yè)務(wù)后端開發(fā)的第一步永遠(yuǎn)是數(shù)據(jù)庫設(shè)計。表結(jié)構(gòu)沒想清楚后面寫接口會處處別扭。我最終設(shè)計了九張表這里把核心表的結(jié)構(gòu)和設(shè)計考慮講一下。表名用途關(guān)鍵字段設(shè)計說明t_user用戶信息id, username, password, nickname, phone, avatar, role, create_time角色字段區(qū)分普通用戶和管理員密碼存的是BCrypt加密后的密文不能明文存儲t_category景點分類id, name, sort, statusstatus控制分類是否在前端展示方便下架不刪除t_scenic景點信息id, category_id, name, summary, detail, cover_image, images, price, address, status, create_timeimages字段用逗號分隔存多張圖片簡單場景下比建子表更實用t_route旅游線路id, name, days, description, cover_image, price, statusdays表示游玩天數(shù)用于前端展示一日游/兩日游t_route_scenic線路景點關(guān)聯(lián)id, route_id, scenic_id, sort多對多關(guān)系表給線路里的景點排順序t_order訂單表id, order_no, user_id, scenic_id, route_id, quantity, total_price, status, create_time訂單號用時間戳加隨機數(shù)生成狀態(tài)字段用數(shù)字表示待支付/已支付/已完成/已取消t_comment評論表id, scenic_id, user_id, content, score, create_time冗余了nickname字段避免聯(lián)查用戶表這是常見的空間換時間優(yōu)化t_favorite收藏表id, user_id, scenic_id, create_time加唯一索引(user_id, scenic_id)防止重復(fù)收藏t_banner首頁輪播圖id, image, url, sort, status首頁運營位后臺可維護這里說幾個設(shè)計要點。第一所有表都帶create_time字段而且由數(shù)據(jù)庫默認(rèn)值填充這樣插入數(shù)據(jù)時不用手動傳第二景點表的status字段很重要景點下架用的是狀態(tài)而不是物理刪除避免訂單、收藏等關(guān)聯(lián)數(shù)據(jù)失效第三線路景點關(guān)聯(lián)表里的sort字段很多人會省略但實際線路中先到哪個景點、后到哪個景點是需要排序的沒有這個字段后期補數(shù)據(jù)會非常痛苦。我當(dāng)時花了一天時間建模和調(diào)整實際開發(fā)中發(fā)現(xiàn)前期表設(shè)計多花的時間完全值得后面寫Mapper幾乎沒出現(xiàn)字段不夠用、要改表結(jié)構(gòu)的情況。2.2 MyBatis的Mapper層設(shè)計動態(tài)SQL才是效率關(guān)鍵MyBatis的配置我用了最標(biāo)準(zhǔn)的XML方式這也是面試?yán)锍1蛔穯柕膶懛?。SpringBoot中需要兩步在application.yml配置數(shù)據(jù)源和MyBatis掃描路徑然后在啟動類上加上MapperScan注解讓MyBatis掃描到Mapper接口。application.yml里的關(guān)鍵配置大概長這樣spring: datasource: url: jdbc:mysql://localhost:3306/guilin_travel?useUnicodetruecharacterEncodingutf-8useSSLfalseserverTimezoneAsia/Shanghai username: root password: yourpassword driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.guilin.travel.entity configuration: map-underscore-to-camel-case: true這里兩個比較容易踩的細(xì)節(jié)。第一個是數(shù)據(jù)庫連接串里的serverTimezone參數(shù)MySQL 8默認(rèn)時區(qū)不是中國時區(qū)不配會報時間相關(guān)的錯誤第二個是map-underscore-to-camel-case一定要開啟這樣數(shù)據(jù)庫的create_time才能自動映射到Java實體里的createTime不用手寫一堆ResultMap。景點列表查詢是典型的動態(tài)SQL場景用戶可能按分類過濾、按關(guān)鍵詞搜索、按價格排序、還要分頁。如果用MyBatis-Plus直接QueryWrapper搞定但原生MyBatis需要自己寫動態(tài)標(biāo)簽我實際寫出來的Mapper XML片段如下select idfindByCondition resultTypecom.guilin.travel.entity.Scenic SELECT * FROM t_scenic where if testcategoryId ! null AND category_id #{categoryId} /if if testkeyword ! null and keyword ! AND (name LIKE CONCAT(%, #{keyword}, %) OR summary LIKE CONCAT(%, #{keyword}, %)) /if if teststatus ! null AND status #{status} /if /where if testsort ! null and sort ! ORDER BY ${sort} /if /select這里where標(biāo)簽會自動處理第一個條件前面的AND問題這個細(xì)節(jié)是原生態(tài)MyBatis最常用的技巧。注意ORDER BY后面用的是${sort}而不是#{sort}因為排序字段是數(shù)據(jù)庫列名不能參數(shù)化但這里有SQL注入風(fēng)險我在前端傳參時做了白名單校驗只允許傳price_asc、price_desc等固定值而不是直接把前端傳的字符串拼進去。分頁我用的是PageHelper分頁插件引入依賴后在查詢前調(diào)用PageHelper.startPage(pageNum, pageSize)查詢后拿到PageInfo里面已經(jīng)封裝好了總記錄數(shù)、總頁數(shù)這些分頁數(shù)據(jù)。返回給前端的數(shù)據(jù)結(jié)構(gòu)我已經(jīng)把列表和總數(shù)都包好前端表格組件直接用total字段渲染分頁器即可。2.3 Controller統(tǒng)一返回結(jié)構(gòu)和全局異常處理少走半天彎路寫接口第二天我就發(fā)現(xiàn)一個問題如果不統(tǒng)一返回結(jié)構(gòu)每個接口返回的JSON格式都不一樣前端Axios攔截器根本沒辦法做通用處理。于是我定義了一個Result類作為所有接口的統(tǒng)一返回體。public class ResultT { private Integer code; private String message; private T data; public static T ResultT success(T data) { ResultT result new Result(); result.code 200; result.message 操作成功; result.data data; return result; } public static T ResultT error(String message) { ResultT result new Result(); result.code 500; result.message message; return result; } }與之配套的是一個RestControllerAdvice全局異常處理器把業(yè)務(wù)異常、參數(shù)校驗異常、系統(tǒng)異常分別處理統(tǒng)一包裝成Result返回。這樣做的好處是前端只需要判斷code是不是200其余情況直接彈出message即可不會因為某個接口的返回格式不一致導(dǎo)致前端解析崩潰。實際開發(fā)中我發(fā)現(xiàn)很多新手項目里Controller直接返回實體類或者Map表面上省了封裝代碼但一旦前端需要區(qū)分成功但數(shù)據(jù)為空和請求異常這兩種情況就會非常被動。再配合Valid注解做參數(shù)校驗后端在入口處就攔截掉空參數(shù)、非法參數(shù)不用在每個Service里寫一堆if判斷。2.4 圖片上傳與存儲先本地后對象存儲景點圖片的上傳管理我第一版用的是最簡單的本地存儲方案后端接收MultipartFile文件重命名為時間戳加隨機數(shù)保存到服務(wù)器指定的upload目錄再把訪問路徑存到數(shù)據(jù)庫。SpringBoot里需要配置靜態(tài)資源映射讓上傳的圖片可以通過URL直接訪問Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/upload/**) .addResourceHandler(file: uploadPath /); }這樣前端只需要用/upload/xxx.jpg就能拿到圖片。這個方案在本地開發(fā)和單機部署完全夠用代碼量少理解也直觀。如果將來要上云可以把上傳邏輯替換為MinIO或OSS前端訪問路徑完全不用變因為后端返回給前端的始終是一個URL字符串。3. Vue前端從零搭建路由、API封裝與頁面編碼3.1 前端工程化用Vite還是Vue CLI前端這部分我糾結(jié)了一下是用Vue CLI還是Vite??紤]到Vite在開發(fā)環(huán)境下的啟動速度明顯更快而且Vue官方已經(jīng)將Vite作為默認(rèn)推薦我直接用Vite初始化了一個Vue 3項目搭配Element Plus組件庫做后臺管理界面游客端頁面則用了手寫的樣式保持個性化。如果你更習(xí)慣Vue 2的寫法用Vue CLI腳手架也是一樣的思路核心技術(shù)點不沖突。安裝依賴和啟動開發(fā)服務(wù)器這步我在環(huán)境配置那篇筆記里踩過一次坑Vite需要Node.js 16以上版本版本太老會直接報錯。建議先用node -v確認(rèn)一下當(dāng)前版本再決定是否升級。3.2 路由設(shè)計游客端和管理端如何共存一個工程里同時容納游客端和管理端最核心的是路由規(guī)劃。游客端是公開訪問的管理端需要登錄后才有權(quán)限所以我拆了兩套路由一套是基礎(chǔ)路由包括首頁、景點列表、景點詳情、登錄頁另一套是管理端路由統(tǒng)一掛在/layout組件下用路由守衛(wèi)校驗登錄狀態(tài)。核心路由表長這樣const routes [ { path: /, component: Home }, { path: /scenic, component: ScenicList }, { path: /scenic/:id, component: ScenicDetail }, { path: /login, component: Login }, { path: /admin, component: AdminLayout, meta: { requiresAuth: true }, children: [ { path: scenic, component: AdminScenic }, { path: order, component: AdminOrder }, { path: comment, component: AdminComment } ] } ]; router.beforeEach((to, from, next) { const token localStorage.getItem(token); if (to.meta.requiresAuth !token) { next(/login); } else { next(); } });這里的關(guān)鍵點是meta里的requiresAuth標(biāo)記。我一開始把權(quán)限判斷寫死在每個頁面的created里結(jié)果發(fā)現(xiàn)每個頁面都要粘貼一遍判斷代碼后來統(tǒng)一收斂到路由守衛(wèi)里代碼干凈很多。3.3 Axios封裝請求攔截器和響應(yīng)攔截器的分工幾乎所有前端請求都要做兩件事自動攜帶token、統(tǒng)一處理錯誤提示。我封裝了一個request.js核心邏輯如下const request axios.create({ baseURL: /api, timeout: 10000 }); request.interceptors.request.use(config { const token localStorage.getItem(token); if (token) { config.headers.Authorization Bearer token; } return config; }); request.interceptors.response.use( response { const result response.data; if (result.code 200) { return result.data; } if (result.code 401) { localStorage.removeItem(token); router.push(/login); return Promise.reject(new Error(登錄已過期)); } ElMessage.error(result.message); return Promise.reject(new Error(result.message)); }, error { ElMessage.error(網(wǎng)絡(luò)請求異常); return Promise.reject(error); } );baseURL用的是/api配合前端開發(fā)環(huán)境的代理配置把請求轉(zhuǎn)發(fā)到后端的localhost:8080。響應(yīng)攔截器先判斷Result.code只有200才把data返回給頁面其他情況直接彈出錯誤提示頁面里的業(yè)務(wù)代碼就不用再重復(fù)寫錯誤處理了。這種方式讓頁面的請求代碼從十幾行縮減到幾行而且審查得很清楚。3.4 核心頁面實現(xiàn)列表頁、詳情頁和下單流程景點列表頁是典型的查詢條件表格/卡片布局。頁面加載時調(diào)用getScenicList方法傳入分類篩選條件和搜索關(guān)鍵詞const getList async () { loading.value true; try { const result await getScenicList({ categoryId: categoryId.value || null, keyword: keyword.value, pageNum: pageNum.value, pageSize: 10 }); scenicList.value result.list; total.value result.total; } finally { loading.value false; } };景點詳情頁要展示的是基本信息圖片輪播評論列表收藏按鈕預(yù)訂入口。數(shù)據(jù)來源分別是景點詳情接口、評論接口和收藏接口。詳情接口一次返回景點基本信息評論和收藏分別在頁面掛載時并行請求用Promise.all控制并發(fā)請求結(jié)束狀態(tài)避免一個接口阻塞整個頁面渲染。下單流程我簡化成了訂單創(chuàng)建邏輯前端先拉取景點和線路信息用戶選擇游玩日期和數(shù)量點擊提交后調(diào)用createOrder接口后端生成訂單對象并寫入數(shù)據(jù)庫前端帶著返回的訂單編號跳轉(zhuǎn)到我的訂單頁面展示支付狀態(tài)占位。整個流程雖然簡化了但訂單表的狀態(tài)機設(shè)計保留了完整邏輯以后接支付網(wǎng)關(guān)可以平滑擴展。3.5 后臺管理頁面表格加彈窗是標(biāo)配管理端頁面沒有做太多創(chuàng)新設(shè)計就是扎實的表格加彈窗表單左側(cè)導(dǎo)航固定右側(cè)內(nèi)容區(qū)用Element Plus的el-table展示數(shù)據(jù)頂部的工具欄放新增和條件搜索行內(nèi)放編輯和刪除按鈕。新增和編輯共用一個彈窗表單通過判斷row參數(shù)是否存在來區(qū)分模式。景點管理頁是管理端里最復(fù)雜的因為涉及圖片上傳。上傳邏輯是先調(diào)upload接口把圖片存到后端拿到返回的URL后再把這個URL作為表單字段提交。如果先提交表單再上傳圖片會出現(xiàn)圖片還沒傳完表單已經(jīng)提交的情況處理起來很別扭。調(diào)整順序之后整個流程穩(wěn)定多了。4. 聯(lián)調(diào)階段值得記錄的四個問題——CORS、JWT、日期格式與空值前后端分離開發(fā)必然要面對聯(lián)調(diào)這一階段我實際遇到的問題比開發(fā)階段多得多挑了四個典型記錄在這都是常規(guī)文檔不太會細(xì)講的內(nèi)容。4.1 跨域問題的完整排查鏈路開發(fā)模式下前端跑在5173端口后端跑在8080端口瀏覽器直接發(fā)請求必然觸發(fā)跨域。我在后端項目里加了一個CorsConfig的Bean用WebMvcConfigurer配置允許跨域指定允許的路徑、域名和方法。但如果你的前端請求帶Authorization頭還需要單獨考慮Header暴露否則前端Axios拿不到響應(yīng)頭里的狀態(tài)信息。我實際排查時發(fā)現(xiàn)了一個隱蔽問題后端雖然配置了CORS但Spring Security如果存在它的攔截器優(yōu)先級更高跨域配置可能被Security的過濾器提前攔截掉。好在我的項目沒有引入Spring Security用自定義攔截器做鑒權(quán)跨域配置直接生效。如果你的項目同時有Spring Security需要額外配置Security的CorsConfigurationSource。4.2 JWT登錄鑒權(quán)的實現(xiàn)細(xì)節(jié)和放行規(guī)則登錄態(tài)管理我選了JWT原因很簡單服務(wù)端不需要存session適合前后端分離的分布式場景。后端在用戶登錄時生成token返回給前端前端存儲到localStorage請求時通過Authorization頭攜帶后端寫一個攔截器統(tǒng)一校驗。JWT的關(guān)鍵實現(xiàn)邏輯不算復(fù)雜用jjwt依賴生成tokensub放用戶IDexp設(shè)置過期時間為24小時。真正容易出問題的是攔截器里哪些路徑要放行。如果攔截器配置成所有接口都要驗證那么登錄接口自身也被攔截了因為登錄時根本沒有token。我的配置方式是登錄接口、景點列表接口、景點詳情接口這些公開接口放行管理端接口全部要求登錄個人中心和訂單相關(guān)接口必須登錄。用攔截器的時候注意放行規(guī)則應(yīng)該寫成白名單形式而不是黑名單——只明確列出不需要登錄的路徑其余全部攔截這樣更安全。4.3 日期格式和null值的隱形坑排查過兩個坑。第一個是前端傳2025-06-01給后端后端用LocalDateTime接收直接報格式錯誤。原因是Jackson默認(rèn)只認(rèn)識ISO格式需要全局配置日期格式我在application.yml里加了spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT8第二個坑是數(shù)據(jù)庫的date字段傳到前端后顯示成2025-06-01T00:00:00.00000:00這樣的UTC格式前端要再轉(zhuǎn)換一次。后來我在實體類的日期字段上加了JsonFormat注解指定輸出格式前端直接拿到2025-06-01 00:00:00就省事了。null值的問題體現(xiàn)在分頁接口上當(dāng)列表為空時后端返回的list是null還是空數(shù)組直接影響前端v-for渲染。我統(tǒng)一處理為只要數(shù)據(jù)庫沒查到數(shù)據(jù)返回空數(shù)組而不是null前端不用寫一堆空值防御代碼。4.4 MyBatis動態(tài)SQL里if判斷等于0的問題這是我在寫篩選功能時真正踩過的坑。定義用戶的角色字段時我一開始判斷條件寫了if testrole ! null and role ! 結(jié)果前端傳role0管理員時條件不生效因為MyBatis的OGNL表達(dá)式把數(shù)字0當(dāng)成了false空值處理。排查半天才定位到問題不是SQL邏輯而是MyBatis對整數(shù)類型的if判斷有個特殊規(guī)則數(shù)值為0時非空判斷不成立。解決方式有兩種一是改用String類型傳參傳0而不是0二是判斷條件寫全if testrole ! null and role ! 并在Service層把0轉(zhuǎn)換成字符串。我最后選擇在后端把篩選參數(shù)的類型統(tǒng)一調(diào)整避免這類隱蔽問題再次出現(xiàn)。5. 從開發(fā)機到云服務(wù)器完整部署流程與配置清單項目在本地跑通只是第一步部署到服務(wù)器才是完整閉環(huán)。我用的是一臺Linux云服務(wù)器配置是2核4G對這套系統(tǒng)來說完全夠用。5.1 服務(wù)器基礎(chǔ)環(huán)境準(zhǔn)備JDK、MySQL8、Nginx部署環(huán)境三件套JDK、MySQL、Nginx。我的服務(wù)器是CentOS系統(tǒng)JDK用tar包解壓安裝MySQL用官方rpm源安裝Nginx用yum直接裝。具體步驟不贅述但有幾個關(guān)鍵點必須提醒。MySQL裝完一定要執(zhí)行mysql_secure_installation做基礎(chǔ)安全配置否則root空密碼裸露在公網(wǎng)上很快會被掃描爆破。另外MySQL 8的密碼策略比5.7嚴(yán)格設(shè)置密碼時要滿足長度和復(fù)雜度要求否則會報錯。數(shù)據(jù)庫導(dǎo)入就是把本地導(dǎo)出的SQL文件用source命令執(zhí)行一遍注意在導(dǎo)入前先創(chuàng)建好數(shù)據(jù)庫并指定默認(rèn)字符集utf8mb4否則中文會亂碼。5.2 后端打包發(fā)布Maven打包與Systemd守護進程后端工程是標(biāo)準(zhǔn)的Maven項目打包命令非常簡單mvn clean package -DskipTests打包后在target目錄生成一個jar包。上傳到服務(wù)器后我一開始用java -jar前臺啟動但關(guān)掉SSH窗口進程就死了。后來寫了一個Systemd服務(wù)文件讓后端作為守護進程運行[Unit] DescriptionGuilin Travel Backend Afternetwork.target [Service] Userroot WorkingDirectory/opt/guilin ExecStart/usr/bin/java -Xms512m -Xmx512m -jar /opt/guilin/guilin-backend.jar SuccessExitStatus143 Restartalways RestartSec10 [Install] WantedBymulti-user.target配置好之后執(zhí)行systemctl enable設(shè)為開機自啟用systemctl start啟動用journalctl -u guilin-backend查看日志。啟動參數(shù)里Xms和Xmx設(shè)置一樣大避免了JVM動態(tài)擴展內(nèi)存帶來的性能抖動2G內(nèi)存的服務(wù)器運行很平穩(wěn)。5.3 前端構(gòu)建與Nginx反向代理配置前端構(gòu)建相對簡單npm run build會生成dist目錄里面是純靜態(tài)文件。把這個目錄上傳到服務(wù)器配置Nginx指向它同時把/api路徑反向代理到后端8080端口這是前后端分離項目部署最核心的一步。server { listen 80; server_name your_domain_or_ip; root /opt/guilin/dist; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /upload/ { proxy_pass http://127.0.0.1:8080; } }location /里的try_files配置很關(guān)鍵它把前端路由的刷新請求都指向index.html否則在頁面里點路由刷新會出現(xiàn)404。如果不加這個Vue Router的history模式部署后刷新就白屏這是前后端分離部署最常見的坑之一。5.4 部署上線后必須檢查的性能隱患上線后我做了幾項檢查。第一是MySQL連接串里的useSSL參數(shù)部署環(huán)境如果MySQL配了SSL但連接串是useSSLfalse會一直報SSL連接錯誤排查方式是看后端日志里at com.mysql.cj.jdbc的報錯堆棧非常典型。第二是MySQL最大連接數(shù)默認(rèn)151如果前端并發(fā)不高還好但測試階段用壓測工具一跑就會把連接池打滿建議配置到300以上。第三是JVM的GC日志觀察Full GC頻率如果太高說明堆內(nèi)存設(shè)置不合理。我把這些檢查項整理成了一個部署檢查清單每次部署新項目都按這個順序過一遍防火墻端口是否放行、數(shù)據(jù)庫是否可遠(yuǎn)程訪問、后端進程是否守護運行、Nginx是否配置反向代理、靜態(tài)資源能否訪問、接口能否通過域名請求。6. 項目復(fù)盤這套系統(tǒng)還能怎么擴展6.1 換用MyBatis-Plus到底能省多少事項目完成之后我把Mapper層整體換成了MyBatis-Plus做了一個對比實驗。同樣的分頁查詢用MyBatis-Plus的Page對象加LambdaQueryWrapper代碼量確實減少了大概四成不再需要手寫XML里的動態(tài)SQL標(biāo)簽簡單查詢一句lambda表達(dá)式搞定。如果你追求開發(fā)效率MyBatis-Plus確實值得用。但如果你還在學(xué)習(xí)階段我強烈建議先用原生MyBatis把動態(tài)SQL、ResultMap、多表查詢這些底子打好再切換效率方案否則出了問題都不知道從哪排查。6.2 進階方向地圖、Redis和對象存儲這套系統(tǒng)繼續(xù)擴展的方向很清晰。第一是接地圖SDK在景點詳情頁展示景點位置在旅游線路頁展示線路軌跡這個只要申請地圖開放平臺的密鑰前端引入對應(yīng)的JavaScript庫就能實現(xiàn)數(shù)據(jù)模型已經(jīng)預(yù)留了經(jīng)緯度字段。第二是引入Redis做緩存和熱點數(shù)據(jù)加速比如首頁輪播圖、景點列表熱門數(shù)據(jù)緩存起來后數(shù)據(jù)庫壓力會明顯下降。第三是把本地圖片存儲替換為MinIO或云對象存儲解決單機磁盤容量和訪問帶寬的問題。如果要做視頻類內(nèi)容也可以參考Vue播放m3u8這類視頻流方案的集成方式把景區(qū)宣傳視頻嵌進詳情頁。6.3 給準(zhǔn)備復(fù)用源碼的朋友的建議如果你打算在這個項目源碼基礎(chǔ)上做二次開發(fā)或改造我有幾條實際建議。第一數(shù)據(jù)庫SQL文件和Redis的配置項都在源碼目錄里有導(dǎo)入后記得修改application.yml里的數(shù)據(jù)庫密碼和IP地址。第二前端管理端的賬號是初始化時手動寫入數(shù)據(jù)庫的登錄時密碼經(jīng)過BCrypt加密不要直接用明文SQL插入否則登錄會失敗。第三運行項目前最好先按照我前面說的流程把環(huán)境確認(rèn)一遍JDK版本、Maven版本、Node版本、MySQL版本每一步都用命令行驗證避免浪費一下午在環(huán)境配置上。我在實際運行中發(fā)現(xiàn)前后端分離項目真正花時間的不是寫代碼而是調(diào)通鏈路從瀏覽器發(fā)請求到Nginx到SpringBoot到MyBatis到MySQL數(shù)據(jù)再原路返回渲染整個過程每個環(huán)節(jié)都可能出問題而多數(shù)問題不在你自己的代碼里而在配置和環(huán)境的默認(rèn)設(shè)置中。所以調(diào)試時一定要習(xí)慣看完整報錯堆棧一層層往下追而不是只看最上面那段異常描述。多踩幾次坑把每一個問題的排查路徑記下來你的排錯速度會隨著項目數(shù)量增長得越來越快。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
www久久国产精品| 人妻天天爽| 亚洲国产欧美另类自拍| 国产在线综合网| 国产三级片在线观看| 欧美激情精品| 天天看夜夜看日日干| 国产黄色小视频网站| 秋霞一级A片黄色视频| 色网在线视频观看免费| 丁香五月综合| 久久久久骚| 人妻酒店出差被中出免费在线播放| 久操操| 天操老女人| 久久亚洲一区女同性恋中文字幕 | 91在线精品| 内射小黄片| 中文字幕青青草| 亚洲啪啪视频免费| 东京热AV男人的天堂| 操B视频日韩无码| 台湾佬中文娱乐自偷自拍| 91丨九色丨43老版熟女| 啊啊啊啊啊操我视频| 2010男人的天堂| 人妻天堂综合网| 青青青草伊人精品| 天天看天天日天天操| 青草青草久热| 97香蕉人人乳| 国产精品96久久久久久| 五月婷婷色| 青青青艹在线视频| 欧美日韩插逼视频| 国产欧美第五页| 嗯,啊。舔我逼| 国产家庭乱伦性爱视频| 91女人的网站| 视频一区二区免费在线| 人妻日日夜夜精品| 9久热这里只有精品| 男男H黄动漫啪啪无遮挡网站| 1204av韩国| 美国日韩黄片| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 伊人丁香五月婷婷| 日韩有码免费视频| 日本阿v天堂在线观看| 国产免a费看黄片在线| 久久人妻| 青青草视频在线观看一区二区| 久久精品噜噜噜成人看免欧美大片| 91 偷| 这里是精品| 日日狠狠久久偷偷色综合免费| 啊啊啊免费| 天美国产精品| 欧美九九九九九| 韩日欧亚a级| 蜜臀色乳| 三级激情网站| 老师充足的奶水小说| 中国的操老妇女| 精品一区96| 岛国AV一区二区电影| 亚洲制服欧美另类内射| 超碰久久草| 国产乱伦视频污| 日本男人插女人的逼黄色| 日韩欧美字幕亚洲一区二区| 欧美九九九| 亚洲影院小综合| 偷窥自拍亚洲天堂网爆| 天天视频网站黄| 老司机福利社视频在线观看| 亚洲AV免费在线观看| 国产精品一级特黄aaa大片在线观看| 日本精品免费一区二区三区四区| 五月天大香蕉| 日本熟女中文字幕一区| 亚洲日韩国产精品| 98超碰欧美| 日韩欧美偷拍美女视频| 人妻插插人妻人| 立川理惠无码一区二区| 国产精品视频自拍在线| 少妇熟女一区二区三区| 性生活性生大爱77AV国产| 亚洲色图a| 日韩免费人妻色情网站| 大屁股xxxxx| 国内毛片婷婷六月色| 乱操乱伦AV| 欧美色狠| 国产资源中文字幕在线| 国产一区二区三区高清视频| 女人久久久| 日本人妻中文字幕精品| 亚洲欧美人妻| 精品天堂| 亚洲色 国产 欧美 日韩| 台湾成人无码AV| 99超碰色| 91碰碰| 国产天天骚| 亚洲 暴爽 AV人人爽日日碰| 九九久精品| 色综合九九| 久久riav中文精品| 久久性爱精品一区| 日韩欧美午夜视频在线| 亚洲码专区| www.丁香五月| 欧美午夜色妇色鬼| 亚州国产成人精品女人久久| av橘色网站| 日韩小电影| 日产欧美电影一区二区三区| 国产 亚洲 一二三四| 久久无码一区二区二三区性色| 日韩操逼性鲍| 色墦五月丁香| 久久久久久久久久黄色网| 日夜尻逼网| 色综合一区二区三区| 亚洲欧美日韩免费电影| 欧美色五月| 野狼激情网| 亚洲精品一卡二卡三卡福利视频网站 | 人妻精品视频一区二区| 91丨九色丨大屁股| 欧美aⅴ99久久黑人专区| 久热这里| 青青操综合网| 综合网亚| 强被迫伦姧在线观看无码网站| 岛国黄色短视频| 激情抓乳插进去啪啪啪日韩| 亚洲动态色图| 免费观看国产小粉嫩喷水精品午| 色婷五月天| 亚洲精品国产精品乱码不99| 亚洲图片视频小说| 青青草视频这里只有精品| 国产中文字幕在线观看| 伊人女女资源在线观看| 欧美成人黄网色网站| 99热综合| 欧美色图天堂网m| 91性网| 91丝袜激情在线| 日韩钢筋无码高清啾啾啾| 男人天堂综合| 一区二区播放| 熟女人妻精品一区二区视频 | 欧美日韩国产成人高清| 日韩一级二级三级免费看完整版| 91P0RNY大屁股人妻| 亚洲AV无码翔田千里网站| 久久精品色欧美aⅴ一区二区| 五月婷婷综合在线| 久久天天躁日日躁狠狠躁| 欧亚乱色熟一区二区三四区| 综合91网| 91热| 日韩亚洲欧美中文字幕| 99在线观看| 天天天堂影视日韩亚洲91| 91天天| 无码区蜜乳| 韩日性爱av| 最近的最新的中文字幕视频| 日韩99999| 91精品大奶人妻| 久久噜| 探花视频免费观看国产专区| AV污污污污| 97色诱| 成人乱人伦一区二区| 荡小穴在线观看| 97在线欧| 91香蕉视频在线观看免费| 闷骚老熟女15P| 69精品| 亚洲夜色在线| 最新日日夜夜天天干干| 久久AV无码1区2区3区| 女人久久久| 欧美在线播放aaaa| 九九九成人| 高清孕妇孕交 交| 亚洲91极品| 成人无码电影在线观看网| 色综合中文字幕不卡| 老熟妇一区二区三区啪啪| 淫穴高潮色图| 天天色黄色影院天天操| 男女性无套 免费九一| 嗯嗯嗯啊啊啊在线免费观看| 国产精品电影大全| 91天天爱| 九九热免费视频| 另类小说欧美激情校园春色| 91丝袜美女| 欧美十八禁视频| 国产情色在线| 天色综合网| japan日本高清乱xxxx| 欧美人妻少妇| 视频不卡中文字幕| 国产精品97超碰| 超碰调教97| 最新日韩黄片| 一区二区三区视频在线观看免费| 国产毛片毛片4p懂色| 一卡二卡三卡| 亚洲性少妇| 美欧老女人97| 亚州色图欧美| 99re在线精品78| 欧美国产伊人久久久久| 日韩免费在线视频观看| 日韩成人性爱AV| 秋霞影音一区二区三区| 囯产精品久久久久久久久久梁医生 | 妇女一区二区三区| 久久久天堂| 99热在线只有精品| 97色综合中文网| 大香蕉视频一二三区| 美女诱惑一区| 成人av性爱电影在线观看| 天天插网| 自拍偷拍2025在线观看| 亚欧性爱在线无码| 丁香激情网| 色色婷| 婷婷色色五月天| 偷窥自拍亚洲色图| 青青青国产| 97自拍一区| 天天天天做夜夜夜夜做| 激情小说激情视频| 熟女探花啪啪| 牛牛aV| 情侣开房子拍 日韩无码 女的很漂亮| 殴美,日韩国产伦精品| 精品国产乱码久久久久久影片| 成人 日韩欧美一区| 97色97好| 欧美色就是色| 日韩性爱网址| 欧美亚洲宗合色性图| 久久人妻一区二区三区高清| 国产综合日韩伦理| 十八禁啪啦拍视频无遮挡| 偷拍 精品 另类 四区| 自拍大香蕉乱插| 久久超碰av在线| 精品乱码在线观看| 日韩A优精品在线观看| 久久精品国产亚洲AV嘿嘿| 久久97精品久久久久久久不卡| 91在线欧色| 少妇被c 黄 免费观看| 中文字暮97| 五月天久久人妻| 淫淫综合网| 婷婷丁香久久| 亚洲欧美啪啪| 91丝袜美腿网站| 亚州日韩97| hd成人一区二区在线| 综合色拍| 韩日精品四区| 国产精品爆乳懂色蜜乳| 天天日天天舔东京热| 国产女人极品高潮毛片| 97超级久久| 超碰97网址| 亚洲中文字幕av| 探花视频免费观看国产专区| 国产和美国毛片| 欧亚乱色熟一区二区三四区| 欧美性爱第一区| 久久免费9| 亚洲熟女乱综合一区二区三区| av资源在线播放天堂| 欧州一区二区三区四区| 99热这里只有精品1| 九九九久千久久激情蜜桃在线看 | 人妻久热在线| 国产亚洲精品久久久久小| 91精品国产91久久久久久久久久久久| 久久9 9 9精品| 久久久久9| www.大香| 欧美日韩日产免费网站看| 不卡视频一区蜜桃视频| 久久九九精品一区二区| 91中文精品日韩欧美在线 | 久久女婷| 亚洲无码太久| 91亚洲黑人| 51一区二区三区| 男人天堂新在线| 日韩图区| 91干熟女| 射丝袜高跟鞋99| 亚洲一二三四区在线免费看视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 91亚洲人| 国产25页| 殴美性天天| 国产极品99热在线播放69| 九九九网站| 999狠狠综合| 亚洲黄色网址视频| 人妻铁牛TV| 欧美性Fer办公室秘书| 97综合在线观看| 人妻99p| 久久伊人最新网址视频| 九99久久| 亚州春色| 国产suv精品一区二区四区999| 90后性网国产欧美| 99久久精品国产高潮| 国产在线视频午夜精华在| 男人的天堂Va| 91国产伊人大香蕉| 老鸭窝日丰县女人| 人妻超碰青青草98| 中文字幕诱惑制服人妻丝袜美丝袜美 | 91在线欧美| 亚洲日韩97| 久久偷偷色综合蜜桃| 久久大黄片| 99re免费视频精品全部| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 九九这里只有精品| 强奸乱伦中文字幕AV| 在线一道啪| 无码高清专| 国产精品秘 福利姬在线观看| 99色色| 无遮挡一级毛片视频免费的| 男女性扦B| 中国AV美女| 五月天伊人| 激情视屏国产乱伦强奸| 青娱乐淫乱1314| 久久久91福利姬| 久久9精品视频| 中文自拍欧美影视| 久久久亚洲Av| 福利视频合集| 密臀在线视频| 97在线播放 | 一区久久久二区| 在线视频免费播放一区| 亚洲男人久久综合天堂| 2020中文字幕在线观看| 亚洲人综合19| 欧美的精品的视频| 亚欧操逼片在线观看| 天天综合网1| 日本青青草在线| 五月婷久久| 国模精品娜娜一二三区 | 91久久堂| 97精品视频免费| 亚州操操穴网| 91在线美女| 蜜臀少妇一区二区| wwwss在线观看| av一区二区三区 中文| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 久久九九99| 熟女被操视频网址| 熟女被操视频网址| 婷婷五月天社区| 久久久久久久久久8888| 亚洲国产日韩欧美熟妇在线| 影音先锋国产精品| 国产丝袜视频| 天天摸夜夜摸| 激情四射五月天| 青娱乐手机日韩在线视频| 操一区| 成人一区二区三区四区| 九九超碰综合网| 99日视频在线免费| 婷婷激情四射| 2024黄色视频| 这里只有精品视频在线观看麻豆 | 色老牛| 北野未奈加勒比av| 亚洲人精品久久久| 精品九九九| 日本成人免费一区二区三区| 丰满人妻一区二区三区性色| 国产 热久久久久国产精品| 欧美激情中文字幕另类小说| 国产精品午夜高潮呻吟久久av| 中字乱伦AV| 91无码中出人妻视频| 欧美三级一级| 成人一区二区三区四区| 国产视频第二页| 午夜成人爽爽爽爽A片李冰冰| 亚洲国产成人7777| 免费a在线播放v| 99色综合| 超碰98综合网| 一二三区精品视频| 人人操人人摸人人看人人插| 91啪啪视频| 麻豆国产原创AV色哟哟 | 郑州宾馆老熟女露脸啪啪| 中文字幕在线高清男人的天堂| 日韩有码一区三区| 久噜噜| 欧美宗合网| 88xx成人精品视频| 免费看日产一区二区三区| 无码91| 208天天久久九九九| 蜜臀久久99精品久久久久久无删减 | 四虎免费视频| V A在线| 九九探花视频在线观看| 久久伊人网视频一区二区三区 | 色黄色美女大长腿午夜视频| 97久久精品亚洲| 亚洲色图伊人网| 国产精品香蕉| 色婷久久| 啊啊啊好疼| 欧美精品久久久久久久丰满| 殴美,日韩国产伦精品| 九九九九免费视频| 无码区蜜乳| 麻豆天美国美国产AV| 偷拍色图| 51久久夜色精品国产麻豆| 五月丁香综合激情| 超碰在97| 天天日日本| 国产精品探花色| 性欧美第一页| 亚洲精品aa久久伊人| 精品91摸| 亚欧美色| 水澄无码AV| 精品人妻一区二区三区蜜桃视频| 日本操大逼| 亚熟在线| 精品无码一区二区三区色欲| 一本正道久久熟女| 天天射夜夜操| 在线观看十八禁| 亚洲男人天堂手机版| 免费啪啪啪网站18岁| 中文熟女五十乱码在线| 黄在线| 久操 高清| 乱操乱伦AV| 欧美日韩人人精品| 国产精品懂色tv影视免费观看| 婷婷丁香五月综合| 超碰97人妻在线| 久久免费中文字幕在线观看| 中文乱码字字幕在线第5页| 嗯啊不要在线观看嗯啊| 欧美欧美啪啪视频| 日韩久久艹| 日韩精品免费高清视频在线| 欧美性视频二区三区| 强奸乱伦Av网| 午夜美女诱惑电源网| 日本午夜久久电影| 伊人麻豆传媒| 色五月69夫妻| 日韩激情中文字幕有码| 淫淫综合网| 久7色| 最新av中文字幕高清| 亚洲视频一二区| 欧美,日韩综合久久| 香蕉大久久久| 日韩免费人妻色情网站| 精品一区二区国产日韩| 日日干夜夜欢| 国产少妇肉丝在线观看| 亚洲黄片免费在线播放| 大屁股熟女一区二区三区| 亚洲色欲天天人妻无码系列专区| 98久久超碰| 一区=区三区视频| 97在线观看播放视频| 亚州五月| 欧美色图片91| 亚洲第一无码播放立川理惠| 亚洲毛片基地专区| 伊人伊人LD| 99久久99九九99九九九| 亚洲男人综合| 9九九国产| 国产精品青青草| 精品国产丝袜一区二区三区乱码| 台湾佬大香蕉| 黑人与人妻| 五月激情影院| 无码精品久久久天天影视| 欧美丝袜91| 国产嫩草精品A88AV在线| 人人干人人操人人..com| 欧美少妇色图| 精品国产乱码久久久久久免费| 日韩久久超碰色| 日韩去日本高清在| 久久久一区二区三区三州| 风间由美日韩欧美久久| 亚洲国产精品久久久男人的天堂| 九色 人妻 大香蕉| 国产精品秘 福利姬在线观看| 欧美人人操人人插| 天天cao在线| 天天干1区2区在线| 蜜臀AV成人精品蜜臀| 日韩97超碰中文字幕| 国产精品久久久久久无码红治院| 青草成人免费视频一com| 欧美日日人人天天| 色欧洲97| 亚洲涩涩| 夜草欧美| 在线视频五十市| 九九热九九热| 插入综合网| 五月天激情网图片| 无套内射性感少妇视频| 日本操嫩b网| 国产中文字幕在线点播| 人人性爱视频免费| 色婷婷国产精品一区在线观看| 亚洲第一男人天堂| 欧美精品,四区。五区| 97看操| 免费9 1久久| 裸体女人草逼视频播放一区,二区,三区,四区,五区| 97色婷婷| 五月婷婷hd| 日韩欧美成人综合在线| 中文字幕后石码三区四区| 韩国一级做a久久久久| 欧美精品成人在线播放| 97人亚洲综合字幕| 日日日啊啊啊| aaa亚无码专区| 精品国产Av无码久久久伦古装| 中文字幕一区二区三区视频播放| 久久久久国产精品片区无码直播| 免费看毛片操穴| 男啪女色黄无遮挡免费观看| 狠狠超| 天天92av| 亚洲成人激情小说视频| 日韩无码人妻| 午夜福利无毒不卡| 久久社区一区二区三区| 成人性爱美曰韩| 日本午夜福利影院| 五月婷在线| 亚洲色堂免费视频| 美女91在线观看| 欧美亚洲宗合色性图| 中国熟女91| 日本精品加勒比海一区| 国产传媒日韩| 午夜乱轮操逼视频免费看| 人人操肉肉| 在线视频日韩欧美国产| 天天爽天天爽| 抽查国产福利主播| 龙兴卡官方查询| 深夜激情| 人人操人人爽人人操人人| 国产欧美精选自拍一区| 日韩成人综合网| 熟妇视频一区二区三区在线观看| 中出后入| 偷拍精品一区二区三区| 丰满高潮18xxxx| 精品国产乱码久久久久A| 大香蕉伊人在线成人AV在线观看| 亚洲综合伊人| 亚洲不卡三级手机播放| 强奸乱伦日韩AV| 欧美色三级片91| AV色五月天| 91人妻人人澡人人爽人人精品| 久热在线精品免费观看| 色丁香五月婷婷| 久久蜜色情在线视频xxx免费观看| 欧美日韩国产色五月综合在线| 色五月AV| 国产亚洲综合欧美一区| 97超级欧美| 九九九九精品精| 操操逼操操逼操操逼逼| 狠狠躁AV| BBBBB97COM| 日韩成人精品视频自拍| 日韩午夜啪啪视频| 四虎884| 夜夜嗨AV蜜臀av| 香蕉国产97| 国产精品视频自拍在线| 久久久久精| 日本亚欧爱爱| 2020中文在线一区二区三区| 97九色人妻| 天天综合91入口| 国产AV无码AV| 97精品综合久久网| 岛国黄片网站| 蜜臀久久99精品久久久久久久久| 狠狠97| 日韩欧美tv一区二区在线观看| www.四虎在线| 日韩亚洲欧美中文字幕| 人人人人人人少妇| 9久久久久久| 亚洲福利中文字幕在线| 呻吟 欧美 日本 中出| 人人操人人干网页| 骚熟女吞| 男人天堂黄片| 日韩欧美偷拍美女视频| 中文字幕一区二区三区字幕| 九九成人精品| 激情 欧美 亚洲 小说| 国产日韩精品一区二区三区| 久久91| 狠狠中文字幕| 欧美色亚洲| 五月天春色激情网| 美国日韩黄片| 91美女在线视频| 午夜福利av电影在线| 国产乱人妻精品入口| 一级做a爰片久久毛片图片| 久久久久久九九九九-美女久久久久久久-成人AV| 亚洲黑人在线| 午夜性| 久久精品日韩| 后入日本1234| 色五月亚洲| 97日韩| 色婷婷婷五月天激情四射| 国产高清吃奶免费视频网站| 欧美性天天影院| 久久精品国产亚洲AV成人直播| 久久久久久中文| 久久极品伊人| 天天爽夜夜爽夜夜爽精| 亚洲色91C| 国内精品伊人久久久久影院会| 9美女超碰在线免费观看| 男人的天堂不卡一区二区| 日韩三级伊人| 大香蕉啪啪啪啪在线| 久久99午夜精品一区人妻| 后入人妻无码| 日本不卡码黄色| 十八禁的黄污污免费网站| 久久精品国产97欧美精品亚洲| 97色色网| 国内偷自视频区视频综合| 精品欧美日韩在线观看| 69人妻精品一区二区绯色| 1769一区| 天天综合站| 日韩精彩免费| www黄片免费看com| 91精品老女人| 任你干在线视频| 东京热激情视频一二三区| 国产精品久久久久久久AV大片 | 精品日日人妻| 欧美色一二三| 色综合99| 做爱A级亚欧| 91色花堂| 午夜视频久久久| 综合 青草 伊久久 影院 综合| 欧美一级黄色18片免费看| 精品人妻一二三| 伊人久久亚洲色欲综合网站 | 亚州91| 超碰是碰在线观看| 日韩天堂av电影在线观看 | 91熟女网| 粉嫩久久久极品| 亚洲妇色| 亚洲情色五月天| 岛国成人av在线播放网址| 国内毛片热久久思思热| 人妻精品一区二区三区| 日本中文字幕熟妇| 中文字幕久久精视频久久大全| 五月丁香色综合| 无码乱人伦中文视频| 久操操AV电影| 婷婷色综合欧美日韩| 91大香蕉伊人| 五月天欧美色图| 使劲用力艹少妇视频一区二区| 毛片视频白嫩| 防屏蔽在线视频| www久久99| 一级久久性爱视频| 蜜乳AV一区二区三区四| 中文字幕91页| 欧美aaaaaaa| 国产精品熟女九色九色蜜臀| 精品亚洲一区在线观看| 日韩视频中文字幕| 亚洲国产精品成人久久蜜臀| 天天爱天天操| 欧综合网| 久久久蜜桃臀无码视频| 亚洲se91| 久久久久久9| 狠日欧美| 亚洲欧美天堂| 欧美亚洲天堂| 日本精品一级二级三级| 日本乱人伦片中文三区| 久久在线观看免费视频| 日本成人免费一区二区三区| 亚洲成人精品在线一区| 白丝被操91| 欧美偷拍区| 中国少妇XXXX做受| 人妻乱仑一区二区三区| 操逼网站视频漫画国产| 国产精品一区二区黄片| 九九热视频在线观看| AV 少妇 人妻 偷拍| 青青草自拍视频在线播放| 一区二区三区网站日日骚| 欧美熟妇人体| 国产第二页| 偷拍99| 91丨人妻丨国产丨丝袜| 日韩欧无码一区二区三区免费不卡| 久久精品国产精品一区| 亚洲天天做日日做天天谢日日| 国产日韩在线播放av| 无码精品蜜桃一区二区三区ww| 色香色欲天天综合网天天来吧| 亚洲中文字幕av| 欧美精品成人亚洲| 久久蜜色情在线视频xxx免费观看| 久久久久久久久久久久久久久久9 亚洲成人妻日韩在线 | 天堂精品一区| 久久久无码视频| 少妇厨房愉情理伦片bd在线观看| 中文字幕一区二区三区高清| 久久久久久AⅤ无码免费肉站| 日韩三级一区| 麻豆一区在线| 上床啊啊啊| 98人妻精品一区二区色欲| 黑人无码一区二区| 精品一区二区三区蜜桃臀赵总 | 欧美曰韩国产精品| 深夜激情 | 欧美性,色九九| 女上位精品在线| 亚洲性网| 性做久久久久久免费观看软件| 九色97| 欧美综合网1| 成人久久久| 国产偷拍自拍在线视频| 欧美黑人性猛交91| 操死我了啊啊啊| 一级乱伦网站| 超碰99热| 天天激色| 日本中文字幕不卡视频| 国产福利精品最新在线| 亚洲熟妇熟在线电影视频| 九九九九九九综合| 日韩亚洲中文有码视频| 毛片中心9视频99| 免费国产| 免费福利视频中文字幕| 午夜精品久久久久久久男人的天堂| 亚洲欧洲久久天堂| 国产在线播放成人免费| 国产成人无码网站在线视频| 伊人丝袜美腿高跟在线观看高清| 清纯唯美综合| 国产成人免费观看在线视频| 亚洲 图片 欧美 色图| 欧美激情 亚洲色图| 欧美一级特黄淫片在线观看| 日韩紧密久久| 91制服丝袜中文字幕| 國產尤物AV尤物在線觀看| 69人妻精品丰满熟女区| 激情文学88| 操碰97| 国产嫩草精品A88AV| 强奸乱伦AV网站| 97久久精品亚洲中六字幕| 91性片| 色情综合网| 午夜操操操| 黄色小视频日本txt| 91AV天堂| 精品国产一区二区三区香蕉欧美| 欧美黄色图片| 欧美色图片| 婷婷香蕉欧美在线一区二区三区 | 五月激情啪啪| 日本布卡一区二三区| 中日韩欧美精品无码AⅤ一区二区| 操逼精品视频| 秋霞一级A片黄色视频| 熟妇熟女一区二三区| 老司机午夜精品视频| 精品国产乱码久久久久久影片| 中韩中文字幕在线观看| 免费黄色片子| 97这里有精品| 天天影视网综合少妇| 九月伊人中文字幕| 亚洲 91 在线| 国产精品黑人一区二区三区| 自拍鲍鱼一区在线高清观看免费| 97se综合| 韩日巨乳美女免费视频在线观看| 岛国片国产成人亚洲播放| 欧美视频一| 国产福利精品最新在线| 99热这里只有精品1| 操屄不卡视频| 亚洲天堂另类| 黄色污污污污污污网站| 亚洲色人| 91总综合网| 亚洲第2页| 欧美伊人电影| 久久a久久| 啪啪啪东京| 97超色| 国产精品久久伊人| 天美传媒AV在线| 亚洲AO在线| 亚一综合久久久久久久久久| 国产超碰欧美| 亚洲日本韩国极品一区二区| 亚欧高清| AV色五月天| 丁香六月婷婷久久综合| 91久久久亚洲| 天天综合网~91综合网| 99视频内射三四| 91AV入口| 51一区二区三区| 综合网,亚洲,欧美| 日韩人妻中文视频| 亚洲精品啪视频| 黄片免费日韩| 99操| 精品毛片久久久精品毛片| 密臀成人视频久久久| 性色一线| 最新中文字幕在线亚洲| 人妻天堂网| 久久m| 蜜桃久久综合视频| 国产精品色片一区二区| 1240青青草一区二区三区视频天爱| 欧美色997| 日本三级大片| 人妻 丝袜美腿 中文字幕| 欧美 亚洲 在线| 亚洲大胆人体av| 久久欧美按摩999| 一区二区三区四区免费视频| 人妻一区二区三区四区视频| 少妇九九九九| 欧美日韩婷婷中文| 中文字幕国产精品1区| 99热在线观看| 天天操人人操狠狠插| 午夜在线播放| 欧美色图自拍| 91超碰碰在线| 欧美天天综| 天天干少妇| 日韩少妇一区二区三区| 国产多人在线观看视频| 亚州综合色| 清纯唯美综合| 日韩高清一二三| surenchaopeng| 亚洲宗合电影| 暖暖精品二区三区观看| 六月丁香网| 成人性爱电影一区二区| 熟女五十路一区二区三| 蜜乳AV免费观看| 东京热男人的天堂| 丰满人妻一区二区三区四区| 国产天天噜一噜久久久| 91欧美性| 亚洲性少妇| 欧美色图 人妻| 久久一二三四五六七八九区区| 夜夜狼人妻| 天天操天天射青青草| 一区二区激情国产熟女| 91啪啪| 中文字幕一区av| 五月丁香久久| 69超碰综合| 天天摸,夜夜摸| 五月综合色| 亚洲精品男人的天堂| 六月婷婷综合| 日韩精品区二区三区不卡| 五月婷婷综合在线| 精品一区二区三区蜜桃臀赵总 | 99精品久久| 91操操| 欧美熟妇视频| 午夜欧美J进J出白浆流出久久久| 欧美午夜色妇色鬼| 嗯嗯啊好大| 亚洲日韩久久精品一区| 夜夜做夜夜爽精品视频| chaopen97久久| 超碰九九| 91亚洲色图| 女欧美一区二三区| 免费啪啪av| 国产综合永久精品日韩鬼片| 国产又色又爽又舒服的三级视频| 99久久九九| 久久久工口| 久久中出在线| 青青草中日韩在线| 欧美劲爆第一页| 日韩字幕一区| 强奸乱伦大香蕉网| 欧美激情综合| 青青草伊人久久| 色网1| 亚洲人妻日日日| 我要去看2个日本美女.com曹逼| 日韩av不卡在线看| 欧美色综合影院| 日韩精品.久久精品.AV女优.天美传媒 | 欧美成人一区二区| 国产97在线播放| 偷拍精品一区二区三区| 97在线视频观看网站| 日韩人妻一区二区精品| 无码heyzo高清一区| 91久久久老司机| 久久伊人影院| 最好看的中文字幕在线2018| 香蕉婷婷| 国产精品suv一区| 夜夜高潮夜夜爽夜夜爱爱一区| 欧美亚洲自拍另类人妻| 啪啪啪精品视频| 俺去久久| 精品人妻一区二区蜜桃视频| 日本淫乱女一区二区三区视频| 日韩A优精品在线观看| 欧美拳交在线播放| 久久熟女久| 91亚洲色图| 日本午夜福利影院| 超碰人妻久久人妻中文97| 欧美热图99| 欧美一级黄片视频在线| 玖玖综合.com| 国产AV天美传媒一区二区三区 | 美女上床网站| 午夜.DJ高清在线观看免费7 | 日日骚中文字幕| 家庭乱伦性爱av| 久久久久久性爱视频| 日韩本不卡视频在线观看| 国产精品亚洲天堂网址| 少妇高潮99p| 密臀成人视频久久久| 激情五月天插| 九九久久一区二区三区| 少妇的嫩逼图片| 国产成人bd在线观看| 97精品第3页| 黑人娇小av在线播放| 亚洲操操| 91超碰丝袜制服| 温婉少妇玩3p| 日本一天色道久久久精品视频| 亚洲欧美黄| 亚洲成人网站在线观看| 四虎在线观看网站| 欧美激情性爱视频网站| 嫩草 人人网精品| 青草成人免费视频一com| 任你爽视频| 青青草AV色| 国产精品久久伊人| 91青青在线视频| 亚洲成a人片在线观看中文!!!| 欧美狠狠鲁| 手机午夜电影神马久久| 宅男午夜在线视频| 亚洲色婷婷久久91| 久久黄色网址| 国内伊人久久久久久网站视频| 开心五月婷婷激情| 久夜操| 九九热在线视频| 天久久久噜噜噜久久国产精品爽爽 | 国语人妻精彩刺激| 美女91在线| 欧日韩不卡视.频| 美女黄网| 人妻美腿丝袜制服诱惑综合天堂-| 久久久999| 超碰激情808| 美女操逼A A| 五十路熟女工口| 高潮的A片激情扒开一区| 久久超碰98| 国产精品一区二区三区,亚洲综合| 人妻黑丝袜电影| 网页导航五月天免费一二三区| 97天天插| 99热官网| 日本久久女同性恋视频| 91亚州欧美| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 99久久久无码精品国产人| 欧美性爱网97| 全免费a敌肛交毛片免费| 黄页网站成人免费| 国产天美欧美| 伊人久久综合影院精品久久久 | hd成人一区二区在线| 免费视频观看60秒| 亚洲欧美一区二区三区在钱蜜桃| 放黄片放3级黄片没穿衣服| 久久最新视频免费观看| 先锋色眉乱伦资源| 日日干日日摸| 国产天天骚| 日本操逼视频导航| 91丝袜在线播放| 亚洲色资源| www.zbzhongsen.com| 尤物av网站免费在线播放| 四虎在线播放| 久久乐| 成人七区| 亚洲欧美97| 日韩精品9999| 国产伦精品一区二区三区在线观 | 婷婷成人五月天| 成人无遮挡毛片免费看| 性色高清..……| 草b在线 | 少妇高潮一区二区三区在线| 不卡九肏| 欧美日韩第一页| 综合影院永久入口国产| 女上位精品在线| 香一区二区三区| 麻豆啪啪啪视频| 五月天婷婷在线看| 九九九九九九精品| 久久久网一区| 精品一区二区三区蜜桃臀赵总 | 久久久久9999| 欧美线天码中字| 亚洲蜜臀懂色| 人妻少妇精品一区二区三区| 韩国成人精品久久久免费看| 91肉丝| 色网亚洲人| 免费成人在线熟妇网| 亚殴在线| 97久久超碰| 综合欧美激情网| 天天射天天操天天干天天吃2018| 日韩精品人妻中文字幕不卡乱码| 青青草啪啪网| 天美麻豆精品视频99| 99热只有这里有精品| 国产美女裸体秘 永久无遮挡| 91n欧美| 东京热毛片调教| 一级黄碟| 久久国产精品熟女人妻| av在线浏览| 艹我哪美一区无码| 亚洲超碰在线| 国产又大又硬又长又粗| 欧美精品一区二区少妇免费A片| 亚洲色宗合| 国产白丝AV| 国产农村妇女毛片精品久久| 久久色AV线| 制服诱惑亚洲一区二区三区在线观看| 视频在线观看一二三区| 激情自拍 校园春色| 色色色综合网| 五月丁香啪啪网| 六月激情婷婷| 久操精品网| 粉嫩少妇自慰在线| 99超碰色| 国产丝袜美女诱惑| 久妇网| 国产乱婷婷精品二区三区| 狼人综合婷婷激情四射 | 九热中文字幕| 欧美成人A天堂片在线观看| 襙一襙| a片久久久久久久久久久久 | 欧美性爱五月天| 日韩女模中文造逼| 亚洲各类熟们中文字幕| 欧美国产日韩高清在线| 曰韩无码777| 婷婷久久五月| 东京日日夜夜| 男女打扑克高清网站| 久久久久国产亚洲一区欧美色图日韩| 青青国产精品在线| 国产精品 亚洲情色| A啊啊在线观看| 天天内射| 嗯~啊~轻一点 视频| 高清无码91|