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

ARTICLE DETAIL

資訊詳情

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

Spring Boot在線拍賣系統(tǒng)設(shè)計(jì):并發(fā)控制與實(shí)時(shí)出價(jià)核心方案

Spring Boot在線拍賣系統(tǒng)設(shè)計(jì):并發(fā)控制與實(shí)時(shí)出價(jià)核心方案 站在學(xué)生的角度我一直覺(jué)得“基于Spring Boot的在線拍賣系統(tǒng)”屬于畢業(yè)設(shè)計(jì)里最典型的“老六”選題——名字聽(tīng)起來(lái)平平無(wú)奇但實(shí)際做起來(lái)全是坑。先不說(shuō)實(shí)時(shí)出價(jià)的并發(fā)問(wèn)題光是“拍賣倒計(jì)時(shí)與訂單超時(shí)關(guān)閉”這兩件事就能讓很多人在中期檢查前一周急得撓頭。我自己帶過(guò)的項(xiàng)目里做過(guò)不下五個(gè)不同版本的在線拍賣系統(tǒng)從最基礎(chǔ)的SSM版到Spring Boot Redis WebSocket的進(jìn)階版都有。這次借這個(gè)“源碼文檔”的題把我實(shí)際做這套系統(tǒng)時(shí)踩過(guò)的坑、沉淀下來(lái)的寫法、以及文檔要怎么組織才不會(huì)被老師挑刺一次性說(shuō)清楚。這個(gè)內(nèi)容適合正在做畢業(yè)設(shè)計(jì)/課程設(shè)計(jì)的同學(xué)也適合剛學(xué)完Spring Boot想找個(gè)完整項(xiàng)目練手的朋友參考價(jià)值應(yīng)該比網(wǎng)上一堆殘缺版代碼高不少。1. 在線拍賣系統(tǒng)的核心設(shè)計(jì)拆解1.1 為什么選Spring Boot而不是SSH/SSM很多同學(xué)糾結(jié)技術(shù)選型其實(shí)現(xiàn)在真沒(méi)什么好糾結(jié)的。Spring Boot的自動(dòng)配置和起步依賴能把以前SSM時(shí)代一大坨XML配置直接干掉這對(duì)課設(shè)/畢設(shè)來(lái)說(shuō)意味著什么意味著你省下來(lái)的是真正寫業(yè)務(wù)邏輯的時(shí)間而不是在那里調(diào)applicationContext.xml配數(shù)據(jù)源、配事務(wù)管理器、配MyBatis映射路徑。另外從答辯角度來(lái)說(shuō)Spring Boot本身就是當(dāng)前企業(yè)級(jí)Java開發(fā)的主流底座你在項(xiàng)目里用Spring Boot MyBatis Plus Redis Vue這套組合老師大概率不會(huì)質(zhì)疑技術(shù)棧的合理性。我見(jiàn)過(guò)有人還在用SSHStruts2 Spring Hibernate做畢設(shè)說(shuō)實(shí)話那種項(xiàng)目拿到現(xiàn)在既不好調(diào)試也不好找參考資料純純給自己上難度。再說(shuō)插件生態(tài)。Spring Boot的起步依賴Starter把Web、數(shù)據(jù)校驗(yàn)、模板引擎、緩存、消息隊(duì)列這些能力全都包裝好了你在pom.xml里加依賴就完事版本沖突也比SSM時(shí)代少很多。對(duì)我來(lái)說(shuō)選Spring Boot還有一個(gè)隱性的好處代碼可讀性好模塊結(jié)構(gòu)清晰后續(xù)寫文檔、畫架構(gòu)圖的時(shí)候腦子里能直接對(duì)應(yīng)到代碼的包結(jié)構(gòu)不容易出現(xiàn)“文檔畫得天花亂墜、代碼里啥也沒(méi)有”的尷尬局面。1.2 拍賣系統(tǒng)的核心業(yè)務(wù)角色與流程在線拍賣系統(tǒng)本質(zhì)上就是淘寶的拍賣頻道或者說(shuō)“閑魚拍賣”的簡(jiǎn)化版。核心角色就三類買家、賣家發(fā)布者、管理員。買家瀏覽在拍商品、出價(jià)競(jìng)拍、查看我的競(jìng)拍記錄、支付成交訂單。賣家發(fā)布拍賣商品、設(shè)置起拍價(jià)/加價(jià)幅度/拍賣截止時(shí)間、查看成交結(jié)果。管理員審核商品上下架、管理用戶、處理違規(guī)數(shù)據(jù)、查看全站拍賣流水。主流程一條線拉到底賣家發(fā)布商品并設(shè)置拍賣參數(shù) - 管理員審核通過(guò) - 商品進(jìn)入“拍賣中”狀態(tài) - 買家在拍賣截止前出價(jià)系統(tǒng)校驗(yàn)出價(jià)是否高于當(dāng)前價(jià) - 截止時(shí)間到系統(tǒng)判定最后出價(jià)人為中標(biāo)者 - 生成拍賣訂單 - 中標(biāo)者支付 - 交易完成。這里有個(gè)容易被忽略的設(shè)計(jì)點(diǎn)拍賣雖然是“實(shí)時(shí)”的但系統(tǒng)的狀態(tài)流轉(zhuǎn)必須有一個(gè)清晰的狀態(tài)機(jī)。我見(jiàn)過(guò)不少同學(xué)把商品狀態(tài)和訂單狀態(tài)混在一個(gè)字段里管理結(jié)果后期寫判斷邏輯時(shí)if套if改一個(gè)地方崩三個(gè)地方。后面我會(huì)專門講狀態(tài)機(jī)設(shè)計(jì)這塊建議你認(rèn)真看。1.3 需求拆解與功能模塊劃分按照我做過(guò)幾版項(xiàng)目的經(jīng)驗(yàn)一個(gè)標(biāo)準(zhǔn)的在線拍賣系統(tǒng)功能模塊可以這樣劃分用戶模塊注冊(cè)、登錄、個(gè)人信息維護(hù)、密碼加密存儲(chǔ)BCrypt。商品模塊商品發(fā)布、商品列表分頁(yè)、商品詳情、圖片上傳、商品審核。拍賣模塊出價(jià)、加價(jià)校驗(yàn)、拍賣倒計(jì)時(shí)、實(shí)時(shí)價(jià)格展示、出價(jià)記錄。訂單模塊成交訂單生成、訂單支付模擬支付/支付寶沙箱、訂單超時(shí)關(guān)閉。管理模塊后臺(tái)數(shù)據(jù)看板、用戶管理、商品審核、拍賣流水統(tǒng)計(jì)。有些同學(xué)想做成C2C平臺(tái)型類似ebay那還要加上“保證金”“信用分”這類機(jī)制。但說(shuō)實(shí)話如果是課設(shè)/畢設(shè)別加太多花活把上面五個(gè)模塊做好、做深已經(jīng)完全能體現(xiàn)工作量了。我見(jiàn)過(guò)盲目追求功能多、結(jié)果每個(gè)功能都是半成品答辯時(shí)被老師一問(wèn)就卡殼的例子那才是真正的翻車。2. 核心技術(shù)點(diǎn)解析與方案選型這一節(jié)我認(rèn)為是整套系統(tǒng)的靈魂。你在答辯的時(shí)候老師問(wèn)得最多的就是“你這里怎么處理并發(fā)”“如果很多人同時(shí)出價(jià)怎么辦”“拍賣結(jié)束瞬間沒(méi)有訂單怎么辦”。這幾個(gè)問(wèn)題回答不好代碼寫得再花哨也白搭。2.1 實(shí)時(shí)出價(jià)與并發(fā)控制出價(jià)是拍賣系統(tǒng)最核心的高頻操作。一個(gè)熱門商品在最后幾分鐘可能同時(shí)有十幾個(gè)買家在搶著出價(jià)。如果直接UPDATE auction_record SET price?不做任何保護(hù)那么兩個(gè)并發(fā)請(qǐng)求同時(shí)讀到當(dāng)前價(jià)100元都以為自己出了110元最后一個(gè)寫入的覆蓋了前一個(gè)就會(huì)造成“出價(jià)覆蓋丟失”。我在實(shí)際項(xiàng)目里處理這個(gè)問(wèn)題用過(guò)兩種方案方案一數(shù)據(jù)庫(kù)樂(lè)觀鎖推薦畢設(shè)使用這個(gè)在拍賣記錄表或商品表里維護(hù)一個(gè)version字段更新時(shí)帶上版本號(hào)UPDATE auction_item SET current_price #{newPrice}, version version 1 WHERE id #{itemId} AND version #{oldVersion}如果更新影響行數(shù)為0說(shuō)明有人搶先出價(jià)當(dāng)前的出價(jià)請(qǐng)求就提示“價(jià)格已變動(dòng)請(qǐng)重新出價(jià)”。這個(gè)方案簡(jiǎn)單、可靠不需要引入額外中間件面試/答辯時(shí)也好講清楚原理。方案二Redis分布式鎖進(jìn)階加分項(xiàng)如果項(xiàng)目里已經(jīng)集成了Redis可以用SETNX實(shí)現(xiàn)一個(gè)輕量級(jí)鎖保證同一時(shí)間只有一個(gè)出價(jià)請(qǐng)求在處理// 偽代碼 Boolean locked redisTemplate.opsForValue().setIfAbsent(lock:auction: itemId, 1, Duration.ofSeconds(3)); if (Boolean.TRUE.equals(locked)) { try { // 執(zhí)行出價(jià)邏輯 } finally { redisTemplate.delete(lock:auction: itemId); } }說(shuō)實(shí)話課設(shè)級(jí)項(xiàng)目用樂(lè)觀鎖已經(jīng)足夠Redis鎖可以作為擴(kuò)展點(diǎn)寫在文檔的“系統(tǒng)優(yōu)化”章節(jié)反而顯得你有思考深度。別在核心流程里強(qiáng)行上分布式鎖萬(wàn)一Redis忘開了整個(gè)項(xiàng)目直接起不來(lái)答辯現(xiàn)場(chǎng)會(huì)很尷尬。2.2 拍賣狀態(tài)機(jī)與訂單超時(shí)關(guān)閉拍賣商品的狀態(tài)流轉(zhuǎn)我比較推薦用一張獨(dú)立的狀態(tài)表或者枚舉類來(lái)管理不要把判斷邏輯散落在各個(gè)Service里。我通常這樣定義狀態(tài)public enum AuctionStatus { PENDING(待審核, 0), // 賣家提交待管理員審核 ONGOING(拍賣中, 1), // 審核通過(guò)買家可出價(jià) SUCCESS(已成交, 2), // 拍賣結(jié)束產(chǎn)生了中標(biāo)者 FAILED(已流拍, 3), // 拍賣結(jié)束無(wú)人出價(jià) CLOSED(已關(guān)閉, 4); // 管理員強(qiáng)制關(guān)閉或商品違規(guī)下架 }為什么要用枚舉而不是直接用數(shù)字、字符串散落在代碼里因?yàn)槊杜e把可讀性和安全性都賺到了。你在代碼里寫item.getStatus() AuctionStatus.ONGOING.getCode()別人一眼就知道你在判斷“拍賣中”不會(huì)出現(xiàn)魔法數(shù)字滿天飛的情況。訂單超時(shí)關(guān)閉這塊算是拍賣系統(tǒng)一個(gè)不大不小的坑。買家中標(biāo)后如果一直不付款訂單不能一直占著。我看過(guò)好幾種實(shí)現(xiàn)最樸素的方案是定時(shí)任務(wù)掃描Scheduled(fixedRate 60000) // 每分鐘掃描一次 public void closeExpiredOrders() { ListAuctionOrder expiredOrders orderMapper.selectExpiredUnpaidOrders(); for (AuctionOrder order : expiredOrders) { order.setStatus(OrderStatus.CLOSED); orderMapper.updateById(order); // 釋放商品狀態(tài)讓商品可以重新上架 } }每分鐘掃一次表數(shù)據(jù)量小的情況下性能完全可以接受。如果你項(xiàng)目里已經(jīng)引入了RabbitMQ可以優(yōu)化為“延遲隊(duì)列”方案但這不是必選項(xiàng)??偠灾劝讯〞r(shí)任務(wù)方案跑通再談延遲隊(duì)列優(yōu)化。寫文檔時(shí)把兩種方案都寫上去但明確說(shuō)“系統(tǒng)當(dāng)前采用定時(shí)任務(wù)方案延遲隊(duì)列作為后續(xù)優(yōu)化方向”這個(gè)表述會(huì)讓答辯老師覺(jué)得你有全局視野。2.3 支付回調(diào)與冪等性設(shè)計(jì)絕大多數(shù)課設(shè)/畢設(shè)不會(huì)真的對(duì)接支付寶微信支付都是做一個(gè)“模擬支付”頁(yè)面點(diǎn)一下按鈕就把訂單狀態(tài)從“待支付”改成“已支付”。但如果你想讓項(xiàng)目有點(diǎn)含金量可以在文檔里把“支付回調(diào)的冪等性處理”這個(gè)設(shè)計(jì)思想寫清楚——即便系統(tǒng)只做了模擬支付也要把這一層抽象做好。什么叫做冪等性就是同一個(gè)支付回調(diào)請(qǐng)求你處理一次和處理一百次最終結(jié)果是一樣的。怎么實(shí)現(xiàn)最經(jīng)典的做法就是根據(jù)業(yè)務(wù)訂單號(hào)進(jìn)行去重判斷public void handlePaymentCallback(String orderNo, String payStatus) { // 先查訂單如果已經(jīng)是已支付狀態(tài)直接返回不再重復(fù)處理 AuctionOrder order orderMapper.selectByOrderNo(orderNo); if (order null || OrderStatus.PAID.equals(order.getStatus())) { return; } // 校驗(yàn)金額、更新訂單狀態(tài)、記錄支付流水 ... }這段邏輯看起來(lái)簡(jiǎn)單但就是能避免“支付成功但頁(yè)面一直轉(zhuǎn)圈重試結(jié)果訂單被重復(fù)更新”的問(wèn)題。我在實(shí)際項(xiàng)目里就遇到過(guò)因?yàn)榛卣{(diào)接口沒(méi)做冪等JMeter壓測(cè)時(shí)并發(fā)點(diǎn)了三次支付結(jié)果生成了三筆流水記錄數(shù)據(jù)直接對(duì)不上。別覺(jué)得這是小事答辯時(shí)這就是潛在扣分點(diǎn)。2.4 即時(shí)反饋與消息推送拍賣和普通商城最大的區(qū)別就是“實(shí)時(shí)性”——買家出價(jià)后其他在線買家希望立刻看到最新價(jià)格而不是手動(dòng)刷新頁(yè)面。這塊我當(dāng)時(shí)用的是WebSocket STOMP協(xié)議的方案Spring Boot原生支持很好。原理是用戶出價(jià)成功后后端通過(guò)WebSocket把一個(gè)PriceChangeMessage推送給所有關(guān)注該商品的在線用戶前端收到消息后更新當(dāng)前價(jià)格和出價(jià)記錄不需要刷新頁(yè)面。這里要注意一點(diǎn)WebSocket推送的是“價(jià)格變化通知”但真正的數(shù)據(jù)源仍然是數(shù)據(jù)庫(kù)。頁(yè)面刷新后從后端拉取的價(jià)格才是最終依據(jù)。WebSocket只是提升體驗(yàn)的手段不能替代持久化。很多同學(xué)分不清這一點(diǎn)把實(shí)時(shí)數(shù)據(jù)和持久化數(shù)據(jù)混為一談導(dǎo)致刷新頁(yè)面后價(jià)格和剛才看到的不一致這就是典型的“推送數(shù)據(jù)沒(méi)落庫(kù)”。如果你不想引入WebSocket主要是感覺(jué)配置麻煩用前端輪詢也能湊合每3秒請(qǐng)求一次商品詳情接口拿到最新價(jià)格刷新頁(yè)面。但說(shuō)實(shí)話既然前面選了Spring BootWebSocket集成真的不復(fù)雜十來(lái)行配置就能跑起來(lái)在文檔里寫出來(lái)面子也好看。后面我會(huì)給出核心配置代碼。2.5 技術(shù)棧選型清單與版本建議關(guān)于版本選擇我直接給出一套我自己驗(yàn)證過(guò)、不會(huì)因?yàn)榘姹締?wèn)題翻車的組合組件推薦版本說(shuō)明JDK1.8 或 11別用JDK 17部分老教程的依賴不支持Spring Boot2.7.x2.x系列資料最豐富別追3.xMyBatis Plus3.5.x比原生MyBatis少寫80%的CRUDMySQL5.7 或 8.0都行注意驅(qū)動(dòng)配置區(qū)別Redis5.x不是必選項(xiàng)但加分Vue / Element UIVue2 ElementUI后端為主的話這樣最省心Maven3.8常規(guī)即可這里多說(shuō)一句Spring Boot 3.x雖然已經(jīng)出很久了但網(wǎng)上大部分針對(duì)性資料、踩坑分享都是基于2.x的包括一些額外面試問(wèn)題也是基于2.x課設(shè)/畢設(shè)沒(méi)必要追趕新版本。等我把這套系統(tǒng)跑成熟了再考慮遷移到3.x那時(shí)候找資料容易得多。用2.7.x不是落后是求穩(wěn)。3. 數(shù)據(jù)庫(kù)設(shè)計(jì)與核心代碼實(shí)現(xiàn)3.1 表結(jié)構(gòu)設(shè)計(jì)思路數(shù)據(jù)庫(kù)設(shè)計(jì)是答辯老師喜歡深挖的地方我的建議是你不僅要把表建出來(lái)還要能說(shuō)清楚為什么要這樣設(shè)計(jì)。我這個(gè)項(xiàng)目數(shù)據(jù)庫(kù)一共設(shè)計(jì)了6張核心表用戶表user關(guān)鍵字段id、username、passwordBCrypt加密、phone、avatar、create_time商品拍賣表auction_item關(guān)鍵字段id、item_name、description、cover_image、start_price起拍價(jià)、current_price當(dāng)前價(jià)、min_increment最小加價(jià)幅度、start_time、end_time、seller_id、status、version這里重點(diǎn)解釋一下version字段這是樂(lè)觀鎖的實(shí)現(xiàn)基礎(chǔ)。同時(shí)把current_price和start_price分開存是為了支持“起拍價(jià)不等于首次出價(jià)”的業(yè)務(wù)場(chǎng)景——有的賣家允許0元起拍。拍賣記錄表auction_record關(guān)鍵字段id、item_id、user_id、bid_price、create_time每個(gè)買家每次出價(jià)都記錄一條數(shù)據(jù)方便后期查“誰(shuí)在什么時(shí)候出了什么價(jià)”的完整流水。這里不要只記錄“當(dāng)前最高價(jià)是誰(shuí)”因?yàn)橐坏┲槐A糇罡邇r(jià)你就丟失了歷史出價(jià)記錄后續(xù)做數(shù)據(jù)分析或者處理糾紛時(shí)會(huì)非常被動(dòng)。訂單表auction_order關(guān)鍵字段id、order_no唯一、item_id、buyer_id、seller_id、deal_price、status、pay_time、create_time、expire_timeorder_no必須唯一這是冪等設(shè)計(jì)的關(guān)鍵。支付流水表payment_record關(guān)鍵字段id、order_no、user_id、amount、pay_status、callback_time這算一張附加表但在文檔里寫“訂單與支付流水字段分離”老師會(huì)認(rèn)為你考慮到了財(cái)務(wù)數(shù)據(jù)的安全性和審計(jì)需求這點(diǎn)印象分值得拿。系統(tǒng)管理員表admin_user關(guān)鍵字段id、username、password、role3.2 關(guān)鍵實(shí)體與Mapper層實(shí)現(xiàn)以MyBatis Plus為例實(shí)體類我一般不寫復(fù)雜的自定義SQL單表CRUD全部交給MyBatis Plus內(nèi)置方法。但涉及到多表聯(lián)查的報(bào)表如“拍賣成交報(bào)表”我會(huì)寫自定義Select注解。比如查詢商品詳情連帶出價(jià)記錄的SQLSelect(SELECT r.id, r.bid_price, r.create_time, u.username FROM auction_record r LEFT JOIN user u ON r.user_id u.id WHERE r.item_id #{itemId} ORDER BY r.bid_price DESC, r.create_time ASC) ListBidRecordVO selectBidRecordsByItemId(Long itemId);這里有一個(gè)細(xì)節(jié)值得注意出價(jià)相同的情況下按時(shí)間正序排列越早到達(dá)的出價(jià)人拍得商品。這不僅僅是排序問(wèn)題更是拍賣業(yè)務(wù)中“同價(jià)先到先得”規(guī)則的體現(xiàn)。把這個(gè)規(guī)則在代碼里實(shí)現(xiàn)出來(lái)答辯時(shí)解釋起來(lái)也順理成章。3.3 出價(jià)核心邏輯事務(wù)與并發(fā)保護(hù)出價(jià)Service是整個(gè)系統(tǒng)的核心。我當(dāng)時(shí)寫的第一版出價(jià)邏輯沒(méi)有加事務(wù)測(cè)試時(shí)發(fā)現(xiàn)問(wèn)題很隱蔽——價(jià)格更新了但出價(jià)記錄沒(méi)有插入或者反過(guò)來(lái)。后來(lái)我把整個(gè)出價(jià)過(guò)程收斂到一個(gè)Transactional方法里Transactional(rollbackFor Exception.class) public BidResult placeBid(BidRequest request) { AuctionItem item auctionItemMapper.selectById(request.getItemId()); // 1. 校驗(yàn)商品狀態(tài) if (item null || item.getStatus() ! AuctionStatus.ONGOING.getCode()) { return BidResult.fail(商品不存在或不在拍賣中); } // 2. 校驗(yàn)拍賣時(shí)間 if (item.getEndTime().before(new Date())) { return BidResult.fail(拍賣已結(jié)束); } // 3. 校驗(yàn)出價(jià)是否高于當(dāng)前價(jià) if (request.getBidPrice().compareTo(item.getCurrentPrice() item.getMinIncrement()) 0) { return BidResult.fail(出價(jià)不能低于當(dāng)前價(jià) 最小加價(jià)幅度); } // 4. 樂(lè)觀鎖更新當(dāng)前價(jià) int updated auctionItemMapper.updatePriceByVersion( item.getId(), request.getBidPrice(), item.getVersion()); if (updated 0) { return BidResult.fail(價(jià)格已變動(dòng)請(qǐng)重新出價(jià)); } // 5. 記錄出價(jià)流水這里作為平級(jí)信息記錄 AuctionRecord record new AuctionRecord(); record.setItemId(item.getId()); record.setUserId(request.getUserId()); record.setBidPrice(request.getBidPrice()); auctionRecordMapper.insert(record); // 6. 推送實(shí)時(shí)價(jià)格給前端 webSocketService.pushPriceChange(item.getId(), request.getBidPrice()); return BidResult.success(); }這段代碼里有個(gè)非常容易被忽略的點(diǎn)校驗(yàn)“出價(jià)高于當(dāng)前價(jià)”時(shí)輸入價(jià)格與當(dāng)前價(jià)格大小比較要使用BigDecimal的compareTo而不是equals。因?yàn)閚ew BigDecimal(100.0).equals(new BigDecimal(100.00))會(huì)返回false但compareTo則會(huì)正確返回0按label理解就是數(shù)學(xué)上的相等。這個(gè)問(wèn)題真的很細(xì)但踩過(guò)坑的人一定懂。3.4 WebSocket實(shí)時(shí)推送配置與代碼WebSocket在Spring Boot里的集成核心就三塊配置類、處理器/服務(wù)類、前端JS。配置文件application.ymlserver: port: 8080 spring: application: name: auction-system datasource: url: jdbc:mysql://localhost:3306/auction_db?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: 123456 redis: host: localhost port: 6379WebSocket配置類Configuration EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { Override public void configureMessageBroker(MessageBrokerRegistry registry) { // 客戶端訂閱前綴/topic/price/{itemId} registry.enableSimpleBroker(/topic); // 客戶端發(fā)送前綴/app/auction registry.setApplicationDestinationPrefixes(/app); } Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint(/ws-auction).withSockJS(); } }前端核心JS片段var socket new SockJS(/ws-auction); var stompClient Stomp.over(socket); stompClient.connect({}, function(frame) { stompClient.subscribe(/topic/price/ itemId, function(response) { var data JSON.parse(response.body); $(#currentPrice).text( data.currentPrice); }); });這里我想特別提一個(gè)現(xiàn)象很多人的WebSocket本地跑得好好的部署到云服務(wù)器之后連不上排查半天發(fā)現(xiàn)是云服務(wù)器安全組沒(méi)放行端口或者Nginx沒(méi)配置WebSocket代理升級(jí)。這個(gè)其實(shí)不是代碼問(wèn)題但如果你部署演示它就會(huì)變成拖延你進(jìn)度的真問(wèn)題。我的經(jīng)驗(yàn)是課設(shè)/畢設(shè)階段優(yōu)先本地演示別急著上服務(wù)器省得給自己多找一堆麻煩。3.5 定時(shí)任務(wù)與在線狀態(tài)檢查關(guān)單定時(shí)任務(wù)的核心不只是把訂單狀態(tài)改成已關(guān)閉還要聯(lián)動(dòng)把商品狀態(tài)改回可上架的狀態(tài)否則買家一直不付款商品就永久鎖死在那里了。我在第一版代碼里就漏了這一步確認(rèn)買家超時(shí)未付款后商品還一直顯示“已成交”導(dǎo)致賣家完全沒(méi)法重新上架商品。修正后的邏輯Scheduled(cron 0 * * * * ?) // 每分鐘觸發(fā)一次 public void processExpiredOrders() { ListAuctionOrder expiredOrders orderMapper.selectExpiredUnpaidOrders(); expiredOrders.forEach(order - { // 1. 訂單關(guān)閉 order.setStatus(OrderStatus.CLOSED); orderMapper.updateById(order); // 2. 商品狀態(tài)恢復(fù)從“已成交”改為“拍賣中”或“待審核” AuctionItem item auctionItemMapper.selectById(order.getItemId()); if (item ! null) { item.setStatus(AuctionStatus.ONGOING.getCode()); // 同時(shí)重置起拍價(jià)還是沿用上次成交價(jià)這個(gè)需要業(yè)務(wù)決策 auctionItemMapper.updateById(item); } }); }這個(gè)聯(lián)動(dòng)邏輯反映了一個(gè)真實(shí)的業(yè)務(wù)模型拍賣訂單和商品狀態(tài)是強(qiáng)綁定關(guān)系絕不能只關(guān)一個(gè)。課程設(shè)計(jì)雖然不用真實(shí)現(xiàn)什么支付退款/保證金退還這類復(fù)雜邏輯但狀態(tài)聯(lián)動(dòng)做不好演示數(shù)據(jù)一多就會(huì)露出破綻。我建議你在文檔的“業(yè)務(wù)規(guī)則說(shuō)明”里專門寫一段講清楚“超時(shí)關(guān)單后商品狀態(tài)如何流轉(zhuǎn)”這個(gè)小細(xì)節(jié)很容易成為答辯的加分項(xiàng)。4. 業(yè)務(wù)擴(kuò)展點(diǎn)與性能優(yōu)化思路4.1 拍賣漏斗中的時(shí)間輪思想與延期機(jī)制在線拍賣行業(yè)有個(gè)很常見(jiàn)的騷操作最后幾秒大家瘋狂出價(jià)等交易真正塵埃落定可能已經(jīng)比原定截止時(shí)間晚了十幾分鐘。對(duì)應(yīng)到真實(shí)系統(tǒng)在商品到達(dá)截止時(shí)間時(shí)會(huì)判斷如果最后1分鐘內(nèi)有出價(jià)記錄拍賣自動(dòng)延期5分鐘給其他買家留出繼續(xù)競(jìng)價(jià)的空間。這個(gè)機(jī)制學(xué)名叫“自動(dòng)延時(shí)”閑魚拍賣就是這么干的。實(shí)現(xiàn)思路也不復(fù)雜在出價(jià)成功后的代碼里加一段判斷// 如果當(dāng)前時(shí)間距離截止時(shí)間小于1分鐘自動(dòng)延長(zhǎng)5分鐘 if (item.getEndTime().getTime() - System.currentTimeMillis() 60_000) { item.setEndTime(new Date(item.getEndTime().getTime() 5 * 60_000)); auctionItemMapper.updateById(item); }這個(gè)機(jī)制不光是業(yè)務(wù)加分項(xiàng)也是文檔里一個(gè)“你比別人多想了一步”的證明。從底層原理上說(shuō)它跟“時(shí)間輪算法”的延遲任務(wù)調(diào)度是一路的只是當(dāng)前實(shí)現(xiàn)簡(jiǎn)易化足以支撐單機(jī)場(chǎng)景。4.2 定時(shí)任務(wù)與延遲消息的取舍前面提過(guò)延遲隊(duì)列RabbitMQ可以作為定時(shí)掃描的優(yōu)化替代。兩者差別在哪里定時(shí)掃描是“輪詢”思路不管有沒(méi)有到期的訂單到點(diǎn)了就全表掃一遍發(fā)現(xiàn)過(guò)期再處理。適合低頻海量任務(wù)但對(duì)數(shù)據(jù)庫(kù)壓力稍大。延遲隊(duì)列是“事件驅(qū)動(dòng)”思路訂單創(chuàng)建時(shí)就設(shè)置一個(gè)延遲消息到達(dá)設(shè)定時(shí)間后MQ自動(dòng)把消息推給消費(fèi)者處理精準(zhǔn)、實(shí)時(shí)但需要引入中間件。對(duì)于學(xué)生項(xiàng)目我仍然建議用定時(shí)任務(wù)。但你在面試或答辯時(shí)可以說(shuō)“當(dāng)前的實(shí)現(xiàn)是每分鐘掃描一次能滿足業(yè)務(wù)規(guī)模如果未來(lái)用戶量上來(lái)了可以替換為RabbitMQ延遲隊(duì)列將訂單關(guān)閉的精準(zhǔn)度提升到秒級(jí)。”這句話不用實(shí)現(xiàn)但體現(xiàn)了你對(duì)方案演進(jìn)路徑的認(rèn)知老師會(huì)認(rèn)可的。4.3 緩存策略什么該緩存什么不該緩存很多同學(xué)學(xué)了Redis就喜歡什么數(shù)據(jù)都往里面放把商品列表、用戶信息、出價(jià)記錄全塞進(jìn)去結(jié)果緩存一致性搞不定數(shù)據(jù)飄忽不定老師一查就覺(jué)得你基礎(chǔ)不扎實(shí)。拍賣系統(tǒng)里適合緩存的數(shù)據(jù)其實(shí)很有限核心就是兩類熱門商品詳情短時(shí)間內(nèi)容價(jià)格變化頻繁但讀多寫少相對(duì)而言緩存可以減少數(shù)據(jù)庫(kù)壓力。拍賣倒計(jì)時(shí)剩余時(shí)間精度要求不高可以緩存幾秒。不推薦緩存的數(shù)據(jù)出價(jià)記錄流水、訂單數(shù)據(jù)、支付信息。這些數(shù)據(jù)強(qiáng)一致要求高一秒鐘都不能錯(cuò)。拍賣系統(tǒng)里準(zhǔn)確遠(yuǎn)比快重要——你緩存了訂單數(shù)據(jù)支付回調(diào)一來(lái)緩存和數(shù)據(jù)庫(kù)狀態(tài)不一致那就是事故。緩存更新策略用“刪除緩存”而不是“更新緩存”這點(diǎn)值得寫進(jìn)文檔。更新緩存在并發(fā)場(chǎng)景下容易產(chǎn)生中間態(tài)數(shù)據(jù)刪除緩存則可以讓下一次讀取自然回源簡(jiǎn)單可靠。4.4 前后端交互普通接口與WebSocket的邊界有些同學(xué)把自己繞暈了既然有了WebSocket那商品詳情、出價(jià)記錄這些接口是不是都可以用WebSocket推其實(shí)不然。WebSocket適合的是“服務(wù)器主動(dòng)推送”的場(chǎng)景——有人出價(jià)了、拍賣結(jié)束了、你還剩30秒了這類消息不推給用戶用戶根本不知道。而普通HTTP接口適合“用戶主動(dòng)請(qǐng)求”的場(chǎng)景——查看商品列表、查看我的歷史出價(jià)記錄、后臺(tái)數(shù)據(jù)看板用戶沒(méi)主動(dòng)觸發(fā)服務(wù)器沒(méi)必要推。邊界清楚了代碼結(jié)構(gòu)也就自然清晰了。我項(xiàng)目里的做法是HTTP接口管數(shù)據(jù)CRUDWebSocket只管兩件事價(jià)格變動(dòng)推送、拍賣結(jié)束推送。這樣分工明確出了問(wèn)題也容易排查。5. 源碼與文檔如何配合最容易被低估的工作量5.1 獲取源碼后如何快速跑通整個(gè)項(xiàng)目如果讀者是拿這套“源碼文檔”來(lái)學(xué)習(xí)的拿到手第一件事別急著看代碼先按文檔里的環(huán)境要求把JDK、Maven、MySQL、Redis如果用到裝齊然后把數(shù)據(jù)庫(kù)腳本導(dǎo)入。啟動(dòng)順序有講究先啟動(dòng)Redis和MySQL再啟動(dòng)Spring Boot應(yīng)用最后啟動(dòng)前端如果是前后端分離。我見(jiàn)過(guò)太多次“明明代碼沒(méi)問(wèn)題就是起不來(lái)”的情況90%是端口被占用或者數(shù)據(jù)庫(kù)連接串沒(méi)改。切記application.yml里的數(shù)據(jù)庫(kù)密碼、端口號(hào)一定是先改成本地環(huán)境的不要直接拿著壓縮包里的配置去跑。建議跑通的路徑是登錄/注冊(cè) - 發(fā)布一件商品 - 管理員審核通過(guò) - 用另一個(gè)賬號(hào)出價(jià) - 看到價(jià)格實(shí)時(shí)刷新 - 等拍賣結(jié)束生成訂單。這條主鏈路完整走通項(xiàng)目至少成功了七成。5.2 文檔結(jié)構(gòu)如何組織才像模像樣一套能拿到高分的文檔我推薦目錄結(jié)構(gòu)是緒論研究背景、國(guó)內(nèi)外現(xiàn)狀、研究意義需求分析用例圖、系統(tǒng)功能需求、非功能需求系統(tǒng)設(shè)計(jì)架構(gòu)圖、功能模塊設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)實(shí)現(xiàn)核心功能界面截圖、核心代碼講解系統(tǒng)測(cè)試功能測(cè)試用例表、性能測(cè)試結(jié)果總結(jié)與展望不足與改進(jìn)方向這里有個(gè)經(jīng)驗(yàn)心得圖和表比字重要。老師翻你的文檔第一眼看的絕對(duì)不是正文而是ER圖、流程圖、用例圖和表格。圖多、圖清晰印象分至少漲一檔。盡量別用手畫的草稿圖我也知道畫圖費(fèi)時(shí)間但哪怕用ProcessOn畫個(gè)簡(jiǎn)單的架構(gòu)圖也比純文字好一百倍。5.3 答辯時(shí)的常見(jiàn)提問(wèn)與回答策略答辯老師最常問(wèn)的幾個(gè)點(diǎn)我提前幫你梳理了“為什么用樂(lè)觀鎖”回答思路出價(jià)是高頻操作樂(lè)觀鎖不加鎖不阻塞只在更新時(shí)檢驗(yàn)版本號(hào)沖突時(shí)讓用戶重試適合讀多寫多的場(chǎng)景?!芭馁u結(jié)束的瞬間你在哪里判斷的”回答思路出價(jià)方法里校驗(yàn)當(dāng)前時(shí)間超過(guò)endTime則拒絕同時(shí)定時(shí)任務(wù)掃描已到期商品進(jìn)行結(jié)算。“如果兩個(gè)買家同時(shí)出相同價(jià)格怎么辦”回答思路先到先得時(shí)間戳一致時(shí)按ID順序。“你的系統(tǒng)有什么可以改進(jìn)的地方”回答思路把定時(shí)任務(wù)掃描替換為延遲隊(duì)列、引入消息隊(duì)列削峰、服務(wù)端增加緩存別只說(shuō)“沒(méi)有”也別說(shuō)得太虛。如果這些問(wèn)題你都能在項(xiàng)目里找到對(duì)應(yīng)代碼位置當(dāng)場(chǎng)打開IDE指給老師看那答辯基本就穩(wěn)了。6. 常見(jiàn)問(wèn)題排查與避坑清單6.1 啟動(dòng)階段的坑我把自己和身邊人在這套系統(tǒng)上踩過(guò)的最典型問(wèn)題整理成一張速查表報(bào)錯(cuò)/問(wèn)題現(xiàn)象可能原因解決辦法Port 8080 was already in use端口被占用換端口或殺掉占用進(jìn)程Access denied for user rootlocalhost數(shù)據(jù)庫(kù)密碼不對(duì)核對(duì)application.yml配置Unknown database auction_db沒(méi)建庫(kù)或庫(kù)名不一致先執(zhí)行建庫(kù)SQL確保大小寫一致Field xxx doesnt have a default value數(shù)據(jù)庫(kù)字段非空限制檢查INSERT語(yǔ)句缺失的字段前端頁(yè)面樣式加載不出靜態(tài)資源路徑問(wèn)題檢查項(xiàng)目里static資源目錄位置Redis連接失敗Redis沒(méi)啟動(dòng)或密碼不對(duì)先啟動(dòng)Redis確認(rèn)配置的密碼為空或正確啟動(dòng)階段還有一個(gè)很典型的坑Maven依賴下載緩慢甚至失敗。國(guó)內(nèi)用戶建議把Maven鏡像換成阿里云鏡像倉(cāng)庫(kù)在settings.xml里配置mirror節(jié)點(diǎn)即可。這一步不做你的第一次構(gòu)建可能要卡半小時(shí)。6.2 業(yè)務(wù)邏輯層的隱蔽問(wèn)題除了啟動(dòng)業(yè)務(wù)邏輯里的坑更加隱蔽。例如出價(jià)成功后WebSocket推送的NPE空指針問(wèn)題——出價(jià)成功但WebSocket推送拋異常導(dǎo)致事務(wù)回滾明明價(jià)格已更新卻提示出價(jià)失敗。我在代碼里對(duì)推送操作做了try-catch但讓“推送異常不能影響業(yè)務(wù)主流程”這個(gè)原則更清晰的做法是把推送邏輯放到事務(wù)之外或者用事件監(jiān)聽(tīng)器異步處理。否則你無(wú)法向老師解釋清楚一個(gè)通知功能憑什么會(huì)讓出價(jià)失敗。再比如金額計(jì)算數(shù)據(jù)庫(kù)里金額字段用DECIMAL(10,2)代碼里對(duì)應(yīng)使用BigDecimal這個(gè)必須養(yǎng)成習(xí)慣。用double去算價(jià)格0.10.2不等于0.3這類問(wèn)題不用我多說(shuō)在拍賣系統(tǒng)這個(gè)對(duì)金額敏感的場(chǎng)景里屬于致命傷。6.3 性能與測(cè)試層面的坑寫測(cè)試用例時(shí)有同學(xué)用JMeter模擬100個(gè)并發(fā)請(qǐng)求結(jié)果發(fā)現(xiàn)很多出價(jià)失敗就懷疑樂(lè)觀鎖有問(wèn)題。其實(shí)這不是代碼bug反而是樂(lè)觀鎖在正常工作——同一秒內(nèi)100個(gè)請(qǐng)求爭(zhēng)搶同一版本號(hào)99個(gè)失敗是預(yù)期行為。測(cè)試時(shí)的正確做法是在請(qǐng)求中加一點(diǎn)隨機(jī)延遲模擬真實(shí)用戶的思考時(shí)間這樣測(cè)出來(lái)的才是真實(shí)表現(xiàn)。如果你想讓并發(fā)測(cè)試結(jié)果好看一點(diǎn)可以把min_increment設(shè)大一些減少無(wú)意義的纏斗或者在測(cè)試前把商品初始價(jià)調(diào)高這樣大家出價(jià)的意愿不至于那么密集。測(cè)試本來(lái)就是為了驗(yàn)證邏輯不是為了制造焦慮。6.4 代碼倉(cāng)庫(kù)與提交規(guī)范最后提一個(gè)看起來(lái)無(wú)關(guān)緊要但實(shí)際很影響體驗(yàn)的點(diǎn)如果你用Git管理代碼提交信息別寫“111”“aaa”“更新”這樣的內(nèi)容養(yǎng)成寫清楚“feat: 增加出價(jià)功能”“fix: 修復(fù)超時(shí)關(guān)單邏輯”的習(xí)慣。這不僅方便隊(duì)友協(xié)作更重要的是查歷史時(shí)能快速定位改動(dòng)。我見(jiàn)過(guò)把提交信息寫成“啊”的同學(xué)后來(lái)他自己都不知道哪條提交包含了關(guān)鍵修復(fù)。7. 這套項(xiàng)目的完整思考與我的個(gè)人建議說(shuō)實(shí)話在線拍賣系統(tǒng)在畢設(shè)里算是“安全牌”——技術(shù)棧主流、業(yè)務(wù)邏輯有深度、可擴(kuò)展空間大答辯時(shí)甭管老師懂不懂WebSocket你都能拿實(shí)際運(yùn)行效果說(shuō)話。我在實(shí)際帶項(xiàng)目過(guò)程中最大的體會(huì)是別把“拍賣”理解成一個(gè)普通商城。拍賣的核心在于“時(shí)間窗”和“競(jìng)爭(zhēng)出價(jià)”普通商城是死數(shù)據(jù)拍賣系統(tǒng)是動(dòng)態(tài)數(shù)據(jù)兩者的系統(tǒng)設(shè)計(jì)重點(diǎn)完全不同。很多同學(xué)把拍賣系統(tǒng)做成“帶出價(jià)功能的商城”本質(zhì)上還是CRUD那你就沒(méi)體現(xiàn)出拍賣系統(tǒng)的靈魂。如果你決定做這個(gè)題目我的建議是分三步走第一周把用戶和商品模塊跑通第二周死磕出價(jià)與訂單狀態(tài)機(jī)第三周補(bǔ)WebSocket實(shí)時(shí)推送和定時(shí)任務(wù)收尾。代碼量不用貪多核心邏輯能跑通、能自圓其說(shuō)文檔配合圖給足就已經(jīng)是一套拿得出手的項(xiàng)目了。最后分享一個(gè)很多人忽略的小技巧開發(fā)過(guò)程中遇到難以復(fù)現(xiàn)的bug別急著改代碼先錄屏記錄操作步驟再打開瀏覽器控制臺(tái)看報(bào)錯(cuò)。前端的問(wèn)題80%能從控制臺(tái)找到線索后端的問(wèn)題80%能從日志文件找到線索。養(yǎng)成這個(gè)排查習(xí)慣你會(huì)發(fā)現(xiàn)“莫名其妙”的bug其實(shí)都有跡可循。這套拍賣系統(tǒng)我前前后后改過(guò)三輪每一步深挖都靠的是這套方法。祝大家開發(fā)順利答辯順利。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美成年人性爱视频免费观看| 中文字幕高清20页视频| 亚洲色婷婷综合久久久久中文| 97久久资源| 成人三一级一片aaa| 国产又粗又长又大的视频| 亚洲狼狼干综合1| 曰韩无码777| 男女无套 免费网站| 亚洲高清在线se| 欧美另类色图片| 亚洲天堂中文字| 精品一区二区三区国产| 日日骚网站| 91欧美性| 国产亚洲色婷婷99精品91| 激情开心五月天| 美国人人操人人操| 99亚洲精品| 超碰2017| 亚洲高清视频在线免费观看| 大香蕉99999| 亚洲AV色图一区| 欧美白嫩在线放| 1956日韩精品| 后入人妻一区| 99蜜桃臀亚洲成人在线观看| 亚洲国成人情色好看电影| 五月婷婷综合在线| 国产白嫩精品久久| 九九九久千久久激情蜜桃在线看| 亚洲欧美精品一区天堂久久 | 韩日巨乳美女免费视频在线观看| 99精品网站| 爱干爱射网啊啊啊| 色九月综合| 色性荡荡荡荡视频| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 麻豆国产视频精品观看| 亚洲AV成人无码一二三久久| 国产极品美女高潮无套在线观看 | 天美传媒AV国产在线| 色狠狠综合噜一二三区| 亚洲色图国产另类| 色天堂综合| 欧美青青视频| 久久久一区二区三区麻豆| 这里都是精品| 亚洲一区二区三区春色| 日韩亚洲中文有码视频| 日韩成人电影AV| 婷婷伊人綜合中文字幕小说| 丁香六月婷婷久久综合| 精品网站9999| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 女人午夜视频777| 黄片直播三级黄片两女一男| 夜色五月天| 欧美专利1区2区3区4区5区免费| 久久熟女人| 骚熟女吞| 国产v亚洲v日韩v欧美v片另类| 久久久久久网址| 国产精品久久久久久照片| 日本三级网页| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 91操熟女| 黄片免费看黄片免费看| 熟女精品一区二区三区| 中文幕97| 亚洲综合20p| 无码 黑人一区二区三区| 欧美综合国产精品久久丁香| 青草av在线| 99精品成人免费看| 97干天天| 蜜臀99久久| 欧美高清18A片| 黄色大香焦1级‘′‘| 性爱1区| 91 刺激在线| 久操操| 亚州,欧美在线| 亚洲日韩国产精品| 大香蕉伊人色偷偷在线| 国产乱不卡| 天天干天天舔| 天美传媒国产原创中文字幕亚洲欧美另类 | 熟女六十路| 亚洲天堂人妻一区二区| 亚洲丰满很很操| 91在线免费精品视频| 女人 A一级| 清清一区二区三区四区不卡视频| 欧美色91| 噜噜噜狠狠色综合| 久久蜜桃一区二区| 日韩av影片在线观看| 偷拍欧美激情| 亚洲色图图片| 97人妻色| 100啪啪视频大全| 嗯啊不要啊在线 | 粉嫩不卡一区二区性爱| 午夜性| 影音资源男人日韩| 色婷婷电影网| 亚洲天堂资源在线| 视频二区美腿丝袜制服人妻欧美 | 澳门黄片一香蕉视频| 四虎国产精品永久地址入口| 亚洲欧美爆| 91狠狠综| 熟女啪啪视频| 亚洲97成人在线观看| 男人兔费天堂| 一级一性爱免费视频| 日韩啪啪啪啪啪| 91日韩网站| 亚洲Av无码成人精品国产| 试看福利| 黄片不用下载在线观看| 亚洲AV不卡在线观看| 18禁免费视频| 亚洲天堂久久久久久粉红视频| 啪啪啪大香蕉| 爱爱啊啊啊| 校园春色制服丝袜中文字亚洲| 97色色色| 亚洲大胆人体av| 色哟哟511老熟女| 色悠久久久av| 夂久色| 97视频在线播放| 国产又粗又又黄又猛| 男人亚洲天堂| 色天天野狼综合社区| 成人性爱电影一区二区| 亚洲高清91| 超碰97网址| 人人人摸人人| 久久久9 9 9精品| 日本女人操逼| 一区二区三区美女超清| 大屁股国产在线视频| 香蕉人人操tv| 91超碰在线| 超碰人妻中文在线| 六月丁香网| 男女啪啪网站免费视频| 日本最新免费韩国1区2区视频播放| 人妻一二三区| 精品无码久久久久久久杏吧| 加勒比海成人视频网| 国产男女无套视频免费观看| 亚洲欧美日韩激情不卡| 亚洲色图 图片| 日本99热| 五月婷网站| 密臀成人视频久久久| 婷婷尹人大香蕉免费| 亚洲欧美日韩制服另类| 一二三区精品视频| 道久久五香丁月婷婷激情综合| 亚洲AV成人无码一区二区三区在线观看| 酒色综合网| 国产精品在线网站| 在线 亚洲 网爆 自拍| 五月天婷精品激情| 韩日性爱av| 丰满人妻一区二区三区| 9997se| 九九久久久久久爱| 日本三级久| 日韩在线一区二区| 日韩中文字幕国产| 国产91精品在线免费| 日韩不卡一二三四| 国偷自 一区| 久久久久久久久久久久久久久乱码 | 伊人99热| 手机看片1024你懂的国产| 亚洲中文字幕熟女| 天天影视综合色| 欧美日韩亚洲五月天婷婷| 亭亭丁香激情| 宅男91视频在线播放| 黄色一级视| 做爱A级亚欧| 97综合在线| 99色热| 九九热精彩视频| 五月黑AⅤ| 91碰碰| 中文字幕 国产 精品| 国产内射爽爽大片| 好爽,再快点啊哈嗯嗯嗯嗯| 怡红院怡春院| 国产精品美女视频诱惑| 新久久AV| 99热99re6国产在线播放| 97超碰色色| 成年人黄色小视频网站| 成人情色一区二区| 亚州中文字幕超碰97| 2003天天干夜夜操| 日韩激情啪啪啪| 亚洲蜜臀懂色| 97操b| 日韩av一级黄片| 囯产精品久久久久久久久久梁医生| 丰满少妇一区二区三区专区| 国产亚洲精品美女| 日韩99999色| 天天天天干| 国产激情久久| 亚洲欧洲偷拍一区| 91精品人妻一区二区三区蜜桃臀 | 在线播放免费av福利片| 激情五月综合开心五月| 乳欲人妻办公室奶水| 日韩中文字幕国产| 日本人妻中文字幕精品| 三级片网站在线播放| 69精品人人人人| 丁香五月天啪啪| 丁香五月天激情| 九九热视频在线观看| 婷婷在线视频| 国产和美国毛片| 日韩综合第八区国产精品| 欧美视频一区二区三区| 美女久久久| 大二网站亚洲| 五月婷婷六月丁香| 殴洲老熟女| 暴力av在线| 欧美性xxxxx狂欢| 粉嫩av久久一区二区三区| 伊人久久大香线蕉无码| 婷婷伊人綜合中文字幕| 日本加靬比网站发布页| 亚洲第一男人天堂| A 天堂| 99久久久无码精品国产人| 99久久婷婷丁香| 你懂得91| 日韩一级二级三级免费看完整版国语版| 无码精品啪啪啪一区二区三区三州| 日本三级精品| 人妻无一区二区三区| 亚洲天堂人妻熟妇视频| 久久精品人体| 日韩电影免费网站麻豆视频| 亚洲中文字幕在现观看| 日韩av影片在线观看| 亭亭丁香激情| 99re28在线观看| 亚洲无无码αⅴ每日更新| 黄色一级视| 啊啊啊啊啊在线观看网址| 亚洲天天影视色综合| 快灬快灬 一下爽蜜桃在线观看| 99久国产精品午夜性色福利| 日韩传媒在线| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 波多野结衣被操50分钟免费视频| 操人妻丝袜高跟| 中精品一区二区三区| 在线视频免费观看午夜| 久久99综合| 久久综合av| 亚洲黄片免费在线播放| 东京成人一区| 成人无码在线视频网站| 亚洲不卡AV在线| 麻豆色99999| 免费一级黄色录像影片| 超碰97色色| 97天天综合| 探花激情视频| 久久久成人免费av电影| 国产一级作爱毛片| 欧美少妇性乱| 另类小说综合网| 精品无码久久久| 丝袜 中出 制服 人妻 美腿 中文字幕| 欧美性生活免费网| 色色99| 五月丁香黄色网| 91狠婷| 日韩成人性日韩成人性爱视频在线免费观看 | 欧美特大AA级黄片| 人人污日韩一区二区| 精品人妻一区二区免费蜜桃视频| 日日夜夜天天| 超碰97丝袜| 色欧美天天| 精品欧美乱码久| 日本肉体xxxx裸交| 少妇淫妇久久久久久久| 国产欧美第五页| 999精品久久久久久久| 久久大香蕉| 亚洲小说视频| 亚洲s在线观看| 国产美女高潮| 午夜精品久久久久| 国产人伦a片信息免费片| 大香蕉青青9| 无码国产精品午夜不卡(| 亚洲九九视频| 熟妇人妻一区二区三区| 国产高清吃奶免费视频网站| 91爱看| 欧美日韩岛国大片在线观看| 亚洲有码视频二区| 午夜福利在线合集| 女同亚洲欧美一二三区久久电影| 人人弄人人摸| 深喉吞精| 天堂av2019| 久久精品熟妇丰满人妻99| 99色综合| 亚洲啪啪视频免费| 91美女視頻| 色人久久| 精品国产一区二区三区在线播出| 一区二区三区四区在线不卡| 久操高青| 精品一区二区综合熟妇| 成人久久久| 西西美女视频网| 女人爽到高潮潮喷18禁网站| 日韩无码极品| 人人妻人人爽| 日韩精品怡红院| 亚洲综合在线视频| 国产欧美精选自拍一区| 久久啊啊| 精品人妻一二三四区视频| 天天流夜夜操| 日本污ww视频网站| 久久高清欧美国产| 中文字幕日韩电影人妻| 国产亚洲深夜激情| 欧美操逼录像国产黄色国产| 日本不卡一区二区三区| 四虎视频在线观看| 嗯嗯啊啊视频在线看| 亚洲国产av中文字幕久久 | 亚洲91网| 中文字幕第7页| 久噜噜| 国产视频一区二区在线| 亚洲色婷婷| 中文字幕一区二区三区高清| 日韩福利电影网| 久久久久久久久女黄| 久久綜合很很很| 乱精品一区字幕二区| 手机在线视频国内精品| 精品无码一区二区三区| 凹凸精品熟女在线观看| 97操| 亚洲图片激情小说| 男女国产精品| 超碰碰97资源站| 超碰97极品9| 久久精品中文字幕女同| 97天天操天天干| 美腿色图| 欧美日韩资源在线| 丁香婷婷激情五月天无毒不卡 | 国产农村妇女毛片精品久久| 日本免费一区二区不卡| 欧美成人一区二区| 美性中文综合网| 亚洲欧美中日韩| 天天影视网综合少妇| www.狠狠| 日韩草久视频| 哈哈操电影AV| 青青草精品| 欧美综合色站| 91网站18在线| 欧美成人国产精品| 久久久96精品| 草草草草视频| 久久午夜鲁丝片| 人妻9117c| 国产精品福利视频播放| 欧美亚洲一级在线观看| 青青久久手机线视频| 国产精品人妻熟女aⅴ| 黄色片,com| 97精品熟女少妇一区| 无套内射人妻在线播放| 在免费jIzzjIzz在线视频| 亚洲av淫乱| 欧洲熟妇xxXx欧美老妇裸体| 九九热精品免费视频| 九月丁香婷婷| 97超碰免费人人性爱| 人妻丝袜肏逼| 久热伊人| 高清国产成人无码| 伊人网av| 天天夜夜久久| 狠狠躁久久躁| 亚洲伊人久久综合97| 国产欧美精选激情视频| 欧美一级色| 超碰爽人妻熟女Av| 91激情综合| 欧美78P| 国产黄色在线播放观看| 玖玖在线视频| 99只有精品| 一卡二卡在线播放| 欧美真人抽搐一进一出gif | 麻豆色约约| 精品人妻一区二区三区在| 五十路六十路素人熟女| 亚洲操人| 精品久久九| 亚洲中文字幕一区二区| 日韩美女啪啪一区| 亚洲nv男人的天堂网| 色香在线| 超碰97欧美| AA特级绝黄| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 亚洲乱熟女一区二区三区大香蕉| 久久久久久久久久久久久久久性生活视频 | 青青草依人大香蕉| 成 人片 黄色大片| 东京太热久久久| 免看60秒涩涩视频| 日本一级婬片试看三分钟| 开心五月婷婷| 日韩欧美中文字亚洲慕| 都市久久精品激情亚洲| 亚洲综合97中文网| 99热精品在线观看| 久久久精品视频免费观看| 国产一级久久久| 色综合天天爱去电影网| 国产福利精品最新在线| 日韩精品影视| 精品成人动漫一区二区| 97视频7| 在线亚洲欧美| 又黄又爽在线观看视频| 久久久久久久久一区二区三区| 韩国黄片aaaa| 青青草国产盗摄一二三区| 男女一进一出视频久久| 91黑丝露脚| 天天影视综合色| 国模无码一区二区三区在线| 久久一本大香蕉| AV在线性爱| 91国产大片| 精品一区二区国产日韩| 日本丝袜美腿人妻九九| 天堂69亚洲精品中文字| 亚洲综合码| 一区二区中文| 欧美中文字幕一区 | 九九探花视频在线观看| 亚州九九九精品视频| 亚洲图片激情综合另类| 亚洲综合九| 一线黄色免费性爱片| 午夜精品久久久久| 可以免费观看的日韩av毛片| 四季av一区二区凹凸精品小说| 婷婷激情五月天小说网| 2017,超碰| 色99视频| 四虎午夜影院| 九九九九一级| 成人午夜无码视频| 97九色| 免费看污网站| 国产中文大片资源中文字幕| 呻吟 欧美 日本 中出| 欧美性爱伊人| 久 久无码人妻AV| 欧美精品人妻视频| 亚洲阿v天堂无码z2018| 97 国产精品| 五月香婷婷| 超碰97人妻免费在线| 久啪| 亚洲操逼网| 人妻少妇久久中文字幕一区二区 麻豆| 天天色悠悠激情| 久久天天艹| 东京男人天堂| xxx亚洲午夜天堂| 一类av片在线看| 久久99干一本高清| 久久99国产综合精品女同| 精品国产一区二区三区在线播出| asc国产精品| 超碰97精品在线| 正在播放国产精品一区| 欧美亚洲中文字幕| 天堂伊人久久| 玖玖97综合| 免费人成在线观看网站品爱网| 曰本特级特黄特色黄色A级网站高清在线免费看 | 白嫩国模丰满一二三区| 色五月AV| 骚熟女AV网| 精品人妻夜夜草| 久久99午夜精品一区人妻| 最近二区三区视频大全| 操淫穴亚洲五月丁香| 97超碰国产精品| 欧洲一级性爱视频在线观看| 欧洲在线性爱视频| 久热精品在线| 中文字幕超碰CAO| 日韩偷拍色图| 国产成人综合网| 上海一级黄片| 日韩黄片影院| 精品对白久久不卡| 香港久久久| 亚洲国内精品成人不卡| 精品国产污一区二区三区| 91站街按摩店老熟女熟女| www.伪伪| av在线播放国产一区| 日本506070| 99超碰网| 黑人干亚洲| 久啪| 国产精品丝袜久久亚洲不卡| 亚洲一区二区三区麻豆传媒| 亚洲天堂男人在线| 天天爽夜夜操| 操久久久久久| 又大又白奶子| 丝袜熟女2P| 亚 欧 美 综合| 超碰人人干| 婷婷影院入口| 日本五十路熟女一区二区| 国产精品人人爽人人做可爱福利| 亚欧视频在线| 色激情综合网站| 亚洲欧美97| 伊人欧美大香蕉视频| 天天爱综合网| 亚洲熟妇AV日韩熟妇在线| 97超碰免费生活| 日本淫穴在线| 国产精品乱码久久久久久久| 99国内熟女露脸视频| 青青伊人加勒比海| 爱妻综合网| 97在线欧| 97资源亚洲| 9丨久久九九九| 国产乱子伦一区二区三区在线观看| 欧美激情高清性猛交| 欧综合网| 欧洲在线性爱视频| 欧美 日韩 亚洲 春色| 人人操人人摸人人看人人干| 国产成人bd在线观看| 簧片免费看视频| 狠狠操狠狠| 夜夜操天| 狠狠色一区二区中文字幕| 人妻丝袜肏逼| 国产免费大片| 亚洲一本色码中文字幕| 天天操天天日天天干| 国产中午字一暮区| 97视频免费播放| 精品一区二区国产日韩| 亚欧无码在线| 黄色AV影视| 操一区| 亚洲97网站| 亚洲人妻久久| 亚洲精品人妻在线| 丁香激情网| 大香蕉天天看妹子| 日本高清视频在线观看黄已三辽| 啊啊嗯嗯好爽| 国产尤物AV尤物在线观看不卡| 99热亚洲| 精品性爱久久视频| 国产伦精品| 欧美日韩国产三级黄色| 伊人AAA| 大香蕉琪琪日本女优不卡| 亚洲毛片久久| 亚洲天堂AV在线播放| 国产999精品久久久久久| 97AV在线免费观看| 97免费在线| 日本熟妇人妻中出视频| 影音综合网| 91蜜臀人妻中文字幕在线| 伊人专区一区二区三区| 三级三级三级日本99| 91无码人妻| 牛牛AV人人夜夜澡人人爽| 日韩无码成人电影| 加勒比无码毛片| 精品999日本| 久草资源在线| 欧亚性爱啪啪| 樱花草社区www中国| 夜夜国自区| 一个色导综合| 激情综合五月婷婷| 国产精品3| 26uuu欧美日韩| 人妻天天操天天爽视频免费| 国产91丝袜 在线播放| 污污汅18禁网站在线永久免费观看| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 天美传媒AV在线| 天堂中文资源在线bt| 九九久久一区二区三区| 青青草大香蕉视频| 国产精品三级视频网站 | 探花熟女,姿勢到位,體驗感也到位| 97蜜桃综合| 亚洲色人阁| 99这里都是精品| 欧美日韩中文字幕不卡| 九九色婷婷| 中文字幕av一区二区三区人妻少妇 | 精品久久久av无码免费| 国产欧美伊人| 99久久99久久免费精品蜜臀| 亚洲天堂,男人| 亚洲中文字幕熟女少妇一区二区| 亚洲中文字幕av| 超碰色大香蕉| 丁香激情五月天| 男人的午夜天堂| 久草综合京东| 国产精品久久妻无码网站| 亚洲瓯美色图| 一区不卡在线观看av| 北京美女一区二区| 日本高清_区二区三区| 精品无码一区二区人妻久久蜜桃| 国语精品内射在线观看| 97综合久第一页| 开心五月婷婷激情| 久久午夜色播影院免费高清| 操人妻丝袜高跟| 色综合V| 在线中文AV| 午夜免费福利视频一区| 亚洲天堂2020| 久久綜合很很很| 亚洲精品无码成人久久久99| 桑老女人九区| 女色视频社区| 韩国一级AAA| 性高潮久久久久久久久久久| 大香蕉碰| 乱伦图一区| 91老司机精品| 久久綜合很很很| 日本三级R| 日本成人在线不卡一区二区三区 | 秋霞久久亚洲精品成人| 黑白配性爱AV成| 看看小穴| 久久国内| 无码久久亚洲高清,| 色网综合网| 99热精品在线观看| 一区二区三区亚洲| 一区二区影视| 亚洲中文制服诱惑| 人妻密肉在线观看| 人妻少妇精品无码专区二区密桃| 五月丁香在线| 日韩国产欧美伦理在线| 在线天堂资源亚洲| 2000亚洲男人天堂| 又黄又爽在线观看视频| 大香蕉强奸乱伦| 精品传媒在线一区| 色偷综合| 99国产在线绯色一区| 男人的天堂一区三区| 最新无码国产| 九九九成人| 乱久久久| 夜夜高潮夜夜爽| 中文字幕在线免费观看视频| 国产精品亚洲无码| 日本一级特级毛片视频| 欧美综合色图网| 九九国产| 99九九久久| 麻豆国产尤物AV| 日韩,欧美,中文在线| 欧美A片中文字幕| 91亚洲欧洲| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 人爽不卡视频| 精品视频一区二区| 中国的操老妇女| 欧美爆操91| 久久久啊啊| 男人天堂一区二区| 丁香五月色| 粉嫩av在线一区二区| 日韩人妻有码免费视频| 亚洲码在线中文在线观看| 日躁天天爽爽| 青青草好吊色| 九九热国产| 97神马久久| 亚洲色婷婷综合久久一区二区三区| 天天拍天| 色眯眯av| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 经典丝袜一区| 日韩中文字幕宗合在线| 天天综合麻豆视频| 精品综合久久久久久97| 亚洲图片在线| 国产精品97超碰| 欧美亚洲色的图| 女人18精品一区二区三区| 久久中久文96| 精品少妇一区二区三区| 国产丁香精品露脸视频| 亚州欧美在线| 精品九区| 欧美日韩在线视频网站| 国产JDAV无码视频在线观看| 99久久精品欧美国产| 亚洲性爱电影| 在线观看亚洲专区| 97最新在线播放视频| 六月激情婷婷| 天天欧美欧美亚洲网| 99re6国产精品99re在线| 一区久久久二区| 校园春色综合色| 91/欧美| 天天性射网| 97色在线视频| 中文字幕一区二区三区四区在线视频| 亚洲成aⅴ人片不卡无码| 一本久道在线综合视频| 欧美人妻一区| 久久久A∨| 精品久久久久黄少妇| 99精品人人爽| 四虎AV在线播放| 99久久无码| 国产一级内射无挡观看| 一个人免费HD91视频| 日本超碰在线国产一区| 操人妻逼91| 人人操人人精品影片| 亚欧成人一级片在线播放| 免费久久一级毛片大黄| 天堂8在线新版官网| 欧美色三级片91| 国产精品天干天干综合网麻豆 | 97香蕉碰碰人妻国产欧美| 久久熟女人| 肉丝无码中文高清| 性综合网| 亚洲成人性爱在线观看| 丰满人妻一区二区三区在线| 91男人天堂网| 精品无码久久久久久久久果冻糖心 | 久久久97| 欧美日韩国产电影| 在线中文字幕视频| 新婚人妻扶着粗大强行坐下| 久九九九九九九热| 熟女熟妇伦久久影院毛片一区二区| 一区二区不卡视| 精品一啪| 91伊人大香蕉| 国产精品扒开腿做爽爽爽视频| 天天插夜夜操| 天美AV片| 色悠悠伊人网五月天| 强奸乱伦免费网站| av优播| 99热这里只有精品1| 三级精品三级在线观看| 人人人人人人少妇| 久操视频在线| 亚洲欧美日韩二区视频| 日韩丝袜人妻AV| 国产999精品久久久| 亚洲97久久精品亚洲| 图色综合网| 女生久久网| 亚洲午夜AV| 超碰久久综合| 乱伦av国产| 欧美大香蕉97| 久久久久久久强迫| 懂色综合久久久| 97超碰9| 免费黄色片子| 久久久无码精品人妻二区| 91高清无码下载| 欧洲小说色图视频另类| 国产三级在线现体验区| 男人的天堂.com| 国产精品com| 91人妻超碰| 欧美色视| 久久亚洲不卡| 精品天堂| 爱爱动态120秒| 97视频在线免费观看| 欧美午夜精品久久久久久3D| 78精品| 久久久五月天| 91丝袜| 国产精品老熟女一区二区| 天美传媒AV在线| 熟妇在线视频一区二区| 五十路三区在线| 91精品电影18| AV麻豆免费一区| 在线综合 亚洲 欧美中文字幕 | 精品国产99| 高清无码一区二区三区| 中文字幕一区二区三四五区日日骚| 日韩av不卡在线看| 少妇色综合| 国产精品一区二区 尿失禁| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 我要色综合网站| 激情五月综合网| 91中文字幕| 禁十八久久| 伊人激情五月天一区二区| 亚欧美色图| 亚洲精品色| 亚洲本色精品一区二区久久| 综合久欧洲| 3d成人精品一区二区| 综合自拍| 亚洲人在线| 国产精品免费日韩| 竹菊一区二区三区AV线| 亚洲 图片 综合91| 樱花蜜乳av| 国产suv精品一区二六| 啊啊啊啊一区| www亚洲免费| 快播久久人人aV| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 亚洲一级特黄大片在线播放91| 亚洲玖玖爱| 人妻夜夜爽天天爽麻豆三区网站| 欧美亚洲第一页| 欲色综合| 欧美 牲| 国产精品色色| 亚欧成人综合影院| 精品九区| 日本顶级天天操狠狠操夜夜操中文字幕| 久久久久久AⅤ无码免费肉站| 欧美日韩在线小说 | 日本操逼视频不卡直接放| 干美女人妻| 欧美午夜色妇色鬼| 免费A V在线| 无码直播久久久| 国产午夜精品一区二区三区牛牛| 德国一二三不卡| 久久草在线综合视频| 日韩啊V| 啊啊啊啊嗯嗯在线久久久| 天天看人人操屄犊摸阴| www.久久| 性爱乱伦网址| 国产超碰AV在线精品| 欧美日韩狠狠爱| 激情综合网一盗摄| 超碰激情808| 97人妻碰碰中文无码久热丝袜| 免费的黄片有限公司| JuliaAnn丝袜熟女系列| 少妇高潮喷水无套久久久久久| 天堂日本亚洲欧美| 加勒比大香蕉视频在线| 牛牛aV| 国产精品嫩草久久久久| 男女啪啪网站免费视频| 日韩综合97p| 997色在线| 91精产一区二区三区| 国产专区路线| 男人的天堂在线有码| www色色com| 中文字幕成人理论在线| 噜噜噜噜久久久精品免费| 爱射综合| 婷婷深爱五月| 久久久精品一区二区| 黄页18禁| 夜夜爽77777| 成人在线日韩| 五月丁香激情综合| 国产97色在线| 日韩人妻免费精品| 永久免费发布性爱网| 亚洲国产ⅴ高清在线观看| 国产精品不卡高清在线观看| 亚洲在饯| 亚洲欧美黄| 91亚洲电影| 亚洲另类春色| 一区二区三区国产在线播放| 特色a在线上| 亚州综合色| 97天堂| 91精片| 97超碰人人操人人操| TS人妖另类精品视频系列| 大JI巴好深好爽又大又粗视频| 天美传媒AV在线播放| 少妇久久久久久久| 富女玩鸭子一级毛片| 草草电影院| 亚洲春色欧美激情自拍| 中文字幕一区二区日韩网| 亚洲国产精品9999在线观看| 黄色一区二区秘书性感| 无码高清专| 日韩婷婷| 啊啊啊啊视频免费| 大香蕉在线免| 男人的天堂在线| 欧美在线干| 欧美色另类| 日本人妻最新在线中| 人妻一区二区三区视频 | 色婷婷视频| 亚洲 欧美 91| 偷拍亚洲高清图片| 久久99精品九九久久久婷婷| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 亚洲欧美精品久| 日本精品九九九| 欧美色图欧美| 国产91影院| 思思热免费在线视频| 色一色综合网| 花野真衣| 亚洲综合校园春色| 久久久久久久久久9| 级做a爱无码性色永久免费| 国产女人操逼视频| 超91综合网| 久久大陆| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 超碰97精品| 久草免费福利在线播放| 亚洲欧美精品91| 日本人妻天堂网站在线播放| 日韩成人小视频| Sekablack无码一区| 亚洲偷拍自拍在线视频| 亚洲情色1区| 四虎影视国产精品| 国产福利电影| 99热最新网址| 国产一区二区三区久久精品太古里| 91中出在线| 午夜.DJ高清在线观看免费7| 五月丁香啪啪啪| 亚洲天堂人人妻| 激情一区二区| 欧美性爱伊人| 久操操| 综合久久2017| 把腿张开老子CAO烂你| 亚洲中文字幕有码视频一区二区三区| 91男人天堂网| 黑人精品XXX一区一二区| 综合网色| 色偷偷超碰亚洲| 国产美女口爆吞精视频| 亚洲丝袜二区| 久久天堂网| 一本久道在线综合视频| 欧美熟爽综合| 亚洲人妻日日日| 亚洲av无线观看| 亚洲激情色片 | 人人澡综合涩| 亚洲色图91| 亚洲AV免费在线| 欧美色道啊| 精品少妇人妻av久久免费| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 中国AAAAAA黄色片| 99在线免费观看| 国产久9| 日本欧美亚洲高清在线看| AV老汉| 色哟哟 日韩精品| 毛片中心9视频99| 亚洲高清综合网| 婷婷九月| 大香蕉中文网| 大香蕉乱伦视频网| 不卡六六在线91| 亚洲成人性爱在线观看| 亚洲性猛| 久久久无码av精| 亚洲色图伊人网| 久久夜黄色无码A级大片| 麻豆 亚洲 97| 亚洲一级性爱视频免费看| 国产夜夜操| 亚洲福利中文字幕在线| 秋霞久久亚洲精品成人| 搡老女人老91妇女老熟女| 99热在线观看| 欧美热图99| 99在线免费视频| 97视频免费播放| 久久超碰爱| 欧美色999| 欧美在线伊人色| 一个国产在线综合网站| 做爱福利视频一区二区| 亚洲精品xxx| 精品欧美日韩在线观看| 亚洲偷拍自拍在线视频| 日韩内| 青青草视频久久| 亚洲五区熟女| 亚洲精品中文字幕一区在线视频| 日韩在线一区高清在线| 中文字幕99999| 大香蕉久| 91视频女生| www.色婷婷.com| 热99这里有精品综合久久 | 91狠狠综| 伊人国产成人av网站| 99热最新| 九九九久久久| 密臀AV在线| 中文字幕狠狠玩| 日本免费不卡二区| 98一区二区精品| 美女啊啊啊啊pc| 精品久久久久,69国产成人精| 毛片99-全集电影手机免费观看完整-B029AV| 久久久97| 大香伊人在线一区| 欧美色图另类图片| 欧美亚洲色图另类国产| 熟女高潮精品一区二区| 国产剧情一区在线观看| 高清无码久操视频| 97视频新免费| 日韩AV电影网站| 亚洲国产一区二区入口| 免费视频观看60秒| 成人A片男人的天堂| 一区二区三区精品久久| 伊人影院日本| 自拍第一页| 麻豆区99999| WWW黄片COM| 国产黄色视频久久| 欧美日韩不卡传媒| 久久av色| 99操| 中文字幕奈奈美被公侵犯| 在线视频资源| 青娱乐手机日韩在线视频| 久久性爱视频| 国产高清MV操逼视频| 人妻精品视频一区二区三区| 福利五区| 东京热av男人的天堂| 一区二区三区在线资源| 国产操逼逼网| 亚洲av无码国产精品字幕| 青女偷拍网| 校园春色宗合网| 亚洲最大的黄色电影网站。| 大香蕉黄色一区| 婷婷去俺也去六月色| 国产无码精品久久久久久| 久草成人影片| jiujiujiujingpin| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 精品十八在线观看| 欧美少妇高潮久久91| 97色插| 大香蕉碰碰| 91五月天| 99精品久久久久久久婷婷蜜桃| jk白丝没脱就开始啪啪| 秋霞免费无码视频日韩A片| 夜色91| 精品对白久久不卡| 91高清欧美| 夜夜高潮夜夜爽国产伦精品| 夜夜操中文字幕| 色偷偷色偷偷欧美日韩| 岛国AV一区二区电影| 色综合一区二区三巨| 欧美激情综合色综合啪啪五月| 自拍偷拍2025在线观看| 黄片aaaaa一区| 青青久久手机线视频| 啪啪啪东京| 八戒午夜福利理论片| 亚洲最新Av| 日韩无码人妻| 欧美一级在线观看成人| 91综合中文字幕| 亚洲综合在线第一页| 性久久久| 精久久久| 加勒比人妻综合| 天堂资源站| 97国产伦理| 国产精品午夜福利视频| 久久久久9| 在线情色电影 91大 | 人人乐大香蕉| 午夜天天碰综合视频| 天天看少妇| 少妇天堂网络| 中文字幕78| 97精品中文字幕| 大香蕉日韩欧美| ,成人免费啪啪视频| 97色碰| 99精品久久久久久|