色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

Spring Boot零售倉(cāng)儲(chǔ)管理系統(tǒng):從架構(gòu)設(shè)計(jì)到庫(kù)存并發(fā)控制實(shí)戰(zhàn)

Spring Boot零售倉(cāng)儲(chǔ)管理系統(tǒng):從架構(gòu)設(shè)計(jì)到庫(kù)存并發(fā)控制實(shí)戰(zhàn) 1. 項(xiàng)目背景與需求定位1.1 這個(gè)項(xiàng)目到底解決什么問(wèn)題做這個(gè)零售與倉(cāng)儲(chǔ)管理系統(tǒng)之前我最直觀的感受是很多小型零售企業(yè)還在用Excel管庫(kù)存甚至靠手寫(xiě)賬本。倉(cāng)庫(kù)里進(jìn)了什么貨、賣了什么、還剩多少全依賴人工登記。一旦商品種類超過(guò)幾百個(gè)或者門店和倉(cāng)庫(kù)不在同一個(gè)地方這種模式的混亂程度會(huì)直線上升。庫(kù)存對(duì)不上賬、補(bǔ)貨不及時(shí)、月底盤點(diǎn)費(fèi)時(shí)費(fèi)力這些都是常態(tài)。所以我當(dāng)時(shí)做這個(gè)項(xiàng)目的核心目標(biāo)很明確用一套系統(tǒng)打通零售前端和倉(cāng)儲(chǔ)后端讓進(jìn)貨、入庫(kù)、出庫(kù)、銷售、盤點(diǎn)這幾條核心鏈路在一個(gè)系統(tǒng)里運(yùn)轉(zhuǎn)起來(lái)。Spring Boot作為項(xiàng)目底座不僅僅是圖它開(kāi)發(fā)效率高更重要的是它的生態(tài)足夠成熟后續(xù)擴(kuò)展權(quán)限管理、對(duì)接支付、生成報(bào)表等能力都很順手。1.2 適合誰(shuí)參考這套設(shè)計(jì)如果你是剛學(xué)完Java基礎(chǔ)想找一個(gè)完整的項(xiàng)目練手這個(gè)系統(tǒng)的復(fù)雜度恰到好處。它不像那種純CRUD的圖書(shū)管理系統(tǒng)那么簡(jiǎn)單也不像分布式電商那么復(fù)雜模塊劃分、權(quán)限控制、庫(kù)存邏輯都有足夠的深度可以挖掘。如果你是在小公司做內(nèi)部管理系統(tǒng)這套方案的可復(fù)制度很高。零售加倉(cāng)儲(chǔ)的組合非常常見(jiàn)核心模型拎出來(lái)改改可以直接遷移到其他行業(yè)的管理系統(tǒng)上。我做這套系統(tǒng)時(shí)有一個(gè)很深的體會(huì)項(xiàng)目的價(jià)值不在于用了多新的技術(shù)而在于業(yè)務(wù)邏輯是否梳理得清晰數(shù)據(jù)是否準(zhǔn)確可靠。這一點(diǎn)這個(gè)項(xiàng)目體現(xiàn)得很充分。2. 整體架構(gòu)與技術(shù)選型思路2.1 為什么選Spring Boot而不是其他框架技術(shù)選型這一步我先說(shuō)說(shuō)自己的考量。之前用SSHStrutsSpringHibernate做過(guò)類似項(xiàng)目配置文件多到讓人崩潰每加一個(gè)類都要去XML里注冊(cè)。Spring Boot最大的優(yōu)勢(shì)就是自動(dòng)配置和約定優(yōu)于配置省掉了大量繁瑣的裝配工作。開(kāi)發(fā)階段用內(nèi)嵌的Tomcat跑起來(lái)打包成可執(zhí)行Jar丟到服務(wù)器上就能運(yùn)行部署成本非常低。Java這個(gè)語(yǔ)言選得也比較穩(wěn)。零售倉(cāng)儲(chǔ)系統(tǒng)涉及資金和貨物穩(wěn)定性和事務(wù)能力是第一位的。Java在這方面的積累很深JDBC、JPA、MyBatis這些數(shù)據(jù)訪問(wèn)層方案都非常成熟遇到復(fù)雜查詢或者事務(wù)問(wèn)題社區(qū)里能搜到大量現(xiàn)成的解決方案。2.2 核心依賴與分層結(jié)構(gòu)我用的技術(shù)棧是Spring Boot 2.x MyBatis Plus MySQL Redis。Spring Boot負(fù)責(zé)整體框架和請(qǐng)求分發(fā)MyBatis Plus負(fù)責(zé)數(shù)據(jù)訪問(wèn)MySQL存業(yè)務(wù)數(shù)據(jù)Redis存登錄會(huì)話和緩存熱數(shù)據(jù)。分層結(jié)構(gòu)上我保持了經(jīng)典的四層架構(gòu)Controller層接收前端請(qǐng)求Service層寫(xiě)核心業(yè)務(wù)邏輯Mapper層做數(shù)據(jù)庫(kù)交互實(shí)體類映射表結(jié)構(gòu)。這里要強(qiáng)調(diào)一點(diǎn)很多初學(xué)者容易把業(yè)務(wù)邏輯寫(xiě)在Controller里圖省事。但一旦業(yè)務(wù)復(fù)雜起來(lái)Controller膨脹得飛快后期幾乎沒(méi)法維護(hù)。我的習(xí)慣是Controller只做參數(shù)接收和結(jié)果包裝所有判斷、計(jì)算、異常處理都下沉到Service層。2.3 為什么用RBAC模型做權(quán)限管理權(quán)限管理我采用了基于角色的訪問(wèn)控制模型RBAC就是給用戶分配角色給角色分配權(quán)限。超級(jí)管理員、倉(cāng)庫(kù)管理員、銷售員、店長(zhǎng)這幾種角色覆蓋了大部分業(yè)務(wù)場(chǎng)景。每個(gè)用戶登錄后系統(tǒng)根據(jù)其角色返回可見(jiàn)菜單和可操作的接口。這個(gè)設(shè)計(jì)看起來(lái)簡(jiǎn)單實(shí)際操作時(shí)有兩個(gè)很關(guān)鍵的點(diǎn)。第一個(gè)是權(quán)限粒度我控制到了按鈕級(jí)別哪些角色能看到“刪除商品”按鈕哪些角色只能看“編輯”都在前端根據(jù)權(quán)限標(biāo)識(shí)進(jìn)行控制。第二個(gè)是后端接口必須再做一次校驗(yàn)不能光靠前端隱藏按鈕。我曾見(jiàn)過(guò)一些項(xiàng)目前端把按鈕藏得很嚴(yán)實(shí)結(jié)果有人直接調(diào)接口就繞過(guò)了限制這個(gè)問(wèn)題務(wù)必避免。3. 數(shù)據(jù)庫(kù)設(shè)計(jì)與核心功能模塊切分3.1 數(shù)據(jù)表規(guī)劃的核心邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)是整個(gè)系統(tǒng)最重要的一環(huán)。我總結(jié)一個(gè)原則寧可多拆幾張表不要把所有字段塞進(jìn)一張大表。合理的表結(jié)構(gòu)能讓后續(xù)的統(tǒng)計(jì)和擴(kuò)展變得很順暢。我設(shè)計(jì)的主要數(shù)據(jù)表包括用戶表、角色表、權(quán)限表、商品分類表、商品信息表、供應(yīng)商表、倉(cāng)庫(kù)表、庫(kù)存表、入庫(kù)單表、出庫(kù)單表、銷售訂單表、盤點(diǎn)記錄表。每個(gè)表的主鍵用自增ID所有金額字段統(tǒng)一用Decimal類型避免浮點(diǎn)數(shù)精度問(wèn)題。以商品表為例字段不止包括商品名稱、條碼、規(guī)格、單位這些基礎(chǔ)信息還專門加了預(yù)警閾值字段。這個(gè)預(yù)警閾值是庫(kù)存管理的關(guān)鍵當(dāng)庫(kù)存數(shù)量低于這個(gè)值時(shí)系統(tǒng)自動(dòng)在首頁(yè)生成補(bǔ)貨提醒。有些系統(tǒng)把預(yù)警寫(xiě)死在代碼里不同商品用一個(gè)閾值這其實(shí)不太符合實(shí)際情況。比如礦泉水可能剩100瓶還很充裕但一臺(tái)昂貴的設(shè)備剩1臺(tái)就得補(bǔ)貨。閾值放在商品表里按商品單獨(dú)配置這個(gè)設(shè)計(jì)我建議直接抄走。3.2 庫(kù)存字段到底放哪張表庫(kù)存的設(shè)計(jì)上我踩過(guò)一個(gè)小坑。最開(kāi)始我把庫(kù)存數(shù)量直接放在商品表里查詢是方便了但每次出入庫(kù)都要更新商品表而且沒(méi)法追溯歷史庫(kù)存變化。后來(lái)我改成了單獨(dú)的庫(kù)存表按倉(cāng)庫(kù)加商品維度存數(shù)量即每條記錄對(duì)應(yīng)“某商品在某倉(cāng)庫(kù)的庫(kù)存量”。這樣設(shè)計(jì)的好處有三個(gè)。一是多倉(cāng)庫(kù)場(chǎng)景下庫(kù)存數(shù)據(jù)天然隔離每個(gè)倉(cāng)庫(kù)各算各的二是盤點(diǎn)時(shí)只需要鎖定庫(kù)存表不需要?jiǎng)由唐分鲾?shù)據(jù)三是后續(xù)如果要按倉(cāng)庫(kù)維度統(tǒng)計(jì)庫(kù)存金額直接查庫(kù)存表關(guān)聯(lián)商品單價(jià)即可。入庫(kù)明細(xì)表和出庫(kù)明細(xì)表則把每一次操作的數(shù)量、單價(jià)、經(jīng)辦人、時(shí)間都記錄下來(lái)形成完整的溯源鏈路。3.3 功能模塊的邊界劃分整個(gè)系統(tǒng)我拆成了六個(gè)核心模塊商品管理、供應(yīng)商管理、倉(cāng)庫(kù)管理、入庫(kù)管理、出庫(kù)管理、銷售管理。外加系統(tǒng)管理模塊負(fù)責(zé)用戶和權(quán)限配置統(tǒng)計(jì)報(bào)表模塊負(fù)責(zé)數(shù)據(jù)匯總。商品管理管的是商品檔案包括新增商品、編輯信息、上下架、條碼管理。供應(yīng)商管理維護(hù)供貨商檔案和合作記錄。倉(cāng)庫(kù)管理管的是倉(cāng)庫(kù)基本信息包括庫(kù)位編碼。入庫(kù)管理覆蓋采購(gòu)入庫(kù)、退貨入庫(kù)、其它入庫(kù)這幾類場(chǎng)景。出庫(kù)管理覆蓋銷售出庫(kù)、報(bào)損出庫(kù)、調(diào)撥出庫(kù)等。這里我特別想說(shuō)的是銷售管理和出庫(kù)管理的關(guān)系。有些系統(tǒng)把銷售訂單和出庫(kù)流程完全分開(kāi)導(dǎo)致數(shù)據(jù)不一致。我的做法是銷售訂單創(chuàng)建后自動(dòng)生成一條對(duì)應(yīng)的銷售出庫(kù)單庫(kù)存扣減以出庫(kù)單為準(zhǔn)確保銷售數(shù)據(jù)和庫(kù)存數(shù)據(jù)的聯(lián)動(dòng)。這一塊邏輯看著簡(jiǎn)單實(shí)際編碼時(shí)要處理并發(fā)問(wèn)題后面我會(huì)詳細(xì)講。4. 核心業(yè)務(wù)流程與關(guān)鍵實(shí)現(xiàn)4.1 入庫(kù)流程的狀態(tài)流轉(zhuǎn)入庫(kù)流程的完整鏈路是創(chuàng)建入庫(kù)單 → 審核入庫(kù)單 → 更新庫(kù)存 → 記錄入庫(kù)明細(xì)。第一步倉(cāng)庫(kù)人員根據(jù)采購(gòu)單或到貨通知?jiǎng)?chuàng)建入庫(kù)單填寫(xiě)供應(yīng)商、入庫(kù)倉(cāng)庫(kù)、商品明細(xì)和數(shù)量。這里有一個(gè)容易忽略的地方入庫(kù)單的編號(hào)一定要系統(tǒng)自動(dòng)生成采用日期加流水號(hào)的格式。比如RK20250615001可讀性強(qiáng)后期對(duì)賬、客服查詢都會(huì)方便很多。第二步是審核。我設(shè)置了一個(gè)原則創(chuàng)建人和審核人不能是同一人。入庫(kù)單保存后處于待審核狀態(tài)審核通過(guò)后才會(huì)真正影響庫(kù)存。這個(gè)設(shè)計(jì)是為了防止操作失誤被直接寫(xiě)入庫(kù)存給復(fù)核留出空間。第三步和第四步是同步執(zhí)行的。審核通過(guò)的事務(wù)里先按“倉(cāng)庫(kù)加商品”維度去庫(kù)存表查是否存在記錄。存在則增加數(shù)量不存在則先新增一條庫(kù)存記錄再累加。同時(shí)把每一件商品的入庫(kù)明細(xì)寫(xiě)入入庫(kù)明細(xì)表。4.2 庫(kù)存扣減的并發(fā)控制方案庫(kù)存超賣是倉(cāng)儲(chǔ)系統(tǒng)最敏感的問(wèn)題。假設(shè)某商品庫(kù)存只剩10件同時(shí)來(lái)了兩個(gè)銷售訂單一單要8件一單要5件如果不做控制最終可能賣出去13件庫(kù)存變成負(fù)數(shù)。我用的方案是數(shù)據(jù)庫(kù)悲觀鎖配合事務(wù)隔離。執(zhí)行庫(kù)存扣減的SQL語(yǔ)句時(shí)用SELECT * FROM stock WHERE product_id ? AND warehouse_id ? FOR UPDATE先把這一行鎖住然后再檢查庫(kù)存是否充足執(zhí)行扣減。這樣同一時(shí)刻只有一個(gè)事務(wù)能操作這條庫(kù)存記錄徹底避免超賣。這里分享一個(gè)性能層面的小經(jīng)驗(yàn)。悲觀鎖在并發(fā)量不是極大的場(chǎng)景下完全夠用零售倉(cāng)儲(chǔ)系統(tǒng)的并發(fā)量一般不會(huì)像秒殺那么夸張。如果后續(xù)量大了可以改用Redis的分布式鎖或者樂(lè)觀鎖版本號(hào)機(jī)制。但雙十一那種級(jí)別的并發(fā)這個(gè)架構(gòu)本身就不合適需要引入消息隊(duì)列做異步削峰那就是另一套設(shè)計(jì)了。4.3 銷售與出庫(kù)的聯(lián)動(dòng)實(shí)現(xiàn)用戶在前臺(tái)下單后系統(tǒng)會(huì)做這幾步操作校驗(yàn)庫(kù)存是否充足、生成銷售訂單、生成出庫(kù)單、扣減庫(kù)存。這四個(gè)步驟我放在同一個(gè)事務(wù)里。一旦扣減庫(kù)存時(shí)發(fā)現(xiàn)異常整個(gè)事務(wù)回滾銷售訂單也不會(huì)生效。有一個(gè)實(shí)際問(wèn)題需要防范用戶下單后沒(méi)有付款訂單處于待付款狀態(tài)這個(gè)時(shí)候就扣庫(kù)存用戶又不買了庫(kù)存就被白白鎖死。我需要區(qū)分普通電商和零售門店場(chǎng)景。如果是門店收銀基本上是現(xiàn)場(chǎng)付款直接扣庫(kù)存問(wèn)題不大。但如果系統(tǒng)將來(lái)要支持線上預(yù)訂建議把扣減時(shí)間延后到支付成功之后或者引入預(yù)占庫(kù)存和釋放庫(kù)存的機(jī)制。4.4 盤點(diǎn)模塊的盈虧處理盤點(diǎn)這塊我覺(jué)得最能體現(xiàn)一個(gè)系統(tǒng)是否真正貼合業(yè)務(wù)場(chǎng)景。實(shí)際盤點(diǎn)時(shí)業(yè)務(wù)人員先錄入賬面數(shù)量再錄入實(shí)盤數(shù)量。系統(tǒng)自動(dòng)計(jì)算盈虧數(shù)量。如果實(shí)盤數(shù)大于賬面數(shù)說(shuō)明盤盈需要做盤盈入庫(kù)。如果實(shí)盤數(shù)小于賬面數(shù)說(shuō)明盤虧需要做盤虧出庫(kù)。這一進(jìn)一出都要生成對(duì)應(yīng)的出入庫(kù)單據(jù)并且記錄盈虧原因。我在系統(tǒng)里預(yù)設(shè)了幾種常見(jiàn)原因掃碼遺漏、貨物損壞、供應(yīng)商少發(fā)、錄入錯(cuò)誤。這樣財(cái)務(wù)復(fù)核時(shí)能直接看到原因歸類省去很多溝通成本。盤點(diǎn)單還有一個(gè)狀態(tài)進(jìn)行中、已提交、已審核。已經(jīng)審核的盤點(diǎn)單不可修改確實(shí)是復(fù)盤后確認(rèn)的數(shù)據(jù)。這個(gè)狀態(tài)機(jī)的控制保證了盤點(diǎn)流程的嚴(yán)肅性。5. 實(shí)操記錄與關(guān)鍵配置明細(xì)5.1 環(huán)境準(zhǔn)備與項(xiàng)目初始化項(xiàng)目開(kāi)發(fā)環(huán)境我用的JDK 1.8Spring Boot 2.5版本。雖然JDK 17和Spring Boot 3.0都已經(jīng)很成熟但考慮到很多生產(chǎn)環(huán)境的服務(wù)器還在用JDK 8而且相關(guān)生態(tài)的兼容性問(wèn)題少我最終選了相對(duì)保守的版本組合。用Spring Initializr初始化項(xiàng)目時(shí)我勾選了Web、MySQL Driver、MyBatis、Redis這幾個(gè)依賴。數(shù)據(jù)庫(kù)方面本地先用MySQL 5.7后續(xù)生產(chǎn)切換到MySQL 8.0連接驅(qū)動(dòng)升級(jí)一下即可代碼改動(dòng)很小。字符集一定要設(shè)utf8mb4否則存emoji或者特殊符號(hào)容易報(bào)錯(cuò)。5.2 核心配置文件示例application.yml里的幾個(gè)關(guān)鍵配置如下server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/retail_storage?useUnicodetruecharacterEncodingutf8mb4serverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver redis: host: localhost port: 6379 database: 0 mybatis-plus: configuration: map-underscore-to-camel-case: true global-config: db-config: logic-delete-field: deleted logic-delete-value: 1 logic-not-delete-value: 0這里有幾個(gè)細(xì)節(jié)值得展開(kāi)說(shuō)。map-underscore-to-camel-case設(shè)為true后數(shù)據(jù)庫(kù)的create_time字段能自動(dòng)映射到實(shí)體的createTime屬性省去手動(dòng)寫(xiě)映射規(guī)則的麻煩。邏輯刪除配置也很有用我沒(méi)用物理刪除所有業(yè)務(wù)表都加了deleted字段。用戶誤刪商品檔案時(shí)實(shí)際上數(shù)據(jù)還在只是查詢時(shí)被過(guò)濾掉了隨時(shí)可以恢復(fù)。5.3 統(tǒng)一返回結(jié)果與全局異常處理這個(gè)部分強(qiáng)烈建議所有Spring Boot項(xiàng)目都做。我定義了一個(gè)通用的Result類包含code、message、data三個(gè)字段。所有Controller接口都返回這個(gè)類前端可以根據(jù)code判斷請(qǐng)求是否成功。狀態(tài)碼我用的是20000表示成功50000表示業(yè)務(wù)異常40100表示未登錄或登錄過(guò)期。Data public class ResultT { private Integer code; private String message; private T data; public static T ResultT success(T data) { ResultT result new Result(); result.setCode(20000); result.setMessage(操作成功); result.setData(data); return result; } public static T ResultT error(String message) { ResultT result new Result(); result.setCode(50000); result.setMessage(message); return result; } }全局異常處理用RestControllerAdvice注解實(shí)現(xiàn)。業(yè)務(wù)異常、參數(shù)校驗(yàn)異常、數(shù)據(jù)庫(kù)異常分別處理統(tǒng)一包裝成Result對(duì)象返回。這樣還有一個(gè)深層好處前端拿到統(tǒng)一格式的響應(yīng)體后可以封裝一套通用的請(qǐng)求攔截邏輯遇到40100自動(dòng)跳登錄頁(yè)遇到50000統(tǒng)一彈出提示。不用每個(gè)頁(yè)面各寫(xiě)一套錯(cuò)誤處理邏輯。5.4 登錄驗(yàn)證與JWT令牌用戶登錄后我用JWTJSON Web Token生成登錄令牌存到Redis里同時(shí)設(shè)置過(guò)期時(shí)間。每次請(qǐng)求經(jīng)過(guò)攔截器時(shí)從請(qǐng)求頭取出令牌并校驗(yàn)。使用JWT加Redis的組合既保留了JWT無(wú)狀態(tài)的特點(diǎn)又能通過(guò)Redis手動(dòng)踢人下線。令牌的有效期設(shè)置要結(jié)合業(yè)務(wù)場(chǎng)景來(lái)考慮。零售門店的人員流動(dòng)性大如果令牌一個(gè)月不過(guò)期員工離職后賬號(hào)仍然有效會(huì)帶來(lái)安全隱患。我設(shè)置的是8小時(shí)過(guò)期配合Redis里存的會(huì)話記錄超時(shí)后自動(dòng)重新登錄。門店收銀員一天登錄一次體驗(yàn)上也沒(méi)有問(wèn)題。5.5 前端頁(yè)面的技術(shù)選型前端部分用了Thymeleaf加Bootstrap沒(méi)做前后端分離。為什么這么選因?yàn)檫@套系統(tǒng)的使用人群是門店店員和倉(cāng)庫(kù)管理員他們需要的質(zhì)檢場(chǎng)景是登錄后用瀏覽器操作頁(yè)面不追求炫酷效果只追求簡(jiǎn)單好用加載速度快。如果要做前后端分離我建議后端提供純JSON接口配合Vue或React做管理后臺(tái)。但這會(huì)引入跨域處理、Token存儲(chǔ)、構(gòu)建部署等一系列額外復(fù)雜度。對(duì)于這個(gè)項(xiàng)目規(guī)模服務(wù)端渲染的方案在開(kāi)發(fā)效率和維護(hù)便利性上反而更有優(yōu)勢(shì)。6. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄6.1 數(shù)據(jù)庫(kù)連接池連接超時(shí)系統(tǒng)運(yùn)行一段時(shí)間后偶爾會(huì)報(bào)Communications link failure錯(cuò)誤。排查后發(fā)現(xiàn)是數(shù)據(jù)庫(kù)連接的閑置時(shí)間超過(guò)了MySQL的wait_timeout。解決辦法是在配置文件中設(shè)置連接池參數(shù)讓連接池定時(shí)檢查并回收失效連接。spring: datasource: hikari: minimum-idle: 5 maximum-pool-size: 20 idle-timeout: 30000 max-lifetime: 1800000 connection-test-query: SELECT 1這里max-lifetime設(shè)置成30分鐘要比MySQL的wait_timeout短一些確保連接被提前回收不至于被數(shù)據(jù)庫(kù)服務(wù)端斷開(kāi)后繼續(xù)使用。6.2 精度問(wèn)題導(dǎo)致金額對(duì)不上有同事反饋某個(gè)訂單的總金額差了一分錢。最后定位到是商品單價(jià)用了double類型計(jì)算產(chǎn)生浮點(diǎn)數(shù)誤差。這個(gè)問(wèn)題的教訓(xùn)很直接涉及金額的計(jì)算絕不能用double或float。后來(lái)我把所有金額字段統(tǒng)一改成Decimal代碼里用BigDecimal計(jì)算再也沒(méi)出現(xiàn)過(guò)這種問(wèn)題。BigDecimal計(jì)算時(shí)要注意構(gòu)造方法盡量用字符串參數(shù)比如new BigDecimal(19.90)不要直接用new BigDecimal(19.90)。后者由于二進(jìn)制浮點(diǎn)數(shù)表示問(wèn)題得到的值往往不是精確的19.9。初學(xué)的時(shí)候容易在這里踩坑。6.3 MyBatis Plus的字段填充失效使用MyBatis Plus的自動(dòng)填充功能時(shí)我在實(shí)體類的createTime字段上加了TableField(fill FieldFill.INSERT)注解但新增數(shù)據(jù)時(shí)字段值還是null。排查發(fā)現(xiàn)是MetaObjectHandler的實(shí)現(xiàn)類沒(méi)有交給Spring管理缺了Component注解。這個(gè)實(shí)現(xiàn)類里我重寫(xiě)了insertFill和updateFill兩個(gè)方法分別填充創(chuàng)建時(shí)間和更新時(shí)間。這類問(wèn)題通常在配置層面代碼編譯不報(bào)錯(cuò)運(yùn)行時(shí)才暴露排查起來(lái)需要細(xì)心對(duì)照官方文檔。6.4 并發(fā)測(cè)試中出現(xiàn)的庫(kù)存負(fù)數(shù)系統(tǒng)上線前做壓測(cè)并發(fā)開(kāi)30個(gè)線程同時(shí)購(gòu)買同一件商品日志里出現(xiàn)了庫(kù)存負(fù)數(shù)的情況。這說(shuō)明單純?cè)赟ervice層判斷庫(kù)存是否充足是擋不住并發(fā)的。多個(gè)線程同時(shí)讀到庫(kù)存為10同時(shí)判斷10大于購(gòu)買數(shù)量全部通過(guò)然后一起扣減庫(kù)存就變成負(fù)數(shù)了。我改用數(shù)據(jù)庫(kù)行級(jí)鎖之后同一商品同一倉(cāng)庫(kù)的庫(kù)存行同一時(shí)刻只有一個(gè)事務(wù)能操作后面的線程必須等待前一個(gè)事務(wù)提交后才能讀到最新庫(kù)存。再加上扣減的SQL語(yǔ)句里帶上條件stock quantity雙重保障徹底解決了這個(gè)問(wèn)題。6.5 高頻查詢的Redis緩存策略商品列表、分類信息這類數(shù)據(jù)變化頻率低、讀取頻率高非常適合放到Redis里緩存。我的做法是添加或修改商品時(shí)主動(dòng)刪除相關(guān)緩存查詢時(shí)先查緩存緩存不存在時(shí)再查數(shù)據(jù)庫(kù)并回填緩存。這里要重點(diǎn)提醒一句緩存一定要設(shè)置過(guò)期時(shí)間不能是永久key。不設(shè)置過(guò)期時(shí)間的緩存一旦忘記主動(dòng)清理數(shù)據(jù)不一致的問(wèn)題會(huì)長(zhǎng)期存在。時(shí)間設(shè)短了效果差設(shè)長(zhǎng)了數(shù)據(jù)舊一般我會(huì)根據(jù)業(yè)務(wù)對(duì)實(shí)時(shí)性的要求調(diào)整商品列表設(shè)30分鐘登錄會(huì)話設(shè)8小時(shí)是比較常規(guī)的配置。6.6 常見(jiàn)問(wèn)題速查表問(wèn)題現(xiàn)象可能原因解決方案項(xiàng)目啟動(dòng)失敗端口被占用8080端口被其它進(jìn)程占用使用netstat命令查找進(jìn)程并停止或修改配置端口點(diǎn)擊登錄無(wú)反應(yīng)登錄接口報(bào)500SQL語(yǔ)句有誤查看后端日志定位具體報(bào)錯(cuò)行導(dǎo)入商品Excel亂碼文件編碼不是UTF-8讀取時(shí)指定字符集前端上傳時(shí)做編碼處理庫(kù)存列表查詢慢商品表數(shù)據(jù)量大未加索引在商品條碼、分類ID字段上建立索引報(bào)表數(shù)據(jù)與明細(xì)對(duì)不上統(tǒng)計(jì)SQL存在重復(fù)關(guān)聯(lián)先用子查詢?nèi)ブ卦訇P(guān)聯(lián)匯總表7. 部署上線與數(shù)據(jù)備份經(jīng)驗(yàn)系統(tǒng)部署我用了最直接的方式Maven打包出Jar文件扔到服務(wù)器上運(yùn)行。生產(chǎn)環(huán)境我用的是CentOS系統(tǒng)執(zhí)行nohup java -jar retail-storage.jar app.log 21 日志輸出到文件方便排查問(wèn)題。關(guān)于日志級(jí)別我建議生產(chǎn)環(huán)境用info級(jí)別開(kāi)發(fā)環(huán)境用debug級(jí)別。debug日志記錄的信息量很大如果生產(chǎn)環(huán)境開(kāi)啟磁盤很容易被刷爆。同時(shí)要用logback的按天滾動(dòng)策略保留最近30天的日志避免日志文件無(wú)限增長(zhǎng)。數(shù)據(jù)庫(kù)備份這件事我吃過(guò)虧。項(xiàng)目上線初期某天誤操作批量修改了商品數(shù)據(jù)由于沒(méi)有備份最后只能手工逐條恢復(fù)花了好幾個(gè)小時(shí)。后來(lái)我寫(xiě)了一個(gè)shell腳本每天凌晨?jī)牲c(diǎn)用mysqldump全量備份備份文件保留7天再配合Binlog做增量恢復(fù)。每隔兩周手動(dòng)演練一次恢復(fù)流程確保備份真的能恢復(fù)而不是備份了個(gè)寂寞。8. 項(xiàng)目復(fù)盤與個(gè)人實(shí)操心得整個(gè)系統(tǒng)從設(shè)計(jì)到開(kāi)發(fā)再到上線加起來(lái)用了大約六周時(shí)間。現(xiàn)在回頭復(fù)盤這個(gè)項(xiàng)目的價(jià)值主要有三層。第一層是業(yè)務(wù)建模。零售倉(cāng)儲(chǔ)雖然沒(méi)有特別深?yuàn)W的算法但業(yè)務(wù)流程的梳理很考驗(yàn)邏輯能力。入庫(kù)、出庫(kù)、盤點(diǎn)、銷售之間環(huán)環(huán)相扣的狀態(tài)流轉(zhuǎn)一開(kāi)始我想得簡(jiǎn)單畫(huà)完時(shí)序圖才發(fā)現(xiàn)各種邊界情況都要處理比如審核駁回后庫(kù)存如何處理、盤點(diǎn)期間能不能繼續(xù)出入庫(kù)等等。第二層是數(shù)據(jù)一致性的把握。庫(kù)存、金額、訂單這三類數(shù)據(jù)必須保證絕對(duì)準(zhǔn)確任何一個(gè)環(huán)節(jié)出錯(cuò)后續(xù)的對(duì)賬和財(cái)務(wù)都會(huì)很痛苦。事務(wù)邊界、并發(fā)控制、唯一約束這些基本功在這個(gè)項(xiàng)目里體現(xiàn)得淋漓盡致。第三層是對(duì)用戶體驗(yàn)的認(rèn)識(shí)。這個(gè)系統(tǒng)的使用者年齡跨度大很多員工對(duì)計(jì)算機(jī)操作并不熟練。所以我做頁(yè)面時(shí)盡量遵循了幾個(gè)原則一個(gè)頁(yè)面只做一件事操作按鈕文字直白比如“新增商品”“確認(rèn)出庫(kù)”不要用“執(zhí)行”這種模糊詞匯。重要的操作有二次確認(rèn)彈窗比如刪除商品、盤點(diǎn)審核。每一步操作后有明確的成功或失敗提示。這些看似瑣碎的設(shè)計(jì)反而讓系統(tǒng)在實(shí)際使用中推廣得很順利。最后再分享一個(gè)小技巧多崗位角色協(xié)同使用系統(tǒng)時(shí)操作日志的作用遠(yuǎn)比想象中重要。我在所有關(guān)鍵業(yè)務(wù)表上都加了創(chuàng)建人、創(chuàng)建時(shí)間、更新人、更新時(shí)間字段并且單獨(dú)建了一張操作日志表記錄誰(shuí)在什么時(shí)間做了什么操作。上線后有一次盤點(diǎn)差異排查就是靠操作日志發(fā)現(xiàn)有人在非工作時(shí)段做過(guò)一次入庫(kù)單修改才找到數(shù)據(jù)對(duì)不上的原因。這個(gè)設(shè)計(jì)不需要太高深的技術(shù)但對(duì)運(yùn)維和審計(jì)非常有價(jià)值。如果你準(zhǔn)備復(fù)刻這個(gè)項(xiàng)目強(qiáng)烈建議把這個(gè)細(xì)節(jié)加進(jìn)去。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
大香蕉色欲AV| 亚洲av影音先锋| 亚洲国产激情国产av| 免费看污网址| 亚洲码在线中文在线观看| 亚洲精品日韩国产欧美| 精品久久艹| 人人人摸人人| 欧美欲色| 欲色综合| 亚洲丝袜色| 欧美黑人168页欧美黑人167| 精品中文字幕一区二区| 国精综合一二三区影视| 亚洲成a人片在线观看中文!!!| 日本少妇va7777| 日韩精品亚洲一二三| 三级三级三级a级全黄三| 后入式在线免费观看60秒| 神马九九| 五月丁香综合啪啪| 亚洲图片欧美色| 久久久爆乳翘臀一线天伦理视频| 日韩精品一区,二区 九九...老司机| 亚洲欧美另类激情小说| 91网站18在线| 丁香五月激情综合国产| 青青草在线视频播放器| 久久精品视频久久久| 91蜜臀人妻中文字幕在线| 视频分类 国内精品| 婷婷五月天无码 | 夜夜操二区| 日本熟妇自慰性高潮一区二区三区| 伊欧美综合视频| 久草色在线观看| 极品色www影院| 日韩本不卡视频在线观看| 色五月综合网| 精品69网| 特级大荫道BBwBBwBBW| 中文一区二区三区影院| 精品国产99| 香蕉国产精品麻豆亚洲欧美日韩| 欧洲亚洲人妻无码中字久久三区四区 | 天天日夜干| 思思热在线视频精品| 大香久久| 欧美精品久久96人妻无码| 少妇人妻好深太紧了vr91| 精品一国2| 乱伦av麻豆| 国产美女91视频| 91精品女厕偷拍视频| 午夜精品久久999热蜜桃介男人用| 天天搞在线综合网| 人人操人人肉久久精品| 美女淫穴| 九九综合久久| 日韩精品-原创伙伴| 色呦呦、国产精品| 十八禁成人网站在线观看| 91亚.色| 亚洲精品蜜桃久久久一区二区三区| 韩美日操逼| 婷婷15月天青娱乐| 国内外色色色色色成人视频| 精品丝袜无码一区二区三APP| 操老熟女AV| 五月天久久久| 亚洲av国产av综合av卡| 激情文学小说一区二区| 午夜福利久久久噜久噜久久综合| 亚洲精品一二区| 96超碰网| 久久久久78| 日韩av影片在线观看| 日本不卡在线二区三区| 加勒比av网| 熟女丰满人妻一区| 成人免费福利网站国产| 翔田千里Av在线| 久久精品一区二区三区蜜桃臀| 丁香九月激情| 成人麻豆av电影网站| 91天天综合日韩欧美| av线电影| 国产夜夜艹| 99这里都是精品| 囯戸精品高潮呻吟旡码| 国产97av| 精品无码产区一区二| 日韩性色b| 99热99在线播放激情| 东京热男人天堂| 99热8| 成人天天看站长推荐 | 成人五月香网在线| 午夜男女爽爽爽在线视频| 久久亚洲中文字幕视频| 伊人国产成人av网站| 亚洲人妻色图| 一本色道久久综合狠狠操| 青青草精玖玖69精品| 日本三级韩三级99久久| 色播五月婷婷| 国内三级自拍小视频在线观看| 性爱乱伦视频免费| 99re免费视频精品全部| 国产强奸乱伦第1页| 日本天堂在线播放| 玖玖超碰熟| 久久同城AV| 久久久久久久少妇| 96AV久久久| 五月丁香大香蕉| 乱欲一区二区| 啪啪视频亚洲第一| 国语国产操逼伊人AV网| gogogo免费高清看中国国语| 人人爱人人乐人人操| 欧美熟妇精品黑人巨大91| 综合激情一一91| 青青草十区九区爱夜| 国产按摩一区二区三区| 欧美日韩成人| 久久久久久久久久久97| 日韩pv中文| 日本午夜精品理论片A级APP发布| 一级免费啪啪片| 视频分类 国内精品| AV污污污污| ,成人免费啪啪视频| 蜜臀99久久精品久久久懂爱| 欧美综合91| 色欲久久99精品久久| yazhouzaixian| 久久99草| 精品人妻一区二区三区四区| 97久操| 人妻少妇无码| 天天插网| 久久黄片国产一区二区| 少妇人妻好深太紧了vr91| 99在线免费公开视频| 免费少妇一区二区| 欧美αv.com| 中文字幕精品一区二| 国产无码久久高清| 八戒午夜福利理论片| 老司机天天操| 久精品无码av一区二免费国产在线观看 | 99国产精品久久久久久久成人热| 五月天久久久| 婷婷成人久久久精品| 亚州操操穴网| 四虎国产成人精品免费一女五男| 日韩色图 一区二区| 欧洲精品一二三在线| 人人摸人人舔一区二区| 嗯嗯不要视频| 激情抓乳插进去啪啪啪日韩 | 丁香五月大香蕉| 大香蕉综合| 偷拍 精品另类 凸凹了四区| 无码久| 久久青青草原免费视频| 亚洲制服aⅴ中文字幕| 欧美日韩狠狠爱| 青青草在线视频播放器| 日本操逼无码| 2026国产精品视频| 人妻喷水| 亚洲天堂男人| 日本不卡高清视频| 综合熟女| 天堂资源欧美| 丝袜色综合| 72av视频| 一级AV性爱| 美國A片| 九九综合久久| 射丝袜高跟鞋99| 好看的久久不射无码影视影院| 青青草华人在线欧美在线| 亚洲色人| 久久伊人大香蕉| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 国产人妻精品久久久一区二区三区 | 玖色av| 97无码视频在线播放| 操逼无码一区| 欧美一二三区四五区| 蜜桃臀久久| 日韩肏逼视频| 超碰av在线| 97色97好| 乱欲视频| 天天操天天舔| 日本999精品| 97天天| 成人一道本免费视频| 国产激情av女片自拍| 天天干2019| 亚洲在钱| 国产成人99久久亚洲综合| 999岛国大片| 热热色色综合| 人妻另类 专区 欧美 制服| 99无码| 99热超碰| 啊啊啊啊免费视频| 中文字幕一区电影在线观看| 久久久艹艹艹| 99精品九九九九九九| www.大香| 一直超碰| 奇米四色影视777久久久| 亚洲色人妻综合| 欧美色交| 亚洲欧美国产其他二区| k频道色撸撸| 岛国1区2区3区在线观看| 色九九综合| 伊人四虎综合| 脫衣舞一区二区三区| 神马久久网| 精品无码久久久久久久久果冻糖心| 婷婷色播婷婷| 久久久夜夜嗨免费视频| 亚洲三级网址久久最新| 精品亚洲俞拍视频一区| 中文子幕一二三| 老熟女91视频| 国产午夜福利电影免费在线观看| 精品国模无码| 五十路熟女人妻一区二区在线观看 | 长长久久曰曰夜夜成人网| 丝袜美腿av女优在线| 天天综合精品| 99re99在线视频| 天天92av| 超碰综合97在线| 婬女免费一二三区A片| 欧美精品69性爱| 免费簧片在线观看| 亚洲精品丝袜| 后入综合久久| 国产探花日韩援交| 国产按摩一区二区三区| 日本天堂网| 久色99999| 深夜视频| 久久香蕉国产线看观看猫咪av| 国产一| 亚洲成人美女无吗| 九久久精品| 五月婷婷影院| 加勒比综合88| 丁香婷婷久久| 日韩99999色| 中文字幕欧美精品亚洲日韩蜜臀| 色婷亚洲五月在线观看| 亚洲一二三四区| 香蕉99秘 精品一区丁香| 亚洲网站一区二区在线| 伊人97色天使| 亚洲国产av中文字幕久久| 伊人久久大香线综合无码| 国语av最新自产拍在线观看| 精品久久久久,69国产成人精| 麻豆黄站| 国产精品人妻无码久久久老鸭窝 | 麻豆久久精品亚洲精品88| 国产精品。| 五月婷婷综合网| 亚洲日韩美国人妻| 精品亚洲成人免费在线| 友优传媒精品在线一区二区| 色五月天AV| 91在线综合网| 亚洲欧洲视频小说在线观看| 俞拍久久国应视频| 国内自拍 日韩激情 99| 欧美日韩香蕉| 男女无套 免费网站| 亚欧美色| 中文字幕熟女人妻丝袜| 大逼色网站| 97久久久久久久久久| 神马九九九| 亚洲高清男人天堂| 色香91| 后入福利| 精品美女少妇一区二区| 男人的天堂Va| 久久美女国产| wwwss在线观看| http://qxhbdz.com| AV天天在线观看| 国产超碰国产97| 中美日韩毛片| 日本免费一区二| 色综合加勒比四四季| 91视频国品一二三区| 午夜精品一区二区三区三上悠亚| 少妇高潮99p| 欧美色综合影院| 78精品| 99这里只有精品国产| 麻豆乱码久久精| 天天操天天干美女网址导航| 探花一区在线| 影音先锋少妇| 国产不卡精品91| 久久国产精品一级二级三级| 青青草导航在线视频| 美腿色图| 久久夜精品一区二区三区| 久久久久婷婷精品av电影| 久噜噜| 亚洲综合首页| 99热18这里只有精品| 亚熟hd视频在线| 亚洲伊人成综合成人网| 中国熟女91| yw尤物av无码点击进入麻豆| 亚洲人天堂| 国产理论视频在线播放| 色情婷婷| 人妻黑丝袜电影| 啊啊啊好多水| 精品黑人一区二区| 67194无码不卡| 嫩草91| 亚洲欧美综合图片| 国产中文大片资源中文字幕| 婷婷色在线| 青青操在线视频| 插B在线观看| 久久97资源 网| 男人的天堂com| 一级性爱视频免费观看| 人人插人人搞人人操| 操人妻逼91| #NAME?| 国产综合色精品在线观看| 成人综合久久精品色婷婷| 一本大道综合伊人精品热热| 亚洲综合有码| 九九性爱网| 东北操逼| 中文字幕日韩人妻视频一区二区三区| 国产日本熟女顶级一区二区三区视频| www.久久久久| 99亚洲精品| 亚洲情色1区| 一本一道人妻久久一区二区三区| 亚洲一区日韩| 女优免费一区二区永久| 国产 三级自拍| www.91色| 97超碰天天爱天天爱| 色牛aV| 激情终合网| 国产午夜无码片在线观看影视| 男人的天堂2019| 天天谢天天干| 欧美 色 亚洲| 亚洲熟女乱综合一区二区三区| 国产精品久久久无码AV网站| 少妇高潮九九九九九九九| 综合自拍| 国产一区二区二区按摩精品啪视频| 91肏屄网| 高清国产成人无码| 亚洲 综合 欧美| 久久久蜜桃臀无码视频| 欧美夜夜草视频| 亚洲阿v天堂在线| 97电影院超碰| 明星性猛交ⅹxxx乱大交| 爱欲AV| AV色图| 黄色片一区二区三区四区五区| 天天看特黄的免费网站| 亚洲AV秘无码一区..| 精品乱码久久久久| 欧美视频边做饭边橾| 欧美性高潮| 欧美成人精品一区二区三区| 国产曰批免费观看久久久| 久久宗合亚洲| 伊人久久88国产女| 综合av社区| 综合九九| 国产亚洲色婷婷久久99精品91葵花宝典| 国产精品天干天干综合网麻豆| 探花精品视频| 操国产逼| 亚洲图片 欧美电影| 久热69九色熟妇97| 美女写真| 91社区伊人| 男人的天堂无码| www.狠狠| 欧美性爱日韩性爱| 久久久一区二区三区四区五区| 亚洲人人操| 亚洲免费成人在线高清无码视频| 婷婷五月天激情四射| 99热在线播放| 國產尤物AV尤物在線觀看| 狠狠操狠狠操操| 99福利社| 做爱福利视频一区二区| 九九九九九九九精品视频| 欧美日韩国产三级黄色| 97超碰站| av婷婷色网| 五月天色色色| 欧美 亚洲 另类 综合| 另类老少妇| 国产在线视频二区| 91超碰在线| 大色综合| 欧成人在线| 国产视频97| 亚洲91大片| 精品999日本| 欧美激情片一区二区| 欧美日不卡| 成人av性爱电影在线观看| 色色综合97| 日韩在线视频1234| 男人的天堂三级| 色婷婷狠狠| 97超碰9| 日韩在线一区高清在线| 色拍偷亚洲| 亚洲情欲| 本道综合精品| 色眯眯av| 日韩激情视频| 九九九综合精品| 韩国一级做A片免费的| 91欧洲国产成人久久精品网站| 久久国产999| 伊人97色天使| 夜夜一区二区| 思思热免费在线视频| 亚洲图片欧美色图| 久久久久久久久久久久色网| 国产精品 午夜福利| 99热精品在线观看| 国产女人91精品嗷嗷嗷嗷| 男人天堂网站| 偷拍视频青青草在线视频| 亚洲性感丝袜诱惑在线观看| 欧美综合色站| 蜜臀AV一区二区三区激情综合| 免费一级a毛片久久久久久鸭绿欲| 久久久久久久久久久久97| 欧美性暴力猛交XXXX| 99这里只有精品| 色综合av男人天堂| V A在线| 亚洲欧美日韩中文播放 | 亚洲AV成人在线| 免费精品人妻一区二区三| 狠狠婷婷亚洲中文综合久久| 欧美色图第一页| 午夜一区| 校园春色亚洲| 啊v在线观看视频| av天堂电影网| 酒色综合网| 男女一进一出视频久久| 久久久久ab| 日韩精品一区二区三区色欲 | 国产亚洲女v在线观看| 女性喷水高潮在线观看| 日韩欧美日韩| 欧美久久人人网| 久久系列| 97爱亚洲| 日本性爱视频一级| 免费久久一级毛片大黄| 午夜亚洲国产理论秋霞| 人妻 中文 日韩| 久久无码成人| 综合婷婷| 天天干天天日天天射黄色| 国产av波波国产精品| 成年人三级黄色片视频| 欧美裸体美女日麻屄| 十八禁视频一区二区| 澳门特级毛片免费观看| 无码人妻一区二区一牛影视| 搡老女人老91妇女熟女| 亚州色图欧美色图| 大香蕉在线SuP| 一区二区亚州激情久婷婷欧美| 亚洲经典啪啪| 老女人爆菊| 亚av顶级裸体一区二区三区四区五区| 精品人妻一区二区蜜桃视频| 亚洲国产丝袜熟女av| 天堂а√在线最新版在线| 99热只有这里有精品| 久久久久日本视| 男女性扦B| 欧洲精品二区| 97人人夜夜精品视频| 无码人妻精品一区二区三区99不卡| 久久久久久精品免费看A级| 中日韩欧美精品无码AⅤ一区二区| 日韩视频啪啪| 麻豆性爱视频在线播放| 人妻丝袜日本| 99精品成人免费看| 久久爱超碰网| 精品无码秘 人妻一区二区| 亚洲一区二区三区播放在线| 狠狠欧美| 91美女小视频| 大地资源在线观看中文第二页 | av绯色| 超碰人妻久久人妻中文97| 人人妻人人爽一区二区三区| 无套内射性感少妇视频| 色综合超碰超| 最近2019中文字幕国语免费版| 久久精品视频久久久| 青青草公开在线免费不卡视频| 懂色av色欲av蜜臀av| 麻豆视频test| 国产强奸乱伦欧美| 国产精品免费视频不卡| 精品大全99999| 丁香六月天| 欧美熟妇亚洲版| 亚洲性天堂| 日韩在线观看中文字幕视频| 国产超碰在线一区| 男女激情黄色网址| 欧美人妻少妇| 青草视频人妻在线观看| 欧美性爱日韩性爱| 51一区二区三区| www.五月天| 欧美十八禁视频| 99这里只有精品| 男人的天堂VA| 91爱做| 中文字幕在线日亚洲9| 操国产高清| 国产精品网站免费 | 99久久无码| 无码一区二区三区四区五区六区七区八区九区十区视频 | 伊人热综合| 99热导航| 99在线精品视频| 四季av一区二区凹凸精品小说| 在线观看成人性爱免费小视频| 久久精品老司| 免费AV播放| 超碰无码加勒比| 九九九九九用不成了| 日韩一级特黄av毛片| 综合熟妇一区二区三区| 97天天搞在线| 国产人伦a片信息免费片| 日天天九九天堂666| 嗯嗯啊啊视频在线看| 尤物网站91| 亚洲综合九| 自拍偷拍 日韩无码| 久久αⅴ| 亚州成人A√| 99操逼| 欧美,日韩综合久久| 亚洲精品一区二区日本| 99少妇| 亚洲一区二区av| 夜夜嗷嗷一区二区| 男人的天堂色偷偷青青草视频婷婷网| 岛国片在线观看视频亚洲| 国产精品永久免费10000| 老司机福利社视频在线观看| 偷拍片久久| 91N综合网在线| 亚洲AV在线资源| 亚洲天堂美臀在线| 欧美大色交| 九久久精品| 春色综合免费| 久久是精品| 亚洲精品熟妇1区2区3区。| 亚洲熟女一区二区| 清纯唯美第一页| 91日韩网站| 火箭成精品视频884必出精品| 欧美在线天堂| 久久久久久久强迫| 国产黄色剧情影片麻豆免费播放| 色噜噜人妻av中文字幕| 九久精品| 亚洲天堂另类| 少妇被c 黄 免费观看| 亚洲AV无码翔田千里网站| 婬女免费一二三区A片| 青青草视频久久久久| 99re99在线视频| 天天综合网日韩7799| 天天做天天爱天天高潮| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 91 国产丝袜在线放观看| 啊啊啊啊,啊啊好多水| 中文字幕天堂在线| 男人的天堂啪啪| 欧美91精彩| 97资源久久| 久久久久婷婷| 90后后入| 黑人精品XXX一区一二区| 日本三级日本三级99| 人妻日日夜夜精品| 久久久九| 免费公开人人操| 美女啪欧美一区| 亚洲欧洲中文日韩女优乱码| 中文字幕视频2区| 蜜臀在线视频| 五月色网| 亚洲欧美综合网 | 亚洲天堂另类小说男人| 精品久久久久成人码免| 日韩免费三级黄片电影| 日韩三级网址| 国产高清精品一区二区三区毛片| av东京热男人的天堂| 欧美日韩美女精品久草一区二区三区 | 亚洲最新Av| 9 9精品一区二区三区| 亚洲 欧美 另类 日韩 人妻一区| 中国一级αV| 欧洲精品网| 九九无码视频| 国产精品久久久啊| 新97国产超碰| 国产 码在线成人网站| 欧美色涩| 久久久少妇诱惑精品视频| 人人色人人操在线| 亚洲中字幕日本一区二区三区| 天天夜夜久久| 人人操人人狠狠操| 国产成人在线观看网址| 久久国产999| 亚洲欧美精品一区天堂久久 | 国产精品扒开腿做爽爽爽视频| 欧美黑人性猛交91| 上海一级黄片| 九九久久久| 中文字幕丝袜美腿| 中文字幕 国产 精品| 狠狠操,使劲操| 青操影院| 91美腿丝袜在线观看| 日本在线播放不卡一区| av网站免费线看| 资源新线在线天堂| 色综合加勒比四四季| 99re视频在线观看这里只有精品| av午夜影院在线播放| 精品蜜乳AV免费观看| 99re欧美| 亚春色色| 亚洲影视高清第一页| 中文字幕丝袜美腿| 大香蕉宗合网在线| 五十路三级片| 亚洲第一狼人丝袜美女另类| 中文字幕国产在线天堂| 伊人麻豆传媒| 天堂亚洲精品久久老牛| 97色亚洲| 国产操偷| 色偷综合| 色婷网| 欧美性后入| 久久超碰com| 久久九色| 性色AV蜜色av色欲av| 中国大陆国产高清AⅤ毛片| 操逼www.| 99这里有精品| 欧美日韩淫加| 久久天天躁日日躁狠狠躁| 热久日综合| 精产国品一区二三产品| 91精品在线播放| 欧美在线大香999| 91九色丨风韵犹存| 人妻少妇无码| 97精品视频在线播放| 激情图片亚洲色图| 欧成人在线| 久热久一区二区三区| 久久綜合很很很| 91强在线播放| 欧美一二三级精品在线| 密臀AV在线| 午夜理论片在线观看免费| 丝袜AV一二三区| 亚洲一区二区三区播放在线| 色臀AV| 色色99| 蜜桃久久综合视频| 久久毛卡| 亚洲欧美综合网| xxx亚洲午夜天堂| 欧美精品自慰系列寂寞少妇 | 99国产女人| 四虎 精品 WWW| 被体育老师抱着c到高潮| 日韩97| av草草在线电影| 亭亭丁香激情| 久色网| 岛国黄| 天堂性色| 97天天在线| 九一亚洲国产免费| 天美麻花大全视频| 在线欧美69V免费观看视频| 青青草一区二区高清无码视频| 日日干男人的天堂| 人妻熟女av国产网站| 国产av激情无码久久天堂| 精品国产乱子伦一区二区三区,精品一| 人人操欧美风骚| 欧美一区二区亚洲天堂| 男人的天堂2019AV| 日本精品久久久久久久| 一区二区三区一亚洲中文字幕、综合区灬 | 日本午夜福利影院| 青青草中文-久久青草精品一区二区三 | 人妻少妇精品久久久久久| 亚洲中字幕日本一区二区三区| 男女啪啪啪18禁网站| 日本欧美国内在线| 久久久18禁| 精品在线78| 懂色AV蜜臀无码精品APP| 五月丁香色婷婷| 大白逼三四级| 久99热| 福利一级版子| 欧美另类综合久久| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 男人的天堂 在线一区| 天天狠操| 97爱b| 国产精品成人福利在线| 夜夜操一区二区| 亚洲乱码国产乱码精网站| 亚洲天天自拍| 少妇人妻精品| 男人天堂久久精品| 中文字幕亚洲热播人妻 | 国产av美女被艹的乱叫| 男人的天堂com| 亚州中文字幕超碰97| 99热在线观看| 狠狠中文字幕| 亚洲中文字幕av | 少妇一级婬片免费放一级a性色.| 久久精品夜色国产亚洲AV| 国产女生在线| v91av| 久久9999| 九九毛片这里只有精品| 8050午夜少妇无码| 国产大陆天天艹| 亚洲欧美另类小说| 免费国产| 欧美国产成人在线| 精品国产一区二区久久| 丁香五月激情啪啪| 在线性黄高清免费视频| 国产成人一级av88| 操www| 一起草三级AV电影在线观看 | 男人天堂2012| 久久中文色图| 日韩一级欧美一级国产一级台湾| 青青草原成人| 中文日韩欧美熟| 欧美性天天影院| a片亚洲一本通视频| 色眯眯av| 91亚.色| 欧美激情精品| 亚洲欧洲av影音| 尤物黄色在线观看网站| 国产成人欧美一区二区三区的国产| 国产精品麻豆视频网站| 丝袜熟女一区二区三区| 操逼日韩无码 | 新版天堂中文资源8在线| av午夜影院在线播放| 人妻人人操| 内射白嫩美女| 亚欧美综合网。| 密臀在线视频| 老司机午夜精品视频| 天天操天天干一区二区| www激情| 欧美久久婷婷| 欧美97av| 韩日性爱av| 97自拍视频在线| 久久111| 人妻少妇精品久久久久久久| 一本精品日本在线视频精品| 亚洲宅男天堂| 亚洲资源网| 欧美夜夜草视频| av一区二区三区 中文| 精品小视频在线| 国产sv美女内射| 久久性爱网站| 97色视频在线| 84YTCOM性无码| 久久曰曰| 安微少妇操BBB| 黑人狂躁日本妞一区二区三区| 日本特黄f c2| 欧美色另类| 99ri视频| 欧美日韩欧美| 久久久激情| 久久精品噜噜噜成人看免欧美大片| 日韩性爱1级片视频| 英伦大奶子熟妇吊带| 亚洲天堂欧美| 奸色色 男人天堂 天天射| 91老司机精品| 久久久一级| 思思热一热婷婷热一热| 天美传媒AV国产在线| 久久午夜鲁丝片| 诱惑人妻欧美一区在线播放| 免费1级a做爰片观看| 亚洲精品天天影视综合网| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 精品国产一级久久| 绯色一区二区三区不卡少妇| 天美传媒麻豆一区二区三区国产精| 日韩八十路老熟女| 一区二区三区四区久久视1| 变态乱伦伪娘灌肠一区二区| 国产精品69久久久久孕妇欧美| 99青草| 国产精品人人爽人人做可爱福利| 亚洲精品国产熟女久久久| 久久免费老司机精品| 国产自产一区视频在线| 久久女人| 97在线观看免费| 婷婷另类小说| 99这里只有精品| 狠狠久久手机视频精品| 丝袜喷水在线| 亚洲国产一级精品毛一级精品看免费视频 | 日韩一级二级三级| 一类无码操逼视频| 国产传媒日本欧美专区| 人人爱人人乐人人操| 99久久婷婷| 99精品视频在线观看免费| 婷婷久热| 国产熟女无套内射| surenchaopeng| 丝袜美腿诱惑亚洲欧美视频在线观看| 亚洲国产成人精品999| 九九九偷拍| 1024手机看片欧美日韩| 久草精品热视| 天天天天干| 一区二区三区黄片免费观看| 韩国午夜理伦三级好看| 岛国1区2区3区在线观看| 久久高清欧美国产| 国产精品一区二区亚洲人成毛片| 噜噜噜噜久久久精品免费| 久久精品99久久久久久| 天天爽夜夜欢视| 欧美黑人猛交春色影视大全| 色五月首页| 婷婷五月激情综合| 日本肉体xxxx裸交| 日本国产欧美高清在线| 日本欧美韩国国产在线| 一级性爱视频免费观看| 大肥女高潮bbwbbwhd视频| 欧美色图 色综合图| 久久岛国| 秋霞色色影院| 99久久久久久亚洲精品不卡| 日韩一区二区精彩视频| 国产狂喷潮在线精品| 乱伦熟妇一区二区| 色黄污美女啪啪啪免费网站| 免费久久一级毛片大黄| 亚洲国产欧美一区二区潘金莲| 91看黄片| 日va操| 日本岛国黄色网址| 欧美成人精品一区二区男人蜜臀| 九九热精品免费视频| 国产青视频| 成人久久久精品| 天天操妹子| 1769一区| 久久国内| 精品视频久久久久九九九九9999| 第二页中文字幕| 91老熟女老女人国产老太| 欧美日日人人天天| 色噜噜国产精品视频一区二区| 日韩一级性爱无码| 精品黑人一区二区| 大香蕉手机在线视频| 校园春色综合香蕉| 亚洲一二三四区| 啪啪资源网| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 97干在线看| 丰满人妻一区二区中文| 97爱爱爱| 婷婷久久久| 黄久在线| 无码人妻精品一区二区中文| 天天爽夜夜操| 久久↗↗| 免费观看的黄色的网站| 嗯嗯嗯啊啊啊在线免费观看| 中文字幕欧洲有码| 久久亚洲AV成人精品无码| 国产999精品久久久| 超碰在线综合97| 久久草大香蕉| 青青草一区二区三区四| 看免费一级在线播放毛片| 大奶啊啊好爽| 青青免费在线视频一区| 欧美少妇性乱| 曰韩精品九九无码| 亚洲激情综合另类男同| 9 1超碰九色| 99热精品青草在线| 天天综合网91入口| 欧美亚洲天天| 欧美亚洲尤物久久| 九九九九日本 | 天天久久久久久| 一本大道青青| 麻豆国产精品午夜视频| 中国一级特黄大片护士| 亚州熟女乱伦| 欧美综合网1| 精品久久久亚洲AV成人网站| 97久久国产| 日本一区99| 黄片色区软件| 超碰95| 亚洲中文电影| 色色婷婷五月| 午夜欧美精品久久久| 伊人五月天| 亚洲中字幕日本一区二区三区| 日韩精品 资源| 亚洲成人无码影院| 91在线精品一区二区三区| 日韩卡一卡二卡三在线| 亚洲色图国产另类| 男男H黄动漫啪啪无遮挡网站| 欧美区亚洲区偷拍区| 69人妻人人揉人人躁人人精品| 金典av| 欧亚性爱在线视频| 久久9 9 9精品| 无码人妻丰满熟妇奶水区毛片| 一道本东京热加勒比一区二区三区| 天天射影院| 天天透伊人| 乱久久久| 国产精品97超碰| 国产热av| 蜜臀AV一区二区三区| 久久久91福利姬| 91制服丝袜中文字幕| 一区二区高清视频| 黄片视频观看| 69人妻精品丰满熟女区| 天天躁日日躁AAAAXXXX国产 | 午夜精品人妻二区三区| 欧美专利1区2区3区4区5区免费| 韩国黄色片精品久久久| 福利社区午夜一区二区| 国产精品久久久久久久无码AV| 大色网久久| 精品国产乱码久久久久久免费| 国产第二页| 97色97好| 国产成人自拍视频视频| 免费人人搞97| 日本超碰色精品| 91黑丝美女| 日日干男人的天堂| wwe 天天干.com| 色婷婷综合久久中文字幕雪峰| 日本天天吊| 欧美性特| 亚洲熟女乱色一区二区三区| 国产欧美日韩臀| 嗯啊抽插大香蕉网页| 亚洲综人| 78综合网| 国产曰批免费观看久久久| 97精品久久久久中文字幕| av凤凰久久久| 春色综合网| 麻豆区99999| 午夜理论片在线观看免费| 激情五月天色色| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 欧美一级A片在线看视频性色| 一级啊性爱在线视频| 国产这里只有精品| 久久久999网站| 精品妇操一区二区三区| 九九九九精| 久久国产免费激情视频| 五月丁香综合啪啪| 97硬碰| 99热在线只有精品| 99re免费视频精品全部| 亚洲国产日韩欧美熟妇在线| 日韩在线视频1234| 粉嫩av一区二区三区四季| 蜜臀99久久| 亚洲四虎熟女精品| 91被操| 色臀AV| 日本不卡中文| av72网| 天天日天天舔东京热 | 99热| 久草福利在线资源站| 中文字幕天堂在线| 欧成人精品一区二区三区| 殴洲老熟女| 中国农村熟妇毛片视频| 激情综合五月婷婷| 亚洲AV色图一区| 国产区91柔拿会所技师| 69AV女优男人的天堂| 91 丝袜在线播放| 亚洲操逼网| 亚洲AV色图一区| 美女极品一区二区三区| 你草精品在线视频| 最新日本中文字幕| 亚洲aw毛茸茸在线| 婷婷伊人五月| 超碰 另类 欧美 | 射综合网| 亚洲熟妇自偷自拍另欧美| 久久久一区二区三区麻豆| 免费在线观看国内色片网站网址| 91激情网| 狠狠激情综合狠狠操中文字幕| 日本孕妇孕交| 肉嘟嘟www视频在线观看高清| 亚拍在线| 成人a大片在线观看| 亚洲字幕一区二区| 亚洲欧美天堂在线| 日本理论在线| 欧美成人9797| 爱丝福利| a片在线播放| 丁香六月啪| 久插综合| 啊啊啊好多水| 91九色在线| 久久伦理视频久久大香蕉视频| 日本媚薬中文字幕在线| 欧美精品成人在线播放| 无码heyzo高清一区| 五月天激情小说| 强奸乱伦日韩AV| 在线国产福利网址导航| 成年无码动漫av片无尽在线| 狠狠干妹子| 大香蕉手机在线视频| 97 国产一区| 精品少妇一区二区三区| 欧美成人免费在线观看| 3d成人精品一区二区| 男人天堂久久精品| 欧美九9 9 9| 极品尤物自安慰| 国产一区二区三区免费视频在性观看 | 亚洲欧美清纯| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 亚洲涩涩| 欧美久久伊人| 国产成人五月天丁香花| 玖玖资源视频一区二区三区| 黄色av播放免不| 亚洲色图加勒比| 亚洲 日韩 欧美 国产综合体| 精品美女在线视频| 测评在线观看AV| 亚洲做性| 2020中文字幕在线| 91性| 97国产伦理| 插入粉嫩少妇视频| 97精品国产精品免费观看| 精品人妻视频一区二区三区蜜桃视频| 97资源站国产精品| 最近2019中文字幕国语免费版| 啊啊好多水| 国产成人欧美精品在线| 日本三级韩国三级99| 中文字幕青青草| 天天躁日日躁XXXXYY| 欧美熟女丝袜| 亚洲阿v天堂无码z2018| 中文字幕88av在线| 日韩免费簧片| 91在线限制级| 欧美一级黄色免费专区| 成人影 天天操 亚洲| 亚洲福利影院一区久久| 五月黑AⅤ| 久久夜夜| 在线综合 亚洲 欧美中文字幕 | 国产精品麻豆视频网站| 欧美韩国你懂得在线 | 久久东京热久久| 黄色AV影视| A 天堂| 西西美女视频网|