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

ARTICLE DETAIL

資訊詳情

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

SpringBoot管理系統(tǒng)開發(fā)實(shí)戰(zhàn):從數(shù)據(jù)模型到部署的安全加固全鏈路

SpringBoot管理系統(tǒng)開發(fā)實(shí)戰(zhàn):從數(shù)據(jù)模型到部署的安全加固全鏈路 SpringBoot做管理系統(tǒng)算是Java后端里最扎實(shí)的“吃飯手藝”了。不管你是做畢業(yè)設(shè)計(jì)、企業(yè)內(nèi)部后臺(tái)還是接手外包項(xiàng)目幾乎天天都要和它打交道。我這些年陸陸續(xù)續(xù)用SpringBoot做過學(xué)生選課、倉(cāng)庫(kù)出入庫(kù)、資產(chǎn)盤點(diǎn)、新聞發(fā)布之類的系統(tǒng)從最早手寫SSM配一堆XML到后來SpringBoot Vue 3前后端分離踩過的坑比寫過的接口還多。這篇文章想把這套東西從需求分析、表結(jié)構(gòu)設(shè)計(jì)、工程搭建、安全加固到部署的完整鏈路按照我自己的實(shí)際操作經(jīng)驗(yàn)從頭理一遍給正在做管理系統(tǒng)或者準(zhǔn)備拿它做畢設(shè)的同學(xué)一個(gè)能直接參考的底稿。先說清楚一件事網(wǎng)上搜“springboot管理系統(tǒng)”能出來一大堆開源項(xiàng)目仿佛這東西就是幾個(gè)增刪改查頁(yè)面拼一起。但真到自己從零設(shè)計(jì)開發(fā)的時(shí)候你才會(huì)發(fā)現(xiàn)光是一個(gè)權(quán)限模型就能讓人改到懷疑人生。所以這篇文章不會(huì)只貼代碼我會(huì)把每個(gè)關(guān)鍵決定背后的原因、踩坑記錄、排查思路全部寫出來爭(zhēng)取讓你看完之后能真正獨(dú)立把一個(gè)管理系統(tǒng)做出來、跑起來、部署出去而不是停留在“能啟動(dòng)”的層面。1. 先想清楚管理系統(tǒng)的本質(zhì)與整體架構(gòu)設(shè)計(jì)1.1 管理系統(tǒng)真不只是CRUD我見過太多人一拿到“XX管理系統(tǒng)”題目就開始建表寫接口結(jié)果做到一半發(fā)現(xiàn)業(yè)務(wù)邏輯繞成一團(tuán)。其實(shí)管理系統(tǒng)的本質(zhì)是把線下的業(yè)務(wù)流程搬到線上讓數(shù)據(jù)流轉(zhuǎn)變得可追蹤、可統(tǒng)計(jì)、可控制。就拿最簡(jiǎn)單的學(xué)生選課管理系統(tǒng)來說表面上是學(xué)生選課、老師開課、管理員管數(shù)據(jù)但背后是課程容量校驗(yàn)、選課時(shí)間窗口、退課規(guī)則、成績(jī)錄入權(quán)限分配這一連串業(yè)務(wù)規(guī)則。所以動(dòng)工之前我強(qiáng)烈建議先畫一張業(yè)務(wù)流程圖把角色、動(dòng)作、狀態(tài)列清楚。比如庫(kù)存出入庫(kù)管理系統(tǒng)你要回答幾個(gè)問題入庫(kù)單由誰創(chuàng)建審核通過后庫(kù)存才能增加嗎出庫(kù)時(shí)庫(kù)存不夠怎么辦盤點(diǎn)差異怎么處理這些問題沒想清楚后面返工成本極高。另一個(gè)容易被忽略的點(diǎn)是“狀態(tài)機(jī)”。很多管理系統(tǒng)的核心表都有一個(gè)狀態(tài)字段比如訂單有待審核、已審核、已駁回、已完成資產(chǎn)申請(qǐng)有借用中、已歸還。狀態(tài)流轉(zhuǎn)不是隨意跳轉(zhuǎn)的每個(gè)狀態(tài)能執(zhí)行什么操作、由哪個(gè)角色觸發(fā)在設(shè)計(jì)階段就要定義清楚。我習(xí)慣用一張狀態(tài)流轉(zhuǎn)表把a(bǔ)llowed transitions寫出來代碼里再做狀態(tài)校驗(yàn)而不是每個(gè)接口都寫一遍if else。1.2 技術(shù)選型為什么是SpringBoot為什么前后端分離不少初學(xué)者會(huì)問現(xiàn)在還有人用SSM嗎要不要學(xué)Spring Cloud我的建議很直接單體管理系統(tǒng)就用SpringBoot別想太多。SSM時(shí)代最痛苦的就是那一堆繁瑣的XML配置數(shù)據(jù)源、事務(wù)、MyBatis映射要來回調(diào)。SpringBoot把自動(dòng)配置、內(nèi)嵌Tomcat、起步依賴這些做成了開箱即用的東西一個(gè)注解就能啟動(dòng)項(xiàng)目這對(duì)于管理系統(tǒng)這種業(yè)務(wù)密集、技術(shù)復(fù)雜度不高的場(chǎng)景來說開發(fā)效率提升是非常明顯的。前后端分離我強(qiáng)烈推薦SpringBoot Vue 3的組合。后端只提供RESTful API前端負(fù)責(zé)頁(yè)面渲染和交互兩邊通過JSON通信。這樣做的好處不只是分工清晰更重要的是部署靈活后端可以單獨(dú)打包成jar跑在服務(wù)器上前端build完扔到Nginx里就行后續(xù)要加微信小程序端或者App端后端接口可以直接復(fù)用。我第一次做前后端分離項(xiàng)目時(shí)還不太習(xí)慣總覺得模板引擎Thymeleaf省事但經(jīng)歷過一次前端頁(yè)面頻繁改版之后我徹底倒向分離架構(gòu)了——接口穩(wěn)定頁(yè)面隨便改心里踏實(shí)。當(dāng)然技術(shù)選型也不要走極端。如果你只是做一個(gè)內(nèi)部幾十人用的小工具單體單庫(kù)完全夠用不要為了簡(jiǎn)歷好看硬上微服務(wù)、消息隊(duì)列那只會(huì)給自己挖坑。管理系統(tǒng)的核心矛盾永遠(yuǎn)在業(yè)務(wù)模型和數(shù)據(jù)一致性上不在架構(gòu)規(guī)模上。2. 數(shù)據(jù)模型設(shè)計(jì)權(quán)限模型、主鍵策略與自動(dòng)建表2.1 RBAC權(quán)限模型管理系統(tǒng)通用底座管理系統(tǒng)幾乎都逃不開用戶、角色、權(quán)限這套模型業(yè)界最成熟的就是RBAC基于角色的訪問控制。簡(jiǎn)單說不直接給用戶分配權(quán)限而是給角色分配權(quán)限再把角色賦予用戶。這么做的好處是當(dāng)公司有新人入職時(shí)管理員只需要給他配一個(gè)“普通員工”角色他自然就有了該角色下的一批菜單和按鈕權(quán)限而不是一條條去勾選。我常用的RBAC表結(jié)構(gòu)是5張表用戶表、角色表、權(quán)限表、用戶角色關(guān)聯(lián)表、角色權(quán)限關(guān)聯(lián)表。用戶表存賬號(hào)密碼、姓名、狀態(tài)、部門ID這些基本信息角色表就是管理員、老師、學(xué)生這類權(quán)限表可以細(xì)分到菜單權(quán)限、按鈕權(quán)限比如“用戶管理-新增按鈕”就是一個(gè)權(quán)限記錄。查詢用戶權(quán)限的時(shí)候通過用戶ID關(guān)聯(lián)出角色I(xiàn)D再通過角色I(xiàn)D關(guān)聯(lián)出權(quán)限集合最后在Spring Security里做權(quán)限判斷。這里有個(gè)設(shè)計(jì)經(jīng)驗(yàn)權(quán)限表里最好加上權(quán)限類型字段區(qū)分目錄、菜單、按鈕。前端動(dòng)態(tài)路由要根據(jù)菜單權(quán)限生成側(cè)邊欄后端接口要校驗(yàn)按鈕權(quán)限兩者共用同一份權(quán)限數(shù)據(jù)就不容易出現(xiàn)“菜單能看到但接口調(diào)不通”的尷尬情況。權(quán)限數(shù)據(jù)變更后可以通過Redis緩存用戶權(quán)限避免每次請(qǐng)求都查一次數(shù)據(jù)庫(kù)。2.2 主鍵生成策略與公共字段主鍵ID這塊我需要單獨(dú)說一下因?yàn)楹芏嘈率种苯舆x了數(shù)據(jù)庫(kù)自增ID結(jié)果做分庫(kù)分表或者數(shù)據(jù)遷移時(shí)后悔不已。管理系統(tǒng)的數(shù)據(jù)量雖然不大但為了以后擴(kuò)展和省心我建議使用MyBatis-Plus內(nèi)置的雪花算法生成ID。雪花ID是Long類型趨勢(shì)遞增不像UUID那樣無序?qū)е滤饕阅芟陆刀胰治ㄒ徊灰蕾嚁?shù)據(jù)庫(kù)自增。另外每張業(yè)務(wù)表我都強(qiáng)烈建議加上幾個(gè)公共字段create_time創(chuàng)建時(shí)間、update_time更新時(shí)間、deleted邏輯刪除標(biāo)記0未刪1已刪。特別是邏輯刪除管理系統(tǒng)里很多數(shù)據(jù)不能物理刪除比如訂單要留痕、用戶注銷要保留審計(jì)日志用邏輯刪除可以隨時(shí)恢復(fù)數(shù)據(jù)。配合MyBatis-Plus的邏輯刪除插件所有查詢自動(dòng)帶上deleted0條件刪除操作自動(dòng)變成update非常省事。說到時(shí)間字段我踩過一個(gè)坑MySQL的datetime用Java的LocalDateTime映射沒問題但如果用默認(rèn)的CST時(shí)區(qū)連接串?dāng)?shù)據(jù)庫(kù)存的時(shí)間和頁(yè)面顯示的時(shí)間可能差8小時(shí)。我現(xiàn)在的習(xí)慣是連接串統(tǒng)一加serverTimezoneAsia/Shanghai實(shí)體類用LocalDateTime前端統(tǒng)一顯示格式化后的字符串避免各種時(shí)區(qū)換算的坑。2.3 通過MyBatis-Plus實(shí)現(xiàn)表不存在自動(dòng)建表管理系統(tǒng)開發(fā)過程中最煩的就是頻繁改表結(jié)構(gòu)每次都要打開Navicat手動(dòng)執(zhí)行SQL。尤其是團(tuán)隊(duì)協(xié)作時(shí)別人改了表忘了同步代碼跑起來直接報(bào)“Table doesnt exist”。后來我搜到一個(gè)解決辦法就是利用MyBatis-Plus的DDL自動(dòng)建表能力在項(xiàng)目啟動(dòng)時(shí)讀取建表SQL腳本發(fā)現(xiàn)表不存在就自動(dòng)執(zhí)行。具體實(shí)現(xiàn)思路是在resources目錄下維護(hù)一個(gè)schema.sql里面用CREATE TABLE IF NOT EXISTS語句建表然后寫一個(gè)ApplicationRunner在SpringBoot啟動(dòng)完成后執(zhí)行這個(gè)腳本。這里要用到spring.sql.init.schema-locations配置或者自己用JdbcTemplate執(zhí)行ScriptUtils。需要注意的一點(diǎn)是如果表結(jié)構(gòu)后續(xù)有變更CREATE TABLE IF NOT EXISTS不會(huì)幫你加字段只能兼容首次建表。字段變更我會(huì)用Flyway來做版本化遷移把V1__init.sql、V2__add_column.sql這種腳本按順序執(zhí)行。注意自動(dòng)建表只適合開發(fā)環(huán)境和demo演示正式環(huán)境務(wù)必關(guān)閉自動(dòng)執(zhí)行或者只允許通過遷移腳本變更否則線上數(shù)據(jù)被誤操作就很危險(xiǎn)。3. 工程搭建、配置加密與統(tǒng)一返回3.1 創(chuàng)建項(xiàng)目的版本選擇與踩坑如果你打算用IDEA從Spring Initializr創(chuàng)建SpringBoot項(xiàng)目網(wǎng)絡(luò)不好時(shí)可能會(huì)出現(xiàn)創(chuàng)建超時(shí)。這時(shí)候可以手動(dòng)修改創(chuàng)建URL為阿里云鏡像地址https://start.aliyun.com速度會(huì)快很多這是我當(dāng)時(shí)折騰半天總結(jié)出來的經(jīng)驗(yàn)。版本選擇上Spring Boot 3.x要求JDK 17而很多學(xué)校或者企業(yè)還在用JDK 8如果你對(duì)版本兼容性沒把握我建議用Spring Boot 2.7.x。這個(gè)版本是目前兼容性最穩(wěn)的既能用JDK 8也能平滑升級(jí)到2.x的最后一版網(wǎng)上資料也最多。等后續(xù)確實(shí)需要升級(jí)到3.x再慢慢遷移。熱詞里有人搜“springboot版本太高”導(dǎo)致的問題多半就是JDK版本不匹配要么降Boot版本要么升JDK二選一。創(chuàng)建項(xiàng)目時(shí)依賴選擇上管理系統(tǒng)一般需要這幾個(gè)Spring Web、Spring Security、MyBatis-Plus用MyBatis的選MyBatis Framework、MySQL Driver、Lombok、Validation。Redis看情況需要緩存和分布式鎖就加Spring Data Redis。3.2 yml配置文件中的敏感信息加密不知道你有沒有這種經(jīng)歷把項(xiàng)目發(fā)到Git倉(cāng)庫(kù)或者給同事演示代碼時(shí)數(shù)據(jù)庫(kù)密碼、Redis密碼、第三方密鑰全明文寫在application.yml里。這確實(shí)是巨大的安全隱患熱詞里也有人在搜“springboot yml密文”。我用的是Jasypt對(duì)敏感配置做加密。使用步驟分三步第一步引入jasypt-spring-boot-starter依賴第二步配置一個(gè)加密密鑰比如jasypt.encryptor.password第三步在yml里把明文密碼替換成ENC(密文)格式。這里的邏輯是頁(yè)面顯示的是密文項(xiàng)目啟動(dòng)時(shí)Jasypt用密鑰解密成明文再傳給數(shù)據(jù)源??梢詫懸粋€(gè)簡(jiǎn)單的測(cè)試類用StringEncryptor加密你的數(shù)據(jù)庫(kù)密碼然后把生成結(jié)果粘到y(tǒng)ml里。稍微要注意的是加密密鑰本身不要硬編碼在代碼里可以通過環(huán)境變量或者啟動(dòng)參數(shù)注入比如-Djasypt.encryptor.password你的密鑰這樣就算拿到配置文件也解不開密文。提示如果yml里密碼中包含特殊字符比如#、:一定要加上單引號(hào)否則會(huì)被YAML解析成注釋或者報(bào)錯(cuò)這個(gè)細(xì)節(jié)很坑但很容易遇到。3.3 統(tǒng)一返回結(jié)構(gòu)與全局異常處理前后端分離之后接口要約定數(shù)據(jù)格式不然前端拿到一個(gè)報(bào)錯(cuò)不知道是自己參數(shù)傳錯(cuò)了還是后端炸了。我的統(tǒng)一返回結(jié)構(gòu)長(zhǎng)這樣{ code: 200, message: 操作成功, data: { } }code是業(yè)務(wù)狀態(tài)碼200成功400參數(shù)錯(cuò)誤401未認(rèn)證403無權(quán)限500服務(wù)器異常。后端封裝一個(gè)Result類提供靜態(tài)方法success()和error()Controller里直接返回Result.success(data)即可。這樣前端拿到結(jié)果后先判斷code再?zèng)Q定是渲染數(shù)據(jù)還是彈出錯(cuò)誤提示。全局異常處理也很有必要。我在項(xiàng)目里寫了一個(gè)RestControllerAdvice修飾的GlobalExceptionHandler把業(yè)務(wù)異常、參數(shù)校驗(yàn)異常、未知異常分別處理統(tǒng)一轉(zhuǎn)成上面這個(gè)結(jié)構(gòu)。尤其是參數(shù)校驗(yàn)用Valid注解加上實(shí)體類字段的NotBlank、NotNull注解比自己在Controller里寫一堆if判斷干凈太多。異常日志一定要用log.error全量打印堆棧不然線上問題根本沒法排查。4. 認(rèn)證授權(quán)、列表分頁(yè)與文件處理4.1 Spring Security JWT做登錄授權(quán)管理系統(tǒng)的登錄認(rèn)證我推薦Spring Security JWT這套組合。為什么不用Session因?yàn)榍昂蠖朔蛛x后后端服務(wù)是無狀態(tài)的用戶的登錄狀態(tài)不能一直放在服務(wù)器內(nèi)存里否則水平擴(kuò)展時(shí)Session不共享用戶一會(huì)被踢下線。JWT把用戶ID、用戶名、過期時(shí)間這些信息簽成一個(gè)token返回給前端前端每次請(qǐng)求在Header帶上Authorization: Bearer token后端校驗(yàn)簽名和過期時(shí)間即可。具體實(shí)現(xiàn)流程是用戶提交賬號(hào)密碼后端用PasswordEncoder比對(duì)密碼密碼在數(shù)據(jù)庫(kù)里必須是BCrypt加密存儲(chǔ)絕對(duì)不能是明文比對(duì)成功用JWT工具類生成token返回。前端拿到token存到localStorage后續(xù)請(qǐng)求通過axios攔截器自動(dòng)攜帶。后端寫一個(gè)JwtAuthenticationFilter繼承OncePerRequestFilter在請(qǐng)求進(jìn)入到Controller之前解析token、加載用戶權(quán)限、放入SecurityContext。這里有兩個(gè)容易踩的坑第一個(gè)是token過期時(shí)間我一般設(shè)置2小時(shí)前端在響應(yīng)攔截器里遇到401就跳轉(zhuǎn)登錄頁(yè)讓用戶重新登錄第二個(gè)是密碼加密一定用BCryptPasswordEncoder每次加密結(jié)果都帶隨機(jī)鹽同樣密碼兩次加密結(jié)果不一樣但matches校驗(yàn)?zāi)芡ㄟ^比MD5安全很多。4.2 列表查詢、分頁(yè)與統(tǒng)計(jì)管理系統(tǒng)八成以上的頁(yè)面都是列表用戶列表、訂單列表、課程列表。列表頁(yè)最基礎(chǔ)的能力是分頁(yè)和條件篩選。我用MyBatis-Plus的Page對(duì)象前端傳current和size兩個(gè)參數(shù)再傳一些篩選條件后端構(gòu)造LambdaQueryWrapper把條件拼接進(jìn)去返回總記錄數(shù)和當(dāng)前頁(yè)數(shù)據(jù)。有個(gè)細(xì)節(jié)要注意篩選條件傳空字符串時(shí)要過濾掉否則MyBatis-Plus會(huì)一直帶上這個(gè)條件導(dǎo)致查不到數(shù)據(jù)。統(tǒng)計(jì)功能是管理系統(tǒng)的另一個(gè)重頭戲。比如首頁(yè)要展示“今日新增用戶”“本月訂單金額”“各分類商品銷量”這些用聚合查詢。以訂單表為例按天統(tǒng)計(jì)訂單數(shù)量SELECT DATE_FORMAT(create_time, %Y-%m-%d) AS day, COUNT(*) AS total FROM orders WHERE create_time #{startTime} GROUP BY day ORDER BY day;執(zhí)行統(tǒng)計(jì)查詢時(shí)要注意SQL的性能。我遇到過一張表幾百萬數(shù)據(jù)統(tǒng)計(jì)接口每次都全表掃前端等了十幾秒才開始轉(zhuǎn)圈。后來加上了create_time的索引并且把統(tǒng)計(jì)范圍限制在最近30天問題就解決了。列表查詢也一樣排序字段和篩選字段要記得建索引但不要無腦建索引太多會(huì)影響寫入性能。4.3 文件上傳與Excel導(dǎo)入導(dǎo)出管理系統(tǒng)里文件上傳、Excel導(dǎo)入導(dǎo)出是高頻功能比如批量導(dǎo)入學(xué)生名單、導(dǎo)出商品報(bào)表。文件上傳我一般用Nginx/本地磁盤作為存儲(chǔ)上傳時(shí)保存一份原始文件名并生成一個(gè)新的文件名比如UUID避免文件名沖突和中文亂碼。數(shù)據(jù)庫(kù)只存文件路徑不存二進(jìn)制內(nèi)容。Excel處理我用的是EasyExcel它比Apache POI更省內(nèi)存因?yàn)榈讓邮荢AX方式逐行解析不會(huì)一次性把整個(gè)文件加載進(jìn)內(nèi)存。導(dǎo)入時(shí)先讀取表頭做校驗(yàn)再逐行解析成對(duì)象批量插入數(shù)據(jù)庫(kù)。有一個(gè)很重要的經(jīng)驗(yàn)如果Excel有幾萬行不要一條條insert一定要用批量插入比如每500條執(zhí)行一次批量insert速度能快幾十倍。導(dǎo)出時(shí)如果數(shù)據(jù)量大絕對(duì)不能在內(nèi)存里把所有數(shù)據(jù)構(gòu)造完再寫文件那樣很容易OOM。我遇到過一次導(dǎo)出5萬條記錄用EasyExcel的分批寫前端下載沒卡后端內(nèi)存也穩(wěn)住了。5. 業(yè)務(wù)場(chǎng)景實(shí)戰(zhàn)選課管理與庫(kù)存出入庫(kù)5.1 學(xué)生選課管理系統(tǒng)事務(wù)與并發(fā)控制拿學(xué)生選課這個(gè)經(jīng)典場(chǎng)景來說看上去就是“學(xué)生選課、課程減一容量”但并發(fā)情況下問題非常多。比如一門課只剩1個(gè)名額兩個(gè)學(xué)生同時(shí)提交選課如果邏輯是先查容量再判斷再減一極有可能兩個(gè)請(qǐng)求都查到剩余名額是1然后都通過了課程實(shí)際選了2個(gè)人超賣。解決辦法有幾種最常用的是在課程表上加一個(gè)樂觀鎖版本號(hào)字段version更新時(shí)帶上UPDATE course SET selected_count selected_count 1, version version 1 WHERE id ? AND version ?影響行數(shù)為0說明版本沖突提示用戶“課程容量已滿請(qǐng)重新選擇”。如果并發(fā)特別高還可以用Redis的分布式鎖把課程ID作為鎖key選課前先獲取鎖選完釋放。除了并發(fā)選課系統(tǒng)的事務(wù)控制也很關(guān)鍵。選課成功時(shí)要同時(shí)完成兩件事插入選課記錄、課程容量加一這兩步必須在一個(gè)事務(wù)里要么都成功要么都失敗。我在Service方法上加Transactional(rollbackFor Exception.class)注意rollbackFor一定要指定否則RuntimeException才能觸發(fā)回滾普通的異常不會(huì)回滾這是很多新手最容易忽略的點(diǎn)。5.2 倉(cāng)庫(kù)出入庫(kù)/資產(chǎn)管理系統(tǒng)庫(kù)存扣減與流水記錄倉(cāng)庫(kù)出入庫(kù)管理系統(tǒng)核心是庫(kù)存賬和流水賬。每次入庫(kù)庫(kù)存表數(shù)量增加并生成一條入庫(kù)流水每次出庫(kù)庫(kù)存表數(shù)量減少并生成一條出庫(kù)流水。流水一旦生成就不能修改和刪除只能做沖銷單來糾正錯(cuò)誤這是財(cái)務(wù)審計(jì)的基本要求。庫(kù)存扣減同樣有并發(fā)問題我的做法是在庫(kù)存表里直接用SQL原子更新避免“先查后改”UPDATE inventory SET stock stock - #{num} WHERE sku_id #{skuId} AND stock #{num};如果更新影響行數(shù)為0說明庫(kù)存不足或商品不存在直接給前端返回“庫(kù)存不足”。這樣利用數(shù)據(jù)庫(kù)行鎖保證了并發(fā)安全比用Java代碼加鎖更簡(jiǎn)單可靠。如果是高端一點(diǎn)的資產(chǎn)管理系統(tǒng)還會(huì)涉及資產(chǎn)借還流程資產(chǎn)表有狀態(tài)字段在庫(kù)、借用中、維修中、已報(bào)廢。借出時(shí)要把資產(chǎn)狀態(tài)改成借用中歸還時(shí)改回在庫(kù)同時(shí)記錄借用人、借用時(shí)間、預(yù)計(jì)歸還時(shí)間。這個(gè)流程用狀態(tài)機(jī)做約束能避免很多操作上的誤判比如已報(bào)廢的資產(chǎn)不能被借出、借用中的資產(chǎn)不能被再次借出。6. 部署、安全與性能加固6.1 Docker部署與配置分離管理系統(tǒng)開發(fā)完了最終要部署到服務(wù)器。我現(xiàn)在的標(biāo)準(zhǔn)交付方式是Docker Compose編排一套環(huán)境包含MySQL、Redis、后端應(yīng)用。后端Dockerfile很簡(jiǎn)單基于openjdk鏡像把jar復(fù)制進(jìn)去暴露端口啟動(dòng)命令是java -jar。數(shù)據(jù)庫(kù)和Redis用docker-compose里的服務(wù)名訪問比如jdbc:mysql://mysql:3306/dbname容器間通信直接用服務(wù)名做主機(jī)名。配置分離是部署時(shí)的重要原則。開發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境的數(shù)據(jù)庫(kù)地址、Redis地址、密鑰都不一樣不應(yīng)該每次部署都改配置重新打包。我的做法是在Docker Compose里用environment注入環(huán)境變量SpringBoot的yml里使用${DB_HOST}、${DB_PASSWORD}這種占位符如果環(huán)境變量沒設(shè)置本地開發(fā)還能用默認(rèn)值兜底spring: datasource: url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/admin_system?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: ${DB_USERNAME:root} password: ${DB_PASSWORD:root}這樣一套代碼可以無修改部署到任意環(huán)境配合CI/CD流水線非常順暢。6.2 接口越權(quán)與HeapDump信息泄露管理系統(tǒng)做完了安全檢查一定不能跳過。先說越權(quán)問題這是后臺(tái)系統(tǒng)最常見的高危漏洞。很多系統(tǒng)只判斷了“用戶是否登錄”但沒有判斷“這個(gè)用戶是否有權(quán)限操作這條數(shù)據(jù)”。比如用戶A登錄后直接調(diào)用接口把訂單ID改成B的訂單ID結(jié)果把B的訂單刪了。這種漏洞叫水平越權(quán)。我的經(jīng)驗(yàn)是在Service層必須校驗(yàn)數(shù)據(jù)歸屬根據(jù)當(dāng)前登錄用戶ID和資源ID同時(shí)查詢查不到就拋“無權(quán)操作”。還有一個(gè)最近被頻繁提到的問題就是Spring Boot Actuator暴露出來的heapdump接口。如果生產(chǎn)環(huán)境開啟了management.endpoints.web.exposure.include*別人可以直接訪問/actuator/heapdump下載JVM堆內(nèi)存快照再用工具分析數(shù)據(jù)庫(kù)密碼、Redis密碼、token等敏感信息全部裸奔。我處理這個(gè)問題的方式是生產(chǎn)環(huán)境只暴露health和info兩個(gè)端點(diǎn)其他全部關(guān)閉如果實(shí)在需要監(jiān)控也要加上Spring Security權(quán)限校驗(yàn)絕不能裸奔。6.3 慢SQL優(yōu)化與緩存管理系統(tǒng)數(shù)據(jù)量大了之后最先扛不住的就是數(shù)據(jù)庫(kù)。我排查慢SQL時(shí)通常先在MySQL里開啟慢查詢?nèi)罩驹侔褕?zhí)行時(shí)間超過1秒的SQL語句撈出來用EXPLAIN分析執(zhí)行計(jì)劃。常見的性能問題就幾種表沒加索引、查詢條件沒走索引、不必要的全表掃、并發(fā)重復(fù)查詢相同數(shù)據(jù)。緩存是提升性能最直接的手段。對(duì)于熱點(diǎn)數(shù)據(jù)比如系統(tǒng)配置項(xiàng)、首頁(yè)統(tǒng)計(jì)數(shù)據(jù)、字典數(shù)據(jù)我會(huì)用Redis先緩存一份設(shè)置合理的過期時(shí)間。緩存更新的策略我用Cache Aside模式讀的時(shí)候先查緩存緩存沒有則查數(shù)據(jù)庫(kù)再回填寫的時(shí)候先更新數(shù)據(jù)庫(kù)再刪除緩存避免數(shù)據(jù)不一致。別看簡(jiǎn)單這個(gè)模式在工作里非常實(shí)用。這里有一個(gè)緩存穿透的小坑如果查詢的ID根本不存在緩存和數(shù)據(jù)庫(kù)都沒有每一次請(qǐng)求都會(huì)打到數(shù)據(jù)庫(kù)。解決辦法是緩存空值并設(shè)置較短的過期時(shí)間比如5分鐘或者用布隆過濾器先做一層過濾。實(shí)操中緩存空值更簡(jiǎn)單我一般用這個(gè)方案。7. 實(shí)戰(zhàn)中的常見問題排查7.1 環(huán)境、版本與配置類問題這里整理一下我實(shí)際開發(fā)中經(jīng)常遇到的問題以及我的解決思路。問題一IDEA創(chuàng)建SpringBoot項(xiàng)目超時(shí)。原因是Spring Initializr默認(rèn)訪問國(guó)外地址經(jīng)常連不上。解決方法是改為阿里云鏡像地址https://start.aliyun.com再不行就直接從官網(wǎng)start.spring.io手動(dòng)下載壓縮包導(dǎo)入。問題二項(xiàng)目啟動(dòng)報(bào)版本錯(cuò)誤比如Unable to start embedded Tomcat。大概率是SpringBoot版本和JDK版本不搭配。SpringBoot 2.x要求JDK 8或以上SpringBoot 3.x要求JDK 17或以上啟動(dòng)失敗先檢查java -version。問題三yml配置文件報(bào)錯(cuò)。YAML對(duì)縮進(jìn)和冒號(hào)非常敏感同一層級(jí)必須對(duì)齊鍵值冒號(hào)后面必須要空格。出現(xiàn)錯(cuò)誤時(shí)看IDEA下方的Error信息通常能直接定位到第幾行的具體問題。用錯(cuò)了一份舊配置最好的辦法是先把配置內(nèi)容全部撤銷從已知能跑的版本一點(diǎn)點(diǎn)加。問題四數(shù)據(jù)庫(kù)連接串亂碼。MySQL連接URL一定要加上useUnicodetruecharacterEncodingutf8不然插入中文到數(shù)據(jù)庫(kù)變成問號(hào)。同時(shí)確保數(shù)據(jù)庫(kù)表本身就是utf8mb4字符集。問題五MyBatis-Plus的分頁(yè)不生效。MyBatis-Plus分頁(yè)需要配置PaginationInnerInterceptor插件很多人忘了配結(jié)果分頁(yè)查出來的是全量數(shù)據(jù)。還要確認(rèn)前端傳的pageNum、pageSize和代碼里的參數(shù)名對(duì)得上。7.2 數(shù)據(jù)與邏輯類問題問題一邏輯刪除字段沒生效。MyBatis-Plus邏輯刪除需要兩個(gè)配置全局邏輯刪除字段名和值以及實(shí)體類字段上標(biāo)注TableLogic。漏掉任何一處刪除操作就變成物理刪除數(shù)據(jù)找不回來這是很危險(xiǎn)的情況。問題二日期時(shí)間差8小時(shí)。前端傳過來的時(shí)間戳被后端轉(zhuǎn)成LocalDateTime后和北京時(shí)間差了8小時(shí)多半是Jackson和數(shù)據(jù)庫(kù)連接的時(shí)區(qū)不一致。我統(tǒng)一在application.yml里配置spring.jackson.time-zoneGMT8數(shù)據(jù)庫(kù)連接串帶serverTimezoneAsia/Shanghai問題解決。問題三事務(wù)不生效。寫了個(gè)帶Transactional的方法數(shù)據(jù)出錯(cuò)了還是沒有回滾。常見原因有兩個(gè)一是方法被同類中的另一個(gè)方法調(diào)用導(dǎo)致代理失效要把事務(wù)方法放到獨(dú)立Service里二是異常被try catch吞了事務(wù)感知不到異常這種情況要么異常拋出要么手動(dòng)標(biāo)記rollback我建議不做特殊的“異常繼續(xù)執(zhí)行”處理就讓它往外拋。問題四Excel導(dǎo)入數(shù)據(jù)總是失敗??赡苁亲侄胃袷絾栴}比如數(shù)字單元格讀進(jìn)來變成科學(xué)計(jì)數(shù)法或者日期格式不統(tǒng)一。我在EasyExcel里對(duì)每一列都顯式指定類型轉(zhuǎn)換器并在轉(zhuǎn)換失敗時(shí)記錄行號(hào)和錯(cuò)誤原因最后把錯(cuò)誤信息一起返回給前端讓用戶下載錯(cuò)誤報(bào)告體驗(yàn)好很多。8. 寫在最后幾條開發(fā)管理系統(tǒng)的誠(chéng)心建議結(jié)合這些年的實(shí)際項(xiàng)目經(jīng)驗(yàn)最后再嘮叨幾句。做管理系統(tǒng)不要把精力全花在技術(shù)框架上SpringBoot再花哨也只是工具真正值錢的是你對(duì)業(yè)務(wù)的理解和數(shù)據(jù)模型的設(shè)計(jì)。動(dòng)手之前把角色權(quán)限、業(yè)務(wù)流程、狀態(tài)流轉(zhuǎn)這些理清楚比多寫一百個(gè)接口都有用。第二點(diǎn)是安全意識(shí)和規(guī)范意識(shí)要早培養(yǎng)。邏輯刪除、密碼加密、接口越權(quán)校驗(yàn)、敏感配置加密這些不是可選項(xiàng)而是必選項(xiàng)。等系統(tǒng)上線被人掃出漏洞再補(bǔ)救代價(jià)成倍增加我親眼見過因?yàn)閔eapdump信息泄露導(dǎo)致整個(gè)后臺(tái)被拿下的案例場(chǎng)面非常慘烈。第三點(diǎn)是遇到問題先學(xué)會(huì)看日志。啟動(dòng)失敗看堆棧第一行接口報(bào)錯(cuò)看異常類型和消息數(shù)據(jù)不對(duì)看SQL語句和入?yún)?。不要拿著?bào)錯(cuò)信息不管三七二十一就去復(fù)制粘貼搜答案先讀懂它再判斷方向。這套排查思路比任何框架知識(shí)都有用能陪你走很久很久。如果你正在做一個(gè)SpringBoot管理系統(tǒng)或者準(zhǔn)備拿它當(dāng)畢業(yè)設(shè)計(jì)希望這篇文章能幫你少走一些彎路。按照我寫的內(nèi)容把項(xiàng)目跑起來之后再自己去擴(kuò)展業(yè)務(wù)模塊你會(huì)發(fā)現(xiàn)所謂的“管理系統(tǒng)開發(fā)”真沒那么玄乎核心就是把簡(jiǎn)單的事情踏實(shí)做對(duì)一遍一遍地打磨細(xì)節(jié)而已。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
玖玖超碰熟| 玖玖玖玖精品国产剧情| 九九热精品| 蜜臀av网址| 日韩强奸av| 懂色AV一区二区三区| 黄色一区三区| 天天综合91入口| 国产福利在线视频网站| 国产乱弄免费在线视频。| 亚洲在线a| 欧美激情性爱视频网站| 嗯啊不要啊在线| 青青久日| 欧亚在线视频| 欧美人妻另类在线| 在线视频免费播放一区| 亚洲在高跟鞋自慰久久在色线| 国产一国产一级毛片古装| 亚洲成av人片色午夜乱码| 青青操视频在线| 久久透逼视频| 久久久性爱视频| 欧美传媒| 亚洲欧洲无码97久久精品| 97在线免费观看| 国产亚洲 中文欧美久久| 91插B网站| 约操熟妇| 综合色欧美| www99热| 精精品人妻一区二区三区| 色色五月天激情| 91美女高潮| 亚洲中文国际强奸字幕| 久久妇| 久久久国产亚洲精品系列| 午夜福利区| 国产无码高清操逼视频| 啊啊啊啊啊啊好湿好爽视频| 日日爱99| 综合网~91综合网| gogogo免费高清看中国国语| 欧美日韩亚洲五月天婷婷| 日韩一性一交一A片俄罗斯| 蜜桃久久久久久久久久久久| 1024人妻熟女一区二区三区| 人妻精品一区二区三区| 射丝袜高跟鞋99| 欧美大香蕉久| 日韩无码久久熟女一级片| av无码精品久久久久| 综合情欲网| 色色色综合网| 影音先锋每日最新资源在线观看 | 黄色小视频日本txt| 欧美国产一区二区三区麻豆传媒| 国产树林里野战在线看| 欲香欲色综合天天伊人| 日本超碰在线国产一区| 国产辣妈在线视频福利| 一级免费精品| 午夜呻吟欧美| 国产一区二区视频在线播放| 91网站18| 亚洲欧洲第二视频在线观看色图| www.人人cao| 亚洲久久久| 色诱中文字幕| 日韩不卡在线一区二区| 亚洲综合色图欧美| 九九久久一区二区三区| 午夜寂寞欧美| 国产操逼网站亚洲一级黄色| 日韩精彩视频| 91天天综合网,天天综合网| 亚洲少妇中文字幕网址| 91少妇| 亚洲欧洲无码一区夜| 亚洲综合激情五月久久| 懂色中文一区二区三区| 欧美高清91| 亚洲另类色图片| 日本三级网页| 秋霞Av理论一级在线| 成人在线午夜视频一区| www四虎| 亚洲阿v天堂无码z2018| 亚洲欧美伦综合| 91红杏| 国产毛片在线| 久操电影| 亚洲精品熟妇1区2区3区。| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 福利天天都操| 精品国产72| 欧美日韩成人在线| 免费av在线播放二区| 色与欲影视天天看综合网| 北约熟女超碰| 国产精品久久久蜜臀| 久久亚洲婷婷| 国产精品交换一区二区| 亚洲高清无码免费观看视频| 欧美午夜视频精品久久| av婷婷色婷婷色六月| 性在久久久久久| 天堂中文日本在线观看| 精品人妻美妇91job| 99无码视频| 欧美 亚洲 综合 制服| 天天做天天爱天天爽| 五月丁香婷婷啪啪| 欧美日韩一干二干| 日韩精品人妻一区二区| 男女日B国产| 人人妻人射| 日本高清_区二区三区| 狠狠中文字幕| 在线视频日韩欧美国产| 高清在线偷拍自拍视频| 欧美 亚洲 综合 制服| 国产在线能看的你懂的| 国产福利视频精品视频| 国产福利精品最新在线| 91爱综合| 欧美色图欧美| 国产一级特黄大片处女| www.婷婷五月天| 麻豆精品三区视频| 91人妻在线视频| 人妻丰满熟妇一区二区三| 91色婷婷综合久久中文字幕二区| 亚洲美女30b| 色97国产69香蕉| 中欧人妻丝袜中文字幕| 亚洲天堂AV在线播放| 人人天天欧洲| 欧美少妇高潮| 亚洲熟女中文字幕在线| 久久久一区二区| 18禁看网站一区| 国产AV久久野战精品| 97色插| 一本大道青青| 性爱乱伦网址| 日韩精品人妻中文字幕不卡乱码| 欧美一区二区三区入口| 免费网色网站| 国产精品无码av| 国产美女口爆吞精| 免费的很黄很污的全部视频| 色诱avtt| 成人麻豆av电影网站| 91丝袜激情在线| 蜜乳Av成人片网站| 啊嗯嗯啊好大好爽| 郑州宾馆老熟女露脸啪啪| 天天摸夜夜摸| 欧美性爱免费短视频| 亚州再线| 亚洲无码一区二区三区三州| 96超碰网| 九九精品美女高溯喷水| 欧美日韩日产免费网站看| 91欧美美女日韩国产婷婷| 性色生活片久久毛片婬片免费放女人一级毛片 | 欧美综合第一| 人人妻碰人人免费| 99只有精品| 国产在线视频二区| 狠狠躁久久躁| 亚 欧 美 综合| 亚洲最新Av| 嫩草 我啊~嗯~在线| 性爱精品一区| 好爽视频在线观看视频| 亚洲国产青青| 婷婷情色综合网| 久久中文字幕一区不卡| 免看60秒涩涩视频| 97se综合网| 抽插无码高清一区| 乱人乱色一区二区三区免费 | 亚洲色图欧美色图日韩色图| 91天美| 久久天天躁日日躁狠狠躁| 白嫩国模丰满一二三区| 无码高清操逼| 亚洲午夜精品久久久中文影院| 国产精品 午夜福利| 天天视频综合在线观看视频| 久久黄片国产一区二区| 超碰97丝袜| 亚欧美色图| 色九九九| 91精品人妻一区二区三区蜜桃臀| 99热99色| 日本中文字幕在线电影| 国产中文大片资源中文字幕| 日韩免费a级毛片无码a∨| 97欧美色综合| 亚洲丰满很很操| 精品一区二区麻豆| 人妻精品4K4K4K4K4| www久久99| 日韩去日本高清在| 久久美女福利是上海美女| ..日韩av毛片精品久久久| 精品国模无码| 亚洲色欧美| 亚州综| 2020中文字幕在线| 精品一区二区麻豆| 欧美精品偷拍| 亚洲美女 晚间男人天堂 | 青娱乐亚洲自拍| 日韩啪啪视频| 亚洲欧美国产va在线播放频| 乱伦熟女专区| 中文字幕日韩人妻视频一区二区三区| 欧美91变态| 亚洲色宗合| 亚州男人天堂| 被男人吃奶很爽的毛片| 久久91精品国产9丨久久分亭| A 在线网址| 久久毛卡| 一级免费啪啪片| 影音先锋乱| 天天综合网日韩7799| 亚洲国产精品99久久久| 色综合av男人天堂| 日韩人妻无码专区| 欧美制服网站美腿丝袜| 亚洲情色在线| 国产美女高潮视频| 91肉丝| 日韩人妻一区二区| 亚洲AV免费在线| 久久一留热品黄| 色网1| 久久久久久九九九九九 | 欧洲精品区| 天天看片青娱乐| AV乱伦专区| 午夜欧美女人操逼| 熟妇一区二区三区| 国产丁香精品露脸视频| 久久伊人亚洲AV无码网站| 九九久久一区二区伦理| 丁香激情五月天| 亚洲美女30b| 日夜尻逼网| 熟妇在线视频一区二区| 久久9 9 9精品| 久久97资源 网| 蜜桃臀久久| 久午视频| 青青免费在线视频一区| 少妇 综合| 97视频新免费| 日韩性爱长视频免费| 日本免费一级AAA大片器| 啊啊啊啊好多水| 九九自拍伦理| 97久久精品国产| 无码一区二区三区四区五区六区七区八区九区十区视频 | 高清国产性猛交xxxx乱大交| 这里是精品| 天天综合欧美| 六月丁香网| 欧美一区二区| 久久久久国色αv免费观看| 摸奶性爱视频网站在线免费播放| 99爱爱| 日韩欧美天堂| 国产一区二区三区影片| 亚洲熟女诱惑| 欧美 综合 亚洲| 五月婷久久| 亚洲精品国语在线播放| 激情内射| 色九九九| 久久久久久中文字幕中文字幕最新| 日韩性爱小视频| 欧美亚州色的图| 五月婷婷六月丁香| 丰满人妻一区二区三区四区| 韩日欧亚a级| 欧美精品 - 91爱爱| 亚州操逼网| 东北少妇高潮zzzz| 易易A毛视频| 日本淫穴在线| 精品乱子一区二区三区99| 免费在线观看国内色片网站网址| 岛国1区2区3区在线观看| 日本 情色 1区2区3区| 九九热免费在线国产视频伊人五月| 日韩av一级黄片| 欧美欧美啪啪视频| 床戏久久久av一区二区麻豆| 日韩钢筋无码高清啾啾啾| 六月婷婷色综合| 久久黄色视频一区二区三区| 欧美的性爱网站免费| 大逼色网站| baiduhicn.com。| 91色综| 日韩不卡av一二三| 国产亚洲女v在线观看| 91精品老女人| 欧美亚洲特P| 亚洲 综合 第一页| 欧美日韩天堂| 麻豆一区二区三区精品| 超碰久久性爱| 野狼激情网| 欧美做爰无码A片视频| 九九干| 欧洲亚洲国产综合在线| 99无码狠狠久久| 99热这里只有精品18| 啊啊啊啊,啊啊好多水| 欧美A√综合网| 啊啊好多水| 亚洲91av| 97内射偷拍| 91爱综合| 国内黄色精品| 中文字幕丝袜人妻| 婷婷五月天久久精品视频一区二区三区| 国产精品大香蕉| 大屁股xxxxx| 粉嫩在线一区二区懂色| 国产乱码精品一区二区三区四川| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 乱精品一区字幕二区| 日本国产成人亚洲精品无码| 无码精品一区二区三区潘金莲| 欧美午夜视频免费观看| 日韩在线一区高清在线| 亚州一区二区成人片免费| 国产精品网址| 无码精品一区二区三区潘金莲| 丁香九月 婷婷| 国产精品人人爽人人做可爱福利 | 欧美18 在线观看| 凹凸视频在线一区二区| 99婷婷一区二区| www久久国产精品| a男人的天堂久久一级A毛片| 精品美女久久久久| 国产精品自拍xxxx| 亚欧性爱在线无码| 狠狠操夜夜操蜜桃视频三区| 天天日日舔舔| 美女91在线观看| 久久99精品国产| 狠狠躁天天躁日日躁97| 蜜臀99久久精品久久久久久| 超碰2017| 高潮毛片无遮挡高清免费| 亚洲三区视频| 久久久97| 淫色网综合| 久久、1234| 搡老女人老91妇女熟女| 97ai亚洲| 久久久97| 色嗨嗨在线| 这里都是精品在线观看| 中文字幕在线观看AV| 成人在线视频一区| 99re6在线视频播放免费精品| 亚欧美色| 国产精品网址| 久久人人看| 射丝袜高跟鞋99| 最新av在线| 男人的天堂三级| 久久人| 日韩在线性爱免费视频| 色婷婷电影网| 青青欧洲黑| 超碰吊日色| 永久免费av无码网站国产app| 美国aaaaa一级黄片| 99精彩视频| 麻豆AV短剧| 伊人网在线点播| 日韩成人私密一级精品av| 国产亚洲美日韩Aⅴ中文字幕无码成人| www.超碰在线| 日韩传媒在线| 久久九九97| 黄色操人| 青青操青娱乐| 久久精品99久久久久久| 久草加勒比一区在线| 综合在线导航一区| 成人影 天天操 亚洲| 欧洲精品欧洲精品| 亚洲在线网站| 日韩精品区二区三区不卡| 中国小夫妻勾搭露脸淫荡对白| 丝袜美腿丝袜| 男人高清无码一区二区| 免費人妻夜夜爽天天爽爽一区| 午夜操操操| 国产探花日韩援交| 亚洲综合网电影91| 亚洲激情深爱文学小说网站| 人人做天天爱| 精品无码一区二区| 午夜精品久久99蜜桃的功能章节| 深夜激情无码| 欧美熟妇亚洲版| 亚洲av青草久久一区二区| 天天日天天干天天整| 91久久午夜无码鲁丝片久久人妻| 人人妻人人爽一区二区三区| 人妻精品一区二区在线| 中文字幕十五区| 亚洲国产丝袜熟女av| 日本3级一区二区免费 | 日韩少妇无码| 91久久婷婷| 九99久久| 国产精品无码AV网站| 97超碰免费人人性爱| 97在线视频观看| 香蕉在线一区二区三区| 欧美探花网| 99久久国产精品免费高潮| 性做久久久久久久| 久久精品一区二区三区不卡| 玖玖综合视频| 性爱乱伦一区| 99精品综合久久久久五月天| 精品亚洲国产成人av网站| 又摸又舔在线观看网站| 成年人黄色视频免费| 麻豆视频test| 精品国产Av无码久久久亚洲| 国产suv精品一区二区四| 九九AV| 嗯嗯啊啊视频在线看| 精品人妻一区二区三区四区| 国产精品电影| 精品国产乱码久久久| 99热国产| 哈哈操电影| 婷婷五月天AV| 成人久久久| 欧美色棕合| 午夜性刺激视频免费观看| 精品丰满人妻一区二区三区免费观| 亚洲无码一区成人免费午夜| 一区二区偷拍拍视频| 好吊色综合| 91婷婷伊人狠人| 91亚洲欧美| 国产suv精品一区二区四| 国产熟女精品一区二区| 国产偷仑| 黄色av片三级三级三级免费看| 欧亚揄拍偷拍精品视频| 操99| 测评在线观看AV| 殴美日韩m| 少妇一区二区三区高速| 99热大香蕉伊在线| 日本3级一区二区免费 | 美女久久久| 人妻插插人妻人| 欧美一区二区一级岛国大片| 亚洲欧美日韩电影网站一区| 秋霞视频一区二区| 精品人妻中文字幕高清| 狠狠2050在线观看| 色婷婷综合网站| 啊啊啊啊啊在线| 99www.bibizy香蕉资源国产一区二区三区高清 | 日少妇亚洲版| 久久精视频美日韩在线视频| 91精品人妻一品二品三品| 啊啊啊不要好疼视频| 欧美v亚洲v综合v国产v妖精| 丰满人妻一区| 欧美激情综合色综合啪啪五月| 91AV入口| 91丝袜人妻| 亚洲国产综合久久久性感熟妇| heyZO天然素人无码AⅤ专区| 亚洲,欧美,综合网| 欧美九九99久久精品| 国模无码一区二区三区在线| 久久国产乱子伦精品免费女,网站| 国产精品乱码久久久久久久久久久久| 欧美大香蕉专区网| 亚洲婷婷丁香在线| 97精品视频在线播放| 97精彩视频网站| 亚洲天堂人妻熟妇视频| 欧美亚洲图片| 狠狠爱夜夜干| 日韩伦理视频| 激情专区综合| 欧美一级黄片视频在线| 九九九九精| 天堂综合| 亚熟在线| 欧美亚洲日韩人妻在线观看| 久久久久亚洲?V片无码V| 国产精品播放| 91模特在线观看| 懂色AV中文| www.91色综合| 国产精品秘 福利姬在线观看| 亚洲97成人在线观看| 九九精品网| 日韩丝袜高跟制服在线观看| 韩国久久97| 黄片不用下载在线观看| 国产操逼视频在线观看| 亚洲开心网| 日韩无码服务区| 天堂伊人久久| 97超碰无码网| 亚洲色人妻综合| 欧美婷婷五月天| 国产Aα| 国产在线综合福利网站| 综合色91| 大粗鳼巴久久久久| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 丰满少妇人妻久久久久久| 国产免费永久精品无码| 强奸乱伦av电影| 日韩中文字幕国产| 欧美精品精品一区二区| 免费观看一区| 天天综合欧美| 酒色综合网| 91色插| 久久久天堂| 中文字幕欧美日本乱码一线二线 | 亚洲欧美电影| 99999re| 亚洲女人91| 人人妻人人澡人人爽久久av| 中文字幕黄色一起草| 久久中文字幕女同性恋一区| 久久精品高清无码一区| 天天干1区2区在线| 欧美黑人91| 精品视频久久区| 中文字幕伊人| 国产成人精品一区| 激情四射婷婷六月天| 伊人久久亚洲色欲综合网站 | 天天躁夜夜躁狠狠躁AV| 超碰在线1234区| 欧美极品少妇| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 日本成人A片网站| 两女互慰AV高潮喷水在线观看| 操B视频日韩无码| 日本一区二区三区免费观看| 吖在线不卡一区二区国产剧情| 成人无遮挡毛片免费看| 日日摸夜夜夜夜爽| 亚洲精品中文字幕一区在线视频 | 嗯嗯啊好大| 99re在线视频国产| 一本一道久久综合久久| 久久午夜神马| 国产在线播放成人免费| av一区二区三区不卡| 国产色综合亚洲色综合吹潮| 在线色导航| 久草国产在线视频| 六月激情婷婷| 男人的天堂2019AV| 97久久超碰国产网站| 五月天久久婷婷亚洲 | 天天视频黄网站| 粉嫩av在线一区二区| 99久久婷婷国产综合| 五月天婷婷综合| 五月天黄色激情视频| 久久五月视频| 九九热免费国产视频婷婷伊人五月 | 97在线免费看| 麻豆九九九| 青青伊人加勒比海| 热G综合热G中文| 欧美成人性活片| A级片日韩欧美国产欧美视频精选观看 | 丝袜亚洲91| 插插综合网天天影视网| 精品九九九九九九| 999狠狠综合| 欧美久久毛片基地| 国产精品电| 97精品| αⅴ天堂| 婷婷精品| 日韩欧美丝袜诱惑| 亚洲精品97p| 欧美国产精品久久九九| 中文字幕精品免费一区二区| 欧美一级A片在线看视频性色| 红杏大香蕉| 女人一区| 少妇熟女一区二区三区| 日韩无码精品综合久久| 婷婷五月成人| 欧亚日韩三区| 99日视频在线免费| 老熟妇乱轮| A片 AV一级在线播放观看免费| 97资源制服丝袜| 91麻豆一二三区| 超碰色综合| 中国东北熟女老太婆内谢| 婷婷五月色| 激情人妻另类| 日本综合色图| 手机看av网站在线看| 蜜臀亚洲中文| 久久久久久人体| 精品无码久久久久久国产浪潮| 欧美在线播放aaaa| 人妻丝袜肏逼| a级免费在线观看| 九久9精品| 男人久久精品| 国产毛片片精品天天看视频 | 中文字幕免费看大片| 炮色五月| 亚洲男人天堂2017| 久久久久九九九| 婷婷色香| 大香蕉一级黄色片久久| 日本黄 R色 成 人网站| 搞中出视频在线观看| 神马午夜久久| 午夜男女爽爽爽在线视频| 黄片无码在线制服| 国产性感在线观看| 青青色在线观看| 日韩午夜啪啪视频| 欧美综合色综合| 国产精品一区av在线| 成人AV素股で擦久久| 竹菊一区二区三区AV线| 国产一区二区av综合| 91中文精品日韩欧美在线 | 8x福利精品第一福利视频导航| 久久久一区二区三区四曲免费听| 国内外毛片在线观看| 芊芊操逼视频无码| 天天干人妻| 自拍偷拍草一草| 天天日日日射| 精品人妻中文字幕高清| 国产亚州精品美女久久久免费| 日日干男人的天堂| 黄片qw| 97 视频在线| JIZZJIZZ亚洲女人被躁| 中文字幕在线观看AV| 美女网站91| 性色一线| 国内伊人久久久久久网站视频| 美女黄频a美女大全免费皮| 亚洲AV色图一区| 秋霞免费AV| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 天天日天天舔天天喷天天射| 美女性91| 蜜臀av一区二区三区免费观看| 亚洲男人天堂2017| 丁香五月AV| 一区二区三区四区理论片| 天天舔天天 | 蜜乳视频网站| 日韩丝袜高跟制服在线观看| 日日操免费视频| 亚洲涩涩| 333kkkk·亚洲com久久| 少妇精品久久久八区九区| 一级久久久久久久久久久| 亚洲伊人久久精品影院| 欧美一区二区亚洲天堂| 日韩天天综合| 欧美日韩国产传媒在线精品| 三久久久四久久久久| 少妇毛片久久| 国产视频一区二区三区在线免费观看 | a人欧美综合天堂麻豆| 天天色天天干天天射| 亚洲熟女一区| 亚洲成人免费电影| 91狠狠综| 裸体1区| 亚欧Av| 天天综合欧美| 91国产大片| 成人aⅴ一区二区三区| 91中文字幕在线观看| 婷婷五月天福利| 欧美呦呦性爱| 国产人妻精品一区二区三区秋霞 | 777AV电影| 久久女女| sss视频华人在线| 久久东京伊人一本到鬼色| 99精品无码| 嗯嗯,啊啊,国产精品| 97欧美精品| 欧美日韩青操| 亚洲成人久久美女| 国产精品人妻一区二区| 黑人干亚洲| 午夜情侣自拍网站| 日韩中文字幕人妻视频| JuliaAnnXXX888| 欧美激情视频一区二区三区不卡| 最新国产亚洲精品精品国产亚洲综合 | 在线色导航| 97在线观| 中文字幕日韩人妻视频一区二区三区 | 人人妻人人玩人人澡人人爽| 粉嫩少妇自慰在线| 国产精品色色| 免费αⅴ在线观看| 97亚洲综合| 亚欧美综合网。| 先锋精品av色鲁| AV一区观看| 丝袜 中出 制服 人妻 美腿 中文字幕| 丝袜喷水在线| 国产 v乱码一区二| 亚洲日韩视频二区| 99热婷婷一区二区三| 欧美亚洲涩涩| 中文字幕在线24| 性久久久| 97超碰色| 97国产中文| 秋霞午夜视频一区二区| 亚洲黑丝在线| 噜噜噜无码AV一级一级久久影院| 日韩一级性爱无码| 东北熟女91| 黄色片G G G| 久久久久久久久九九久孕交| 婷婷五月色| 国产浮力影院第1页| 欧美性爱精品七区| 日韩15p| 亚洲人久久久网| 小草精彩毛片| 91色综| 性爱乱伦一区| 国产真实野战在线视频| 国产精品无码成人精品| 97视频在线播放| 超碰在线日韩一区| 超碰97导航| 中出789在线视频| 日本青青草在线| 爽爽淫人网| 99色婷婷| 簧片免费看视频| 国产亲戚伦亲在线| 韩国一级婬片A片无码天美| 亚洲码在线中文在线观看| 九九九九AV| 青青青青青手机视频| 屁股久久久久久久久| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 国产黄色动态精品| 国模限制级电影| 欧美性天天影视| 天天做天天爱天天爽| 91日韩在线| 日本中文字幕在线电影| 97最新在线播放视频| 乳欲人妻办公室奶水| 国产毛片久久久久久久| 亚洲欧洲自拍图片专区满春格| 日韩成人性日韩成人性爱视频在线免费观看| 99热销国产这里有精品| 欧美天天综合网版| 亚洲欧美碰碰| 美女久久久| 天美传媒AV在线播放| 91狠狠综| 国产无码成人无码| 日韩欧洲操屄视频| 国产极品粉嫩馒头一线天av| 天天射天天| 强被迫伦姧在线观看无码网站| 国内亚洲高清无码| 国产精品国产亚洲区艳妇糸列| 大屁股人妻女教师撅着屁股| 精品人成视频在线观看| 先锋激情∨在线视频播放| 自拍偷拍国产欧美日韩韩| 国产精品一区午夜福利| 逼逼逼逼操操操操操操操操操午夜剧场| ..日韩av毛片精品久久久| 日韩激情啪啪啪| 中文操嬖片。| 黄片不用下载在线观看| 熟妇熟女视频一区二区三区| 人妻AV 中文字幕的| 欧美综合色站| 大香蕉啪啪啪啪在线| 国产风韵犹存熟妇三区| 一区二区三区在线日韩影院观看| 日韩欧美中文字亚洲慕| 一区二区三区四区理论片| 国产内射爽爽大片| 中文字幕在线观看永久| 久久6热视频免费观看| 国产毛片精品一区二区色欲黄A片| 99这里只有精品| 亚洲AV资源| 很很很很操| 国产农村妇女毛片精品久久| 国产深喉视频一区二区| 国产一区二区三三视频| 久久久久国产精品片区无码直播| 99热啪啪| 国模不卡一本二本三电影| 91N综合网在线| 黑丝91视频| 亚洲精品国产精品乱码不卡| 亚洲综合色图欧美| 亚洲九九九| 亚洲最新a在线观看| 亚洲操逼网| 久久爽爽精品| 99热这里只有精品1| 91社区伊人| 99性爱在线观看| 日韩精品 资源| 国产不卡中文字幕免费avi| 国产91 丝袜在线播放| 精品人妻免费观看| 婷婷亚洲综合| 涩涩五月天| 校园春色中文字幕AV| 国产三级片在线观看| 翔田千里AⅤHD无码| 操操碰| 女人一区| 亚洲资源站| 亚洲第一精品在线视频| 日韩pv中文| 精品白丝一区| 99这里只有精品国产| 五月婷婷激情网| 国产久久日| 最近二区三区视频大全 | 欧美午夜视频精品久久| 男人的天堂在线有码| 国产乱不卡| 人妻二区| 怡红院视频在线| 亚洲日韩97| 欧美精品日韩久久久九| 精品超碰国产| 亚洲天堂日本| 亚洲国产精品成人综合| 日韩成人精品中文字幕| 91无摭挡| 性暴力欧美猛交在线直播| 国产欧美精品日韩区二区麻豆天美| 校园春色亚洲无码| 岛国片在线视频网站| 99热在线观看| 青青草在线视频播放器| 小视频国产| 免费看污网站| 91在线欧美| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 精品人妻一区二区免费蜜桃| 中韩中文字幕在线观看| 久久久999国产精品| 国产无码精品无码| 校园春色制服丝袜中文字亚洲| 激情婷婷丁香网| AAAAAAAAA黄片| 四虎免费看黄| 亚洲一区在线观看欧洲| 九九玖玖精品| 人人妻人人澡人人爽人人精品浪潮| 亚洲精品日韩国产欧美| 中文字幕精品久久久久人妻红杏ⅰ| 成人午夜高潮av猛片| 中日无幕一二三四区| 日韩九九九| www.激情| 亚洲激情久久久伊人综合| 欧美日韩中文亚洲v在线综合| 久久99精品国产| 国产毛片久久久久久久| 啊啊啊啊啊啊好湿好爽视频| 无码人妻一区二区三区色欲aⅴ| 欧美最婬乱婬爆婬性视频| 亚洲精品久久久久久久蜜桃臀| 又黄又爽在线观看视频| 91欧美www| 九九色逼| 欧美激情 亚洲色图| 超碰人人色| 亚洲精品黑丝| 大香蕉久| 色妇综合网| 久久久九97| 欧美夜夜草视频| 日韩熟女精品无码专区一区二区 | 欧美三级一级| 欧美gv在线观看| 丝袜综合| 国产理论视频在线播放| 精品人妻一区春色| 97国产成人精品免费视频| 天天舔日美女视频| 95人妻爽爽人人做人人澡 | 欧美高清色| 青青色综合| 操逼日批| 97资源站久久| www.久久99| 亚洲综合97| 国产精品色哟哟| 97在线视频观看网站| 后入日本1234| 国产性爱乱伦AV| 欧亚日本情色| 天天天天操| 天天草天天日| 97视频在| 日本日皮视频逼| 97视频在线播放| 丝袜喷水在线| 性爱乱伦网址| 中文字幕AV中出| 天天天肏屄欧美| 老司机深夜影院18未满| 玖玖资源视频一区二区三区| 91亚洲黑人| 超碰精品国产无码| 99综合网| 国产一级内射高清视频| 九九国产| 首页亚洲国产高跟丝袜诱惑视频| 亚洲欧美日韩中文播放| 日本新免费二区三区| 黄片不用下载在线观看| 大香蕉伊人网| 日韩中文9| 99热免费| 成人麻豆av电影网站| 欧洲自拍第一页| 亚洲熟女乱色| 久久人人爽爽人人爽人人片αV| 欧美 日韩第一性色| 高清不卡国产| 色情乱伦AV| 试看日韩黄片| 少妇人妻精品| 色五月大香蕉| 国产AV毛片| 丝袜足交视频| 亚洲国产亚洲天堂| 九九综合久久| 亚洲天堂五月天国产| 亚洲资源吧| 91精品人妻一区二区三区蜜桃臀 | 91五月天| 国产一区二区精品久久99| 青青草中文字幕| 小骚逼被操的爽不爽| 插入综合网| 日本色色色视频| 眼镜人妻101.com| 国产精品久久久久久久久久久久久久吹| 97 超碰 人人做 人人爱| 狠狠干,狠狠操| 在线播放免费av福利片| 免费试看60秒| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 大逼色网站| 色拍偷亚洲| 亚洲 欧美 中文 日韩超碰| 久精品无码av一区二免费国产在线观看| 男人天堂电影院| 东京热av影院| 欧美亚洲色的图| 精品国产99| 超碰爽人妻熟女Av| 色999;丁香五月| 日韩性爱再线视频| 嗯啊视频免费在线观看| 国产传媒日韩| 欧美激情高清性猛交| 国产第二页| 日本一天色道久久久精品视频| 久久久工口| 丁香五月性爱| 色青青久久影视| 久久亚洲AV无码专区国产精品 | 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 漂亮人妻被强中文字幕hd| 色综合99999| 超碰天天操| 亚洲成人久久一区二区| 超碰日韩人妻| 久久性爱视频免费看| 校园春色亚洲| 亚洲 欧美 第一页| 超碰天天去日穴| 97精品97久久| 中文在线视频| 99re6国产精品99re| 青青草色情网站视频| 婷婷激情一区二区三区俺也去| 色婷婷丁香五月| 国产尹人在线视频免费| 人妻精品视频一区二区| 黄页网站免费高清在线观看| 国产人妖视频一区在线观看| 99色热国产视频精品| 色综合V| 欧美一区二区日韩三区| www男人天堂| 久久东京热久久| 日韩大香蕉| 97av在线观看| 国产精品不卡高清在线观看| 国产 日韩,欧美 自拍| 久久男人天堂| yaouchengrenav| 18禁无码永久免费无限制| 国语对白露脸XXXXXX| 日韩免费高清大片在线| 麻豆国产97在线| 日本操逼视频在线| 岛国A V在线免费看| 蜜乳成人AV| 岛国毛片手机在线观看| 日韩不卡在线一区二区| 国产www色在线观看| 人人看人人摸人人色| 激情色播| 九九热免费视频| 色综合中文字幕不卡| 精品国产99| 欧美日韩青操| 色偷偷综合91久久噜噜| juliaann丝袜| 免费在线看黄片av| 欧美一区二区三区四区综合| 天天综合网日韩| 国产精品ⅴ无码大片在线看.| av在线一区二区三区| 日韩欧美字幕亚洲一区二区| 大香蕉伊人75| 久久久禁| 超碰吊日色| 日本精品一级二级三级| 干我久操| 蜜乳性色无码专日粉嫩骚逼AV| 国产无马av| 亚洲成人av色网| 天美精品一区二区三区四区在线观看| 国内精品不卡无毒99999| 超碰夫妻97| 国产白丝网站| 网友自拍第一页| 操迟操逼在巾线Fre看| 婷婷在线精品| 国产av白丝| 9 7超碰在线免费观看| 日本孕妇孕交| JuliaAnnXXX888| 色在线视频导航| 九月激情婷婷| 色婷婷久久| 久久久久ab| **一级毛片国产| 国产性感在线观看| 久久久久深夜无码| 啪啪综合网| 天天色综亚洲91污| 少妇蜜汁| 久久久久久久久久精| 91亚洲电影| 国产操偷| 又黄又爽在线观看视频| 欧美天堂超碰97| 久久久久久九| 影音先锋视频在线| 亚洲欧洲偷拍一区| 欧美色图在线视频少妇| 99在线精品视频| 综合操逼| 91色综合激情| 丝袜视频网国产90| 黄片免费视频2019| 蜜桃臀av在线观看| 欧洲精品网| 日韩中文字墓| 婷婷五月色| 国产四虎在线| 精品人妻15区| 亚洲精品一二区| 强奸少妇AV导航网| 国产又长又大又粗的视频| 亚洲AV无码乱码| 黑丝少妇| 97超碰超欧美。| 国产成人拍国产亚洲精品| 91 刺激在线| 97在线青| 自拍偷拍 日韩欧美| 国产少妇肉丝在线观看| 欧美天堂第二区| 美国日韩黄片| 亚洲男人天堂Av| 精吧天堂| 福利操逼| 久久天天躁日日躁狠狠躁| 果冻传媒一区二区三区| 1人人看人人摸人人操| 99啪| 青青草好吊色| 亚洲图片欧洲图片aⅴ| 磁力99AV| 欧美大波激情xxxx| 五月婷婷深深爱| 亚洲天堂一二| 亚洲成人性爱在线观看| 97在线欧洲| 999久久久免费精品国产牛牛| 日韩熟妇二区| 欧美性高潮| 国产精品一区二区 尿失禁| 日韩无码AB| 欧美αv.com| 97人亚洲综合字幕|