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

ARTICLE DETAIL

資訊詳情

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

Spring Boot仿淘寶購(gòu)物系統(tǒng):從部署到核心模塊與避坑指南

Spring Boot仿淘寶購(gòu)物系統(tǒng):從部署到核心模塊與避坑指南 前陣子幫人調(diào)試一套基于Springboot的仿淘寶購(gòu)物管理系統(tǒng)說句實(shí)話這類項(xiàng)目在很多平臺(tái)上一搜一大把但真正拿到源碼能順利跑起來(lái)、看完文檔能搞清楚業(yè)務(wù)邏輯的還真不多見。今天借著這套系統(tǒng)把我從導(dǎo)入項(xiàng)目到二次開發(fā)過程中遇到的坑、梳理出來(lái)的設(shè)計(jì)思路、以及代碼里值得反復(fù)揣摩的核心部分一次性整理清楚。如果你正在做課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)或者單純想找一套電商項(xiàng)目來(lái)實(shí)操Springboot這篇文章應(yīng)該能讓你少走不少?gòu)澛?。這套系統(tǒng)的定位很明確模仿主流電商平臺(tái)的購(gòu)物流程把用戶、商品、購(gòu)物車、訂單、支付、收貨、評(píng)價(jià)這一條完整鏈路串起來(lái)。它不是那種只有一個(gè)CRUD的空殼項(xiàng)目而是把權(quán)限、事務(wù)、并發(fā)、文件存儲(chǔ)這些實(shí)際開發(fā)中繞不開的點(diǎn)都塞了進(jìn)去所以拿來(lái)練手或者二次開發(fā)都很合適。1. 項(xiàng)目概覽為什么這類購(gòu)物系統(tǒng)這么適合練手1.1 電商項(xiàng)目覆蓋的技術(shù)面足夠廣我在帶新人或者幫人看項(xiàng)目時(shí)一直建議優(yōu)先選擇電商類項(xiàng)目作為Springboot練手目標(biāo)。原因很簡(jiǎn)單一個(gè)完整的購(gòu)物系統(tǒng)天然就能拆出多個(gè)模塊每個(gè)模塊都能對(duì)應(yīng)到不同的技術(shù)難點(diǎn)。用戶模塊要處理注冊(cè)、登錄、權(quán)限驗(yàn)證這涉及密碼加密和JWT鑒權(quán)商品模塊要處理分類、搜索、圖片上傳這涉及文件存儲(chǔ)和條件查詢購(gòu)物車模塊要維護(hù)用戶和商品的關(guān)系需要考慮合并、數(shù)量修改訂單模塊最麻煩既要保證事務(wù)一致性又要處理庫(kù)存扣減的并發(fā)問題支付模塊雖然通常對(duì)接模擬支付但回調(diào)通知、訂單狀態(tài)流轉(zhuǎn)這些邏輯一點(diǎn)都不能少。這套基于Springboot的淘寶購(gòu)物管理系統(tǒng)表面上看是一個(gè)麻雀雖小五臟俱全的商城實(shí)際上它把Springboot、MyBatis-Plus、Redis、Minio、JWT這些常用組件的整合方式都演示了一遍。對(duì)于初學(xué)者來(lái)說跟著源碼把這些模塊逐個(gè)過一遍比看十遍理論都管用。1.2 角色與核心功能矩陣系統(tǒng)里分了三種角色買家、賣家和管理員。有些項(xiàng)目會(huì)把賣家和管理員合并但這套系統(tǒng)是分開的權(quán)限粒度更清晰。角色核心功能涉及模塊游客瀏覽商品、搜索商品、查看商品詳情商品模塊買家登錄注冊(cè)、管理購(gòu)物車、下單、支付、收貨、評(píng)價(jià)、查看訂單用戶、購(gòu)物車、訂單、支付、評(píng)價(jià)賣家管理自家商品、處理訂單發(fā)貨、查看銷售情況商品、訂單管理員管理用戶、審核商品、管理分類、數(shù)據(jù)統(tǒng)計(jì)管理端三個(gè)角色對(duì)應(yīng)的是三套不同的接口權(quán)限這也是很多同學(xué)拿到源碼后最容易疑惑的地方為什么同一個(gè)接口不同角色調(diào)用返回的結(jié)果不一樣其實(shí)就是在攔截器里做了角色判斷后面我會(huì)把這塊的代碼邏輯拆開講。1.3 從瀏覽到收貨的完整業(yè)務(wù)閉環(huán)拿一次完整的購(gòu)物流程舉例游客在前臺(tái)頁(yè)面看到商品列表點(diǎn)擊進(jìn)詳情頁(yè)如果想下單需要先注冊(cè)并登錄登錄后把商品加入購(gòu)物車然后在購(gòu)物車?yán)锕催x要結(jié)算的商品生成訂單。訂單生成時(shí)系統(tǒng)會(huì)扣減庫(kù)存同時(shí)開啟支付倒計(jì)時(shí)用戶支付成功后才算真正下單完成。賣家在后臺(tái)看到新訂單執(zhí)行發(fā)貨操作買家收到貨后確認(rèn)收貨再對(duì)商品進(jìn)行評(píng)價(jià)。整個(gè)閉環(huán)里涉及的所有狀態(tài)變化這套系統(tǒng)都用數(shù)據(jù)庫(kù)字段和狀態(tài)更新記錄下來(lái)了。理解這個(gè)閉環(huán)很重要因?yàn)楹竺嫠心K的代碼都是圍繞這條鏈路展開的。我在給文檔寫說明時(shí)也是按照這個(gè)流程來(lái)分章節(jié)而不是單純按代碼目錄結(jié)構(gòu)來(lái)講。2. 技術(shù)選型與工程結(jié)構(gòu)每一步都要有理由2.1 技術(shù)棧清單及選型理由這套系統(tǒng)的技術(shù)棧是典型的Springboot全家桶組合我列個(gè)表把每個(gè)組件解決什么問題寫清楚。技術(shù)組件版本建議解決的問題Spring Boot2.7.x提供自動(dòng)配置和快速啟動(dòng)降低整合成本MyBatis-Plus3.5.x簡(jiǎn)化單表CRUD提供分頁(yè)插件和條件構(gòu)造器MySQL8.0存儲(chǔ)業(yè)務(wù)數(shù)據(jù)支持事務(wù)和復(fù)雜查詢Redis6.x / 7.x緩存驗(yàn)證碼、商品詳情、購(gòu)物車數(shù)據(jù)也能做分布式鎖Minio8.x商品圖片、頭像等文件的對(duì)象存儲(chǔ)服務(wù)JWT Spring Interceptor-無(wú)狀態(tài)登錄鑒權(quán)區(qū)分角色權(quán)限有人會(huì)問為什么不用Spring Data JPA我的觀點(diǎn)是電商項(xiàng)目的查詢條件往往是動(dòng)態(tài)拼接的比如商品列表要按照價(jià)格區(qū)間、分類、關(guān)鍵字過濾MyBatis-Plus的條件構(gòu)造器寫起來(lái)比JPA的Specification直觀得多而且很多老項(xiàng)目的Mapper XML可以直接遷移復(fù)用。另外MyBatis-Plus對(duì)分頁(yè)、邏輯刪除、自動(dòng)填充都有現(xiàn)成支持能省不少代碼量。Redis在這個(gè)項(xiàng)目里承擔(dān)的是性能加速器角色。商品詳情頁(yè)的點(diǎn)擊量最高如果每次請(qǐng)求都打數(shù)據(jù)庫(kù)壓力會(huì)很大所以項(xiàng)目里把熱門商品的詳情緩存到了Redis并設(shè)置了過期時(shí)間。購(gòu)物車數(shù)據(jù)也存在Redis里用Hash結(jié)構(gòu)存儲(chǔ)key是用戶IDfield是商品IDvalue是商品數(shù)量這樣查詢購(gòu)物車就很輕量。2.2 后端工程目錄是怎么拆的我拿到源碼后第一件事就是看目錄結(jié)構(gòu)。這套項(xiàng)目的結(jié)構(gòu)很標(biāo)準(zhǔn)但有一點(diǎn)值得拿出來(lái)說它在controller層和service層之間加入了一個(gè)dto包和一個(gè)vo包。com.example.mall ├── controller // 接口層只做參數(shù)接收和結(jié)果封裝 ├── service // 業(yè)務(wù)層事務(wù)控制在這里 │ └── impl ├── mapper // MyBatis-Plus的Mapper接口對(duì)應(yīng)數(shù)據(jù)庫(kù)操作 ├── entity // 數(shù)據(jù)庫(kù)實(shí)體類跟表結(jié)構(gòu)一一對(duì)應(yīng) ├── dto // 接收前端參數(shù)的傳輸對(duì)象 ├── vo // 返回給前端的視圖對(duì)象 ├── config // 配置類比如Redis、Minio、攔截器配置 ├── interceptor // 登錄鑒權(quán)攔截器 ├── common // 統(tǒng)一結(jié)果封裝、異常處理、工具類 └── ...很多課程設(shè)計(jì)項(xiàng)目喜歡把所有類都堆在controller和service兩層短期內(nèi)看著簡(jiǎn)單一旦加功能就會(huì)亂。這套系統(tǒng)的dto和vo是分開的這一點(diǎn)很關(guān)鍵。前端傳過來(lái)的參數(shù)用dto接收返回給前端的數(shù)據(jù)用vo封裝避免把數(shù)據(jù)庫(kù)實(shí)體直接暴露出去。比如用戶對(duì)象里有密碼字段如果直接把entity返回給前端密碼就泄露了。用vo只返回id、nickname、avatar這些字段安全性會(huì)好很多。2.3 數(shù)據(jù)庫(kù)設(shè)計(jì)核心表關(guān)系一覽數(shù)據(jù)庫(kù)一共十幾張表核心的幾張是tb_user、tb_category、tb_product、tb_cart、tb_order、tb_order_item、tb_address、tb_evaluation。表之間關(guān)系并不復(fù)雜但有兩張表的設(shè)計(jì)值得特別說明tb_order和tb_order_item是一對(duì)多拆開的。訂單主表存收貨地址、總金額、狀態(tài)等概要信息訂單商品表存每個(gè)商品的快照信息。訂單商品表必須冗余一份商品名稱、商品主圖、單價(jià)作為快照不能直接關(guān)聯(lián)商品表。為什么因?yàn)橛脩粝聠沃筚u家可能修改商品價(jià)格或者下架商品如果訂單詳情還要實(shí)時(shí)去查商品表用戶看到的價(jià)格和下單時(shí)就會(huì)對(duì)不上。這里冗余字段屬于用空間換正確性。另外這個(gè)項(xiàng)目統(tǒng)一使用了邏輯刪除所有表都有deleted字段用MyBatis-Plus的TableLogic注解處理。對(duì)于一個(gè)購(gòu)物系統(tǒng)用戶誤刪地址、賣家誤刪商品都是常見操作邏輯刪除給數(shù)據(jù)恢復(fù)留了后路這也是很多公司生產(chǎn)環(huán)境的通用做法。3. 核心模塊的實(shí)現(xiàn)要點(diǎn)不只是增刪改查3.1 用戶登錄與JWT鑒權(quán)的落地姿勢(shì)登錄這塊項(xiàng)目用的是JWT作為令牌整個(gè)流程可以簡(jiǎn)化成三步用戶輸入賬號(hào)密碼后端校驗(yàn)通過后生成Token返回前端前端把Token存在本地之后每次請(qǐng)求都在請(qǐng)求頭里帶上Authorization后端寫一個(gè)攔截器攔截所有需要登錄的接口從Token中解析用戶ID和角色放行或拒絕。代碼層面的關(guān)鍵點(diǎn)是攔截器的注冊(cè)方式。項(xiàng)目里有一個(gè)WebMvcConfig實(shí)現(xiàn)了WebMvcConfigurer重寫addInterceptors方法把自定義的LoginInterceptor注冊(cè)進(jìn)去并且設(shè)置excludePathPatterns把登錄、注冊(cè)、商品瀏覽這些接口放行。這里有個(gè)新手經(jīng)常踩的坑放行路徑寫錯(cuò)導(dǎo)致登錄接口也被攔截結(jié)果前端登錄請(qǐng)求拿著用戶名密碼卻進(jìn)不來(lái)排查半天不知道問題在哪。如果你自己調(diào)試記得先確認(rèn)excludePathPatterns里的路徑跟Controller里的RequestMapping前綴完全一致。Token解析時(shí)項(xiàng)目用JWT的SecretKey來(lái)簽名和驗(yàn)簽。需要注意的是JWT本身是不加密的里面不要放敏感信息我見過有人在Token里直接塞用戶手機(jī)號(hào)雖然能用但一旦Token被人拿到信息就泄露了。這個(gè)項(xiàng)目只在Token里放了用戶ID和角色編碼這是比較穩(wěn)妥的做法。3.2 商品模塊與Minio文件存儲(chǔ)的整合商品模塊涉及分類、品牌、上下架狀態(tài)、多圖展示。這里我想重點(diǎn)聊聊圖片上傳。項(xiàng)目用Minio做對(duì)象存儲(chǔ)而不是直接把圖片存到本地磁盤。原因很直接本地存儲(chǔ)的圖片不好管理、不好遷移而且生產(chǎn)環(huán)境部署時(shí)服務(wù)器磁盤空間有限。Minio本身是開源的對(duì)象存儲(chǔ)服務(wù)跟阿里云OSS這類云服務(wù)在API使用上很接近你學(xué)會(huì)接Minio后面換云存儲(chǔ)時(shí)改動(dòng)成本很低。文件上傳的流程是這樣的前端請(qǐng)求上傳接口后端接收MultipartFile生成新的對(duì)象名稱通常是UUID文件擴(kuò)展名調(diào)用Minio客戶端把文件流上傳到指定桶最后返回文件的訪問URL。這個(gè)URL會(huì)被存到商品表的image字段和商品圖片表里。我特別提一下文件名生成很多同學(xué)習(xí)慣直接用原始文件名如果兩個(gè)人上傳同一個(gè)名字的文件后一個(gè)會(huì)覆蓋前一個(gè)。所以用UUID或者日期隨機(jī)數(shù)重命名是必須的。Minio的配置也很簡(jiǎn)單核心就是四個(gè)參數(shù)endpoint、accessKey、secretKey、bucketName。我在實(shí)際跑這個(gè)項(xiàng)目時(shí)本地直接下載了Minio客戶端開啟一個(gè)9000端口的服務(wù)然后配置好賬號(hào)密碼基本就通了。如果在云服務(wù)器上部署記得把Minio的安全組和防火墻端口打開不然圖片URL會(huì)一直加載不出來(lái)。3.3 購(gòu)物車與生成訂單時(shí)的事務(wù)控制購(gòu)物車在Redis里的實(shí)現(xiàn)前面提過但我在這里要強(qiáng)調(diào)一下購(gòu)物車數(shù)據(jù)從Redis轉(zhuǎn)成訂單時(shí)的處理。用戶勾選購(gòu)物車商品點(diǎn)擊去結(jié)算時(shí)后端得一次性接收多個(gè)商品ID到Redis里取出對(duì)應(yīng)的商品信息然后查數(shù)據(jù)庫(kù)拿到最新價(jià)格計(jì)算總金額生成訂單主記錄和訂單明細(xì)記錄同時(shí)扣減庫(kù)存。這個(gè)操作牽扯到多張表的寫入必須加Transactional事務(wù)注解。不加或者加錯(cuò)位置就會(huì)出大問題。比如訂單生成成功了但庫(kù)存沒扣減或者扣了庫(kù)存但訂單沒生成這兩種情況在并發(fā)用戶同時(shí)下單時(shí)會(huì)立刻暴露。事務(wù)注解要加到service層實(shí)現(xiàn)類的方法上不要加到controller方法上也不要在service方法內(nèi)部自調(diào)用。這兩條后面我會(huì)在踩坑章節(jié)單獨(dú)展開因?yàn)檎娴奶嗳嗽谶@兩個(gè)地方栽過跟頭。4. 訂單狀態(tài)機(jī)與并發(fā)兜底項(xiàng)目里最值得研究的部分4.1 訂單狀態(tài)機(jī)的設(shè)計(jì)訂單模塊是整個(gè)購(gòu)物系統(tǒng)的心臟因?yàn)橛唵螤顟B(tài)不是隨便改的每個(gè)狀態(tài)之間的流轉(zhuǎn)都有明確條件。這套系統(tǒng)里訂單狀態(tài)用一個(gè)status字段表示狀態(tài)編碼含義下一步操作0待支付用戶支付或超時(shí)自動(dòng)取消1待發(fā)貨賣家發(fā)貨2待收貨買家確認(rèn)收貨3已完成買家可評(píng)價(jià)4已取消無(wú)后續(xù)操作5退款中賣家處理退款狀態(tài)流轉(zhuǎn)有一條鐵律除非特殊業(yè)務(wù)否則不允許跨狀態(tài)跳轉(zhuǎn)。比如一筆待支付訂單不能直接變成已完成。在代碼里項(xiàng)目通過在updateOrderStatus方法里傳oldStatus和newStatus用更新語(yǔ)句的WHERE條件帶上前置狀態(tài)來(lái)實(shí)現(xiàn)狀態(tài)的受控流轉(zhuǎn)。這個(gè)做法叫樂觀鎖在狀態(tài)更新上的應(yīng)用核心SQL是這樣的UPDATE tb_order SET status #{newStatus}, update_time NOW() WHERE id #{orderId} AND status #{oldStatus}當(dāng)兩個(gè)請(qǐng)求同時(shí)試圖更新同一筆訂單時(shí)只有一個(gè)請(qǐng)求能被成功執(zhí)行另一個(gè)影響行數(shù)為0業(yè)務(wù)代碼根據(jù)影響行數(shù)判斷是否流轉(zhuǎn)失敗。相比先SELECT再UPDATE的方式這種方式避免了并發(fā)狀態(tài)下讀取到的舊數(shù)據(jù)被覆蓋的問題。4.2 庫(kù)存扣減樂觀鎖加唯一索引雙重兜底秒殺場(chǎng)景下庫(kù)存超賣是經(jīng)典的并發(fā)問題。這個(gè)項(xiàng)目雖然沒做秒殺但庫(kù)存扣減的邏輯已經(jīng)考慮了并發(fā)情況。正??蹘?kù)存的代碼不能是先查庫(kù)存數(shù)量夠再更新這種兩步走因?yàn)樵诟卟l(fā)下兩個(gè)請(qǐng)求同時(shí)查到庫(kù)存還剩1都判定可以購(gòu)買最后執(zhí)行更新時(shí)庫(kù)存就會(huì)變成負(fù)數(shù)。項(xiàng)目里用的是帶條件的更新boolean success inventoryService.deductStock(productId, quantity); // 實(shí)際SQL: UPDATE tb_product SET stock stock - #{quantity} // WHERE id #{productId} AND stock #{quantity}stock #{quantity}這個(gè)條件非常關(guān)鍵。它讓數(shù)據(jù)庫(kù)在更新時(shí)自行判斷庫(kù)存是否足夠如果不夠更新操作影響的行數(shù)就是0業(yè)務(wù)層捕獲到這個(gè)結(jié)果直接提示用戶庫(kù)存不足。配合tb_order_item表上的order_id product_id唯一索引還能防止同一用戶在同一訂單里重復(fù)添加同一商品導(dǎo)致的數(shù)據(jù)混亂。我之前幫人從源碼里找bug發(fā)現(xiàn)他把庫(kù)存扣減寫成了UPDATE tb_product SET stock stock - #{quantity} WHERE id #{productId}少了庫(kù)存判斷條件并發(fā)測(cè)試一打就超賣。這個(gè)案例我印象很深因?yàn)榇a就差一個(gè)條件線上出事故就可能是從這種細(xì)節(jié)開始的。4.3 超時(shí)未支付自動(dòng)取消的兩種實(shí)現(xiàn)訂單生成后通常要設(shè)置一個(gè)支付時(shí)限比如30分鐘。這個(gè)項(xiàng)目里給了兩種實(shí)現(xiàn)思路文檔里也寫了對(duì)比第一種是定時(shí)掃描。寫一個(gè)Scheduled注解的定時(shí)任務(wù)每隔一分鐘掃描一次訂單表把狀態(tài)為待支付且order_time超過30分鐘的訂單批量更新為已取消。這種方式實(shí)現(xiàn)簡(jiǎn)單但會(huì)有延遲最壞情況下訂單被取消的時(shí)間會(huì)晚一分鐘而且掃表全量數(shù)據(jù)時(shí)如果訂單量大對(duì)數(shù)據(jù)庫(kù)壓力不小。第二種是延遲消息。用Redis的過期鍵監(jiān)聽或者消息隊(duì)列的延遲隊(duì)列來(lái)實(shí)現(xiàn)到期通知精度更高但實(shí)現(xiàn)復(fù)雜度明顯上升。對(duì)于課程設(shè)計(jì)和中小型項(xiàng)目定時(shí)掃描完全夠用。這個(gè)項(xiàng)目源碼里默認(rèn)用的是定時(shí)掃描你在部署的時(shí)候稍微注意一下定時(shí)任務(wù)的開關(guān)配置就行別把整個(gè)任務(wù)類給注釋掉不然超時(shí)訂單永遠(yuǎn)取消不了。5. 源碼和文檔拿到手怎么才能用起來(lái)5.1 項(xiàng)目導(dǎo)入三步走很多人拿到源碼后第一步就卡住了因?yàn)閷?dǎo)入項(xiàng)目的細(xì)節(jié)沒搞明白。這套系統(tǒng)我建議按下面三個(gè)步驟來(lái)操作第一步準(zhǔn)備環(huán)境。裝好JDK 1.8或11、Maven 3.6、MySQL 8.0、Redis另外要有一個(gè)可用的Minio服務(wù)。MySQL執(zhí)行項(xiàng)目里提供的mall.sql腳本把數(shù)據(jù)庫(kù)和初始數(shù)據(jù)建好。Redis和Minio在本地起默認(rèn)服務(wù)就行。第二步改配置。打開application.yml按自己的實(shí)際環(huán)境修改數(shù)據(jù)源地址、Redis地址、Minio的endpoint和密鑰。這里最容易踩的坑是數(shù)據(jù)庫(kù)時(shí)區(qū)問題建議在數(shù)據(jù)庫(kù)連接參數(shù)里加上serverTimezoneAsia/Shanghai不然日期字段會(huì)差8個(gè)小時(shí)表現(xiàn)為訂單創(chuàng)建時(shí)間和實(shí)際時(shí)間對(duì)不上。第三步啟動(dòng)項(xiàng)目。先啟動(dòng)Minio再啟動(dòng)Redis然后是Spring Boot應(yīng)用。后端起來(lái)后用接口文檔或前端頁(yè)面的登錄接口試一下能拿到Token基本就說明環(huán)境和代碼都通了。如果項(xiàng)目里有前端頁(yè)面通常是Vue寫的一個(gè)簡(jiǎn)單管理頁(yè)npm install之后跑npm run dev或者打包放進(jìn)Springboot的static目錄看項(xiàng)目自帶文檔里的說明別自己瞎猜路徑。5.2 源碼結(jié)構(gòu)哪些能直接復(fù)用哪些要改這套系統(tǒng)的源碼目錄我前面已經(jīng)大致介紹過這里再補(bǔ)充一下哪些部分能直接當(dāng)工具代碼用。common包里的Result統(tǒng)一結(jié)果集、GlobalExceptionHandler全局異常處理以及JwtUtils工具類基本是可以直接搬到其他Springboot項(xiàng)目里的這三個(gè)文件寫得很規(guī)整沒什么項(xiàng)目耦合。config包里的MyBatisPlusConfig配置了分頁(yè)插件RedisConfig配置了RedisTemplate的序列化方式。我特別提醒一下RedisTemplate的序列化很多項(xiàng)目默認(rèn)用JDK序列化導(dǎo)致在Redis可視化工具里看到一堆轉(zhuǎn)義字符不方便排查。這個(gè)項(xiàng)目把Key設(shè)成了String序列化Value設(shè)成了Jackson序列化整個(gè)體驗(yàn)會(huì)清爽很多這個(gè)配置建議你也沿用。要改的地方主要在業(yè)務(wù)包。entity里的表字段如果和你的需求對(duì)不上記得先改數(shù)據(jù)庫(kù)表再改實(shí)體類保證字段名能映射上。另外dto層的參數(shù)校驗(yàn)注解比如NotBlank、Email也會(huì)因?yàn)榍岸藗鲄⒏袷讲煌枰{(diào)整。5.3 文檔里真正值錢的幾頁(yè)很多人不看文檔其實(shí)這套項(xiàng)目自帶的文檔里有幾個(gè)部分比源碼還值錢。首先是數(shù)據(jù)庫(kù)設(shè)計(jì)文檔它會(huì)畫一張ER圖并寫明每張表每個(gè)字段的含義這能幫你快速理解為什么訂單表要冗余商品快照、為什么地址表要保留省市區(qū)多級(jí)字段。其次是接口文檔里面把每個(gè)接口的請(qǐng)求參數(shù)、響應(yīng)示例、狀態(tài)碼都列出來(lái)了前后端聯(lián)調(diào)時(shí)直接照著文檔對(duì)就行。還有一個(gè)容易被忽略的部分是運(yùn)行部署說明里面包含了一些奇怪的坑。比如有個(gè)細(xì)節(jié)Minio的bucket在創(chuàng)建時(shí)如果沒做公開訪問策略上傳成功后的圖片URL即便存在數(shù)據(jù)庫(kù)里也是訪問不了的因?yàn)檎?qǐng)求沒有簽名。文檔里專門寫了一句話讓你執(zhí)行一條mc policy set public命令或者通過控制臺(tái)設(shè)置桶策略。我當(dāng)時(shí)就是沒看這頁(yè)卡了半小時(shí)最后翻文檔才發(fā)現(xiàn)。6. 真實(shí)踩坑記錄這些坑你大概率也會(huì)遇到6.1 JSON序列化循環(huán)引用導(dǎo)致的請(qǐng)求超時(shí)在開發(fā)商品評(píng)價(jià)功能時(shí)我遇到過一個(gè)現(xiàn)象前端請(qǐng)求某個(gè)接口等了好一會(huì)兒才返回有時(shí)候直接超時(shí)。剛開始我以為是數(shù)據(jù)庫(kù)慢后來(lái)查日志發(fā)現(xiàn)是JSON序列化耗時(shí)太長(zhǎng)。原因出在實(shí)體類雙向關(guān)聯(lián)上商品的Vo里關(guān)聯(lián)了評(píng)價(jià)列表評(píng)價(jià)的Vo里又關(guān)聯(lián)了商品信息序列化時(shí)兩個(gè)對(duì)象互相引用Jackson來(lái)回解析就卡住了。解決辦法有兩個(gè)方向。一是在字段上加JsonIgnore避免雙向暴露二是用JsonIgnoreProperties在引用端忽略對(duì)方字段。這套項(xiàng)目里很多Vo對(duì)象已經(jīng)做了隔離但如果你在二次開發(fā)時(shí)新增了關(guān)聯(lián)字段一定要留意這個(gè)坑。我建議所有返回給前端的對(duì)象關(guān)聯(lián)關(guān)系最多只展開一層不要圖省事把整個(gè)對(duì)象圖都序列化出去否則接口性能會(huì)越來(lái)越差。6.2Transactional自調(diào)用導(dǎo)致事務(wù)不回滾這是Spring事務(wù)里最經(jīng)典的一個(gè)坑。在一個(gè)Service里方法A調(diào)用了同類里的方法B方法B加了Transactional但方法A沒有加你猜B的事務(wù)生效嗎答案是不生效。因?yàn)镾pring事務(wù)是通過AOP代理實(shí)現(xiàn)的同類內(nèi)部直接調(diào)用拿到的是原始對(duì)象不是代理對(duì)象事務(wù)注解就被繞過了。我在這套系統(tǒng)的訂單模塊里就發(fā)現(xiàn)過這樣的寫法createOrder方法內(nèi)部調(diào)用了deductStock方法deductStock上標(biāo)了事務(wù)但createOrder沒有標(biāo)。結(jié)果訂單插入成功后庫(kù)存扣減失敗了整筆數(shù)據(jù)就是錯(cuò)的。正確的做法是把事務(wù)注解加在createOrder上讓整個(gè)方法體變成一個(gè)事務(wù)或者把deductStock挪到另一個(gè)Service類里通過注入的Bean來(lái)調(diào)用。檢查你手上的源碼時(shí)多留意這類自調(diào)用。6.3 性能優(yōu)化緩存預(yù)熱與頁(yè)面靜態(tài)化項(xiàng)目跑通之后如果想做性能優(yōu)化有兩個(gè)性價(jià)比很高的方向。一是商品熱門數(shù)據(jù)的緩存預(yù)熱可以在項(xiàng)目啟動(dòng)時(shí)把數(shù)據(jù)庫(kù)里點(diǎn)擊量最高的前幾十個(gè)商品加載到Redis避免第一個(gè)訪問用戶直接打到數(shù)據(jù)庫(kù)。二是用定時(shí)統(tǒng)計(jì)替代實(shí)時(shí)統(tǒng)計(jì)比如商品銷量這類數(shù)值沒必要每次下單都更新商品表的sales字段可以定時(shí)把訂單表聚合出來(lái)的數(shù)據(jù)回填到商品表減少對(duì)商品主表的頻繁更新。還有一個(gè)可以優(yōu)化的點(diǎn)是圖片懶加載和壓縮。Minio里存的原圖可能很大前端展示列表頁(yè)時(shí)會(huì)造成流量壓力。可以用Minio的圖片縮放功能生成縮略圖列表頁(yè)加載縮略圖詳情頁(yè)加載原圖。這個(gè)方案不需要改太多代碼只需要在返回URL時(shí)拼上壓縮參數(shù)實(shí)測(cè)效果很明顯。6.4 前后端聯(lián)調(diào)時(shí)的跨域處理如果前端是獨(dú)立端口運(yùn)行的Vue項(xiàng)目跨域問題跑不掉。這套系統(tǒng)的后端已經(jīng)寫了一個(gè)CorsConfig里面定義了允許的源IP、請(qǐng)求頭和方法。你需要檢查allowedOriginPatterns是否包含你前端的地址比如http://localhost:5173。如果前端請(qǐng)求是攜帶Token的還要允許Authorization請(qǐng)求頭否則預(yù)檢請(qǐng)求直接不過。我在第一次運(yùn)行這套系統(tǒng)時(shí)前端登錄頁(yè)點(diǎn)了半天沒反應(yīng)打開控制臺(tái)看到Access-Control-Allow-Origin錯(cuò)誤去配置里改了一下源地址馬上就好了。這種問題非常常見但很多人會(huì)在前端代理上繞來(lái)繞去其實(shí)后端把跨域配置允許好才是正路。最后再說兩句這套基于Springboot的淘寶購(gòu)物管理系統(tǒng)我前后也幫人部署和改過幾次整體感受是代碼結(jié)構(gòu)和注釋質(zhì)量在同類項(xiàng)目里屬于中上水平尤其是訂單狀態(tài)機(jī)、庫(kù)存扣減、JWT鑒權(quán)這幾塊對(duì)剛接觸Springboot的人來(lái)說是很好的學(xué)習(xí)樣本。源碼里附帶的文檔雖然篇幅不大但確實(shí)把數(shù)據(jù)庫(kù)設(shè)計(jì)和接口約定寫清楚了配合著學(xué)能少掉很多頭發(fā)。如果你準(zhǔn)備拿它做畢業(yè)設(shè)計(jì)或課程設(shè)計(jì)我建議不要只滿足于跑起來(lái)交差。試著去改一個(gè)功能比如把商品搜索改成支持多字段排序或者把支付回調(diào)改成模擬微信支付的通知格式這個(gè)過程會(huì)讓你真正理解這套系統(tǒng)是怎么工作的。遇到問題時(shí)也別急著換項(xiàng)目靜下心來(lái)看看日志、看看源碼里已經(jīng)寫好的處理方式收獲會(huì)超出你的預(yù)期。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩婷婷| 久久嫩草国产成人一区| 欧美性第1页| oumeisetu综合| 另类天堂| 三级色影综合网| 美女诱惑在线一区| 免费视频在线观看啊啊啊啊啊| 欧美精品23| 熟女少妇视频| 少妇内射视频| 中文字幕一区二区三四五区日日骚| 婷婷尹人大香蕉免费| 2019精品国产无码成人| 96国产精品| 久久 亚洲 日韩 人妻| 婷婷99狠狠躁天天躁| av无线看| 黄片免费视频2019| 人妻精品视频一区二区三区| 亚洲 欧美综合| 国产精品久久久午夜夜伦鲁鲁| 欧美综合色站| 青女在线| 色网亚洲人| 亚洲自拍青操视频| 一本色道久久综合熟妇| 欧美影音在线| 伊人久久亚洲色欲综合网站| 视频二区美腿制服人妻欧美| 色爱天堂| 国产 日韩,欧美 自拍| 欧美女同在线| 91精品国产91熟女| 九热久| 天天综合站| 久久久内射良家| 中文熟女五十乱码在线| 91AV天美在线视频| 秘书高跟黑色丝袜国产91在线| 精品九九九九九九九九九| 亚洲网自拍| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | www.狠狠| 骚货| 91色综合激情| 夜夜操中文字幕| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 欧美精品23| 一级婬片120分钟试看| 久久久久久久强迫| 国产精品极品美女视频| 国产自偷自拍一区| 午夜精品久久久久久久99热影院| 久久99草| 人妻无一区二区三区| 蜜乳AV.COM| 强奸乱伦大香蕉| 操逼www.| 激情五月丁香五月| 啊啊啊啊操死我了| 天天天干977| 好爽免费视频| 天天色天天干天天射| 久久久精品视频免费观看| 一区二区三区精品视频| 综合色图区| 91精品人妻一区二区三区蜜桃臀| 亚洲系列欧美| 男女啪啪网站免费视频| 中文字幕一区二区三区高清| 免费一级视频特黄色大片| 激情六月婷婷| 999 久久久| 亚洲图片视频小说| 黄片免费视频2019| 99视频内射三四| 日本天天人人狠狠在线日美女 | 69一区二区三区| 久久久久九九九九| 国产三级多多影院2022国产AA一级毛片无码 | 麻豆天美国美国产| 人伦四五区| 亚洲在线| 99热啪啪| 伊人 俄罗斯 a v| 搡老女人老熟女91老熟女综合网| 高清国产性猛交xxxx乱大交| 老女人爆菊| 五毛骚逼极品美女怕怕| 老子午夜伦不卡影院| 日人妻视频91| 日本精品九九九| 久久人妻| 吉川爱美98堂在线| 香蕉精品二区二区| 国产精品女久久久久av爽| 超碰在线99| 一区二区不卡| 天天干天天操天天操夜夜操天天操| 亚洲 欧美 手机在线观看| 欧美亚洲第1页| 久久99久久99精品天美传媒棢·纸:. | 一二三区精品视频| 色999五月色| 久久亚洲色图中文字幕| 91精品人妻偷情| 久久九九99| 九九九九九用不成了| 日本操逼视频免费| 99re69| 亚洲熟伦熟妇AV无码春色| 97人人操人人干| 狠狠躁天天躁日日躁97| 国产精品久久久无码AV网站| 色哟哟av网址| 国产亚洲综合欧美一区| 熟妇人妻丰满久久久久久久无码| 五月婷婷色| 国产9熟妇视频网站| 天天躁日日躁AAA片李宗瑞| 色制服丝袜夫妻av一区| 丁香五月天堂网| 9久久久久久| 极品尤物在线观看| 九九九不卡| 亚洲国产欧美中日韩成人综合视频| 色婷婷淫色网| 激情综合亚洲| 嫩草一区二区在线观看| 98精品国产乱码久久久久久| 精品亚洲国产成人精品| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场| 国产亚洲精品农村妇女| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 亚洲成人福利电影免费| 色天使AV天堂| 九九亚洲| 国产偷人伦激情在线观看| 任我爽视频在线观看| 国产无马在线| 台湾佬中文娱乐网久久久久久久久久com | caoni国产亚洲av| 日韩久草| 激情五月婷| 免费精品无码一级毛片牛牛影视| 蜜臀99999| 国产精品美女在线一区| 人人九九精| 丁香六月婷婷久久综合| 天天视频黄| 日本精品一区二区三| 久久xxxx| 青青青国产手线观看视频2| 亚洲欧洲无码97久久精品| 又大又长又粗又爽又黄| 日本道人妻久久久在线不卡色视频| 99色在线| 婷婷丁香六月天| 98人妻精品一区二区色欲| 精品无码久久久久| av九九| 亚洲 小说 欧美 激情 另类| 欧美 亚洲精品首页| julia在线观看久久| av日韩国产一区二区| 天天干夜夜鈤| 青青伊人久久| 久久国色天香香蕉| 天天天天天天天天天天干美女| 激情欧美97| 乱老熟女一区二区三区| 欧美男女午夜啪啪| 五月丁香啪啪| 成人网站 免费观看| 亚洲一区二区三区在线激情| 精品国产久热在线观看| 色y情视频免费看| 97天天操| 91女日逼| 公司1区2区3区精产精| 欧美老熟另类| 91婷婷| 成人免费福利网站国产| 最好看的中文字幕在线2018| 中文字幕97| 四虎免费视频| 亚洲天天天| 五十路熟女工口| 麻豆 欧美 日韩| 99热这里只有精品9| 天天激情干| a片偷拍视频| 欧美视频一| 熟妇色99| 香蕉视频欧美一卡二卡| 诱惑网综合| 青青草影视蜜久久| 欧美精品亚洲精品日韩传电影| 天天看高清麻豆| 亚洲欧洲小说图片视频 | 国产人伦精品一区二区三区| 天天综合AV| 丁香五月综合| 色婷婷综合久久中文字幕雪峰| 亚洲精品男人的天堂| 在线人人人人人人精品超 | 乱理日韩中文| 殴美综合色88| 精品久久久一本一道| 日韩亚洲97| 天美传媒av一区二区| 东京热av男人的天堂| 亚洲色丰满少妇高潮| 欧美亚洲美少妇一区二区| 亚洲aw毛茸茸在线| 粉嫩AV输入| 91夜夜蜜桃臀1区2区3区| 久久久久久性爱视频| 久久久久中出| 91九九九小逼| 中文字幕伊人| 男人的天堂视频精品乱在线| 男人在线天堂| 欧美国产精品| 精品性爱一二三区| 欧美人妻精品| 丝袜视频一区二区在线播放国产中文| 欧美亚洲成人在线一区二区三区| 好爽要喷了| 深夜激情| 老熟妇乱轮| 日本韩国国产精品一区| 国产日韩在线播放av| 亚洲精品第一| 91麻豆天美国产欧美高潮| 久久夜精品一区二区三区| 欧美日韩亚洲电影| 91 丝袜在线播放| 久久av一级av少妇av高潮| 国产精品久久成人免费| 91爱综合| 东北熟女91| 亚洲精品三区在线观看| 五月天婷婷综合| 嫩草 人人网精品| 欧美色图91| 欧美不卡在线一区二区| 国产超碰| 青青草乱入乱欲视频在线观看| 成人天天爽| 精品人妻av区天天看片| 国产aⅴ无码片毛片一级网站| 99热最新| 久久超碰av在线| 日本色日夜干| 成人av动漫在线观看| 国产suv精品一区二区四| 黑人与人妻| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 国产欧美日韩臀| 男人天堂无码| 黄片视频,下载| 能看的AV| 欧美综合色综合| jazzjazz国产精品麻豆| 精品久久99| 亚洲综合性网址| 国产欧美另类久久久精品课程| 欧洲综合无码| 97天天搞在线| 精品视频一区二区| 黄片在线免费在线观看| 无码男人天堂| 俄罗斯一区二区视频在线观看| 丁香婷婷色五月| 久久精品高清无码一区| 久久精品日韩| 久久一区,青青青青草视频在线播放| 一二三区视频在线观看| 中文字幕在线观看丝袜| 一区二区无码视频| 一区二区娱乐网站| 91劲爆| 超碰国产精品久| 久久久久久中文字幕中文字幕最新| 久操免费视频| 国产天美欧美| 91伊人| 五月天综合网| 男人的天堂va在线| 日本三级中国三级99人妇网站| 91国精产品| 97精品国产97久久久久久| 91麻豆一二三区| 91精品微拍福利| 800zy一区二区| 亚洲精品久久久久久久蜜桃臀| 99∨VTV| 婷婷爽人人婷婷爽视频| 久久午夜伦| 人人妻人人澡人人爽久久av| 欧美图片色综合| 男女日B国产| 日韩99神马视频片| 丁香九月激情啪| 亚洲九九视频| 99青草| 欧美v亚洲v综合v国产v妖精| 综合欧美日韩在线| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 天天综合-91入口| 丁香五月天视频| 欧美资源| 美女主播色欲91抠b在线播放| 亚洲密乳AV| 伊人 俄罗斯 a v| 日韩成人精品视频自拍| 人妻娇喘 激情视频| 日韩素人无码一区二区三区三州| 2024年最新色情网站在线观看 | 波多野结衣AV无码一区| 亚洲成人帖图| 欧美一级欧美三级在线观看| 无码在线亚洲| 日韩欧美性吧婷婷乱伦大香蕉| 一区二区三区日韩欧美| 曰本人妻人人澡人人夹| 深夜激情| 国模不卡一本二本三电影| 成人性爱视频在线看| 久久久久幕乱码| 久久精品欧美一区蜜桃| 女人喷水视频在线观看| 91青青草| 老鸭窝日丰县女人| AV一二区| 磁力99AV| 精品一区二区成人| 深夜激情无码| 亚洲男人在线观看天堂| 精品日韩中文在线| 91色综| 屌妞视频久久久久久久| 国内精品99999| 日韩强奸av| 亚洲av淫乱| 国产欧美第五页| 欧美精品三区| 日韩射精| 婷婷六月色开| 久久精品国产99国产精品亚洲| 青青草华人在线欧美在线| 久久AV无码AV| 超碰在线1234区| 久久精品—区二区三区内射| 人人摸人人摸人人干| 看看小穴| 好湿好紧视频| 特级特黄一级毛片免费| 91啪9色| 久久久免费高清中文视频| 亚洲国产美女久久久久| 五月激情综合网| 啊啊啊啊啊好舒服视频| 欧美精品久久久久久久丰满| 青青草日韩无码| chaopen97久久| 日韩黄片视频试看| 黄网站黄视频网站进入口| 香蕉99秘 一区精品蜜桃臀| 伊人五月天激情| 日韩99神马视频片| 人人爱人人乐人人操| 青青草天天亲夜夜操网| 青青草导航在线视频| 人妻少妇被猛烈进入中| 国产精品色哟哟| WWW.操逼.COM| 美女露胸露尿口| 91五十路| 91狠| 午夜亚洲WWW湿好大| 夜夜嗨AV一区天天| 中国少妇啪啪视频| 亚洲精品一区中文字幕乱码| 亚洲综合嫩| 2024人人操人人摸| 女人18精品一区二区三区| 日日操丁香五月天| 91精品久久久久久久久久| 女同女同恋久久级三级| 久草综合视频| 伊人五月天激情| 98超碰日本| 一个人免费HD91视频| 欧美第二页午夜| 亚洲色图日韩精品| 久久女女| 久久久久久亚洲精品不卡人乳 | 情侣开房子拍 日韩无码 女的很漂亮| 国产成人五月天丁香花| julia高潮后不停追击中出| 97超级久久| 五月婷婷六月丁香| 久久久性| 久久 亚洲 日韩 人妻| 日韩精品免费高清视频在线| 天堂亚洲精品久久老牛| 久久久久久AⅤ无码免费肉站| 九九九九九九免费视频| 色丁香五月婷婷| 天天做天天爱| 97久久免费| 乱伦av.com| 97久久超碰亚洲| 久久久久久久极品香蕉视频| 一级二级三级黑人无码| 蜜臀aV午夜一区二区三区| 中文字幕一区日韩精| 天天92av| 伊蕉97蜜桃97狠狠综合干| 亚洲欧洲日韩国产自在线| 97操碰| 国产精品网址| 九九英色视频| 久久精品国产72国产精品福利| 草久在线| 999 久久久| 操人无码| 乱伦1色页| 久久久久久十| 免费亚洲国产精品久久一区| 丁香六月激情综合| 亚洲国产精品99久久久| 色九久| 久久99999| 九九色热| www.av在线视频| 78精品在线| 歐美性天天| 伊人久久88国产女| 97欧美性爱| 欧美欧美啪啪视频| 大香蕉日韩| 久久蜜色情在线视频xxx免费观看| 日本在线播放不卡一区| 日韩免费三级黄片电影| 九热久| 日本孕妇孕交| 一区二区三区四区姦女| 欧美99| 黄色小视频日本txt| 中文字幕一区二区视频在线观看| 美女爽爽爽刺痛洞洞| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 亚洲男人天堂2016| 亚洲精品男人的天堂| 熟女精品va中文字幕| 久久久久亚洲Av无码专区老牛影视| 蜜桃丰满熟妇av无码区不卡| 亚洲精品天天影视综合网 | 久久透逼视频| 久久久久久久强迫| 日本媚薬中文字幕在线| 青青草在线视频播放器| 国产精品在线一区二区| 婷婷五月天无码| 人妻无码后入| 欧美日韩免费专区在线| 日韩素人无码一区二区三区三州| 亚洲精品亚洲人成人网| 天美麻花大全视频| 天堂中文日本在线观看| 青青操综合网| 自怕偷自怕亚洲精品| 成人精品在线免费视频| 国产又黄又粗又猛大片| 亚洲一区中文精品| 日韩性爱啪啪视频| 天天做天天爱夜夜爽毛片试看| 亚洲国产精品成人久久蜜臀| 老鸭窝成人免费毛片视频| 性生活性生大爱77AV国产| 影音资源男人日韩| 亚洲天堂少妇| 99re黄| 亚洲欧美中文日韩视频中国语| 国产日韩区| 国产性爱在线视频一区二区| 18禁精品网站在线看| 午夜超爽| av在线一区二区三区| 亚洲高清无码在线桃色| 国产精品视频白浆免费| 91精品黄在线观看| 99re9在线| 久都青青视频| 一级黄碟在线观看| 青青操视频在线| 天堂精品| 色欧美综合| 私人尤物在线精品不卡| 国产一进一出视频网站| 日韩不卡a级视频专区| 99热最新| 天天日日本| 超碰夫妻97| 精品9999| 国产h小视频在线观看免费| 人人看黄色视频| 亚洲三区视频| 久99热| 热天堂一区二区| 欧美情色男人的天堂| 日韩国产九九精品一区二区三区毛片| 欧美日韩不卡传媒| A片大香蕉在线| 国产无马视频| 日本超碰在线国产一区| 一牛一区二区三区久久| 伊人国产AV| 翔田千里A片一区二区| 青娱乐亚洲自拍| 91狠狠综合久久久| 偷拍亚洲高清图片| 狠狠躁久久躁| 中字幕人妻一区二区三区| 强奸乱伦αv片| 九九视品黄色| 亚洲影视高清第一页| 少妇一区二区三区| 无色无码| 91热情品| 亚洲色阁| 日韩精品亚洲专区在线影视| 校园春色亚洲欧洲| 欧美美女视频| 日本道久久综合色色| 国产免费大片| 欧美碰碰综合色| 国产特级毛片AAAAAA高潮流水 | 亚洲最大网站av| 人妻日日夜夜精品| 国产又粗又长的视频| 九九精品无码专区免费| 长长久久曰曰夜夜成人网| 亚州 综合 色图| 欧美大片91| 欧美刺激色黄片免费看| 91精品婷婷国产综合久久竹菊| 国产精品第一页国产大屁股视频免费区| 99国产在线 精品 视频| 欧美美女啪啪视频| 色九久| 人人做人人妻人人夜视频| 黄色十八禁网站| 欧美v日韩v亚洲v最新在线| 色狠狠综合| 综合一区二区影视| 丰满岳乱妇一区二区三区| 日韩精品三区四区| 亚洲图片欧美色| 婷婷五月天久久久| 看看日B真人视频| 麻花豆传媒剧国产MV出差| 18一区二区三区| 91美女小视频| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 国产免费永久精品无码| 日本黄色天堂| 国产精品自在自拍视频| 性欧美精| 无码丰满熟妇一区二区浪潮AV| av在线人气| av影片在线观看不卡| Julia在线播放亚洲久久| 欧美激情亚洲| 无码99| 九九九九九九九九九国产精品| 9999免费精彩视频| 国产白丝网站| 亚码激情| 人人性爱视频免费| 91九九九小逼| 青娱乐国产精品| 国产诱惑| 日韩av乱伦| 9久久精品| 亚洲无套久久嗯嗯| A级国产欧美激情在线| 五月天伊人| 久久久久久亚洲中文| 97超碰精品成| 超碰av在线| 超碰色图| 九九久久国产精品| 天天综合网日韩7799| 中文字幕在线第二页| 五月丁香狠狠爱| 日韩亚洲欧美中文字幕| 男人的天堂色偷偷青青草视频婷婷网| 九九精品99| 亚洲色图第一页| www.99视频| 蜜臀一区二区三区在线 | 屌逼麻豆| 日韩性爱1级片视频| 啊啊啊啊啊舒服| 96精品在线| 亚洲无码国产精品久久| 精品一区99999| 一区二区三区在线资源| 亚洲国产一区二区日韩专区| 久久久久久久综合,国产| 六月丁丁香| 五月天久久综合网| 久99在线免费观看视频| 艾草av| 国产激情在线| 久久伊人最新网址视频| 日本黄色天堂| 三级片大波波| 人人天天干干| а√天堂资源官网在线资源| 啊啊啊啊啊啊啊网址在线观看| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 84YTCOM性无码| 97超色| 综合国产97| 黄片免费看黄片免费看| 老熟女乱伦片| 99少妇| 久久久久密臀视频| 殴美,日韩国产伦精品| 可以在线观看AV的网站| 国产在线播放成人免费| 亚洲熟女一区二区| 成人热久久精品| 色婷婷激情| 欧美性爱www免费版| 毛片久久| 日本不卡一二区| 天天综合网合集91| 你草精品在线视频| 亚洲午夜免费狠狠干| 午夜寂寞欧美| 成人av福利在线观看| 亚洲熟女人妻中文字幕一区二区 | av在线人气| 婷婷五月天成人| 精品性爱一二三区| 欧美综合娱乐久久| 操逼操2| 久久人妻熟女一区二区| 97超级色碰碰| 亚洲宗合网| 黄呦呦在线| 午夜天堂精品久久| 91丨国产丨白浆| 欧美成人都市人妻| 色五月网址| av片在线观看免费播放| 国产操逼逼网| 亚洲欧美在线观看免费| 久久久久久一日韩字幕无码| 麻豆国产97在线| 91综合色| 国产精品电影大全| 97超碰超碰| 欧美天天弄| 97天天日| 欧美999| 国产操逼网站亚洲一级黄色| 极品白嫩美少妇在地板上位骑射淫水泛滥| 九九九九热只有精品| 偷拍欧美亚洲| 91色欧美| 国产97在线 | 亚洲| 人妻天堂三区| 亚洲毛片基地专区| 青娱乐淫乱1314| 一级做受视频免费是看美女| 69XX一中文字幕人妻91| 日韩免费福利在线观看| 国产精品久久久无码aV去| 国产精品不卡一区二区三区av| 熟妇综合一区二区三区| 欧美亚洲素人制服精品| 可以在线观看的黄色网址| 密乳AV免费观看| 黑人操一区二区| 国产一区在线免费播放| 欧亚免费视频| 99亚亚热| 综合网久久| 60秒免费小视频| 国产精品大屁股999| 18+91网站| 试看60秒 爽| 中文字幕一区二区三区字幕| 亚洲成人无码影院| 日韩一级片在线看| 亚洲天堂,男人| 色女99一级片在线观看| 强奸熟女一区二区三区| 91欧洲入口| 九九九九精品九九九九| 国产乱伦性爱区| 久久精品三级影视| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | aV中文麻| 人妻性爱一区二区| 日本在线不卡v二区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 久久中文字幕人妻熟av女蜜柚| 少妇高潮九九九九| 成全在线观看免费观看| 欧美一区二区三区日韩| 四虎影库国产精品免费| 丝袜亚洲91| 日本欧美不卡| 色操逼网| 人妻少妇久久久| 亚洲AV不卡在线观看尤物| 精品国产乱码久久久影院| 日韩成人无码| 国产免费一区在线观看| 天天爽夜夜欢视| 欧美在线大香999| 内射老妇BBWX0C0CK| 日本福利二区视频| 久久久熟妇熟女国产| 欧美色97| 久草视频在线视频在线视频在线观看| 水澄无码AV| 久久久内射良家| 亚洲春色一区二区三区| 亚洲av无码成人精品国产| 国产超碰在线一区| 久久久久久综合久久伊人蜜月| 成人精品一区二区91毛片不卡| 色欧美天天| 96精品一区| 国产成人精品必看| 久久色人体 | 日韩综合色网| 97在线精品观看视频| 男人天堂婷婷五月天校园春色| 久久综合久色欧美综合狠狠| 香港澳门日本三级网站| 五月婷婷六月丁香| 国产AV天美传媒一区二区三区| 影音先锋日本乱伦| 欧美日不卡| 97在线免费公开视频| 久久东京伊人一本到鬼色| 久久伊人在线五区| 久久久久久九九九| 狠狠狠狠狠干| 欧美综合亚洲| 久久久久久精品免费看A级| 国产美女激情| 精品国产91内射久久| 四虎永久在线精品免费网址| 果冻传媒A片麻豆熟妇人妻| 亚洲免费人妻在| 精品综合久久久久久97| 免费超碰97在线观看| 少妇与黑人高潮在线| 亚洲日韩在线a不卡99精品| 狠狠躁AV| 大香蕉一级黄色片久久| 另类图片五月| 亚洲欧美不卡线| 蜜臀久久99精品久久久久久久久| 综合色欧美| 九九av| 久久综合97| 国产熟女少妇一区| 97欧美| 麻豆AV一区二区| 色综合国产在线观看| 爱干爱射网啊啊啊| 欧美成人A√在线一区二区| 97超碰色屌| 自怕偷自怕亚洲精品| 蜜臀久久久| 国产精品婬乱一级毛片彝族| 任你干在线视频| 亚洲成?V人片在线观看福利| 中韩中文字幕在线观看| 日本三级黄页| 人妻天天爽天天爽三区| 欧美老妇综合网| 伊人久久在线视频观看| 久久视频,这里只有精品| 日本在线视频导航| 中文字幕1区2区| 色爽爽文学| 亚洲AV麻豆Aⅴ无码电影一 | 婷婷五月天成人| 日韩一级二级三级免费看完整版| 青青草在线视频人人想人人上 | 国内一区二区免费| 亚州精品丝袜-不卡成人免费| 大香蕉黄色一级片免费看| 98超碰日本| 午夜大香蕉| 成人毛片免费| 99精品久久久久久| 婷婷色中文字幕| 久久永久无码人妻视频| 小明看看网址| 丁香六月激情综合| 国内精品久久人妻性色av| 91丝袜在线视频| 91精品久久综合熟女| 999精品久久久久久久| 青青久操| 激情综合五月| 日本欧美韩国国产在线| 97在线视频观看免费| 大香蕉123| 6080YYY午夜理论片在线观看| 亚洲天堂少妇| 人妻一区二区三区| 免费啪啪一级视频| 久久久久久九九九| 97视频新免费| 中文一区二区婷婷视频| 精品亚洲黄色片 国产精品导航一区二区| 欧美日韩中文字幕不卡| 国产熟妇一区二区| 天天天天操| 思思热久久成人| 国产精品熟女一区二区三区| 在线免费试看60秒| 超碰亚洲欧美日韩无| 青青操综合网| 1769成人国产精品视频| 男人天堂无码| 成人天天看站长推荐| AV九九| 蜜乳AV一区| 色色毛片| 欧美姓爱综合网| 色在线69堂| www.操| 99这里有精品| 亚洲成人性爱在线观看| 五月丁香六月综合缴清无码| 亚洲国产日韩精品久久久| 丝袜亚洲91| 天天天肏屄欧美| 国内毛片免费h片在线| 国产精品亚洲一级av第二区| 日少妇视频| 性感美女91影视| 日韩av情韩国爱禁区av一区二区| 欧美亚洲丝袜美女电影| 99色在线视频| 极品色www影院| 国产成人亚洲精品无码古代早漏男| 亚洲视频精选| 99re视频在线播放青草| 中文字幕免费看| 综合91网| 亚洲吊色| 国产丝袜美腿美女麻豆| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 国产农村一一级特黄毛片| 国产精品久久久久无码A√| 亚洲欧美日韩免费观看| 狠狠超| 中文字幕第2页| 香港久久久| 99热这里只有精品1| 九九九热精品| 亚洲美女黄色| 国产精品乱码久久久久久久| 制服诱惑亚洲一区二区三区在线观看| 欧美精品偷拍| 免费久久9999| 亚洲限制级| 亚洲国内精品成人不卡| 91精品国久久久久久无码| 夜夜国产一区| 蜜桃一区二区三区| 老女人老91妇女老热女| 亚洲伊人久久精品影院| 国产精品国产| 97超碰伊人| 欧美伊人电影| 96麻豆精品一区二区三区| 玖玖综合网| 91精品人| 八戒午夜福利理论片| 国产精品人人爽人人做可爱福利| 亚洲国产ⅴ高清在线观看| 欧美日韩激情无码专区| 成人网站 免费观看| 91超碰人人操| 中文字幕五区| 麻豆AV一区二区| 中日韩久久人妻一区二区| 嗯嗯啊啊好疼| 加勒比av网| 在线欧美亚洲| 国产精品人妻无码久久久老鸭窝 | 无人区高清电影免费观看一区二区三 www.qmcai2.com | 91一区二区三区蜜桃| av网站在线观看了| 日本 欧美 国产一区| 午夜天堂精品久久久久91| 人人喜人人妻| 97在线无精品| 久草精品在线| 国产操逼网站亚洲一级黄色| 国产一区在线观看无码AV| 亚洲AV无码成人精品久久| 色婷婷五月天| 日韩三级在线观看mp4| 九九九九一级| 免费视频一二三区| 成人97人人超碰人人| 亚洲制服欧美另类内射| 激情文学网伊人| 久久久婷| 国产精品另类一区大香蕉| 性色aV一区二区三区噜噜| 亚洲男人综合| 91精品人妻电影| 精品一区二区三区四区女| 操死我了嗯嗯嗯| 日韩伦理久 久久 清纯| 国产精品久久久久久久久久久久久久久久| 欧美日韩国产人人| 99夜夜操| 999亚洲国产视频| 五月婷婷五月天| 麻豆九九九| 精品国产乱码久久久影院| 国产主播福利| 欧美极度丰满熟妇hd| 中文字幕91综合| 肉丝中文无码高清| 99婷婷一区二区| 91精品国产高清久久久久久,亚洲成人| 中亚精品极乱| 久久精品视频一区三区小泽玛利亚| 9久热这里只有精品| 无遮挡一级毛片视频免费的| 婷婷伊人网| 日韩9999| 亚洲欧美第一页| 97国产成人精品免费视频| 色婷婷成人综合| 亚洲男人在线观看天堂| 国产av又色又爽又黄| 日本天天人人狠狠在线日美女 | 国内精品不卡无毒99999| 超碰综合97在线| 成人免费看吃奶视频网站| 精品一区二区三区蜜桃臀赵总| 伊人少妇久久久| 91性高朝久久久久久久久| 97色碰| 亚洲综合大片| 家庭乱伦国产| 大香蕉手机在线视频| 中日韩久久久免费看| 在线无码视频| 久久久久久久 九九九九九九九| 97在线观看免费| jk白丝没脱就开始啪啪| 啊啊啊好湿国产一二| 久久啊啊| 99色色网| 极品出轨视频网站| 一,爱啪啪,在线免费视频| 91天堂视频| 久久国产在线一区二区| 日韩乱码Av| 亚洲 欧美 色图| 超碰99在线观看| 国产丁香精品露脸视频| 亚洲国产麻豆一区二区三区| 伊人久久久日韩一区| 26UUU欧美日本| 久久免费中文字幕在线观看| 无套后入双马尾| 色噜噜综合网| 天天舔日美女视频| 欧美视频在线视频免费va| 啊啊啊轻点在线观看| 亚洲精品亚洲人成在线麻豆| 99精品久久久久久| 日逼国产| 夜夜嗨免费视频| 免费看久久久性性| 校园春色美腿丝袜 | 日本熟女中文| 99re28在线观看| 九月婷婷| 色噜噜狠狠色综无码久久合欧美| 激情五月综合网| 欧美色涩| 淫色网综合| 麻豆综合一区av| 精品人妻一区春色| 欧美成人一级免费电影| 91色伦| 91欧美| 久久产精品一区二区三区电影| 激情图片伦理国产一区二区日韩| 2024年最新色情网站在线观看 | 99性爱| 日本淫乱女一区二区三区视频| 蜜桃中文字日产乱幕4区| 色屁屁影院www国产| 1区2区3区中文字幕日韩| 欧美性爱日韩性爱| 日本1区2区不卡视频| 中文字幕女同在线| 手机看片1025| 高清无码人妻久久久一区二区三区aⅴ| 久久久久13| 一二三四视频中文字幕在线看| 综合网97| 六月激情网| 强奸乱伦AV一天堂网| 青青伊人这里只有精品| AV电影在线播放| 国产精品久久久啊| 国产精品suv一区| AV综合中文字幕干| 99无码狠狠久久| 9精品久久| 噜噜在线| 麻豆国产视频精品观看| 后入式999| 大香蕉在线视频15| 一区二区三区黄片免费观看| 国产农村妇女毛片精品久久| 欧美性战999| 秋霞曰韩R级| 国产精品人妻无码久久久互動交流| 熟女一区二区三区| 99视频精品| 99久久久久久亚洲精品不卡| 国产又大又粗又长视频| 69精品在线| 亚洲欧洲日韩国产自在线| 丁香九月婷婷| 国产风韵犹存熟妇三区| 麻豆视频test| 精品人人插人人操| 欧美色97| 白丝被操91| 国产精品夜夜夜| 2019天天操天天爽天天拍| 91|九色|国产熟女| 欧美成人A√在线一区二区| 国产又粗又长的视频| 亚洲美欧999| 日韩成人精品中文字幕| 亚洲一曲日韩精品| 91网站18| 好湿好紧视频| 91丨精品丨国产丨丝袜| 色香阁在线| 乱色视频中文字幕| 艹精品| 2017大香蕉| 国产97/欧美| 久草综合视频| 嗯……啊…嗯嗯…啊…好舒服| 大香蕉久| 亚洲成人久久一区二区| 午夜亚洲WWW湿好大| 久久久久久久久久9| 日韩精品人妻中文字幕不卡乱码| 日夜干射色啊| 亚洲AV资源| 久久久久久亚洲精品不卡人乳| 91人妻尻屄视频| 国产日产精品久久快鸭的功能介绍| 蜜臀久久99精品久久久久| 人妻熟女一区二区三区视频| daxiangjiao你懂的| 亚州中文字幕超碰97| 好爽,再快点啊哈嗯嗯嗯嗯| 人人人人人人少妇| 久久婷婷影院| 亚洲aV无码成人在线观看| 黑人操一区二区| 欧美亚洲色图另类国产| 性久久久| 熟女激情综合网| 国产精品白领在线观看 | 亚州高清色综合| 色哟哟-国产专区| 嗯啊免费视频| 亚洲欲色9532548967一区| 五月丁香综合激情| 超碰在线99| 激情色播| 色五月激情网| 99热这里| 亚洲AV无码天美传媒一区| 欧美久久九九| 亚洲国产精品乱码在线观看| 台欧久久精品视频| 无码91| 最新亚洲风情电影| 日韩国产十八禁| 九九九九九九九九九五码| 天美传媒AV国产在线| 97超视频在线观看| 亚洲性感丝袜诱惑在线观看| 中文熟女五十乱码在线| 夫妻AV网站| 97美日韩视频| 超碰97亚洲| 成人精品在线免费视频| 日本一区二区三区免费观看| a一区二区三区乱码在线| 亚洲中文国际强奸字幕| 日本护士高潮| 大香樵伊人网| 丰满少妇一区二区三区四区观看 | 柠檬AV导航| 色哟哟的毛片| 少妇被玩视频二三区| 天天综合网1| 在线色资源| 992大香蕉| 亚洲中文字幕在线视频一区二区| 秋霞一级鲁丝片A片| 约操熟妇| 天天拍天天操| 色第一页| 9997se| 东北女人操逼| 乱伦色图网址是多少| 欧美熟女操屄| 黄色网址久久精品欧美喷水| 国产精品小视频一区二区三区| 丝袜视频一区二区在线播放国产中文| 欧美激色| 亚洲综合20p| 琪琪精品免费一区二区三区| 亚洲Av无码成人精品国产| 97WW精品| 中文字幕在线2| 91高潮| 国产精品美女在线一区| 婷婷99狠狠躁天天躁| 色综合加勒比四四季|