99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

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

Spring Boot仿淘寶購物系統(tǒng):從部署到核心模塊與避坑指南 前陣子幫人調(diào)試一套基于Springboot的仿淘寶購物管理系統(tǒng)說句實(shí)話這類項(xiàng)目在很多平臺(tái)上一搜一大把但真正拿到源碼能順利跑起來、看完文檔能搞清楚業(yè)務(wù)邏輯的還真不多見。今天借著這套系統(tǒng)把我從導(dǎo)入項(xiàng)目到二次開發(fā)過程中遇到的坑、梳理出來的設(shè)計(jì)思路、以及代碼里值得反復(fù)揣摩的核心部分一次性整理清楚。如果你正在做課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)或者單純想找一套電商項(xiàng)目來實(shí)操Springboot這篇文章應(yīng)該能讓你少走不少彎路。這套系統(tǒng)的定位很明確模仿主流電商平臺(tái)的購物流程把用戶、商品、購物車、訂單、支付、收貨、評(píng)價(jià)這一條完整鏈路串起來。它不是那種只有一個(gè)CRUD的空殼項(xiàng)目而是把權(quán)限、事務(wù)、并發(fā)、文件存儲(chǔ)這些實(shí)際開發(fā)中繞不開的點(diǎn)都塞了進(jìn)去所以拿來練手或者二次開發(fā)都很合適。1. 項(xiàng)目概覽為什么這類購物系統(tǒng)這么適合練手1.1 電商項(xiàng)目覆蓋的技術(shù)面足夠廣我在帶新人或者幫人看項(xiàng)目時(shí)一直建議優(yōu)先選擇電商類項(xiàng)目作為Springboot練手目標(biāo)。原因很簡單一個(gè)完整的購物系統(tǒng)天然就能拆出多個(gè)模塊每個(gè)模塊都能對(duì)應(yīng)到不同的技術(shù)難點(diǎn)。用戶模塊要處理注冊(cè)、登錄、權(quán)限驗(yàn)證這涉及密碼加密和JWT鑒權(quán)商品模塊要處理分類、搜索、圖片上傳這涉及文件存儲(chǔ)和條件查詢購物車模塊要維護(hù)用戶和商品的關(guān)系需要考慮合并、數(shù)量修改訂單模塊最麻煩既要保證事務(wù)一致性又要處理庫存扣減的并發(fā)問題支付模塊雖然通常對(duì)接模擬支付但回調(diào)通知、訂單狀態(tài)流轉(zhuǎn)這些邏輯一點(diǎn)都不能少。這套基于Springboot的淘寶購物管理系統(tǒng)表面上看是一個(gè)麻雀雖小五臟俱全的商城實(shí)際上它把Springboot、MyBatis-Plus、Redis、Minio、JWT這些常用組件的整合方式都演示了一遍。對(duì)于初學(xué)者來說跟著源碼把這些模塊逐個(gè)過一遍比看十遍理論都管用。1.2 角色與核心功能矩陣系統(tǒng)里分了三種角色買家、賣家和管理員。有些項(xiàng)目會(huì)把賣家和管理員合并但這套系統(tǒng)是分開的權(quán)限粒度更清晰。角色核心功能涉及模塊游客瀏覽商品、搜索商品、查看商品詳情商品模塊買家登錄注冊(cè)、管理購物車、下單、支付、收貨、評(píng)價(jià)、查看訂單用戶、購物車、訂單、支付、評(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)拿一次完整的購物流程舉例游客在前臺(tái)頁面看到商品列表點(diǎn)擊進(jìn)詳情頁如果想下單需要先注冊(cè)并登錄登錄后把商品加入購物車然后在購物車?yán)锕催x要結(jié)算的商品生成訂單。訂單生成時(shí)系統(tǒng)會(huì)扣減庫存同時(shí)開啟支付倒計(jì)時(shí)用戶支付成功后才算真正下單完成。賣家在后臺(tái)看到新訂單執(zhí)行發(fā)貨操作買家收到貨后確認(rèn)收貨再對(duì)商品進(jìn)行評(píng)價(jià)。整個(gè)閉環(huán)里涉及的所有狀態(tài)變化這套系統(tǒng)都用數(shù)據(jù)庫字段和狀態(tài)更新記錄下來了。理解這個(gè)閉環(huán)很重要因?yàn)楹竺嫠心K的代碼都是圍繞這條鏈路展開的。我在給文檔寫說明時(shí)也是按照這個(gè)流程來分章節(jié)而不是單純按代碼目錄結(jié)構(gòu)來講。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簡化單表CRUD提供分頁插件和條件構(gòu)造器MySQL8.0存儲(chǔ)業(yè)務(wù)數(shù)據(jù)支持事務(wù)和復(fù)雜查詢Redis6.x / 7.x緩存驗(yàn)證碼、商品詳情、購物車數(shù)據(jù)也能做分布式鎖Minio8.x商品圖片、頭像等文件的對(duì)象存儲(chǔ)服務(wù)JWT Spring Interceptor-無狀態(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)造器寫起來比JPA的Specification直觀得多而且很多老項(xiàng)目的Mapper XML可以直接遷移復(fù)用。另外MyBatis-Plus對(duì)分頁、邏輯刪除、自動(dòng)填充都有現(xiàn)成支持能省不少代碼量。Redis在這個(gè)項(xiàng)目里承擔(dān)的是性能加速器角色。商品詳情頁的點(diǎn)擊量最高如果每次請(qǐng)求都打數(shù)據(jù)庫壓力會(huì)很大所以項(xiàng)目里把熱門商品的詳情緩存到了Redis并設(shè)置了過期時(shí)間。購物車數(shù)據(jù)也存在Redis里用Hash結(jié)構(gòu)存儲(chǔ)key是用戶IDfield是商品IDvalue是商品數(shù)量這樣查詢購物車就很輕量。2.2 后端工程目錄是怎么拆的我拿到源碼后第一件事就是看目錄結(jié)構(gòu)。這套項(xiàng)目的結(jié)構(gòu)很標(biāo)準(zhǔn)但有一點(diǎn)值得拿出來說它在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ù)庫操作 ├── entity // 數(shù)據(jù)庫實(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)看著簡單一旦加功能就會(huì)亂。這套系統(tǒng)的dto和vo是分開的這一點(diǎn)很關(guān)鍵。前端傳過來的參數(shù)用dto接收返回給前端的數(shù)據(jù)用vo封裝避免把數(shù)據(jù)庫實(shí)體直接暴露出去。比如用戶對(duì)象里有密碼字段如果直接把entity返回給前端密碼就泄露了。用vo只返回id、nickname、avatar這些字段安全性會(huì)好很多。2.3 數(shù)據(jù)庫設(shè)計(jì)核心表關(guān)系一覽數(shù)據(jù)庫一共十幾張表核心的幾張是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è)購物系統(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è)流程可以簡化成三步用戶輸入賬號(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)不來排查半天不知道問題在哪。如果你自己調(diào)試記得先確認(rèn)excludePathPatterns里的路徑跟Controller里的RequestMapping前綴完全一致。Token解析時(shí)項(xiàng)目用JWT的SecretKey來簽名和驗(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的配置也很簡單核心就是四個(gè)參數(shù)endpoint、accessKey、secretKey、bucketName。我在實(shí)際跑這個(gè)項(xiàng)目時(shí)本地直接下載了Minio客戶端開啟一個(gè)9000端口的服務(wù)然后配置好賬號(hào)密碼基本就通了。如果在云服務(wù)器上部署記得把Minio的安全組和防火墻端口打開不然圖片URL會(huì)一直加載不出來。3.3 購物車與生成訂單時(shí)的事務(wù)控制購物車在Redis里的實(shí)現(xiàn)前面提過但我在這里要強(qiáng)調(diào)一下購物車數(shù)據(jù)從Redis轉(zhuǎn)成訂單時(shí)的處理。用戶勾選購物車商品點(diǎn)擊去結(jié)算時(shí)后端得一次性接收多個(gè)商品ID到Redis里取出對(duì)應(yīng)的商品信息然后查數(shù)據(jù)庫拿到最新價(jià)格計(jì)算總金額生成訂單主記錄和訂單明細(xì)記錄同時(shí)扣減庫存。這個(gè)操作牽扯到多張表的寫入必須加Transactional事務(wù)注解。不加或者加錯(cuò)位置就會(huì)出大問題。比如訂單生成成功了但庫存沒扣減或者扣了庫存但訂單沒生成這兩種情況在并發(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è)購物系統(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已取消無后續(xù)操作5退款中賣家處理退款狀態(tài)流轉(zhuǎn)有一條鐵律除非特殊業(yè)務(wù)否則不允許跨狀態(tài)跳轉(zhuǎn)。比如一筆待支付訂單不能直接變成已完成。在代碼里項(xiàng)目通過在updateOrderStatus方法里傳oldStatus和newStatus用更新語句的WHERE條件帶上前置狀態(tà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 庫存扣減樂觀鎖加唯一索引雙重兜底秒殺場景下庫存超賣是經(jīng)典的并發(fā)問題。這個(gè)項(xiàng)目雖然沒做秒殺但庫存扣減的邏輯已經(jīng)考慮了并發(fā)情況。正??蹘齑娴拇a不能是先查庫存數(shù)量夠再更新這種兩步走因?yàn)樵诟卟l(fā)下兩個(gè)請(qǐng)求同時(shí)查到庫存還剩1都判定可以購買最后執(zhí)行更新時(shí)庫存就會(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ù)庫在更新時(shí)自行判斷庫存是否足夠如果不夠更新操作影響的行數(shù)就是0業(yè)務(wù)層捕獲到這個(gè)結(jié)果直接提示用戶庫存不足。配合tb_order_item表上的order_id product_id唯一索引還能防止同一用戶在同一訂單里重復(fù)添加同一商品導(dǎo)致的數(shù)據(jù)混亂。我之前幫人從源碼里找bug發(fā)現(xiàn)他把庫存扣減寫成了UPDATE tb_product SET stock stock - #{quantity} WHERE id #{productId}少了庫存判斷條件并發(fā)測試一打就超賣。這個(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)簡單但會(huì)有延遲最壞情況下訂單被取消的時(shí)間會(huì)晚一分鐘而且掃表全量數(shù)據(jù)時(shí)如果訂單量大對(duì)數(shù)據(jù)庫壓力不小。第二種是延遲消息。用Redis的過期鍵監(jiān)聽或者消息隊(duì)列的延遲隊(duì)列來實(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. 源碼和文檔拿到手怎么才能用起來5.1 項(xiàng)目導(dǎo)入三步走很多人拿到源碼后第一步就卡住了因?yàn)閷?dǎo)入項(xiàng)目的細(xì)節(jié)沒搞明白。這套系統(tǒng)我建議按下面三個(gè)步驟來操作第一步準(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ù)庫和初始數(shù)據(jù)建好。Redis和Minio在本地起默認(rèn)服務(wù)就行。第二步改配置。打開application.yml按自己的實(shí)際環(huán)境修改數(shù)據(jù)源地址、Redis地址、Minio的endpoint和密鑰。這里最容易踩的坑是數(shù)據(jù)庫時(shí)區(qū)問題建議在數(shù)據(jù)庫連接參數(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)用。后端起來后用接口文檔或前端頁面的登錄接口試一下能拿到Token基本就說明環(huán)境和代碼都通了。如果項(xiàng)目里有前端頁面通常是Vue寫的一個(gè)簡單管理頁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配置了分頁插件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ù)庫表再改實(shí)體類保證字段名能映射上。另外dto層的參數(shù)校驗(yàn)注解比如NotBlank、Email也會(huì)因?yàn)榍岸藗鲄⒏袷讲煌枰{(diào)整。5.3 文檔里真正值錢的幾頁很多人不看文檔其實(shí)這套項(xiàng)目自帶的文檔里有幾個(gè)部分比源碼還值錢。首先是數(shù)據(jù)庫設(shè)計(jì)文檔它會(huì)畫一張ER圖并寫明每張表每個(gè)字段的含義這能幫你快速理解為什么訂單表要冗余商品快照、為什么地址表要保留省市區(qū)多級(jí)字段。其次是接口文檔里面把每個(gè)接口的請(qǐng)求參數(shù)、響應(yīng)示例、狀態(tài)碼都列出來了前后端聯(lián)調(diào)時(shí)直接照著文檔對(duì)就行。還有一個(gè)容易被忽略的部分是運(yùn)行部署說明里面包含了一些奇怪的坑。比如有個(gè)細(xì)節(jié)Minio的bucket在創(chuàng)建時(shí)如果沒做公開訪問策略上傳成功后的圖片URL即便存在數(shù)據(jù)庫里也是訪問不了的因?yàn)檎?qǐng)求沒有簽名。文檔里專門寫了一句話讓你執(zhí)行一條mc policy set public命令或者通過控制臺(tái)設(shè)置桶策略。我當(dāng)時(shí)就是沒看這頁卡了半小時(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ù)庫慢后來查日志發(fā)現(xiàn)是JSON序列化耗時(shí)太長。原因出在實(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來回解析就卡住了。解決辦法有兩個(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ì)越來越差。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é)果訂單插入成功后庫存扣減失敗了整筆數(shù)據(jù)就是錯(cuò)的。正確的做法是把事務(wù)注解加在createOrder上讓整個(gè)方法體變成一個(gè)事務(wù)或者把deductStock挪到另一個(gè)Service類里通過注入的Bean來調(diào)用。檢查你手上的源碼時(shí)多留意這類自調(diào)用。6.3 性能優(yōu)化緩存預(yù)熱與頁面靜態(tài)化項(xiàng)目跑通之后如果想做性能優(yōu)化有兩個(gè)性價(jià)比很高的方向。一是商品熱門數(shù)據(jù)的緩存預(yù)熱可以在項(xiàng)目啟動(dòng)時(shí)把數(shù)據(jù)庫里點(diǎn)擊量最高的前幾十個(gè)商品加載到Redis避免第一個(gè)訪問用戶直接打到數(shù)據(jù)庫。二是用定時(shí)統(tǒng)計(jì)替代實(shí)時(shí)統(tǒng)計(jì)比如商品銷量這類數(shù)值沒必要每次下單都更新商品表的sales字段可以定時(shí)把訂單表聚合出來的數(shù)據(jù)回填到商品表減少對(duì)商品主表的頻繁更新。還有一個(gè)可以優(yōu)化的點(diǎn)是圖片懶加載和壓縮。Minio里存的原圖可能很大前端展示列表頁時(shí)會(huì)造成流量壓力??梢杂肕inio的圖片縮放功能生成縮略圖列表頁加載縮略圖詳情頁加載原圖。這個(gè)方案不需要改太多代碼只需要在返回URL時(shí)拼上壓縮參數(shù)實(shí)測效果很明顯。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í)前端登錄頁點(diǎn)了半天沒反應(yīng)打開控制臺(tái)看到Access-Control-Allow-Origin錯(cuò)誤去配置里改了一下源地址馬上就好了。這種問題非常常見但很多人會(huì)在前端代理上繞來繞去其實(shí)后端把跨域配置允許好才是正路。最后再說兩句這套基于Springboot的淘寶購物管理系統(tǒng)我前后也幫人部署和改過幾次整體感受是代碼結(jié)構(gòu)和注釋質(zhì)量在同類項(xiàng)目里屬于中上水平尤其是訂單狀態(tài)機(jī)、庫存扣減、JWT鑒權(quán)這幾塊對(duì)剛接觸Springboot的人來說是很好的學(xué)習(xí)樣本。源碼里附帶的文檔雖然篇幅不大但確實(shí)把數(shù)據(jù)庫設(shè)計(jì)和接口約定寫清楚了配合著學(xué)能少掉很多頭發(fā)。如果你準(zhǔn)備拿它做畢業(yè)設(shè)計(jì)或課程設(shè)計(jì)我建議不要只滿足于跑起來交差。試著去改一個(gè)功能比如把商品搜索改成支持多字段排序或者把支付回調(diào)改成模擬微信支付的通知格式這個(gè)過程會(huì)讓你真正理解這套系統(tǒng)是怎么工作的。遇到問題時(shí)也別急著換項(xiàng)目靜下心來看看日志、看看源碼里已經(jīng)寫好的處理方式收獲會(huì)超出你的預(yù)期。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲AV第二区国产精品| 亚洲色模骚货| 久久五月情| 日本久久精品| 亚洲成人av在线播放| 婷婷综合五月| 先锋资源婷婷| 一级无码作爱片| 五月丁香色| 九九这里都是精品| 99在线国| 激情小说之五月| 天天肏视频| 在线综合亚洲欧美65| 123草逼网| 五月社区婷婷激情| 色播五月婷婷综合| 色五月婷婷狠狠撸| 天天日日夜夜爽| 大香蕉75线| 日韩人妻AV在线| 99精品在线播放| 天天爱天天吃狠天天透| 亚洲日日操| 激情五月天在线观看色婷婷| www色色com| 成人啪啪色婷婷久| www.99热这里精品| 九九精品婷| 99综合| 99亚洲精品| 中文字幕色色色| 18av天堂| 精品网站99| 最新久久网址| 日韩成人AV在线| 极品九九九九九九| 看全色黄大色大片| 婷婷的99视频网站| 视频这里只有精品| 99热精品网| 开心五月激情网| 五月丁香色| 99久热精品在线| 色综合婷婷99| 婷婷久久爱| 久久久久久久11111111111| 亚洲综合视频一下| 亚洲久久婷婷丁香五月天| 成人av免费观看| 久久久久亚洲AV无码网影音先锋| 天天色天天射天天日| 婷婷九九视频| 五月天丁香网| 婷婷五月天深爱| 5月婷婷6月丁香aV| 五月天激情视频五月天| 99精品综合视频| 这里精品| 啊V视频在线观看| 97人人干人人操| 大香蕉精品视频| 大香蕉九九| 久久久网站| 五月天婷婷久久视频| 激情av| www久| 嫩草AV久久伊人妇女超级A| 婷婷99狠狠躁天天躁| 夜夜操狠狠操| 第四色色色色色丁香五月天| 國語久久婷| 91一起艹| 丁香五月婷婷亚洲另类| 亚洲va综合va国产va中文| 99热久草| www.91av.com| 婷婷狠狠18禁久久| 五月人妻婷婷| 亚洲免费av在线| 日本五月婷婷| 色婷婷AV在线观看| 99综合视频在线| 五月六月激情婷婷| 天天日天天爽| 免费看欧美成人A片无码| 成人午夜天| YW无码| 丁香五月六月综合激情| 天天色色婷婷| 丁香婷婷久久| 9l视频自拍九色9l黑人| 五月丁香六月综合情在线观看| av婷婷丁香 六月| 亚洲无码成人性爰网| 色情五月停停丁香| 五月婷久久| 超碰九热| 美女天天艹人人爽| 婷婷的色色五月天| 日韩丁香涩| 99玖玖在线视频| 99热国产这里只有| 91色五月| 九九精品re免费视频| 香蕉国产2013| www.深爱激情| 成人做爰A片免费看网站找不到了| 国产综合A片| 五月婷婷激情综合| 久久天天| 日逼影音先锋男人AV资源站| 26uuu青青| 99综合一区| 婷婷伊人综合中文字幕| 五月丁香婷婷伊人日韩| 五月六月丁香婷婷在线观看| 五月天丁香网站| 欧美色综合天天久久综合精品 | 任你干线上免费视频有3吗| 另类精品视频在线观看| 亚洲亚洲亚洲AAAAAA| 啪啪一区| 噜噜操操| 久久五月天婷婷| 久久99网| 99人碰碰碰| 久久五月网| 99re热在线观看| 国产精品99久久久久久久女警| 国产AV不卡福利| 婷婷丁香成人在线视频| 婷婷五月色| www久久久久久久| 五月激情啪啪| 久久资源网五月婷| 天堂综合久久| 538在线精品| 亚洲综合婷婷五月天| 五月婷婷在线视频观看| 91人人人人人人人| 五月婷婷在线观看| 麻豆WWWCOM内射软件| 玖玖爱伊人| 99热a片免| 97久久久久久久久久久| 能看的AV网站| 无码日本精品XXXXXXXXX| 伊人色综合影院视频| 亚洲久热无码| 激情丁香五月综合| 五月丁香激情综合久久| 百度4399有码精品V在线观看| 亚洲色综久久五月| 香蕉久久五月| 激情六月综合| 99精品视频推荐| 精品无码视频| 91久久国产综合久久| 激情五月天色爱| 人妻丰满精品一区二区A片| 丁香婷婷网| 婷婷综合成人| 婷婷五月电影院| 黄网免费看| 六月婷婷AV| 亚洲色色香蕉| 丁香婷婷色色| 思思w99| 五月开心久久| 日韩抽插操逼| 久久五月丁香综合| 日日夜夜干| 91热手机在线| 日韩啪啪视频| 婷婷丁香六月影视| www.99riav99| 久久久久人妻精品| 国产成人+综合亚洲+天堂| 美女激情综合| 99这里有精品免费| 国成人网| 九九色大香蕉| 99er这里只有精品| 国产精品美女久久久久AV超清| 综合色天天| 丁香激情五月天| renre人人操国产超碰在线| 亚洲精品国产熟女久久久| 五月天婷婷久色| 中文字幕网伦射乱中文| 男女99免费视频| 久热99| 99 r热| 天天综合网在线| 久久视屏这里只有久久| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 一级性感毛片| 婷婷六月丁| www.激情五月天。com| 色激情五月天| 六月狠狠综合| 久久激情五月| 超碰2021| 五月天色丁香| 97五月天婷婷| 99成人网一区| 特黄三级又爽又粗又大| 人妻AV在线| 亚洲色情一区二区三区四区| 亚洲色婷婷五月天| 精品人妻午夜一区二区三区四区 | 国产综合婷婷| 噜噜五月天综合| 婷婷伊人五月天| 99热爱爱干干日| 337p大胆噜噜噜噜噜91Av| 五月天婷婷开心| 99小视频在线观看| 午夜天堂一区人妻| 亚洲午夜电影| 五月丁香婷婷人体| 狠狠综合久久| 伊人大香蕉综合在线| 婷婷九月色| 丁香婷五月| 热五月婷婷| 日日夜夜狠狠| 99激情在线| 五月天小说激情| 亚洲AV无码一区二| 欧美综合激情| 大香蕉啪啪网| 精品人人操| 在线A色| www..999热久| 97香蕉人人在线观看| 日日干天天| 这里只有精品免费视频| 天天摸天天舔天天爽| 丁香社92视频| 五月婷婷伊| 天天爱天天操| www.五月婷婷久久.com| 99精品视频网| 丁香五月六月婷婷怡红院| 丁香五月婷婷狠狠色| 色域五月丁香| 久久久婷丁香五月| 国产露脸150部国语对白| 伊人激情综合网| 婷婷十月丁香| 99精品7| 一起草AV| 激情九月婷婷| 丁香五月中文字幕| 99热性色| 99久操| 国产干逼片| 深爱激情综合| 五月天国产| 99成人| 亚洲国产色色| 天天精品视频在线观看视频| 精品色色网| 色啪网| 极品九九九九九九| 秋霞少妇毛片| 青草青草久9视频在线视频| 欧美搡BBBBB摔BBBBB| 五月婷婷六月丁香综合| 婷婷午夜丁香| 色婷婷大香蕉| 九九碰九九爱97| 天天做天天爱天天爽| 天天做 天天爱| 日韩按摩二区| 可以直接看的AV网站| 久久五月婷婷电影| 丁香六月婷婷综情欧美| 色婷婷丁香五月| 庭庭久久内射| 伊人干综合| 激情五月天综合网| 久久久.COM| 99超碰人人| www.com.色色| 五月丁香好婷婷A片网| 亚洲人人操| www.99精品视频| 久热在线观看视频9| 天天色凹凸| 丁香88AV五月婷婷| 亚洲天堂玖玖| 亚洲AV无码影院| 玖玖婷婷视频| 99爽视频| 久热只有这里有精品| 九九黄色网| 99在线精品观看99| 狠狠操天天操综合| 日日夜夜爽| 99久久大片| 四色AVwww| 婷婷婷婷婷婷婷婷| 久热这里只有精品99re| 国产成人精品一区二三区熟女在线| 91操碰| 99色综合| 五月天激情黄色网址| 婷婷五月丁香激情图片| 久久五月激情综合| 玖玖99福利| 天天综合干| 只有久久精品免费| 婷婷综合一二三| 夜夜 操无码| 五月丁香啪| 97色婷婷| 影院久久久| 中文字幕激情综合| 成人深爱丁香五月| 色永久| 丁香五月婷婷偷拍| 五月天色图| 婷婷在线中文字幕| 99A级片| 亚洲激情亚洲激情 | 久久这里有精品在线观看| 99日这里只有精品| 五夜婷婷| 色综久久久| 香焦网五月天| 五月花成人网| 无码色色色色色| 99re在线观看视频| 狠狠色综合网| 性av| 激情综合网五月丁香| 丁香五月激情婷婷视频| 五月天另类视频| 噜噜干日本| 亚洲字幕AV一区二区三区四区 | 熟女网站久久| 婷婷五月天日日日干干干| 五月婷婷啪| 久久视频婷婷视频| 黄色AAAA韩国guochansanji| 久久久人妻人伦| 亚洲婷婷乱乱丁香| 色色日本| 五月婷婷丁香六月 | 色五月播五月| 欧美操综合| 婷婷五月天激情网址| 伊人网色婷婷五月天| 国产精品日日躁夜夜躁| 婷婷六月成人| 亚洲一二三网| 丁香六月婷婷缴情欧美| 无码动漫av| 99婷婷狠狠成为人免费视频| 欧洲亚洲免费视频9| 丁香五月天啪啪激情综合网| 99热99在线| 国产成人AV在线播放| 天天日天天操天天干| 婷婷无码视频| 五月婷婷国产| 丁香五月婷在线| 97久久超碰| 六月婷在线| 五月伊人视频在线看| 色综合丁香婷婷| 婷婷五月五月丁香| 538久久| 综合色五月天| 大香蕉中文| 欧美综合激情五月天| 色噜噜狠狠色综无码久久合欧美| 99玖玖在线视频| 天天xxxxxx天天日| 艳妇野外情欲放荡HD| www.久久| 婷婷五月天亚洲| 久久99久久99久久99人受| 97碰精品| 亚洲综合在线丁香五月| 99超超碰| 色欲日日躁| 色色99| 五月婷婷黄色| 亚洲AV网站| 丁香五月黄色| 五月丁香六月成人| se.久久视频在线观看| 久色网五月| 99热这里有精品| 婷婷丁香人妻天久久| 97操碰在线视频| 精品无码片| 99热这里只有精品33| 五月丁香婷婷啪啪| 五月丁香综合网色欲| 久久9精品| 亚洲啪啪网| 蜜桃婷婷丁香五月天狠狠久久综合| 天天看夜夜看| 九热网站| 99热九九热| 久久44| 国产在线另类五月婷婷| 美女被操一区二区| 五月天久久网站| 大香蕉久久伊人网| 成人五月天视频| 操逼五月天| 五月天婷婷中文字幕在线播放| 91打屁股免费看| 国产欧美婷婷五月| 97搞在线| 婷婷激情六月| 九九九九国产| 玖玖在线视频| 色情五月天A片| 春色激情| 日本婷色| 日本啪啪天堂| 国产精品涩涩涩视频网站| 小视频aaa久久久| 国内外色色色色色成人视频| 天天夜天天色天天| 欧美久人人| 五月婷婷亚洲色视频| 九九九九九九毛片| 六月丁香五月天| 亚洲AV激情五月综合网| 新激情五月天| 激情影院丁香五月| 超碰精品在线| 性无码专区无码| 婷婷丁香成人网址| 久久婷婷激情久久| 日韩啊啊啊| 黄色99网| 人橾人| 深爱激情综合网| 这里只有精9| 亚洲色99综合天堂| 婷婷永久在线| 青青草婷婷综合五月| 亚洲成人在线观看网址| WWW久久久| 成人婷婷深爱综合网| 色综合女人99| 五月丁香大香蕉| 五月人妻婷婷| 亚洲精品视频电影| 婷婷五月天成人| 天天做天天爱天天玩夜夜爽| 久久五月激情| 婷婷五月综合国产精品| WWW.99热| 亚洲综合丁香五月天| 色综合久久88色综合天天99| 荫道BBWBBB高潮潮喷| 操骚货在线| 99热永久在线观看| 国产精品成人网站| 六月香五月婷| 91综合色| 九九精品9| 丁香婷婷六月天| 99这里只有精品在线| 九九色院| 综合色在线| 婷婷激情性爱| 综合久久五月天| WWW五月婷婷| 色月丁| 五月婷婷综合网| 丰满人妻一区二区三区| 婷婷六月中文字幕| 黄色大片又大粗又爽| 天啪天啪天啪天啪| 天天日天天插| 九九色热| 成人在线综合| www夜夜操comwww| 久鲁鲁色网 | 国产高潮A片羞羞视频涩涩| 久久金品黃色| 婷婷五月色综合| 色婷婷呢狠禁久禁| 狠狠色狠狠操| 色你久久| 99热97| 六月亭亭久久综合激情| 婷婷激情五月天7| 黄色一级影片| 欧洲区自拍| 国产精品久久久久久妇女6080| 欧美久久婷婷| 99热这里是精品| 激情五月婷婷综合网| 色婷婷丁香五月天| 亭亭色色五月天| 色99免费视频中文| 九月停停| 久久久久久婷| 色天使久久综合| 色五月情| 国产精品久久久久久久久久| 色色色综合色| 色播五月丁香| 婷婷五月天激情四射| 超碰人人99| 99热6精品| 午夜丁香五月天综合| 99色热视频| 欧美99热| 中文不卡一二三区| 天天噪夜夜爽| 亚洲 小说 欧美 激情 另类| 五月丁香好婷婷A片网| 成人αV视频免费观看| 久久九九网| 色域五月婷婷丁香| 五月婷婷丁香综合| 久9视频| 婷婷五月天激情综合| 日本欧美成人片AAAA| 激情五月婷婷丁香| 丁香在线视频| 色五月成人| 中文字幕成人影视| 操操天堂| 可以看的AV| 狠狠的日| A片试看50分钟做受视频| 噼里啪啦完整版中文在线观看| 五月天婷婷色| 久久99热网| 久久全意婷婷| 丁香五月综合激情久久潮喷| 天色综合网| 久久综合色情网站| 99热在线精品播放| 丁香九月婷婷| 伊人婷婷五月| 六月综合婷婷开心伊人| 九九干视频| 久久婷婷热| 俺去也综合| 91狠狠综合久久| 亚洲精品又粗又大又爽A片| 思思久久99热只有频精品66| 91久女| 9 1大香蕉| XX久久| 伊人久久99| 国产裸舞福利资源在线视频| 色综合日日| 婷婷天天色| 麻豆雪千夏| 婷婷一本和五月丁香| 操丝袜视频影院导航| 99热精品在线播放| www.zbzhongsen.com| 五月开心久久| 亚洲中文AV| 色天堂97| 天天色天天干天天插| 国产日韩亚洲欧美在线观看| 超碰在线国产| 五月停视频天堂| 99久久99视频| 99爱免费在线观看| 六月合五月婷| 日韩aaa| 亚洲三A| 久久9999| 99色色最新视频| 丁香五月婷婷AV在线| 思思久久99| 五月激情丁香啪啪| 婷婷丁香激情综合色情| 狠狠擼综合| 26uuu欧美| 777精品久无码人妻蜜桃| 婷婷五月丁香综合瑟瑟| 婷婷激情五月| 久久只有18视频| 色婷婷视频在线| 五月狠狠| 国产亚洲成AV人片在线观黄桃| 亚洲无码九九九| 99热乎| 激情五月婷婷五月丁香五月开心五月| 国产亚洲色婷婷久久99精品91| 亚洲天堂青草| 久久er九九| 精品爆操| 91免费试看| 99热视| 五月婷婷亚洲| 国产黄色av| 深爱激情五月天色婷婷| 玖玖综合网| 五月丁香婷婷色播无码| 中文不卡一二三区| 狠狠狠狠狠| 日本久久99久久| 天天日夜夜操五月| 996热| 九九re精品视频在线观看| 激情综合亚洲色婷婷五月| 国产 亚洲 在线| 丁香五月婷婷综合91| 色必久悠悠影院| 日韩九区| 91人操| 亚洲欧美一区二区三区四区爱爱动图| 婷婷色综合| 色婷婷操逼| 人妻久久久久久久 | 色香五月天| 天天干天天日天天操| 五月丁香色婷婷色| 五月丁香六月综合激情无码软件亮点 | 99日本视频| 婷婷五月六月丁香综合| 免费做A爰片77777| 婷丁香久综合| 婷婷开心激情| 色色色色色色色色五月先| 亚洲精品国产精品乱码视99| 九九爱精品网站| 成人婷婷深爱综合网| 俺去也五月| 丁香伊人网| 欧美超级视频97| 亚洲无码你懂的| 激情六月日韩| 激情网色五月| 婷婷天天日婷婷| 久久精99| 天天狠狠六月婷丁香影院| 123日本不卡在线| 互月天综合| 丁香8月手机综合| www,欧美干干干干干干| 精品少妇人妻AV无码专区偷人| 婷婷色五月综合丁香| se99视频| 99热热九九| 五月丁香婷婷啪啪| 天天摸天天舔天天爽| 中文字幕永久在线| 99热骚货| 啪啪视频99| 婷婷五月天激情五月天深爱五月天| 国产精品成av人在线视午夜片| 天天舔天天插天天干| 综合天堂AV久久久久久久| 婷婷五月天少妇| 色色五月婷婷网| 婷婷五月丁香网| 中文字幕+中文在线| 激情综合五月婷婷丁香| 久久久.COM| 亚洲综合五月天婷婷| 六月婷婷深深爱| 精品一二三区久久AAA片| 色爱综合视频| 啪啪视频99| 激情五月天婷婷| 丁香激情网| 97人人射| 逼里香不卡| 91九色小视频| 丁香五月天啪啪| 操日本人妻视频| 狠狠色婷婷丁香五月| 丁香婷婷色情| 涩综合在线 | 99成人无码| 激情婷| 超碰av在线| 婷婷五月天六月综合| 一区二区乱视频码| 国产 亚洲 在线| 国产 A片 自拍| 丁香婷婷综合影院| 成人在线视频网| 国产成人VA| 99热九九九九| 99re思思热久久| 99精品视频免费观看,| 大香婷婷| 91九九| 夜夜撸天天操| ay2区| 日韩欧美婷婷丁| 婷婷综合在线| AV79| 久久之人妻| 欧美色必爱| 99视频自拍| www.av骚货| 日韩av在线电影| 色哟呦av| 婷婷99狠狠| 婷婷色5月激情网| 蜜臀AV在线成人| 中文婷婷狠狠| 中文激情网| 久久婷婷视频| 欧美综合丁香网| 99热网址| 丁香五月婷婷综合激情哟哟哟| 色综合色色| 色婷婷五月天视频在线| 五月天婷综合网站| 婷婷综合网性| 激情亚洲五月| 开心激情站| 日本狠狠色| 森林影视大全,最好看的2019年视频 | 51国精产品自偷自偷综合| 五月天婷婷在线播放免费| 他改变了拜占庭| 久久人操-久草婷婷-成人AV| 色五月激情五月| 日本精品99| 激情五月六月婷婷| 色五月激情综合| 激情小说五月天| 久久婷婷人人| www网站在线观看| 国产午夜精品AV一区二区麻豆| 五月婷婷色色色| 99精彩视频| 亚州精品久久久久AV无码| 色欲人妻综合aaaaaaaa网| av无码电影| 操比激情五月| 六月婷婷天堂| 北条麻妃九九九国产精品视频| 五月激情六月丁香| 亚洲熟女色| 五月丁香六月婷婷色日| 激情九九这里只有精品| 色综合久久伊伊婷婷五月| 色综天天综合| 丁香五月另类色婷婷麻豆| 久久久久久久久久婷婷| 久久男人网婷婷| 中文字幕视频色婷婷| 六月丁香网| 九九亚洲| 丁香五月天堂| 五月丁香激情综合| 激情综合网色播五月| 丁香五月首页| 丁香五月欧美成人| 婷婷久月| 99操| 五月天综合久久| 狠狠干无码| 激情六月综合| 五月天色综合| 久久婷婷精品| 99热这里只有精| 亚洲操操操| 婷婷深爱五月| 久久99精品视频| 婷婷五月天色色| www.99在线| 婷婷五月色| 精品夜夜澡人妻无码AV| 熟女少妇内射日韩亚洲| 国产精品18久久久| 先锋影音av色五月天资源站| 欧美十二区| 五月婷婷久久爱| 99啪视频在线观看| 久久综合网桃花| 六月丁香婷婷色狠狠久久| 97五月久久丁香婷婷| 国产综合婷婷| 人人操AV| 激情五月激情综合俺也去婷婷小说| 只有精品在线观看| 六月五月久久丁香| a久久免费视频| 五月天最新网| 99久久玖玖| se99视频| 国产AV一区二区三区最新精品| 狠狠久久婷五月综合色| 婷婷狠狠狠爱| 婷婷永久在线| 国产精品久久在线观看技巧| 婷婷五月综合在线视频| 夜夜骑夜夜撸| 大香蕉婷婷五月天| 99re6在线视频精品免费| 天天日天天久久青青| 国产综合A片| 久久婷婷91| 欧美亚洲999| 国产精品成人av在线观看春天| 噜噜狠狠色综无码久久合欧美| 婷婷午夜激情| 午夜天堂一区人妻| 97超碰色| 九九伊人网| 天天射天天射一道本日本社区 | 五月丁香婷婷爱激情综合网| 九九亚洲小视频| 天天做天天爱天天爽| 99久久99热| 五月丁香人人婷婷在线观看| 色色色99| 欧美操人| 丁香五月综合首页| 久久婷婷五月国产色综合激情| 麻豆五月丁香婷婷| 色停停香蕉视频| 99原创自拍视频在线观看| 婷婷五月天丁香成人社区| 婷婷开心深爱五月天| 五月天深爱激情网| 色综合久久888| 午夜亚洲AV日韩无码| 91精产品自偷自偷综合| 99热这里只有精品98| 色综合久久88色综合天天| 中文字幕永久免费| 在线免费视频caop| 成人短视频在线| 婷婷娱乐丁香综合网| 激情床戏| 色综啪啪| 婷婷激情五月天网站| 情久久综合五月天| 久久激情五月| ′久久99一| www.五月激情红色| 丁香五月成人| 婷婷丁香五月天熟女丝袜| 婷婷97狠狠干| 夜夜躁婷婷AV| 五月久久丁香| 99这里有精品久久97| 激情小说在线视频| 日韩无码AV电影网站| 99久久久免费| 丁香五月天中文字幕| 欧美韩国日本| 五月色网| 五月综合激情网| 99精品丁香五月| 色婷婷91激情小说| 亚洲免费99| 色婷婷另类| 激情五月综亚网| 久久婷婷五月综合| 特级操b片| 亚洲激情网站| 强辱丰满人妻HD中文字幕| 99在线观看视频| 婷婷伊人网| 色欲AVV| 青青操绿aaa一区日v| av网址在线| 91视频免费后入强操| 久久这里有精品在线观看| 亚洲欧洲另类| 狠狠色丁香| 91丨九色丨丰满人妖| 在线一起草av| 天天射综合网夜夜操| 伊人综合网站| 婷婷丁香视频在线观看免费| 九九色人| WWW.久久久久久久| 99热资源在线| 成人短视频在线免费观看| cc精品国产性传播| 九九爱激情| 久久这里都是精品视频| 东京热免费视频| 五月丁香啪啪| 99A片| 亚洲中文字幕av| 亚洲网视屏| www.99久久久| 亚洲超碰在线| 人人操91| 日韩视频99| 五月六月播婷婷| 一级黄色影片| 丁香五月1页| 激情综合网五月激情| 97香蕉碰碰人妻国产欧美| 99色热视频| 综合久久9| 婷婷丁香久久| 久久久婷| 五月天大香蕉| 99久热这里有精品| 99热在线观看| 激情亚洲色图片丁香综合| 亚洲五月婷| 天天综合亚洲综合网天天αⅴ| 激情五月天婷婷视频| 色天堂婷婷| 久久这里有精品在线观看| 97人碰人操| 色五月丁香伊人五月| 日韩精品无码AV| 婷婷日欧美在线观看| 久久婷网| 99热最新| 99热这只有| 色婷婷激情Av久久久| 天天日日综合| 高清国产AV| 碰超99| 亚洲美女婷婷五月天| 精品国产一区二区三区四区阿崩| 26UUU在线观看| 久久五月天精品视频| 色天五月天在线观看视频| 热99精品视频| 天天爱天天操| 五月婷婷影视| 五月婷婷黄色毛片| 婷婷精品在线| 精品婷婷五月天| 超碰2021| 9有码中文| 九九国产视频| 色欲色欲久久宗合网| 色婷婷亚洲六月婷婷中文字幕| 影音先锋毛片网站| 思思热在线视频精品| 婷婷五月天亚洲丁香| 26uuu偷拍亚洲欧洲综合| 欧美日韩999| 婷婷中文字幕版| 久久精品女人天堂AAA| 九九99免费视频| 6080av| 婷婷综合日本| 色五月婷婷网| 岛国AV网| 男人的天堂999| AV亚洲在线| 婷婷色在线观看| 久香草视频在线观看| 婷婷丁香91| 99超级碰免费视频| 色色网站| 五月丁香综合激情在线观看| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 婷婷激情五月天桃花网| 开心五月综合激情网| 五月在在观看| 91婷婷在线观看| 天天日夜夜爽| 激情五月天偷拍综合网| 色丁香五月婷婷婷| 婷婷丁香www视频日本韩国| 婷婷五月激情中文字幕| 综合一本道| 日本女天天爽| 久久九九99桃花视频| 1000部毛片A片免费观看| 色五月人妻| 成人婷婷桔色| 91疯狂操操操操| 免费视频在线观看的网站| 超碰成人av| 欧美英丁香开心快乐六月天网| 日韩操逼大片| 国产av第一专区| 婷婷综合五月天| 丁香婷婷六月男男| 天天色色婷婷| 涩五月婷婷| 激情久久网| 国产真人做爰视频免费| 九九操操| 婷婷性色| 99热精品综合| 国产成人网址| 黄久久久| 国产精品黑丝| 欧美大肥婆大肥BBBBB| 五月丁香好婷婷A片网| 激情五月天色婷婷| 99在线观看这里都是精品 | 九九热免费视频| 一级A片天天操夜夜操| 激情五月天色色| 99热国产婷婷| 97涩婷婷| 爱超碰性| 欧美激情综合色综合啪啪五月| 久青草影院| 欧美天天干天天草| 丁香五月婷婷动漫视频| www99精品| 91九色超碰正在播放| 影音先锋男人AV资源站| 中文成人在线| 婷婷久久五月天| 成人网站在线观看视频| 思思热在线观看| 99国产这里只有精品| 97色伦另类图片小说视频| 这里只有精品日韩| 色婷婷久久综合| 97干视频在线| 91好好热日本在线| 欧美日韩中国| 色婷婷色丁香色欲av| 欧美日本免费一道免费视频| h在线看免费版在线看| 五月婷中文字幕| 五月天激情网图片| 婷婷五月天播播| 婷婷五月激情五月激情| 色狠狠色噜噜噜a天堂一区| 婷婷五月天综合蜜桃| 激情精品久久| 99热国产这里只有| 日韩砖区| 亚洲五月六丁香激情| 无码一区二区三区四区五区| 婷婷五月天在线看| 亚洲激情视频在线观看| 九九热中文| 中文字幕在线免费| 日本超碰在线| 六月丁香婷婷视频综合在线观看| 亚洲激情av| 久久天天天| 888精品福利地址| 五月丁香综合网色欲| 插插插丁香五月婷婷| 久久九九免费大视频| henhencao国产在线| 大波美女VA网站| 精品人妻久久久| 五月丁香六月花| 久久久精品人妻录| 婷婷五月天狠狠搞干| 色五月天婷婷| 99熟女啪啪视频| 无码啪啪| 91热爆在线| 亚洲视频在线观看| 五月婷婷影视| 五月婷婷丁香综合,亚洲天堂| 激情丁香久久| 26uuu精品一区二区| 97色色婷婷| 青青操绿aaa一区日v| 五月色导航| 日韩在线aaa| 丁香激情网| 亚洲最大视频| 黑人巨粗进入警花疼哭A片| 九九色网专区| 五月花激情网| 99啪| 草美女在线观看视频在线播放| 五月丁香六月合| 六月婷婷开心| 九九九热精品| 桃色成人网| 一本久婷婷综合| 综合激情五月婷婷| 开心 五月 综合| 激情九九综合网| 人人草人人看| 99视频在线精品| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 激情五月婷婷免费视频| 亚洲五月天综合| 五月天另类视频| 色色色色色色色色综合网| 乱精品一区字幕二区| 婷婷丁香黄色| 日本色色网| 99re思思在线视频| 婷婷五月天综合久久| 天天插天天干| 天天干天天做| 丁香花综合永久入口| 久久婷婷五月天激情四射| 丁香六月 婷婷六月| 五月天婷婷在线播放免费| 亚洲不卡| 九九热123| 五月婷在线影院| 久久这里只有精品视频26| AVDV久久| 欧美丰满熟妇BBB久久久| 久久中国毛毛片爱久久| 婷婷丁香69精华| 国产色五月| 99热91| 婷婷五月综合色小姐小说| 欧洲毛片基地c区| 天天天天天天天操| 大香蕉av在线| 九九色黄色| 亚洲精品色色| 丁香色婷婷五月天| 丁香五月综合| 另类 在线| 成人网丁香五月| 在线观看的av| 激情综合视频| 成人精品在线观看| 色五月在线观看| 丁香五月激情啪啪| 国产精品色婷婷久久久精品| 26uuu亚洲欧美另类| 4399亚洲视频| yw.av| 狠狠擼综合| 色丁香五月婷婷| 97日日碰碰| 能看的av片| 青草激情综合| 色蜜婷婷| 久久久久人妻中文| 色色婷婷丁香| 99久热在线精品| 色色色无码| 1024亚洲无码| 五月综合激情久久| 精品在线网站| 97成人超碰免| 激情五月婷婷综合网| 天天操比比| 亚洲AV网站在线观看| 热99AV网站| 久久99最新地址| 亚洲色爽| 久久婷婷成人综合色怡春院| 婷婷综合影院| 激情综合激情五月一起草| 亚洲国产精品二二三三区| 99色色热热| 六月婷久久| 日韩 mm 不卡| 亚洲人成人五月天| 成人片黄网站色大片免费毛片| eeuss人妻| 67194成I人在线观看线路1| 久热伊人9| 久久婷婷六月综合综合色| 欧美性爱丁香五月| 思思热性操| 九九视频在线观看视频6 | 欧亚洲在线高清视频| 变态另类9| 狠狠爱婷婷爱| 婷婷五月综合色拍| 一起草av在线观看| 草综合14| 五月停停色色丁香| 亚洲色人妻| 欧美色色色色色色| 亚洲av无码精品色午夜| 成人精品亚洲性爱| 黄色aa观看aaguochan| 99热在线观看这里只有精品| 97丨九色丨国产丨PORNY| 婷婷深爱色五月| 中字幕视频在线永久在线观看免费| 亚洲激情网站无码| 97色婷婷| 狠狠干2007| 免费看欧美成人A片无码| 丁香六月天婷婷色| 玩熟女五十AV一二三区| 狠狠操天天日| 久久AAAA片一区二区| WWW.桔色成人.COM| 五月天激情网图片 - 百度| 99热精品在线观看| 99,色| 久久精彩视频| 综合亚洲五月天| 91九色网| 激情五月综合色婷婷| 另类少妇人与禽zOZZ0性伦| 九九视频精品这里只有| 全部老头和老太XXXXX| 六月丁香五月亭亭| 丁香五月婷婷激情97| 五月天色裸体视频| 一级性爱大片| 99在线热视频| 超碰人人艹| 日本狠狠色| http://www.lingjunshare.com/| 高潮毛片又色又爽免费| 激情婷婷五月色| 影音先锋男士资源网一区| 99国产视频网| 棕合影院色色| 久久九九国产精品怡红院| 亚洲精品乱码久久久久99| 影音先锋91在线资源站| 99精色| 欧美日本国产欧美日本韩国99| a在线观看| 99热国内| www.久久久久久久久久.com| 天天在线XXX| 精品婷婷| 精品夜夜澡人妻无码AV| 99色最新在线视频网站| 丁香五月123| 九九婷婷网五月天| 九九热区一区二区三区| 亚洲视频1区| 99re热在线视频| 婷婷黄色五月天在线视频| 久热久69| 无码区婷婷五月花开| 热热久久精品视频| 九九99偷拍视频| 午夜成人AV在线| 天天色天天干天天插| 99久久高清视频| 99热综合| 五月丁香婷婷伊人| 97色在线观看视频| 9+1视频网址| 五月婷婷六月丁香综合| 91大神操美女| 国产无遮挡又黄又爽免费网站| 六月综合在线| 国产亚洲99久久精品| www五月婷婷| 丁香六月天婷婷在线| 久99婷婷色综合| 99男人的天堂| 天天操夜夜夜拍拍拍| 91 九色 入口| 欧美日韩欧美| 成人免费高清在线播放| 99er免费在线观看| 99久久视频| 成人网在线观看视频| 99热这里只有精品1025|