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

ARTICLE DETAIL

資訊詳情

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

Java網(wǎng)上書店系統(tǒng)實(shí)戰(zhàn):Spring Boot與MySQL實(shí)現(xiàn)訂單事務(wù)與庫(kù)存扣減

Java網(wǎng)上書店系統(tǒng)實(shí)戰(zhàn):Spring Boot與MySQL實(shí)現(xiàn)訂單事務(wù)與庫(kù)存扣減 簡(jiǎn)介這是一套基于 Java 實(shí)現(xiàn)的網(wǎng)上書店及書店管理系統(tǒng)課程設(shè)計(jì)資源面向正在準(zhǔn)備畢業(yè)設(shè)計(jì)、課程設(shè)計(jì)或需要 Java Web 項(xiàng)目實(shí)戰(zhàn)的學(xué)習(xí)者。系統(tǒng)分為顧客和管理員兩類角色顧客可注冊(cè)登錄、瀏覽圖書并按圖書類別、名稱、作者三種方式查詢購(gòu)買同時(shí)支持購(gòu)物車、訂單及個(gè)人資料管理管理員則可對(duì)圖書、訂單和用戶信息進(jìn)行查看與增刪改查。前端采用 Vue Bootstrap后端使用 Java Servlet JDBC 連接 SQL Server整體技術(shù)路線典型且完整。資源包共 1664 個(gè)文件約 25.68MB涵蓋 HTML、LESS、JS、CSS 等前端源碼Java、Class 等后端邏輯以及圖片、字體和工程配置文件結(jié)構(gòu)清晰便于導(dǎo)入開發(fā)工具后理解與復(fù)用。目前已有 536 人學(xué)習(xí)下載除項(xiàng)目源碼和項(xiàng)目說(shuō)明外還適合直接作為畢設(shè)/課設(shè)方案使用也可作為 Java 學(xué)習(xí)者對(duì)照實(shí)踐、二次開發(fā)的參考藍(lán)本。1. 網(wǎng)上書店課程設(shè)計(jì)先搞清楚這行字背后的真實(shí)要求很多人在拿到「課程設(shè)計(jì)基于Java實(shí)現(xiàn)的網(wǎng)上書店及書店管理系統(tǒng)源碼項(xiàng)目說(shuō)明.zip」這個(gè)標(biāo)題時(shí)第一反應(yīng)是去找現(xiàn)成的壓縮包解壓、導(dǎo)入IDE、點(diǎn)運(yùn)行然后寫一份報(bào)告交差。但真正動(dòng)手做過(guò)的同學(xué)都知道這個(gè)流程走下來(lái)翻車的概率極高代碼能跑起來(lái)不代表知道怎么講清楚報(bào)告寫得再厚也掩蓋不了核心邏輯沒(méi)有閉環(huán)。這個(gè)題目的本質(zhì)不是「做一個(gè)賣書的網(wǎng)站」而是用Java把兩條業(yè)務(wù)鏈路走通一條是面向讀者的檢索、下單、支付模擬另一條是面向管理員的庫(kù)存、訂單、用戶維護(hù)。兩者共用同一套數(shù)據(jù)庫(kù)和業(yè)務(wù)層區(qū)別只在接口和權(quán)限邊界。這個(gè)題目適合誰(shuí)適合正在修Java課程設(shè)計(jì)、需要一個(gè)能在答辯現(xiàn)場(chǎng)講明白的項(xiàng)目的人也適合想從「跟著視頻敲代碼」過(guò)渡到「自己設(shè)計(jì)表結(jié)構(gòu)和接口」的初學(xué)者。網(wǎng)上書店的難點(diǎn)從來(lái)不在頁(yè)面而在數(shù)據(jù)一致性、狀態(tài)流轉(zhuǎn)、并發(fā)扣庫(kù)存這類平時(shí)上課不太細(xì)講的地方。這篇文章不替你寫代碼但會(huì)把表怎么建、事務(wù)怎么開、參數(shù)怎么調(diào)、哪些地方會(huì)莫名踩坑講透給你一條能復(fù)現(xiàn)、能解釋、能扛住提問(wèn)的完整路徑。2. 技術(shù)選型Servlet還是Spring Boot為什么最終這么定2.1 課程設(shè)計(jì)場(chǎng)景下的三套方案對(duì)比常見的做法是把技術(shù)路線分成三檔。第一檔是純JSPServletJDBC好處是和學(xué)校課程內(nèi)容貼合度最高從HttpServlet到PreparedStatement幾乎就是把課堂代碼放大了一遍老師問(wèn)什么你都能對(duì)上號(hào)。壞處是代碼結(jié)構(gòu)很容易變成「JSP里寫Java、Servlet里拼HTML」的意大利面項(xiàng)目一旦超過(guò)十個(gè)頁(yè)面就難以維護(hù)。第二檔是SSH或SSM這種老框架組合現(xiàn)在越來(lái)越多學(xué)校已經(jīng)不講Struts了除非你確定老師認(rèn)可這條路否則不推薦為了「顯得高級(jí)」去用一套自己都說(shuō)不清原理的東西。第三檔是Spring Boot MyBatis或MyBatis-Plus Thymeleaf這也是我實(shí)際帶課設(shè)時(shí)最常推薦的一條路線。為什么推薦Spring Boot因?yàn)樗钱?dāng)前Java后端崗位面試題里的??妥鐾赀@個(gè)項(xiàng)目你順手就把依賴注入、自動(dòng)配置、事務(wù)注解這些概念全摸了一遍哪怕學(xué)校不強(qiáng)制要求簡(jiǎn)歷上也能寫。更現(xiàn)實(shí)的理由是Spring Boot內(nèi)嵌Tomcat打包成jar就能跑避免了在本地Tomcat里部署war包時(shí)出現(xiàn)的一堆環(huán)境變量問(wèn)題。MySQL還是H2課設(shè)答辯現(xiàn)場(chǎng)最怕的就是數(shù)據(jù)庫(kù)連不上。H2的內(nèi)存模式雖然零配置但數(shù)據(jù)類型和真實(shí)MySQL有差別而且老師可能會(huì)現(xiàn)場(chǎng)要求看數(shù)據(jù)所以我更建議用MySQL 5.7或8.0把建庫(kù)SQL腳本放進(jìn)項(xiàng)目里答辯前手動(dòng)執(zhí)行一遍即可。2.2 依賴選型與參數(shù)設(shè)置一個(gè)能直接抄的pom.xml無(wú)論你選Spring Boot 2.7還是3.x關(guān)鍵依賴就那幾個(gè)spring-boot-starter-web、spring-boot-starter-thymeleaf、mybatis-spring-boot-starter、mysql-connector-j、lombok。Spring Boot 3.x要求JDK 17如果你機(jī)器上裝的是JDK 8那就老老實(shí)實(shí)用2.7.x不然編譯都過(guò)不去這是一個(gè)最常見的啟動(dòng)失敗原因。下面這段pom.xml是我常用的配置基線parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.18/version relativePath/ /parent dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-thymeleaf/artifactId /dependency dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version2.3.1/version /dependency !-- 管理端可以使用JSP但一致性考慮建議全用Thymeleaf -- dependency groupIdmysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency /dependencies版本號(hào)這里有兩個(gè)值得注意的點(diǎn)。第一mybatis-spring-boot-starter不要用太老的版本1.x系列和Spring Boot 2.7有兼容性警告直接上2.3.x就好。第二MySQL驅(qū)動(dòng)在Spring Boot 2.7里一般用mysql-connector-j而不是舊的mysql-connector-java后者在某些組合下會(huì)出現(xiàn)時(shí)區(qū)錯(cuò)誤。spring-boot-starter-parent鎖定了驅(qū)動(dòng)版本你不需要專門指定但如果你習(xí)慣手動(dòng)指定版本請(qǐng)確保它至少是8.0.33否則SSL握手報(bào)錯(cuò)會(huì)把你逼瘋。配置文件的重點(diǎn)在application.yml。spring.datasource.url里必須帶useSSLfalse和serverTimezoneAsia/Shanghai這是兩個(gè)缺一不可的參數(shù)。前者解決本機(jī)MySQL沒(méi)有配置SSL證書時(shí)連接被拒的問(wèn)題后者解決Java時(shí)區(qū)與MySQL會(huì)話時(shí)區(qū)不一致導(dǎo)致的時(shí)間錯(cuò)亂問(wèn)題后面避坑章節(jié)會(huì)再細(xì)講。3. 數(shù)據(jù)庫(kù)設(shè)計(jì)把「書店管理系統(tǒng)」拆成六張表的完整建庫(kù)腳本3.1 表結(jié)構(gòu)與字段設(shè)計(jì)用戶、圖書、購(gòu)物車、訂單網(wǎng)上書店的數(shù)據(jù)模型放在任何課程設(shè)計(jì)里都是標(biāo)準(zhǔn)的「用戶-商品-訂單」三元組但大多數(shù)人把它做成了五張互不關(guān)聯(lián)的孤立表導(dǎo)致下單時(shí)邏輯寫在Servlet里連查四張表事務(wù)還不知道怎么開。正確做法是先按業(yè)務(wù)歸屬劃分模塊用戶模塊只關(guān)心user表圖書模塊只關(guān)心book表而訂單模塊需要同時(shí)依賴order和order_item兩張表購(gòu)物車則單獨(dú)用cart表來(lái)保存臨時(shí)狀態(tài)。用戶和地址之間如果急著交作業(yè)不需要單獨(dú)建地址表直接給user表加一個(gè)address字段即可這樣能省去一對(duì)多關(guān)聯(lián)時(shí)要處理的那一堆麻煩。我給出的建表SQL遵循幾條原則主鍵用自增int不用UUID因?yàn)樵谡n設(shè)規(guī)模下UUID白白增加索引存儲(chǔ)和查詢開銷金額字段用decimal(10,2)絕不用float或double避免浮點(diǎn)誤差時(shí)間字段統(tǒng)一datetime由Java側(cè)通過(guò)LocalDateTime傳入不讓MySQL的CURRENT_TIMESTAMP在批量插入時(shí)產(chǎn)生時(shí)區(qū)歧義狀態(tài)字段用tinyint而不是varchar因?yàn)閮?nèi)存占用更小而且Java枚舉映射更自然。下面這段是建庫(kù)腳本的核心部分CREATE DATABASE IF NOT EXISTS bookstore DEFAULT CHARACTER SET utf8mb4; USE bookstore; CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE COMMENT 登錄名, password VARCHAR(100) NOT NULL COMMENT 加密后密碼, nickname VARCHAR(50) DEFAULT COMMENT 顯示昵稱, address VARCHAR(200) DEFAULT COMMENT 默認(rèn)收貨地址, role TINYINT NOT NULL DEFAULT 0 COMMENT 0-普通用戶 1-管理員, create_time DATETIME NOT NULL COMMENT 注冊(cè)時(shí)間 ) ENGINEInnoDB COMMENT用戶表; CREATE TABLE book ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100) NOT NULL COMMENT 書名, author VARCHAR(50) NOT NULL COMMENT 作者, price DECIMAL(10,2) NOT NULL COMMENT 定價(jià), stock INT NOT NULL DEFAULT 0 COMMENT 庫(kù)存余量, sales INT NOT NULL DEFAULT 0 COMMENT 累計(jì)銷量, publisher VARCHAR(100) DEFAULT COMMENT 出版社, cover_path VARCHAR(200) DEFAULT COMMENT 封面圖存儲(chǔ)路徑, status TINYINT NOT NULL DEFAULT 1 COMMENT 1-上架 0-下架 ) ENGINEInnoDB COMMENT圖書表;user表里的password字段長(zhǎng)度我預(yù)留到100不是因?yàn)槲掖蛩愦婷魑亩菫榱私oBCrypt加密結(jié)果留空間。很多課設(shè)項(xiàng)目用varchar(20)存密碼答辯時(shí)老師要求展示數(shù)據(jù)庫(kù)直接在Navicat里看到一串明文這是非常掉價(jià)的細(xì)節(jié)。book表的sales字段可以在每次下單成功后通過(guò)事務(wù)更新和stock做聯(lián)動(dòng)。status字段用于下架操作而非物理刪除因?yàn)闅v史訂單關(guān)聯(lián)不能斷。3.2 訂單與訂單明細(xì)為什么必須拆兩張表訂單和訂單明細(xì)一定要拆這是整個(gè)設(shè)計(jì)里最容易被問(wèn)倒的地方。如果不拆一個(gè)訂單包含三本書就要在order表里插三行每一行的總金額還都不一樣查「某用戶的歷史訂單列表」時(shí)會(huì)出現(xiàn)無(wú)數(shù)重復(fù)行更重要的是如果要改訂單狀態(tài)得同時(shí)改三行的狀態(tài)一個(gè)字段漏了數(shù)據(jù)就亂套。拆成兩張表后order表用于記錄一次購(gòu)買行為order_item用于記錄這次行為里的每一本書及其快照信息。快照的意思是下單那一刻的單價(jià)、書名、作者要原樣存進(jìn)明細(xì)表不能通過(guò)book_id去關(guān)聯(lián)查詢否則以后書改了價(jià)歷史訂單的金額也跟著變這在業(yè)務(wù)上是嚴(yán)重錯(cuò)誤。CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, order_no VARCHAR(32) NOT NULL UNIQUE COMMENT 業(yè)務(wù)訂單號(hào), user_id INT NOT NULL COMMENT 下單用戶ID, total_amount DECIMAL(10,2) NOT NULL COMMENT 訂單總金額, status TINYINT NOT NULL DEFAULT 0 COMMENT 0-待支付 1-已支付 2-已發(fā)貨 3-已完成 4-已取消, create_time DATETIME NOT NULL COMMENT 下單時(shí)間, pay_time DATETIME DEFAULT NULL COMMENT 支付時(shí)間, KEY idx_user (user_id) ) ENGINEInnoDB COMMENT訂單主表; CREATE TABLE order_item ( id INT AUTO_INCREMENT PRIMARY KEY, order_id INT NOT NULL COMMENT 所屬訂單ID, book_id INT NOT NULL COMMENT 圖書ID, book_title VARCHAR(100) NOT NULL COMMENT 下單時(shí)書名快照, book_price DECIMAL(10,2) NOT NULL COMMENT 下單時(shí)單價(jià)快照, quantity INT NOT NULL COMMENT 購(gòu)買數(shù)量, KEY idx_order (order_id) ) ENGINEInnoDB COMMENT訂單明細(xì)表;注意order我用的是orders作為表名。order是SQL的關(guān)鍵字直接建表會(huì)報(bào)語(yǔ)法錯(cuò)誤除非你全程加反引號(hào)但那樣寫Mapper XML時(shí)很容易漏所以建表時(shí)避開關(guān)鍵字是最省心的選擇。order_no字段設(shè)計(jì)成varchar(32)業(yè)務(wù)上用于展示給用戶看一般由Java側(cè)生成格式類似20250607153012 用戶ID之類的組合比自增ID更適合復(fù)制到客服對(duì)話框里核對(duì)。3.3 購(gòu)物車與種子數(shù)據(jù)讓系統(tǒng)交付時(shí)不用手動(dòng)造數(shù)購(gòu)物車表是典型的弱實(shí)體它只做兩件事記錄用戶往購(gòu)物車?yán)锓帕四男涗浢勘緯帕藥妆尽art表不需要獨(dú)立主鍵業(yè)務(wù)含義用id自增即可(user_id, book_id)加一個(gè)唯一索引防止同一本書被重復(fù)插入兩行。管理員功能不需要單獨(dú)的表user表里的role字段已經(jīng)區(qū)分了身份管理端頁(yè)面靠攔截器控制訪問(wèn)即可。sales表如果你有時(shí)間可以做沒(méi)有也不影響核心功能因?yàn)閎ook.sales已經(jīng)能支撐「熱銷排行」這個(gè)展示位了。種子數(shù)據(jù)非常重要。你不可能把項(xiàng)目交給老師時(shí)說(shuō)「請(qǐng)先手動(dòng)往數(shù)據(jù)庫(kù)里添加20本書才能看到效果」所以建庫(kù)腳本里一定要包含一段INSERT語(yǔ)句INSERT INTO user (username, password, nickname, role, create_time) VALUES (admin, $2a$10$Eyi7lPwHONlFOT5n1x1K3uJzYVpFKTHJQ8A0Y9qH3XxY8yC7fLq, 管理員, 1, NOW()); INSERT INTO book (title, author, price, stock, sales, publisher, status) VALUES (深入理解Java虛擬機(jī), 周志明, 129.00, 50, 320, 機(jī)械工業(yè)出版社, 1), (Java并發(fā)編程實(shí)戰(zhàn), Brian Goetz, 89.00, 30, 215, 人民郵電出版社, 1), (Spring實(shí)戰(zhàn)第6版, Craig Walls, 108.00, 20, 188, 人民郵電出版社, 1);密碼那一串$2a$10$開頭的字符串是BCrypt加密后的123456對(duì)應(yīng)的明文在項(xiàng)目說(shuō)明文檔里要寫清楚。管理員賬號(hào)的role1在Java側(cè)配合攔截器可以實(shí)現(xiàn)訪問(wèn)控制。種子數(shù)據(jù)不求多每張關(guān)聯(lián)表能覆蓋典型查詢即可比如兩本書、一個(gè)用戶、一筆包含兩個(gè)明細(xì)的訂單這樣你去驗(yàn)證列表、詳情、訂單詳情時(shí)都有現(xiàn)成數(shù)據(jù)可查。4. 核心功能實(shí)現(xiàn)從登錄鑒權(quán)到下單扣庫(kù)存的完整鏈路4.1 登錄與權(quán)限控制攔截器和密碼加密的設(shè)計(jì)細(xì)節(jié)登錄鑒權(quán)在課設(shè)里最常見的寫法是用戶提交表單Servlet查詢數(shù)據(jù)庫(kù)比對(duì)用戶名和密碼比對(duì)成功就把用戶名塞進(jìn)Session。這個(gè)寫法能跑但有兩個(gè)問(wèn)題一是密碼明文存儲(chǔ)在數(shù)據(jù)庫(kù)答辯時(shí)被問(wèn)到「如何防止拖庫(kù)」答不上來(lái)二是Session里只存了用戶名每次查詢用戶信息都得再查一次數(shù)據(jù)庫(kù)。我采用的方案是密碼用BCrypt加密登錄成功后將User對(duì)象整體放入Session業(yè)務(wù)需要用戶信息時(shí)直接取管理員接口通過(guò)HandlerInterceptor統(tǒng)一攔截。Service public class UserServiceImpl implements UserService { private final UserMapper userMapper; // BCryptPasswordEncoder 是 Spring Security 提供的工具單獨(dú)引入即可 private final PasswordEncoder passwordEncoder new BCryptPasswordEncoder(); public User login(String username, String rawPassword) { User user userMapper.findByUsername(username); if (user ! null passwordEncoder.matches(rawPassword, user.getPassword())) { return user; } return null; } }上面這段代碼的邏輯說(shuō)明matches方法負(fù)責(zé)把用戶輸入的明文密碼進(jìn)行同樣的鹽值運(yùn)算然后和數(shù)據(jù)庫(kù)里的哈希結(jié)果比對(duì)全程不需要你手動(dòng)處理鹽。調(diào)用方拿到User對(duì)象后放入Session后續(xù)請(qǐng)求從Session取值即可。要注意的是BCryptPasswordEncoder來(lái)自spring-security-crypto這個(gè)依賴你不想引入全套Spring Security的話單獨(dú)引這個(gè)包就行pom.xml中加依賴即可。攔截器的寫法不展開代碼了核心就一個(gè)preHandle方法判斷當(dāng)前請(qǐng)求的URI是否以/admin開頭如果是則從Session里取user取不到就重定向到登錄頁(yè)取到但role ! 1就返回403提示頁(yè)。這個(gè)邏輯必須在WebMvcConfigurer里注冊(cè)并且要放行登錄接口、靜態(tài)資源、以及圖書列表和詳情這些匿名可訪問(wèn)的頁(yè)面。4.2 圖書檢索與分頁(yè)一套能扛住答辯追問(wèn)的Mapper寫法圖書檢索頁(yè)面是系統(tǒng)里訪客流量最大的地方搜索條件包括書名模糊匹配、作者匹配、價(jià)格區(qū)間、分類如果有還得支持分頁(yè)。很多課設(shè)項(xiàng)目在Service里先select * from book把所有數(shù)據(jù)查出來(lái)然后在內(nèi)存里做過(guò)濾和分頁(yè)這個(gè)做法數(shù)據(jù)量小的時(shí)候看不出問(wèn)題但答辯老師一句「如果有一萬(wàn)本書呢」就會(huì)讓你很難受。正確的做法是在SQL層面完成過(guò)濾和分頁(yè)數(shù)據(jù)庫(kù)只返回當(dāng)前頁(yè)需要的數(shù)據(jù)。select idsearchBooks resultTypecom.example.bookstore.entity.Book SELECT * FROM book where if testkeyword ! null and keyword ! (title LIKE CONCAT(%, #{keyword}, %) OR author LIKE CONCAT(%, #{keyword}, %)) /if if testminPrice ! null AND price gt; #{minPrice} /if if testmaxPrice ! null AND price lt; #{maxPrice} /if AND status 1 /where ORDER BY id DESC LIMIT #{offset}, #{pageSize} /select這里有幾個(gè)細(xì)節(jié)值得跟評(píng)委講清楚。where標(biāo)簽會(huì)自動(dòng)去掉第一個(gè)多余的AND這是MyBatis的動(dòng)態(tài)SQL特性你不需要在XML里手動(dòng)拼接where 11。LIKE模糊查詢必須用CONCAT(%, #{keyword}, %)如果用%${keyword}%用戶輸入一個(gè)%就會(huì)查出全表這是經(jīng)典的SQL注入點(diǎn)。OFFSET的計(jì)算放在Service層完成入?yún)⑹莗ageNum和pageSize在Service里算出offset (pageNum - 1) * pageSize傳入Mapper。LIMIT后面只能用#{}參數(shù)不能直接寫死一個(gè)變量名因?yàn)樗鼤?huì)被當(dāng)作預(yù)編譯參數(shù)處理。4.3 下單與扣庫(kù)存為什么必須用事務(wù)保住數(shù)據(jù)一致性用戶點(diǎn)「提交訂單」按鈕后后端做的事比你表面上看到的多得多先生成訂單號(hào)和訂單主記錄再遍歷購(gòu)物車?yán)锏拿恳豁?xiàng)往order_item插明細(xì)然后更新對(duì)應(yīng)圖書的stock和sales最后清空購(gòu)物車。這四步里任何一步失敗都不能允許前面已經(jīng)執(zhí)行的部分保留下來(lái)。比如插入了訂單主記錄但扣庫(kù)存失敗下次用戶查詢訂單時(shí)就會(huì)看到一筆幽靈訂單。課程設(shè)計(jì)階段不要求你實(shí)現(xiàn)分布式事務(wù)但本地事務(wù)必須用對(duì)也就是在Service方法上加Transactional并把事務(wù)控制放在Service層而不是Controller層。Spring Boot默認(rèn)的事務(wù)管理機(jī)制是遇到RuntimeException或Error時(shí)自動(dòng)回滾遇到受檢異常默認(rèn)不回滾。所以你在業(yè)務(wù)代碼里要養(yǎng)成一個(gè)習(xí)慣數(shù)據(jù)校驗(yàn)失敗時(shí)直接拋出RuntimeException的子類而不是返回false或null讓調(diào)用方判斷。.NET或PHP背景的老師可能會(huì)問(wèn)事務(wù)隔離級(jí)別你可以說(shuō)默認(rèn)用REPEATABLE_READInnoDB的行鎖能保證兩筆并發(fā)下單不會(huì)互相覆蓋庫(kù)存。下面這段代碼展示了下單Service層的核心結(jié)構(gòu)Transactional(rollbackFor Exception.class) public Long createOrder(Long userId, MapLong, Integer cartMap) { // 1. 生成訂單號(hào)時(shí)間戳 隨機(jī)數(shù)避免并發(fā)重復(fù) String orderNo BO System.currentTimeMillis() String.format(%03d, ThreadLocalRandom.current().nextInt(1000)); BigDecimal total BigDecimal.ZERO; for (Map.EntryLong, Integer entry : cartMap.entrySet()) { Book book bookMapper.selectById(entry.getKey()); BigDecimal itemTotal book.getPrice().multiply(BigDecimal.valueOf(entry.getValue())); total total.add(itemTotal); } Orders order new Orders(); order.setOrderNo(orderNo); order.setUserId(userId); order.setTotalAmount(total); order.setStatus(0); // 待支付 order.setCreateTime(LocalDateTime.now()); orderMapper.insert(order); // 2. 插入訂單明細(xì)并扣減庫(kù)存 for (Map.EntryLong, Integer entry : cartMap.entrySet()) { OrderItem item new OrderItem(); item.setOrderId(order.getId()); item.setBookId(entry.getKey()); Book book bookMapper.selectById(entry.getKey()); item.setBookTitle(book.getTitle()); item.setBookPrice(book.getPrice()); item.setQuantity(entry.getValue()); orderItemMapper.insert(item); int updated bookMapper.deductStock(entry.getKey(), entry.getValue()); if (updated 0) { throw new RuntimeException(庫(kù)存不足: book.getTitle()); } } cartMapper.deleteByUserId(userId); return order.getId(); }rollbackFor Exception.class這個(gè)參數(shù)是必須寫的不寫的話默認(rèn)策略只對(duì)RuntimeException生效。數(shù)據(jù)庫(kù)層做一個(gè)deductStock的SQLUPDATE book SET stock stock - #{quantity} WHERE id #{id} AND stock #{quantity}然后判斷影響行數(shù)是否為0為0說(shuō)明庫(kù)存不足直接拋異常觸發(fā)整體回滾。這種寫法天然解決并發(fā)超賣問(wèn)題兩筆請(qǐng)求同時(shí)進(jìn)來(lái)InnoDB行鎖會(huì)串行化這一行第二個(gè)事務(wù)執(zhí)行時(shí)已經(jīng)扣過(guò)一次庫(kù)存條件不滿足就不會(huì)誤扣。這個(gè)方案雖然簡(jiǎn)單卻足以在答辯現(xiàn)場(chǎng)講清楚「樂(lè)觀鎖思路」。4.4 管理端功能圖書上下架與訂單狀態(tài)流轉(zhuǎn)書店管理系統(tǒng)給管理員提供四塊功能圖書列表包含搜索和狀態(tài)篩選、新增/編輯圖書、處理訂單發(fā)貨、完成、取消、查看銷售概況。這里最容易被做成「只寫了增刪改查」而失去管理意義。你要清楚每一項(xiàng)操作背后的業(yè)務(wù)規(guī)則圖書下架不能物理刪除只能把status置為0否則歷史訂單關(guān)聯(lián)查詢時(shí)會(huì)查不到書名訂單狀態(tài)必須是單向流轉(zhuǎn)待支付 - 已支付 - 已發(fā)貨 - 已完成是正向待支付 - 已取消是分支不允許把已發(fā)貨的訂單改回待支付單價(jià)和庫(kù)存可以由管理員編輯但sales字段必須由系統(tǒng)自動(dòng)累加不能手工修改。5. 避坑排查課程設(shè)計(jì)階段最容易翻車的五個(gè)真實(shí)場(chǎng)景5.1 MySQL連接報(bào)錯(cuò)Public Key Retrieval is not allowed報(bào)名時(shí)數(shù)據(jù)庫(kù)連接一直報(bào)這個(gè)錯(cuò)application.yml里用戶名密碼都沒(méi)問(wèn)題Navicat能連但Java連不上而且報(bào)錯(cuò)信息不完整一會(huì)兒說(shuō)SSL握手失敗一會(huì)兒說(shuō)公鑰檢索不允許。這個(gè)問(wèn)題的根源在于MySQL 8.0默認(rèn)使用caching_sha2_password認(rèn)證插件而JDBC驅(qū)動(dòng)在沒(méi)有拿到服務(wù)器公鑰時(shí)不允許發(fā)送加密密碼。解決方法是給MySQL連接URL加上兩個(gè)參數(shù)allowPublicKeyRetrievaltrueuseSSLfalse兩個(gè)缺一不可。前者允許客戶端從服務(wù)器請(qǐng)求公鑰后者避免在本地開發(fā)環(huán)境下走SSL加密通道。這樣改完之后再啟動(dòng)連接就正常了。5.2 時(shí)間字段差8小時(shí)DATETIME和時(shí)區(qū)設(shè)置頁(yè)面顯示的下單時(shí)間和數(shù)據(jù)庫(kù)里查出來(lái)的時(shí)間差了整整8小時(shí)你可能會(huì)懷疑代碼里L(fēng)ocalDateTime.now()有問(wèn)題實(shí)際上代碼沒(méi)問(wèn)題。根本原因是JDBC連接串里沒(méi)有指定時(shí)區(qū)Java側(cè)的LocalDateTime不帶時(shí)區(qū)信息而MySQL的serverTimezone默認(rèn)取系統(tǒng)時(shí)區(qū)如果本機(jī)是UTC寫入時(shí)就會(huì)按UTC轉(zhuǎn)碼。解決方法是把serverTimezoneAsia/Shanghai加進(jìn)JDBC URL同時(shí)檢查MySQL服務(wù)器的time_zone變量是否也設(shè)成了08:00。順便提一個(gè)進(jìn)階點(diǎn)建表時(shí)時(shí)間字段用DATETIME而不用TIMESTAMP因?yàn)門IMESTAMP有2038年問(wèn)題雖然在課設(shè)場(chǎng)景里不會(huì)遇到但這個(gè)問(wèn)題本身可以作為答辯加分項(xiàng)講出來(lái)證明你關(guān)注過(guò)真實(shí)生產(chǎn)環(huán)境。5.3 前端提交表單中文亂碼過(guò)濾器配置位置不對(duì)Spring Boot項(xiàng)目里表單提交中文亂碼最典型的場(chǎng)景是搜索框輸入「深入理解」查不出任何結(jié)果。如果用的是POST提交Spring Boot的CharacterEncodingFilter理論上會(huì)自動(dòng)處理UTF-8編碼但失效的常見原因是你在Controller里手動(dòng)讀取了getParameter()之前沒(méi)有設(shè)置request.setCharacterEncoding(UTF-8)導(dǎo)致容器已經(jīng)按ISO-8859-1解碼了。更隱蔽的情況是你寫了自定義的Filter并且執(zhí)行順序在CharacterEncodingFilter之前那你的過(guò)濾器如果沒(méi)有強(qiáng)制設(shè)置編碼后續(xù)的編碼過(guò)濾器也不會(huì)生效因?yàn)檎?qǐng)求參數(shù)已經(jīng)在你的過(guò)濾器里被讀取過(guò)了。解決思路是不要自定義全局FilterSpring Boot自帶的就夠了如果你真的需要設(shè)置spring.characterEncoding.forcetrue讓編碼過(guò)濾器優(yōu)先執(zhí)行并覆蓋請(qǐng)求和響應(yīng)編碼。5.4org.thymeleaf.exceptions.TemplateInputException模板路徑拼寫問(wèn)題Thymeleaf頁(yè)面渲染時(shí)報(bào)模板找不到提示TemplateInputException而且錯(cuò)誤信息里給出的路徑和你templates目錄下的文件看起來(lái)一模一樣。這個(gè)問(wèn)題的常見原因是Controller返回的視圖名帶上了.html后綴比如return admin/book-list.html而Thymeleaf默認(rèn)的視圖解析器會(huì)拼接前綴classpath:/templates/和后綴.html結(jié)果變成了classpath:/templates/admin/book-list.html.html自然找不到。解決方法是去掉后綴只返回邏輯視圖名admin/book-list。另外要檢查pom.xml里是否引入了spring-boot-starter-thymeleaf如果只引入了spring-boot-starter-web模板引擎根本沒(méi)注冊(cè)返回字符串會(huì)被當(dāng)作普通文本寫到響應(yīng)體里頁(yè)面內(nèi)容看起來(lái)就是一行結(jié)構(gòu)化的字符串。5.5 并發(fā)下單導(dǎo)致的超賣stock #{quantity}條件策略要寫對(duì)在測(cè)試階段你可能用Postman同時(shí)發(fā)兩個(gè)請(qǐng)求下單同一本書最后發(fā)現(xiàn)庫(kù)存被扣成了負(fù)數(shù)。原因是你的扣庫(kù)存SQL寫成了先查在內(nèi)存判斷再執(zhí)行更新。就算在Service層開了事務(wù)兩個(gè)請(qǐng)求同時(shí)讀到庫(kù)存還剩1本各自判斷通過(guò)然后都去更新結(jié)果是兩次更新都成功庫(kù)存變?yōu)榱素?fù)值。正確做法是把判斷條件寫進(jìn)UPDATE語(yǔ)句里即WHERE stock #{quantity}這一條數(shù)據(jù)庫(kù)行鎖會(huì)讓第二個(gè)更新事務(wù)等待第一個(gè)事務(wù)提交后再執(zhí)行此時(shí)庫(kù)存已扣減條件不滿足影響行數(shù)直接為0在MyBatis里映射的結(jié)果就是updated 0再結(jié)合Transactional的回滾機(jī)制整個(gè)訂單創(chuàng)建失敗。這段代碼就是第4章末尾展示的那個(gè)deductStock方法如果你的項(xiàng)目里沒(méi)寫這個(gè)條件趁現(xiàn)在趕緊補(bǔ)上。6. 項(xiàng)目說(shuō)明文檔怎么寫從「源碼壓縮包」到「能答辯的作品」6.1 項(xiàng)目說(shuō)明文檔的目錄結(jié)構(gòu)與每部分必須有的內(nèi)容很多同學(xué)在最后一天才開始寫文檔寫出來(lái)的東西老板看了想退款老師看了想打回。項(xiàng)目說(shuō)明文檔的核心目的不是記錄代碼而是證明你理解了這個(gè)系統(tǒng)的每一個(gè)設(shè)計(jì)決策。一個(gè)推薦的文檔目錄是項(xiàng)目背景與需求分析、技術(shù)架構(gòu)圖與選型理由、數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明含E-R圖和關(guān)鍵表注釋、核心功能實(shí)現(xiàn)說(shuō)明登錄鑒權(quán)、下單事務(wù)、庫(kù)存扣減、測(cè)試方案與測(cè)試用例、部署步驟與運(yùn)行環(huán)境。這個(gè)結(jié)構(gòu)里最容易被忽略的是「測(cè)試方案」但答辯現(xiàn)場(chǎng)老師最愛(ài)問(wèn)的就是「你怎么驗(yàn)證你的系統(tǒng)是對(duì)的」如果你能現(xiàn)場(chǎng)跑一遍測(cè)試用例把輸入、預(yù)期結(jié)果、實(shí)際結(jié)果列成表格分?jǐn)?shù)會(huì)拉開一截。部署步驟這一節(jié)不要只寫「用IDEA打開項(xiàng)目配置數(shù)據(jù)庫(kù)運(yùn)行」要寫清楚JDK版本、Maven版本、MySQL版本、數(shù)據(jù)庫(kù)初始化的命令行或SQL腳本路徑、配置文件里的哪些參數(shù)需要改。例如環(huán)境項(xiàng)要求說(shuō)明JDK1.8或17根據(jù)Spring Boot版本選擇Maven3.6用IDEA自帶Maven也可MySQL5.7或8.0執(zhí)行bookstore.sql初始化端口8080避免和本機(jī)其他服務(wù)沖突6.2 答辯前的驗(yàn)證腳本一條命令測(cè)一個(gè)業(yè)務(wù)閉環(huán)答辯最常見的尷尬是現(xiàn)場(chǎng)演示時(shí)數(shù)據(jù)對(duì)不上或者功能點(diǎn)忘詞了。我習(xí)慣的做法是準(zhǔn)備一個(gè)「業(yè)務(wù)驗(yàn)證順序清單」每一步做什么、預(yù)期看到什么提前在本地跑通兩遍。推薦的順序是管理員登錄進(jìn)入圖書管理新增一本測(cè)試書設(shè)置價(jià)格為19.9、庫(kù)存為5退出管理員注冊(cè)一個(gè)新用戶搜索這本測(cè)試書加入購(gòu)物車數(shù)量改2提交訂單確認(rèn)訂單狀態(tài)為待支付回到管理員后臺(tái)看到訂單金額為39.8、庫(kù)存變?yōu)?點(diǎn)擊發(fā)貨回到用戶端確認(rèn)訂單狀態(tài)變?yōu)橐寻l(fā)貨。這一個(gè)閉環(huán)把你系統(tǒng)的用戶端、管理端、訂單、庫(kù)存全部覆蓋了而且每一步都能對(duì)應(yīng)到數(shù)據(jù)庫(kù)里的數(shù)據(jù)變化。還有一個(gè)容易被忽略的準(zhǔn)備工作把你的項(xiàng)目打成可執(zhí)行jar包在命令行用java -jar跑一遍確認(rèn)靜態(tài)資源和模板引擎都正常加載。很多項(xiàng)目在IDEA里跑得好好的一打包就找不到頁(yè)面原因是模板文件或者M(jìn)apper XML沒(méi)有正確打包進(jìn)jar。檢查target/classes目錄下有沒(méi)有mapper目錄和templates目錄如果沒(méi)有就是pom.xml的resources配置把XML文件排除掉了需要在build里顯式聲明包含。這個(gè)檢查只需要一分鐘但能避免答辯當(dāng)天「現(xiàn)場(chǎng)換了臺(tái)電腦打不開項(xiàng)目」的悲劇。6.3 一個(gè)加分技巧用Logback記錄關(guān)鍵操作日志如果你的項(xiàng)目說(shuō)明文檔里寫了「系統(tǒng)安全性」但是代碼里連一行日志都沒(méi)有老師追問(wèn)時(shí)你很難自圓其說(shuō)。我建議在登錄、下單、支付、發(fā)貨這幾個(gè)核心操作上加上日志輸出使用SLF4J的Logger即可不需要引入額外組件。日志的作用有兩個(gè)一是你自己排查問(wèn)題時(shí)能看清請(qǐng)求參數(shù)和處理結(jié)果二是答辯時(shí)可以現(xiàn)場(chǎng)打開logs/bookstore.log向老師展示「我可以通過(guò)日志追蹤一筆訂單從創(chuàng)建到發(fā)貨的全過(guò)程」。這個(gè)技巧花10分鐘就能做完但呈現(xiàn)出來(lái)的工程素養(yǎng)和一個(gè)「只寫了CRUD的課設(shè)」完全不是一個(gè)段位。private static final Logger log LoggerFactory.getLogger(OrderServiceImpl.class); log.info(用戶[{}]創(chuàng)建訂單訂單號(hào)[{}]總金額[{}]包含{}項(xiàng)明細(xì), userId, orderNo, total, cartMap.size());注意日志里不要打用戶密碼、完整收貨地址這類敏感信息打印訂單號(hào)和金額是沒(méi)有問(wèn)題的。日志文件的大小和保留策略不用刻意配置Spring Boot默認(rèn)的logback-spring.xml配置足夠應(yīng)付課設(shè)場(chǎng)景了。我自己的習(xí)慣是每寫完一個(gè)模塊先跑一遍完整業(yè)務(wù)流打開日志文件確認(rèn)關(guān)鍵步驟都有輸出再寫下一塊這樣最后寫項(xiàng)目說(shuō)明文檔時(shí)測(cè)試記錄是現(xiàn)成的不是臨時(shí)編的。希望這份實(shí)戰(zhàn)拆解能讓你做完的不只是一個(gè)能運(yùn)行的課設(shè)而是一個(gè)能講清楚設(shè)計(jì)決策、能扛住現(xiàn)場(chǎng)提問(wèn)、哪怕以后寫進(jìn)簡(jiǎn)歷也不心虛的作品。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
尻女朋友一夜| 欧亚在线视频| 青青草视频久久久久| 在线αⅴ| 男人天堂导航| 97久久国产精品| 六十路日本| 亚洲影院365| 欧美在线视频播放| 天天日夜夜| 大香蕉视频一二三区| www被窝色com| 最新精品久久蜜桃| 暖暖精品二区三区观看| 国产精品久久久久久久无码AV| 亚洲图片偷拍欧美| 极品色电影院| 色九九九综合| 久妇网| 又粗又长又爽在线观看| 一级性爱视频免费在线| 日本视频在线中文字幕| 蜜桃久久一区| 欧美淫乱视频| 麻豆黄站| 精品综合久久久久久97| 中文熟女五十乱码在线| 9久久美女首页| 亚州情色j区| 欧美日韩精品一区二区三区高清| 东京热一区二区中文字幕| 偷拍五区| 97视频620| 久久久久久久久久久六六| 色综合色色| 爆乳免费黄网站| 国产精品99久久久www| 精品一区96| 亚洲欧美日韩国产丝袜自拍中文| 男人的天堂.com| 亚洲一区二区中文字幕| 亚洲精品国产专区在线观看| 翔田千里Av在线| 亚洲色图图片| 九九九九国产| 伊人黄色片| 91肉片| 搡老女人911熟妇老熟女| 国内一级精品| 大象AV在线| 九九久久久| 黑人干亚洲| 国产乱人妻精品入口| 日韩伦理视频| 美国久久一二三四| 亚洲文学偷乱拍啪啪啪啪| 好屌色综合| 抽查国产福利主播| 国产噜噜噜噜噜久久久久久久久| 中文字幕人乱码中文字的预防方法 | 日本羞羞的视频在线播放| 国产精品在线免费| 久久久91| 中文一区二区三区影院| 亚洲乱码精品一区二区| 中文字幕在线观看永久| 波多野结衣先锋影音| 免费试看60秒| 女人喷水视频在线观看| 一区二区偷拍拍视频| 国内外色色色色色成人视频| 亚洲男人的天堂AV| 女上位精品在线| 少妇九九九九| 日日爱99| 黄色电影在线播放综合网站| 人妻少妇色综合| 国产原创精品| 制服丝袜第二页| 噜噜噜噜天天狠狠| 天堂v无码免费视频| 性久久| 日韩少妇一区二区三区| 综合欧美日韩在线| 日本不卡一区二区| 国产熟女乱论| 亚洲日产专区婷婷| 91露脸熟女专区| 91社操逼| 97精品国产97久久久| 91在线页| 加勒比无码毛片| 久久久久久久性爱| 99爱精品| 东京热不卡视频| 网友自拍第1页| 美国一区二区三区视频| 啊…啊…操我用力操我| 中文字幕av片| 色色福利| 日本不卡二三区| 九九热精品视频六| 久久久久久精品免费看A级| 操九九九九九九| 97在线资源| 亚洲国产熟妇综合色专区| 色婷婷六月丁香七月婷婷| 美女自卫慰黄网站免费| 久久久999国产精品| 思思热一热婷婷热一热| 国产大片精久久久久久| 熟妇人妻精品一区二区| 欧美自拍偷拍免费观看| 91高跟美女在线播放| 97ai亚洲| 欧洲熟妇xxXx欧美老妇裸体 | 色噜噜狠狠色综无码久久合欧美| 亚洲砖码砖专无区2023| 久久同城AV| 变态综合色| 岛国成人av在线播放网址| 久久香蕉超碰97国产精品 | 精品一区二区成人动漫| 五月丁香影院| 久久久久国色αv免费观看| 神马久久久久久伦理片| 少妇一区二区三区在线观看| 日韩欧美性吧婷婷乱伦大香蕉| 久热9| 亚洲性少妇| 久操凹凸视频| 综合色拍| 国产精品久久久久综合| 亚洲资源吧| 免费黄色片子| 九久精品| 国产白领连续中出在线播放| 特级毛片特黄久久免费看| 97超碰久久色| AV污污污污| 传媒免费一区二区三区| 中文字幕奈奈美被公侵犯| 亚洲不卡AV在线| 精品999一区二区| 国产原创自拍| 欧美国产精品久久九九| 欧美乱色| 一级AV性爱| 久久香蕉超碰97国产精品 | 嗯嗯啊啊的视频| 欧美操逼熟女| 色97欧美| 欧美极品女人的天堂| 日本精品五区| 老女人91| 黄色片,com| 9久9久9久9久视频网站| 99久久com免费视频′| 亚洲国产97| 欧洲射精91| 日韩性爱毛片操骚逼| 91女优在线观看| 色婷婷激一区二区三区 | 美女黄码视频午夜| 亚洲日本韩国在线| av无码av无码专区| 国产成人超碰在线| 天天在线91| 操狠狠| 亚洲精品一区二区精品| 日本精品一区二区三| 人人乐大香蕉| 丰满高潮18xxxx| 五月天九九日国产精品一区二区三区| 亚洲一区深夜| 国产一级不卡在线观看| 一区二区高清视频| 91综合站| 久久精品高清无码一区| 超碰在线974| 色婷婷亚洲婷婷| 久久婷婷电影网| 九九九九免费视频| 亚州操操穴网| 啪啪啪综合网| 国产精品999zyz| 嗯嗯啊啊啊好爽| 欧美另类自拍 | 国产操逼视频在线观看| 国产精品一区二区三区在线| 国产天美传媒精品| 欧美视频激情久久久久久| 国产日韩欧美三级片| 亚洲巨爆乳一区二区三区四季网| 久久久久久中文| 色婷婷成人综合| www久久99| 日本Xx性爱| 51国产午夜精品视频| 丝袜高跟澳门91视频| 欧美综合骚| 综合色色婷婷| 中国女人内射6XXXXX| 天天操天天舔| 久久9久久| 在线电影亚洲色图| 道久久五香丁月婷婷激情综合| 亚洲 中文 女同| 国产 三级自拍| 色屁屁影院www国产| 又粗又长又大国产不卡| BBBBB97COM| 9久9久9久9久视频网站| 人妻社区男人天堂| 老熟女中文字幕高清| 日少妇亚洲版| 麻豆AV一区二区| 69人妻精品一区二区绯色| 日韩激情啪啪| 九九激情网| 免费看欧美美女黄色大片| 26uuu国产日韩综合在线观看| 亚洲欧美另类图片| 亚洲日韩人妻中文字幕一区| 精品九九九九| 婷婷操视频| 1769一区| 在线免费观看日韩一区| 亚洲欧美中文一区二区三| 一区二区三区国产在线播放 | 中文在线视频| 天天欧美97| 国产免费久久精品99re韩国| 中文字幕久久精视频久久大全| 情色五月天久久久| 欧洲小说色图视频另类| 9长久久精品| 久久久久96| 欧日韩一二三f区| AV天黑人| 性感美女91影视| 亚洲欧美洲综合| 91天天综合日韩欧美| 熟妇人妻丰满久久久久久久无码| 东京热毛片177b2viP| 97超碰久久| 日韩性爱一级片| 国产精品亚洲一级av第二区| 久久精视频美日韩在线视频| 亚洲欧美精品一区天堂久久 | 天天操天天7| 亚洲。天堂。日本在线观看| 九九热九九| 久操91视频| 日本黄色大片一级视频免费麻豆| 日韩一级片在线看| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 九九热精品| 欧美综合网| 亚洲一区二区三区不卡国产欧美| 国产精品久久久久综合| 怡红院视频在线| 天天舔天天日天天射| 国产又大又粗又长视频| 亚洲色阁| 99自拍视频在线| 爱欲AV| 理论久久婷婷网8| ,成人免费啪啪视频| 激情综合久久| 嗯~啊~快点 死我视频免费看网站| 9美女超碰在线免费观看| 日本αv| 久久久18| 久湿久久 | 久久久四区| 三级特黄60分钟播放| 激情五月天色播| 久久爱超碰网| 中文字幕在线免费观看2| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 800zy一区二区| 91操人| 97超碰色| 啪啪综合网| 夜夜嗨老熟女AV一区二区三区| 国产一区二区三区高清视频| 天堂九九九九九九九九九| 色悠久久久av| 国产精品无码av嫩草| 9/A片 | 欧美|91色综合| 国产超碰欧美| A片三级无码| 亚州男人的天堂| 五月天婷婷在线看 | 亚洲日韩电影| renqi久久久久久久久久久久| 白嫩妹子国产骚| 99久国产精品午夜性色福利| 欧美在线l亚洲| 影音先锋日本乱伦| 久久中文字幕女同性恋一区| 自拍视频一区在线观看| 久久久噜噜噜久久久| 国产精品人妻无码久久久老鸭窝| 欧美性猛交美女自慰91| 一二三区精品视频| 任我爽视频在线观看| 日韩av无码网站| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 岛国A V在线免费看| 玖玖97综合| 男人天堂电影院| 蜜桃视频精品一区二区| 91熟女视频| 91人人看| 中文字幕一区二区日韩网| 蜜桃视频一区二区三区在线观看| 麻豆国产97在线| 亚洲情色1区| 欧美极品美女aaaaaa级黄片| 日韩精品一区二区三区四虎影视| 亚洲欧美色图| 啊操爽品善一区二区三区| 午夜国产成人精品视频| 少妇三P| 少妇一区二区三区高速| 黄站在线免费观看| 激情自拍 校园春色| 欧美超碰97| 嗯……啊…嗯嗯…啊…好舒服| 色在线综合| 国产第二页| 黄片直播三级黄片两女一男| 国产精品久久久| 九九十八精品| 91动漫操逼视频| 中文字幕国产| 美女诱惑在线一区| 国产女人成人精品视频| 中文字幕乱妇免费视频| 91精品综合久久久久久五月丁香| 亚洲综合97| 日韩电影天堂视频一区二区| 尹人大香蕉视频在线| 操b在线观看| 久久9精品网站| 人妻在线臀日韩| 国产在线精品电影观看| 欧美亚洲综合色| 国产午夜在线观看视频| 国产欧美日产一区二区三区 - 国产欧美日| 国产成人网址| 国产东北女人在线视频| 天天做天天爱| 丝袜美腿操av| 亚洲限制级| 97人人超| 俺去俺来也在线www| 偷拍综合网| 亚洲精品人伦一区二区| 人妻天天爽夜夜爽精品2| 婷婷中文网| 无码高清操逼网址| 污电影在线观看| 91色黑人少妇| 九九久久九九久久| 日韩另类| 中文字幕交换人妻| 黑人免费福利视频| suv精产一二三区| 久久99草| 和协无码影院| 亚洲高潮少妇| 激情六月婷婷| 五月婷久久| 免费伦费视频在线观看| 国产隔壁老王影院在线| 91看黄片| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 内射卯月麻衣| 成人热久久精品| 老女人爆菊| 2018色综合天天操| 国产一区二区三区影片| 日本一区视频在线观看| 久久久久久电影| 青娱乐淫乱1314| 日韩精品-原创伙伴| 色99久草| 青青草色AV| 国产精品大屁股999| 婷婷另类小说| 久久综合av| 男人 天堂 日 亚洲| 亚洲三级网址久久最新| 四虎AV无码| 五月开心网| 加勒比大香蕉视频在线| www.色婷婷| 国产激情综合五月久久| 五月激情小说| 操一区| 立川理惠无码一区二区| 乱色视频中文字幕| 国产欧美精品日韩区二区麻豆天美| 欧美黄片视频在线观看免费 | 人妻-91porn| 欧美日韩在线国产在线| 少妇滛荡视频| 欧美日韩情色一区二区| 丰满少妇一区二区三区四区观看| 自拍丝袜美腿人妻| 欧美日韩天堂| 国内毛片四区| 亚洲蜜臀精品视频久久| 极品另类| 老熟妇一区二区三区…| 国产精品久久伊人| 五月婷婷久久综合| 秋霞欧美性爰视频| 国产亚洲色婷婷久久99精品91| 大香蕉九九| 人人爽天天爽| 高清不卡国产| 丝袜天堂| 香蕉色网| 国产美女在线精品免费看| 亚洲国产一区二区日韩专区| 久久激情网| 蜜臀精品1区2区| 99精品伊人| 肉丝中文无码高清| A级在线视频| 成年人黄色小视频网站| 99日精品欧美国产| 操操操操网黑人| 精品美女少妇一区二区| 日日操免费视频| 亚洲综合在线视频| 欧洲与亚洲欧美精品中文字幕| 青青草五月份天| 一区二区三区美女超清| 国产精品三级视频网站| 精品十三区| 啊啊啊啊好疼| 插穴性爱视频在线观看| 一区麻豆 高清中文字幕| 九九人妻| 久久久久久久九九九九九九| 狠狠操狠狠| laoshunv91| 久久精品区| 一级@啪啪视频| 亚洲av夫妻操穴网| 国产三级中文字幕粉嫩| 99re国产精品视频| 亚洲91亚洲| 亚洲欧美在线丝袜| 午夜精品探花| 素人无码中文字幕| 天堂69亚洲精品中文字| 理论久久婷婷网 8| 麻豆精品.欧美精品.日韩精品.| 亚洲免费成人在线高清无码视频| www.狠狠干.coom| 欧美后入式| 国产成人一级av88| 最新精品久久蜜桃 | 禁止观看美女黄| 91制服丝袜| 久久精品国产72国产精品福利 | 人妻丰满熟妇av无码区蜜桃| 手机看av网站在线看| 97精品国产手机| 麻豆国产精品午夜视频| 宗合情欲网| 国产精品久久泡妞网站| 亚洲成人福利电影免费| 激情四射五月天| 在线色导航| laoshunv91| 女性喷水高潮在线观看| 99999无码| 伊人影院日本| 丝袜六区| 啊啊啊爽爽| 上床啊啊啊| 秋霞视频一区二区 | 91嫩草欧美| 中文字幕美女91| 亚洲国产综合久久久性感熟妇| 欧美加勒比| 99热色这里只有精品| 久久人妻| 蜜臀99999| 国产一区二区a毛片| 国产精品久久久久久夜夜夜夜| 约操熟妇| 九九热精品视频六| 91啪9色| 亚洲av综合伊人久久| 2019AV天堂| 3P乱轮视频| 日日97| 男人的天堂亚洲| 大屁股人妻女教师撅着屁股| 青娱乐手机日韩在线视频| 91成人久久| 黑人精品欧美一区二区蜜桃| 男人夜色天堂ss| 黄色AV免费| 福利大香蕉| 五月丁香激情综合网| 欧美影院一区二区三区| 91欧美丨精品丨入口| 亚洲天堂五月天国产| 青青国产精品在线| 色黄色美女大长腿午夜视频| 久久风骚城市人| 97视频在线观看播放与子乱对白在线……| 看免费一级在线播放毛片| 亚洲综合一| 六月丁香五月婷婷| 在线观看无码三级少妇| 中文 人妻 制服| 极品粉嫩少妇视频| 免費黃色視頻觀看一| 国产 日韩 欧美一区| 丝袜狂射91| 禁止观看美女黄| 强奸乱伦日韩AV| 国产精品美女视频诱惑| 91中文字幕在线观看| 厕所偷拍在线| 丰满高潮18xxxx| 久久精品国产Aⅴ| 久久9999 | 插插综合网天天影视网| 大香蕉在线视频重口味毛片在线| 97天堂| 国产高清无码一区三区二区| 亚洲色人| 少妇500双飞99| 国产亚洲禁久一区二区| A级毛片在线看免费| 五月婷在线| 国内毛片婷婷六月色| 99热| 麻豆亚洲AV成人无码久久精品| 欧洲精品网| 精品91摸| 亚洲情色电影网| 婷婷亚洲色| 中文字幕精品免费一区二区| 午夜在线播放| 日韩欧美三级| 欧美色97| 日日骚一区二区三区| 人妻天天爽| 福利天堂| 是还免费视频1727我| 中文字幕88av在线| 91艹逼精品| 精爱久久| 97色97好| 亚洲第一二区另类图| av婷婷色网| 18一区二区三区| 日本一区三级韩国| 亚洲综合春色| 99国产精品人妻人伦| 天天插天天插| 性色一线| 国产精品午夜成人福利| 91碰碰| 白丝AV网站| 久久毛卡| 中国国国产一级特黄毛片| 日韩Va亚洲va欧美Ⅴa久久| 日韩中文字幕国产| 亚洲欧美色图| 福利视频网站| 思思热在线视频在线| 精品免费视频国产一区| 国产丝袜美女在线一区| 超碰人人操97碰| 国产精品视频麻豆入口| 亚欧视频在线| 五月丁香社区婷婷日韩欧美精品影院 | www黄片免费看com| 91精品国产麻豆国产自产在| 丁香婷婷色五月| 成人夜夜爽| 1024亚洲中文字幕久在线看片你懂的 | 一起草AV| 嗯嗯啊啊用力视频免费| 超碰碰激情97+久| 少妇激情AV| 97AV在线观看| 久久久久亚洲AV无码专区少妇| 三级日本一区二区三区| 成人三一级一片aaa| 91粉嫩萝控精品福利网站_精品影音先锋国| 日本福利二区视频| 污到发麻的视频 国产| 伊人成人中文字幕久久网| 欧洲免费一区二| 人妻素股| 国产精品免费久久久久久久久久| 2019久久久久久久久福利| 免费看久久久性性| 亚洲成人网站在线观看| 日产中文字幕2020| 激情文学亚洲| 久操操AV电影| 无码二级三级| 国产亚洲精品A在线观看下载| 亚洲欧美日韩制服另类| 国产真实野战在线视频| 亚洲不卡不卡中文字幕不卡| 闷骚老熟女15P| 亚洲做性| 狠狠操夜夜| 天美AV片| 女生看匆91网站| 欧美性爱一级操| 亚洲欧洲久久天堂| 欧美性生活男人的天堂| www鬼畜国产男人的天堂| 91亚洲黄色网| 欧洲熟妇xxXx欧美老妇裸体| 在线情色电影 91大 | 能直接看AV的网站| 偷拍五区| 日本成人A片网站| 欧美一区91大爱| 91精品婷婷国产综合久久| 国产精品麻豆成人av| 欧美专区日本专区| 精品网站99999| 久久永久无码人妻视频| 天天操综合网| 亚洲综合嫩| 国产亚洲日本精品在线| 日日日骚女人精品| 三级精品三级在线观看| 九九热男人天堂| 久久久偷拍| 中字乱伦AV| 成人天天爽| yellow网站免费观看日韩高清无码| 精品久久在线区一区| 97超碰这里只有精品| 麻豆国产视频精品观看| 国产AV天美| 人妻天堂网| 97色婷婷| 人妻精品一区二区| 天天插天天干| 欧美第二页| 亚洲综合色网| 国产精品一区二区密臀| 久热9| 综合色区偷拍| 蜜桃臀av在线观看| 亚洲另类春色| 亚洲熟妇乱女区二区三区| 国产精品96| JULIA人妻风俗店中出电影| 亚州综合网| 丝袜内射| 亚洲色图 欧美| 国产九九久久久精品| 探花视频免费观看国产专区| 国产精品久久久视频| 精品无码欧美三级| 成人综合网 欧美| 天天色黄色影院天天操| 无码人妻精品一区二区三区九九 | 久久亚洲一区二区色婷婷| 性爱1区| 亚洲无码日韩电影| 91在线美女| 亚洲欧洲自拍图片专区满春格| 老熟女区| 日韩 欧美 另类 人妻| 日本五区不卡| 欧美天天拍| 日日骚中文字幕| 亚洲综合99999| 国产在线观看91精品一区| 精品国产乱码久久久兰草影视| 欧美日韩精品一区二区三区高清| 天天影视综合色| 97视频网站在线观看| 热久久国产| 欧美日韩亚洲少妇寂寞影院正在播放| 人人色97| 91精品国产日韩欧美综合| 91久热| 91网九色蝌蚪操熟女| 欧美日韩国产人人| 国产日本久久免费精品| a级免费在线观看| 天天操天天日青青草超碰av| 国产精品青草综合久久| 在线毛片片免费观看| 十八禁电影伊人网| 狠狠操狠狠插| 精品九九国产无码| 亚洲无码视频免费在线观看网址! J?P?NESEHD熟女熟妇伦 | 人人澡人人弄| 青青青国产| 99热这里是精品| 国产97视频免费观看| 日韩偷拍一区二区三区| 白丝AV| 欧美综合天堂| av2014 日韩在线中文字幕| 夜精品久无码| 美国久久一二三四| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 国产激情综合| 五月天玖玖资源站| 国产成人午夜视频网址| 中字幕人妻一区二区三区| 欧美精品宗合| 久久久久久久97| 草草草视频| 肥佬影院91| 午夜美女诱惑电源网| 五十路熟女在线不卡观看一区二区| 九九成人精品| 欧美人妻色| 曰本熟女视频| 久久鲁夜| 国产免费久久精品99re韩国| 91麻豆一二三区| 日韩精品国模| 日韩无码服务区| 国产亚热在线久久| 欧美日韩亚洲少妇寂寞影院正在播放 | 色老牛| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 国产丝袜一区二区三区| 黑丝制服中文字幕| 大香蕉狠狠爱| 啪啪啪综合网| 91精品人妻一品二品三品| 久久免费9| 蜜臀99久久| 91视频精品| 精品九九国产无码| 日韩欧美字幕亚洲一区二区| 久热91| 国产青一二三| 久久国99999| 日日干夜夜欢| 欧美性暴力猛交| 女人天堂av在线播放| WWW操逼| 国产精品免费美女视频| 亚洲天堂久久| 蜜桃视频精品一区二区三区| 91老熟女老女人国产老太| 热热色国产一二区AV| 日本 情色 1区| 囯产精品久久久久久久久久梁医生 | 欧美99999| 亚洲精品毛片在线观看| 国产亚洲综合欧美一区| 97香焦色区| 欧美78| 天天天干977| 免费少妇一区二区| 成视频在线观看免费看| 韩国女主播青草福利视频| 91综合国产精品| 国产白丝AV| 亚洲囯产精品女人久久久| 亚洲一区日韩| 日韩9999| 天美传媒婬乱在| 男女性感激情网站| 亚洲 欧美 天天| 国产69精品久久久久99尤物| 色婷婷五月天| 久草精品视频| 五月亭亭六月丁香| 色香色欲天天综合网天天来吧| 欧美综合骚| 无码精品啪啪啪一区二区三区三州| 国产美女高潮| 超碰人人干| 使劲用力艹少妇视频一区二区 | 99999精品成人| 大茄子熟女AV导航| 懂色天天爱天天日天天射天天澡| 国产欧美日韩女同性恋ww喷水精品| 久久少妇人妻| 亚洲 中文字幕 精品| 久久久久9| 亚洲性猛| 黑人美精品 A片| ′ !γ}丶。。久久精品欧美一区二区三区 | 99少妇| 综合久久六月久久婷婷| 老熟女熟妇| 久草午夜| 91美女丝袜诱惑视频| 五十路成人在线视频二区三区| 国产精品免费1区2区视频| 超碰人人妻| 在线看污网站| 天天色播| 日韩本不卡视频在线观看| 久热香蕉精品在线视频| 久久999久| 日欧操屄| 美女的肌被草喷水视频| 97久久久| 国产精品女同| 啊啊啊在线观看| 91oumei| 97在线免费视频观看| 性做久久久久久免费观看软件| 亚洲涩涩| 乱论91| 熟女高潮合集-永久久久-成人AV | 大香网伊人久久综合| 吊色| 亚洲欧美国产其他二区| 97超级色碰碰| 欧美十八禁在线看| 亚州欧美在线| 日韩精品一二三四| 大香蕉中文| 国产无遮挡| 伦激情人妻另类人妻| 天美欧美国产| 亚洲少妇综合在线播放| 欧美,亚洲,日韩,v,天堂,手机在线观看| 日韩人妻播放| 蜜桃网熟妇| 五月天婷婷综合网| 天天日天天操天天射河南省| 国产13区| 91社操逼| 91n处女在线观看| 日韩精品区二区三区不卡| 亚洲欧美天堂| 久久夜夜夜夜| 91动漫操逼视频| 欧美性暴力猛交| 性欧美天天| 亚洲AV无线| 干B网| 青青草亚洲一区| 一区二区三区黄色片a| 欧美在线干| 男人亚洲91首页在线| 99e久久国产精品| 激情文学小说一区二区 | 91性情| 97综合国产精品高潮久久| 亚洲国产成人福利在线观看| 色噜噜狠狠色综无码久久| 欧美亚洲日韩人妻在线观看| 欧美亚洲自拍另类人妻| 久久久成人精品| 中亚精品极乱| 人人操人人操人人操人人操人人操人人人11.CM | 性爱视频久久| 26uuu最新| av线电影| 69视频福利导航| 欧美日韩99| 超碰国产精品无码| 欲香欲色综合天天伊人| 丝袜综合色图| 亚洲色欲天天人妻无码系列专区| 亚洲本色精品一区二区久久| 欧美激情亚洲情色| 夜夜狼人妻| 亚洲成人综合在线| 中文字幕精品一区欧美| 狠狠躁伊人中文字幕| 性性欧美| 一区二区三区 丝袜 高跟 美腿 | 神马久久免费电影观看| 欧美综合第一| 色婷婷丁香五月| 欧美亚洲另类在线蜜桃| 日韩欧美亚洲自拍偷拍| 久久激情视频| 干B| 91AV老熟女视频| 色婷婷香蕉| 国产亚洲中文不卡二区| 亚洲无码电影久久久| 超碰导航97| 日韩综合97P| 精产国品一区二三产品| 67914亚洲精品| 簧片免费看视频| 最好看的中文字幕在线2018| 日本一级特级毛片视频| 综合色区偷拍| 国产超碰97| 操淫穴亚洲五月丁香 | 综合大香蕉美。| 青女在线| 884t在线| 久偷拍| 青青草黑寡妇男人天堂| 亚洲综合春色| 国产精品色色| 色五月亚洲| 欧美性爱伊人| 91久久婷婷| 超碰精品97| 一区二区 韩日AV| 综合久久六月久久婷婷| 午夜人人操| 97爱| 超碰97亚洲| 色综合大香蕉| 欧美人妖内射| a啊啊啊啊啊啊啊啊一区二区| 啊啊啊啊啊啊啊啊要喷了| 欧美色图下一页| 精品人妻一区二区免费蜜桃| 五月天春色激情网| 加勒比在线视频| 鲁鲁色综合网| 日本免费不卡二区| 久久99国产综合精品女同| 欧美1727免费观看视频| 超踫中文字幕| 国产又黄又猛又粗又爽的网站| 人妻天堂综合网| 91亚·色| 色哟哟-国产专区| 午夜精品久久久99| 亚洲少妇色图自慰直播| 91爱做| 久九9精品| 香蕉国产97| 97超碰欧美精品| 啊啊啊免费视频| 2024黄色视频| 操逼日批| 综合操逼| 精品婷婷| 久久亚洲骚逼综合| 加勒比综合九九99视频在线播放| 人妻在线大香蕉| 亚洲色情在线影视| 亚春色色| 超碰78| 欧美性爱第一区| 日韩性爱视频免费在线| 嗯啊不要在线| 亚洲大色堂| 久久9999| 日躁天天爽爽| a一区二区三区乱码在线| 国内毛片国产专区二| 色五月婷婷久久| 怡红院怡春院| 十八禁一区二区无码观看| 欧美天天影院| 一区二区三区免费视频入口| 亚洲欧美综合区自拍另类| 一级性爱aaaa| 亚洲91av| 97天天在线| 中文字幕99999| 中文字幕中文字幕一区二区| 天天草天天干天天日| 天天爽爽爽爽| 91 丝袜在线观看| 国产一二三福利视频网| 日韩激情无码影院| 高清国产av无码| 青青青操| 亚洲色天堂九9| 自拍偷拍 日韩欧美| 一级性爱aaaa| 91网18| 天天干嫩逼网| 日韩 欧美 视频 在线 一区| 嗯嗯嗯好爽| 国产AV人人夜夜澡人人爽麻豆| 亚洲色图91| 三级片网站在线播放| 色老汉色| 啊啊啊好大好深| 污污汅18禁网站在线永久免费观看| 亚洲中文字幕网| 欧美乱妇狂野欧美在线视频| 久久精品超碰| 岛国在线一区二区三区| 亚洲不卡av在线| 春色综合网| 果冻国产精品麻豆成人av| 九X超碰| 蜜臀在线视频| 九九伊人网| 天天情欲宗合网| 激情五月天插| 色女99一级片在线观看| 超碰美女97| 99久久久无码国产精品性男| 97 国产一区| 日本一级真人黄色性爱视频| a级理论午夜日本| AV中文字幕剧情1区2区3| 色波多| 丝袜美腿欧美| 农村少妇久久久久久久| 午夜欧美女人操逼| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 亚洲男人bt天堂| 淫纸中9区| 中国亚洲呦女专区| 亚洲女人毛茸茸91| 一区二区三区免费岛国片| 97天天操天天干| 大屁股人妻女教师撅着屁股| 中文字幕一区 二 区 三 四 五 区日 日 骚| 九九九偷拍| 日韩av乱伦| 午夜操一视频一区| 久久久97| 9久久久久久| 嗯嗯啊啊视频在线看| 丰满人妻一区二区三区免费 | 中文字幕乱码人妻一区二区三区,99精品 | 日本操逼视频不卡直接放| 欧美熟女激情| 牛牛操视频逼| 亚州中文字幕超碰97| 亚洲一区二区三区不卡国产欧美| 国产福利夜| 无码免费在线观看黄色片| 青青草精品| 琪琪精品免费一区二区三区 | 最新av网站在线观看| 一区二区不卡| 国产精品蜜乳AV| 婷婷激情五月综合| 久久久中文| 91另类| 久久超碰免费的| 日韩 欧美 视频 在线 一区| 中文一区二区| 99精品免费| 久久AV无码AV| 一牛一区二区三区久久| 一起草日韩| 四虎884| 国产女上位好爽在线| 无码直播久久久| 东北操逼| 91校园春色长篇| 日韩无码视频黄色| 欧洲亚洲人人爽爽视频| 韩国黄色片精品久久久| 欧美双插| 91爰爱欧美| 精品性爱无码在线播放| 91成人18| 国产精品视频在线播放| 国产亚洲综合欧美一区| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| av操操不卡| 黑人无码一区二区| 久久精品熟妇丰满人妻99| 欧美性,色九九| 久久香蕉国产线看观看猫咪av| 久操免费观看| 日韩视频小说在线观看| 4399成人黄A片| 欧美不卡在线一区二区| 中文字幕免费看| 久久久久久久久久久久久9999| 思思热久久成人| 亚洲熟女综合一区二区| 一区二区三区 丝袜高跟| 色99视频| 日韩国产不卡在线视频| 男人天堂2030| 91精品免费| 欧美久久婷| 99性视频| 免费亚洲黄色视频在线观看 | 色综合加勒比四四季| 蜜桃无码AV一区二区| 亚洲伊人久久综合97| 青青草一本道福利视频| 久久久久久久久久久久久久久乱码 | 婷婷三区| 再深点灬舒服灬太大了好硬好爽| 日本熟女不卡视频| 久操国产在线| 日韩高清一二三| 国产超碰在线一区| 精品国产乱子伦一区二区三区,精品一| 亚洲人在线| 性爱综合网| 在线可观看的黄色网址| 亚洲国产精品成人综合| 一本久道久久综合狠狠爱一密臀精| 免费成人在线熟妇网| 国产天天骚| 69精品少妇一区二区三区蜜桃| 99久久久er直播网址| 少妇熟女1区2区3区| 超碰美女97| 亚洲国产97在线精品一区| 高潮综合网| 欧美三级免费伊人| 欧美熟爽综合| 天天爽天天干| 国产AV高清AV无码| 日本激情免费大片| 久久久久久人妻一区精品色欧美| 黄骗免费网站| 天堂男人网| 色五月av| 97亚洲中文| 91精品国产91熟女| 蜜区区视频79 | 亚洲无吗在线视频| 九月丁香婷婷色| 嫩呦国产一区二区三区AV| 不卡中文字幕aⅴ在线| 国产精品国产亚洲区艳妇糸列| 国产传媒日韩| 亲子敌伦对白在线播放| 亚洲图片欧美| 美女91网站| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 91色图片| 美女裸体无遮挡永久免费观看网站 | 极品销魂美女一区二区 | 欧美 日韩 亚洲 春色| 欧美偷拍区| 色色色色日本| 26uuu国产成人综合| 囯产操逼片| 欧美视频在线视频免费va| 国产高潮AA片免费看| 久热免费视频| 搡老女人老妇女老妇老熟女怎么读| 天天肏美女| 国产综合久久久鬼色|