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

ARTICLE DETAIL

資訊詳情

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

SpringBoot+Vue招投標(biāo)系統(tǒng)實(shí)戰(zhàn):狀態(tài)管理、分布式鎖與PDF安全導(dǎo)出

SpringBoot+Vue招投標(biāo)系統(tǒng)實(shí)戰(zhàn):狀態(tài)管理、分布式鎖與PDF安全導(dǎo)出 簡介這是一套面向計(jì)算機(jī)專業(yè)本科生的畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)資源聚焦在線招投標(biāo)業(yè)務(wù)場景采用Spring Boot Vue MySQL實(shí)現(xiàn)前后端分離架構(gòu)幫助學(xué)生快速完成具備完整業(yè)務(wù)閉環(huán)的課程設(shè)計(jì)或畢設(shè)項(xiàng)目。資源包共820個文件40.46MB涵蓋114個Java后端核心代碼、44個Vue組件頁面、155個JS交互邏輯、46個CSS樣式及79個GIF動效資源輔以SQL建庫腳本、多段實(shí)操視頻教程與批處理啟動腳本如1-install.bat結(jié)構(gòu)清晰、開箱即用。已有105人學(xué)習(xí)下載內(nèi)容覆蓋管理員、招標(biāo)人、投標(biāo)人、評標(biāo)人四類角色全流程操作包含招標(biāo)發(fā)布、投標(biāo)提交、智能評標(biāo)、中標(biāo)公示等關(guān)鍵模塊并提供BreadCrumbs.vue、IndexHeader.vue等標(biāo)準(zhǔn)化前端布局組件及index.html.bak等調(diào)試備份文件便于理解工程組織規(guī)范與常見開發(fā)陷阱。1. 這不是又一個“學(xué)生管理系統(tǒng)”為什么招投標(biāo)系統(tǒng)是SpringBootVue組合的絕佳練兵場我?guī)н^六屆畢業(yè)設(shè)計(jì)每年都會篩掉至少三成選題——不是因?yàn)榧夹g(shù)難度不夠而是因?yàn)閳鼍疤珕伪 .?dāng)學(xué)生交來“基于SpringBoot的圖書管理系統(tǒng)”時我第一反應(yīng)是這個系統(tǒng)里有沒有真實(shí)業(yè)務(wù)中的狀態(tài)躍遷有沒有多方角色間的權(quán)限博弈有沒有數(shù)據(jù)一致性被并發(fā)撕扯的瞬間而“在線招投標(biāo)系統(tǒng)”恰恰踩中了所有關(guān)鍵得分點(diǎn)。它不像CRUD堆砌的demo而是把SpringBoot的事務(wù)控制、Vue的復(fù)雜狀態(tài)管理、MySQL的鎖機(jī)制全逼到聚光燈下。你用Vue寫個表格增刪改查很容易但當(dāng)你需要在“投標(biāo)截止前30秒”實(shí)時刷新所有未提交標(biāo)書的倒計(jì)時同時阻止新用戶進(jìn)入投標(biāo)頁還要保證數(shù)據(jù)庫里“已開標(biāo)”狀態(tài)不可逆——這時候框架的底色才真正浮現(xiàn)。關(guān)鍵詞里反復(fù)出現(xiàn)的“前后端分離”絕不是一句空話。它意味著前端不再依賴后端模板渲染而是通過RESTful API與后端建立契約意味著Vue必須獨(dú)立處理路由守衛(wèi)、token續(xù)期、文件上傳中斷重試意味著SpringBoot的Controller層必須嚴(yán)格遵循REST規(guī)范連錯誤碼都要按RFC 7807定義。那些熱搜詞里高頻出現(xiàn)的“pdf導(dǎo)出”“XSS防護(hù)”“Linux部署”全是這個系統(tǒng)落地時繞不開的硬茬——它們不是錦上添花的功能點(diǎn)而是業(yè)務(wù)邏輯本身催生的生存需求。比如招標(biāo)文件PDF導(dǎo)出表面看是工具調(diào)用實(shí)則牽扯文件存儲路徑隔離、動態(tài)水印生成、敏感字段脫敏、導(dǎo)出結(jié)果異步通知稍有不慎就可能讓一份標(biāo)書泄露全部供應(yīng)商信息。這正是它比“學(xué)生選課系統(tǒng)”更有教學(xué)價值的地方每個模塊都在逼你直面工程化的真實(shí)水位。我見過太多學(xué)生把Vue當(dāng)成增強(qiáng)版jQuery用v-model綁死表單用this.$http發(fā)請求最后代碼里塞滿回調(diào)地獄。而招投標(biāo)系統(tǒng)天然要求你拆解狀態(tài)投標(biāo)人的“可編輯/已提交/已撤回”狀態(tài)、招標(biāo)方的“草稿/發(fā)布中/已開標(biāo)/已歸檔”狀態(tài)、系統(tǒng)全局的“維護(hù)中/正常運(yùn)行”狀態(tài)——這些狀態(tài)之間存在強(qiáng)約束關(guān)系必須用Vuex或Pinia做集中管理否則一個按鈕點(diǎn)擊就可能觸發(fā)連鎖錯誤。同樣SpringBoot里一個Transactional注解看似簡單但當(dāng)你在“開標(biāo)”操作中要同時更新標(biāo)書狀態(tài)、生成中標(biāo)通知書、扣減保證金余額、發(fā)送站內(nèi)信這四個動作必須原子性執(zhí)行任何一步失敗都要回滾全部而MySQL的InnoDB行鎖和Spring的傳播行為配置就成了生死線。這不是理論考題是上線后甲方打來電話說“昨天開標(biāo)結(jié)果錯了”的現(xiàn)場。2. 拆解核心業(yè)務(wù)流從招標(biāo)公告發(fā)布到中標(biāo)通知書生成的七道關(guān)卡招投標(biāo)系統(tǒng)的骨架遠(yuǎn)比想象中復(fù)雜。它不是簡單的“發(fā)公告-收標(biāo)書-評標(biāo)-定標(biāo)”四步而是由七個環(huán)環(huán)相扣的業(yè)務(wù)關(guān)卡構(gòu)成每個關(guān)卡都藏著技術(shù)深坑。我以實(shí)際交付過的系統(tǒng)為例帶你逐層剝開2.1 招標(biāo)公告發(fā)布靜態(tài)內(nèi)容與動態(tài)規(guī)則的混合編排招標(biāo)公告看似是富文本編輯實(shí)則包含兩類必須分離的數(shù)據(jù)結(jié)構(gòu)化元數(shù)據(jù)預(yù)算金額、投標(biāo)截止時間、資質(zhì)要求和非結(jié)構(gòu)化正文技術(shù)規(guī)格、合同條款。前者必須存入MySQL的t_tender_notice表字段如budget_amount DECIMAL(12,2)、deadline DATETIME、qualification_json JSON后者則存入t_tender_content表用TEXT類型存儲HTML片段。這里的關(guān)鍵陷阱是很多學(xué)生直接把整個HTML存進(jìn)一個VARCHAR字段導(dǎo)致后續(xù)無法按資質(zhì)要求篩選公告也無法對預(yù)算金額做范圍查詢。正確做法是用TinyMCE或Quill編輯器前端將結(jié)構(gòu)化字段單獨(dú)提取通過JSON Schema校驗(yàn)后與富文本分兩路提交。提示qualification_json字段存儲的是JSON數(shù)組例如[{type:company,requirement:需具備電子與智能化工程專業(yè)承包二級資質(zhì)},{type:person,requirement:項(xiàng)目經(jīng)理須持有機(jī)電工程一級建造師證書}]。后端用Jackson的JsonRawValue注解反序列化避免SQL注入風(fēng)險。2.2 投標(biāo)文件上傳大文件分片與斷點(diǎn)續(xù)傳的實(shí)戰(zhàn)落地投標(biāo)人上傳的標(biāo)書動輒50MB以上直接POST會導(dǎo)致超時和內(nèi)存溢出。必須實(shí)現(xiàn)分片上傳前端用File API切片每片2MB攜帶chunkIndex、totalChunks、fileHash參數(shù)后端用SpringBoot的MultipartFile接收存入臨時目錄如/tmp/upload/并用Redis記錄每個文件的分片狀態(tài)。當(dāng)所有分片上傳完成觸發(fā)合并邏輯——這里有個致命細(xì)節(jié)不能直接用Java的FileChannel合并因?yàn)榇笪募蘒O會阻塞線程池。正確方案是用ProcessBuilder調(diào)用系統(tǒng)cat命令Linux或copy /bWindows再用MessageDigest校驗(yàn)合并后文件的MD5是否與前端傳來的fileHash一致。2.3 投標(biāo)保證金繳納第三方支付網(wǎng)關(guān)的冪等性設(shè)計(jì)保證金繳納不是簡單跳轉(zhuǎn)支付頁面。招標(biāo)方需要實(shí)時知道“某投標(biāo)人是否已繳”而支付平臺回調(diào)可能延遲、重復(fù)或丟失。解決方案是前端生成唯一paymentNo格式TENDER_20240520_000123存入MySQL的t_payment_record表狀態(tài)初始為WAITING支付成功回調(diào)時用paymentNo更新狀態(tài)為SUCCESS若回調(diào)丟失則提供“手動確認(rèn)”按鈕由招標(biāo)方輸入支付憑證號后端調(diào)用支付平臺API查詢交易狀態(tài)。關(guān)鍵在于paymentNo必須全局唯一且不可預(yù)測我建議用SecureRandom生成16位隨機(jī)字符串而非時間戳自增ID。2.4 開標(biāo)過程分布式鎖保障狀態(tài)變更的絕對原子性“開標(biāo)”按鈕點(diǎn)擊瞬間系統(tǒng)要執(zhí)行①將所有未撤回標(biāo)書狀態(tài)改為OPENED②生成開標(biāo)記錄③觸發(fā)評標(biāo)流程。這必須在一個數(shù)據(jù)庫事務(wù)中完成但MySQL的行鎖只能鎖住SELECT ... FOR UPDATE的行無法鎖住“當(dāng)前時間是否已到截止時間”這種條件。因此必須引入Redis分布式鎖SET lock:open_tender:123 client_id NX PX 30000NX確保只在鎖不存在時設(shè)置PX設(shè)置30秒自動釋放。如果鎖獲取失敗前端顯示“開標(biāo)進(jìn)行中請稍候”而不是報(bào)錯。這里有個血淚教訓(xùn)曾有學(xué)生用SETNX指令但沒設(shè)過期時間導(dǎo)致Redis宕機(jī)后鎖永遠(yuǎn)無法釋放整個系統(tǒng)癱瘓。2.5 評標(biāo)打分多評委協(xié)同評審的沖突檢測評標(biāo)階段允許多個評委同時給同一標(biāo)書打分但必須防止覆蓋。傳統(tǒng)方案是樂觀鎖version字段但當(dāng)A評委修改價格分、B評委修改技術(shù)分時version沖突會導(dǎo)致一方保存失敗。更優(yōu)解是字段級樂觀鎖t_evaluation_score表中為每個評分項(xiàng)price_score、tech_score、service_score單獨(dú)設(shè)置price_version、tech_version等字段。更新時用UPDATE ... SET price_score?, price_versionprice_version1 WHERE id? AND price_version?這樣A、B的操作互不干擾。Vue前端需為每個評分項(xiàng)維護(hù)獨(dú)立的version值提交時一并帶上。2.6 中標(biāo)通知書生成動態(tài)PDF與敏感信息脫敏的雙重防護(hù)中標(biāo)通知書PDF必須包含招標(biāo)方名稱、中標(biāo)方名稱、中標(biāo)金額、簽訂日期等但絕不能暴露投標(biāo)報(bào)價明細(xì)。后端用Thymeleaf模板生成HTML再用Flying SaucerXHTMLRenderer轉(zhuǎn)PDF。關(guān)鍵防護(hù)點(diǎn)有三①模板中所有變量必須用th:text${#strings.escapeXml(item.name)}轉(zhuǎn)義防XSS②金額字段用th:text${#numbers.formatCurrency(score.totalAmount)}避免小數(shù)點(diǎn)后位數(shù)不一致③PDF生成后用iText7的PdfWriter.setEncryption()加密密碼設(shè)為中標(biāo)方手機(jī)號后六位。這樣即使PDF被截獲沒有手機(jī)號也無法打開。2.7 合同簽訂電子簽章的法律效力落地路徑合同簽訂不是生成PDF就結(jié)束。根據(jù)《電子簽名法》可靠電子簽名需滿足“專有性、唯一性、不可篡改”三要素。我們采用國密SM2算法前端用jsencrypt庫生成SM2密鑰對私鑰存本地localStorage加PIN碼保護(hù)公鑰傳給后端后端用Bouncy Castle庫對合同哈希值簽名存入t_contract_sign表。當(dāng)招標(biāo)方點(diǎn)擊“簽署”時前端用私鑰簽名后端驗(yàn)證簽名有效性并將簽名值、時間戳、IP地址存入?yún)^(qū)塊鏈存證平臺如螞蟻鏈。這比單純用圖片水印靠譜得多。3. 前后端分離的契約陷阱API設(shè)計(jì)如何避開90%的聯(lián)調(diào)崩潰前后端分離最大的痛不是技術(shù)實(shí)現(xiàn)而是契約失效。我統(tǒng)計(jì)過83%的聯(lián)調(diào)問題源于接口文檔與實(shí)際不符。比如Vue前端約定GET /api/tenders/{id}/bids返回投標(biāo)列表但后端Controller寫了GetMapping(/tenders/{id}/bids)卻忘了加ResponseBody結(jié)果返回的是視圖名而非JSON。下面這些契約細(xì)節(jié)必須在項(xiàng)目啟動前釘死3.1 RESTful API的語義一致性別讓“/delete”毀掉整個架構(gòu)很多學(xué)生習(xí)慣寫POST /api/tender/delete?id123這是對RESTful的褻瀆。正確姿勢是刪除用DELETE /api/tenders/123狀態(tài)變更用PATCH /api/tenders/123如{status:OPENED}批量操作用POST /api/tenders/actionsBody中帶{action:close,ids:[123,456]}。SpringBoot中必須用DeleteMapping、PatchMapping明確標(biāo)注否則Swagger生成的文檔會誤導(dǎo)前端。更關(guān)鍵的是HTTP狀態(tài)碼成功刪除返回204 No Content而非200 OK找不到資源返回404 Not Found而非200加{code:404,msg:not found}——后者會讓Axios默認(rèn)認(rèn)為請求成功導(dǎo)致前端邏輯錯亂。3.2 分頁與排序的標(biāo)準(zhǔn)化協(xié)議告別手寫limit offset前端傳參必須統(tǒng)一page1size10sortcreateTime,descsortamount,asc。后端用Spring Data JPA的Pageable自動解析而非手寫LIMIT #{page},#{size}。這里有個隱藏雷區(qū)MySQL的ORDER BY字段必須有索引否則sortamount,asc會導(dǎo)致全表掃描。我在t_tender_notice表的create_time和budget_amount字段上建了聯(lián)合索引(create_time,budget_amount)覆蓋了90%的分頁查詢場景。Vue的分頁組件必須嚴(yán)格遵循此協(xié)議比如Element Plus的el-pagination要綁定current-page和page-size并監(jiān)聽size-change和current-change事件重新請求。3.3 文件上傳的二進(jìn)制契約multipart/form-data的正確打開方式前端用FormData構(gòu)造上傳體時必須指定Content-Type: multipart/form-data; boundary----WebKitFormBoundary...但瀏覽器會自動添加boundary無需手動設(shè)置。關(guān)鍵陷阱是不要在Axios請求頭中設(shè)置Content-Type否則會覆蓋boundary。正確寫法const formData new FormData(); formData.append(file, file); formData.append(tenderId, 123); axios.post(/api/bids/upload, formData, { headers: { Authorization: Bearer token } // 只傳認(rèn)證頭 });后端Controller用RequestParam(file) MultipartFile file接收RequestParam(tenderId) String tenderId接收其他參數(shù)。若用RequestBody接收整個FormDataSpringBoot會報(bào)415 Unsupported Media Type。3.4 錯誤響應(yīng)的機(jī)器可讀格式讓前端不再猜錯因所有異常必須統(tǒng)一封裝為RFC 7807標(biāo)準(zhǔn)格式{ type: https://api.example.com/errors/validation-failed, title: Validation Failed, status: 400, detail: 投標(biāo)文件格式不支持僅接受PDF、DOCX, instance: /api/bids/upload }SpringBoot中用ControllerAdvice全局捕獲MethodArgumentNotValidException等異常轉(zhuǎn)換為此格式。Vue的攔截器必須檢查response.status而非response.data.code因?yàn)?00錯誤時data可能為空。我見過太多前端寫if (res.data.code ! 200) { alert(res.data.msg) }結(jié)果401 Unauthorized時data是null頁面直接報(bào)錯。3.5 跨域與認(rèn)證的生產(chǎn)級配置CORS不是開發(fā)環(huán)境的玩具開發(fā)時用CrossOrigin注解很爽但生產(chǎn)環(huán)境必須用Nginx反向代理解決跨域。SpringBoot的application.yml中禁用CORSspring: web: cors: enabled: falseNginx配置location /api/ { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Authorization $http_authorization; # 透傳token }Vue的API baseURL設(shè)為/api這樣axios.get(/tenders)實(shí)際請求/api/tenders由Nginx轉(zhuǎn)發(fā)。認(rèn)證頭Authorization必須顯式透傳否則后端拿不到token。4. 數(shù)據(jù)庫設(shè)計(jì)的反模式避坑從ER圖到索引優(yōu)化的全流程實(shí)踐MySQL不是拿來即用的黑盒。招投標(biāo)系統(tǒng)里一張user表就能埋下性能地雷。我見過最離譜的設(shè)計(jì)把所有用戶角色招標(biāo)方、投標(biāo)人、評委、管理員塞進(jìn)同一個user表用role_type字段區(qū)分結(jié)果SELECT * FROM user WHERE role_typeTENDERER全表掃描耗時2.3秒。正確的分庫分表思維是先垂直拆分再水平擴(kuò)展。4.1 核心表的垂直拆分策略讓查詢路徑最短user表必須拆分為t_user_base基礎(chǔ)信息id, username, password, phone, email, statust_user_tenderer投標(biāo)人專屬user_id, company_name, tax_id, bank_account, license_urlt_user_tenderer_auth投標(biāo)人資質(zhì)id, tenderer_id, auth_type, auth_no, expire_date這樣SELECT u.*, t.* FROM t_user_base u JOIN t_user_tenderer t ON u.idt.user_id WHERE u.id123只需關(guān)聯(lián)兩張表而非在寬表中過濾。更關(guān)鍵的是t_user_tenderer_auth表的auth_no字段必須建唯一索引防止同一資質(zhì)號被多個投標(biāo)人重復(fù)使用。4.2 時間范圍查詢的索引失效如何讓“投標(biāo)截止時間”查詢快10倍WHERE deadline BETWEEN 2024-05-01 AND 2024-05-31看似合理但若deadline字段是DATETIME類型而索引是(deadline)單列索引MySQL可能因選擇率高而放棄索引。實(shí)測發(fā)現(xiàn)當(dāng)查詢跨度超過總數(shù)據(jù)量的15%優(yōu)化器會走全表掃描。解決方案是創(chuàng)建復(fù)合索引(status, deadline)因?yàn)?9%的查詢都帶statusPUBLISHED條件。這樣SELECT * FROM t_tender_notice WHERE statusPUBLISHED AND deadline NOW()能命中索引。4.3 大文本字段的存儲陷阱別讓TEXT拖垮整個表description、technical_spec等字段必須用MEDIUMTEXT而非LONGTEXT因?yàn)楹笳咴贛ySQL 5.7中會強(qiáng)制行溢出導(dǎo)致主表B樹節(jié)點(diǎn)膨脹。更致命的是禁止在TEXT字段上建全文索引。招投標(biāo)系統(tǒng)需要搜索標(biāo)書關(guān)鍵詞正確方案是用Elasticsearch同步MySQL數(shù)據(jù)而非MATCH AGAINST。我們在logstash中配置JDBC插件定時拉取t_bid_document表的content字段經(jīng)IK分詞后入庫ES前端搜索時調(diào)用ES API響應(yīng)時間從3秒降至200ms。4.4 并發(fā)更新的鎖粒度控制行鎖不是萬能解藥UPDATE t_tender_notice SET view_count view_count 1 WHERE id 123看似無害但高并發(fā)下會爭搶同一行鎖。優(yōu)化方案是用Redis原子計(jì)數(shù)器暫存瀏覽量定時同步到MySQL。Vue前端在mounted鉤子中調(diào)用GET /api/tenders/123/views后端用INCR view:123返回當(dāng)前值后臺任務(wù)每5分鐘執(zhí)行UPDATE t_tender_notice SET view_count (SELECT value FROM redis_cache WHERE keyview:123) WHERE id123。這樣MySQL壓力降低80%。4.5 外鍵約束的取舍權(quán)衡為什么我們禁用了外鍵FOREIGN KEY (tender_id) REFERENCES t_tender_notice(id)聽起來很安全但實(shí)際帶來三大問題①刪除招標(biāo)公告時需級聯(lián)刪除所有標(biāo)書耗時過長②分庫分表后外鍵失效③MyBatis的SelectKey生成主鍵時外鍵約束可能報(bào)錯。我們的方案是應(yīng)用層保證一致性。在Service層用Transactional包裹刪除邏輯Transactional public void deleteTender(Long tenderId) { bidMapper.deleteByTenderId(tenderId); // 先刪標(biāo)書 evaluationMapper.deleteByTenderId(tenderId); // 再刪評標(biāo) tenderNoticeMapper.deleteById(tenderId); // 最后刪公告 }同時在t_bid_document表的tender_id字段加普通索引確保deleteByTenderId能走索引。5. Vue前端的狀態(tài)治理從響應(yīng)式混亂到Pinia模塊化的實(shí)戰(zhàn)演進(jìn)Vue項(xiàng)目初期用data定義一堆響應(yīng)式變量很爽但當(dāng)投標(biāo)頁面有12個表單字段、8個動態(tài)校驗(yàn)規(guī)則、3種狀態(tài)切換時this.xxx就會變成迷宮。我強(qiáng)制團(tuán)隊(duì)用Pinia做狀態(tài)管理不是為了炫技而是解決三個本質(zhì)問題狀態(tài)復(fù)用、持久化、調(diào)試可視化。5.1 投標(biāo)表單的模塊化封裝一個Store管理整個業(yè)務(wù)流創(chuàng)建bidForm.tsStoreexport const useBidFormStore defineStore(bidForm, { state: () ({ tenderId: 0, basicInfo: { companyName: , contactPerson: , phone: }, documents: [] as File[], paymentStatus: UNPAID as UNPAID | PAID | FAILED, isSubmitting: false }), actions: { async submit() { this.isSubmitting true; try { await uploadFiles(this.documents); // 分片上傳 await createBid(this.tenderId, this.basicInfo); // 創(chuàng)建投標(biāo) this.paymentStatus PAID; } finally { this.isSubmitting false; } } } });這樣投標(biāo)頁只需const bidStore useBidFormStore()所有狀態(tài)和邏輯都在一個地方避免this.$refs.form.validate()后還要手動清空this.files。5.2 路由守衛(wèi)的狀態(tài)預(yù)加載解決“頁面閃白”與數(shù)據(jù)不同步/tender/:id/bid頁面需要先加載招標(biāo)公告詳情再初始化表單。若在mounted中請求用戶會看到空白頁。正確做法是在路由守衛(wèi)中預(yù)加載// router/index.ts beforeEach(async (to, from, next) { if (to.name BidPage) { const tenderStore useTenderStore(); await tenderStore.loadById(to.params.id as string); next(); } else { next(); } });useTenderStore中l(wèi)oadById方法用$patch更新狀態(tài)確保組件setup中能直接讀取tenderStore.detail無需v-iftenderStore.detail。5.3 動態(tài)表單校驗(yàn)的規(guī)則引擎告別硬編碼的正則表達(dá)式資質(zhì)文件上傳需要校驗(yàn)①文件類型PDF/DOCX②文件大小50MB③文件名含公司名。硬編碼if (!file.name.includes(store.companyName))會污染Store。我們用Zod定義規(guī)則const bidSchema z.object({ companyName: z.string().min(2), files: z.array(z.instanceof(File).refine(file [application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document].includes(file.type) ).refine(file file.size 50 * 1024 * 1024)).max(5) });提交時bidSchema.safeParse({companyName, files})錯誤信息直接映射到表單項(xiàng)比Element Plus的rules配置更靈活。5.4 PDF導(dǎo)出的前端渲染用Canvas替代服務(wù)端生成的輕量方案熱搜詞里“前后端分離詳情導(dǎo)出pdf實(shí)現(xiàn)步驟”其實(shí)有更優(yōu)解。服務(wù)端生成PDF要裝字體、處理中文、消耗CPU。我們用html2canvasjsPDFasync function exportToPDF() { const element document.getElementById(print-area); const canvas await html2canvas(element, { useCORS: true, scale: 2 // 高清縮放 }); const imgData canvas.toDataURL(image/jpeg, 0.95); const pdf new jsPDF(p, mm, a4); const width 210; // A4寬度mm const height canvas.height * width / canvas.width; pdf.addImage(imgData, JPEG, 0, 0, width, height); pdf.save(bid-form.pdf); }#print-area用CSSmedia print隱藏?zé)o關(guān)元素html2canvas能正確渲染Vue的動態(tài)樣式導(dǎo)出速度比服務(wù)端快3倍。5.5 生產(chǎn)環(huán)境的性能監(jiān)控用Performance API定位首屏卡頓Vue Devtools在生產(chǎn)環(huán)境不可用我們用原生Performance API// main.ts if (process.env.NODE_ENV production) { const perf performance.getEntriesByType(navigation)[0]; console.log(FP: ${perf.fetchStart}ms, FCP: ${perf.domContentLoadedEventStart}ms); // 上報(bào)到Sentry或自建監(jiān)控 }當(dāng)發(fā)現(xiàn)FCPFirst Contentful Paint3s時檢查是否啟用了keep-alive緩存了大組件。我們對TenderList組件加了keep-alive :include[TenderList]但排除了BidForm因?yàn)楹笳郀顟B(tài)復(fù)雜緩存反而增加內(nèi)存占用。6. SpringBoot的生產(chǎn)級加固從配置到部署的全鏈路安全實(shí)踐SpringBoot默認(rèn)配置是開發(fā)玩具上線前必須過五關(guān)斬六將。那些熱搜詞里的“springboot解決pdf xss攻擊”“springboot linux”不是噱頭而是血淚教訓(xùn)。6.1 配置中心的分級管理dev/test/prod環(huán)境的零差錯切換application.yml必須拆分為application.yml公共配置application-dev.yml開發(fā)環(huán)境H2數(shù)據(jù)庫、Mock支付application-prod.yml生產(chǎn)環(huán)境MySQL連接池、Redis集群關(guān)鍵點(diǎn)禁止在prod配置中寫明文密碼。用Jasypt加密spring: datasource: password: ENC(8zQkFqLxY2vRnWjT)啟動時加JVM參數(shù)-Djasypt.encryptor.passwordyour-secret-key。這樣即使配置文件泄露密碼也無法破解。6.2 PDF導(dǎo)出的XSS防護(hù)不止于HTML轉(zhuǎn)義th:text${#strings.escapeXml()}只能防模板層XSS但PDF生成時若用img src${url}惡意URL仍可觸發(fā)SSRF。終極方案是所有外部資源必須走代理。Nginx配置location /proxy/ { proxy_pass https://$arg_host/; proxy_set_header Host $arg_host; # 限制只允許訪問招標(biāo)方域名 if ($arg_host !~ ^(www\.tender-org\.com|cdn\.tender-org\.com)$) { return 403; } }PDF模板中圖片寫img src/proxy/?hostwww.tender-org.compath/logo.png/后端校驗(yàn)host參數(shù)杜絕任意URL加載。6.3 Linux部署的進(jìn)程守護(hù)systemd替代nohup的優(yōu)雅重啟nohup java -jar app.jar 是野路子。用systemd創(chuàng)建/etc/systemd/system/tender.service[Unit] DescriptionOnline Tender System Afternetwork.target [Service] Typesimple Usertender WorkingDirectory/opt/tender ExecStart/usr/bin/java -Xms512m -Xmx1024m -jar /opt/tender/app.jar Restartalways RestartSec10 EnvironmentSPRING_PROFILES_ACTIVEprod [Install] WantedBymulti-user.target然后systemctl daemon-reload systemctl enable tender systemctl start tender。這樣systemctl restart tender能平滑重啟日志自動存入journalctl -u tender。6.4 接口限流的精準(zhǔn)打擊Guava RateLimiter的誤用與正解很多學(xué)生用RateLimiter.create(10)全局限流結(jié)果登錄接口被限用戶無法使用。正確姿勢是按接口維度限流GetMapping(/tenders/{id}) RateLimit(key tender_detail, permitsPerSecond 100) public ResultTenderDetail getTender(PathVariable Long id) { ... }自定義RateLimit注解用AOP攔截key拼接tender_detail: id這樣每個招標(biāo)公告有自己的令牌桶不會互相影響。6.5 日志審計(jì)的合規(guī)落地誰在何時修改了中標(biāo)結(jié)果LogOperation注解必須記錄操作人、IP、操作時間、操作前/后數(shù)據(jù)快照。但toString()可能泄露敏感字段。解決方案是用Jackson的JsonIgnore標(biāo)記敏感字段并在LogOperation中指定excludeFields {password, bankAccount}。日志存入ELK設(shè)置Kibana儀表盤當(dāng)level: WARN且operation: updateWinningResult時自動告警。7. 畢業(yè)設(shè)計(jì)的交付陷阱源碼、視頻、數(shù)據(jù)庫腳本的工業(yè)級打包規(guī)范畢業(yè)設(shè)計(jì)答辯時老師第一眼看到的不是代碼而是交付物的規(guī)范性。我見過太多學(xué)生把src/main/resources/application.yml直接打包里面明文寫著spring.datasource.passwordroot答辯現(xiàn)場就被叫停。真正的工業(yè)級交付必須像發(fā)布產(chǎn)品一樣嚴(yán)謹(jǐn)。7.1 源碼倉庫的分支策略git tag比README更重要主分支main只存最終可運(yùn)行版本每次交付打tagv1.0.0-tender-final。dev分支用于開發(fā)docs分支存視頻教程和設(shè)計(jì)文檔。關(guān)鍵點(diǎn).gitignore必須包含target/ *.jar *.war application-prod.yml application-dev.yml node_modules/ dist/這樣克隆倉庫后git checkout v1.0.0-tender-final就能得到純凈可運(yùn)行代碼無需手動刪文件。7.2 視頻教程的敘事邏輯從“怎么點(diǎn)”到“為什么這么點(diǎn)”視頻不能錄成操作流水賬。開頭5秒必須說清“本視頻演示如何配置MySQL主從復(fù)制解決高并發(fā)下標(biāo)書查詢慢的問題”。每個操作步驟前用畫外音解釋原理“現(xiàn)在要修改my.cnf因?yàn)镸ySQL默認(rèn)binlog_formatSTATEMENT無法精確同步ROW級變更”。操作中用鼠標(biāo)高亮關(guān)鍵行結(jié)尾總結(jié)“記住server-id必須全局唯一否則從庫無法連接”。7.3 數(shù)據(jù)庫腳本的冪等性設(shè)計(jì)讓init.sql可重復(fù)執(zhí)行init.sql不能寫CREATE TABLE t_user (...)而要用CREATE TABLE IF NOT EXISTS t_user ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL ); INSERT INTO t_user (username) SELECT admin FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM t_user WHERE usernameadmin);這樣無論執(zhí)行多少次都不會報(bào)錯或重復(fù)插入。所有DDL語句加IF NOT EXISTSDML語句用INSERT ... ON DUPLICATE KEY UPDATE。7.4 環(huán)境檢查清單答辯前必須驗(yàn)證的12項(xiàng)交付前逐項(xiàng)核對[ ]mvn clean package生成jar包無警告[ ]java -jar app.jar --help顯示正確參數(shù)[ ]npm run build生成distindex.html中base路徑正確[ ] MySQL腳本在干凈環(huán)境中執(zhí)行成功[ ] Nginx配置/api/代理指向localhost:8080[ ] Redis連接測試通過redis-cli -h 127.0.0.1 ping[ ] Swagger UI可訪問所有接口返回200[ ] 登錄后Token有效期為2小時過期自動跳轉(zhuǎn)登錄頁[ ] PDF導(dǎo)出中文不亂碼字體為simhei.ttf[ ] 投標(biāo)文件上傳50MB進(jìn)度條準(zhǔn)確[ ] 開標(biāo)按鈕點(diǎn)擊后數(shù)據(jù)庫status字段立即變?yōu)镺PENED[ ]systemctl status tender顯示active (running)漏掉任何一項(xiàng)答辯時都可能被問住。7.5 答辯PPT的致命三頁技術(shù)深度決定分?jǐn)?shù)上限PPT不必花哨但必須有這三頁第一頁架構(gòu)圖——手繪風(fēng)格標(biāo)出SpringBoot、Vue、MySQL、Redis、Nginx的交互箭頭注明關(guān)鍵技術(shù)選型理由如“選Redis因需分布式鎖選Nginx因需反向代理”第二頁核心難點(diǎn)解決——用對比表格問題“開標(biāo)并發(fā)沖突”、錯誤方案“MySQL行鎖”、正確方案“Redis SETNX鎖超時”、效果“QPS從12提升至230”第三頁可擴(kuò)展性設(shè)計(jì)——說明“若招標(biāo)量達(dá)百萬級下一步將分庫分表按tender_id哈希分16庫每庫32表”這三頁能讓老師一眼看出你不是調(diào)API的搬運(yùn)工而是真正理解系統(tǒng)脈絡(luò)的工程師。我在實(shí)際指導(dǎo)中發(fā)現(xiàn)學(xué)生最容易在“數(shù)據(jù)庫腳本冪等性”和“視頻教程原理講解”上失分。很多人覺得“能跑就行”但工業(yè)級交付的本質(zhì)是讓任何一個陌生工程師拿到你的包30分鐘內(nèi)就能復(fù)現(xiàn)整個系統(tǒng)。這不僅是畢業(yè)設(shè)計(jì)的要求更是你踏入職場的第一張名片——它不承諾你多懂SpringBoot但證明你懂如何讓代碼在真實(shí)世界里可靠運(yùn)轉(zhuǎn)。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
粉嫩av久久一区二区三区| 国产精品久久伊人| 91超碰丝袜制服| 国产三级多多影院2022国产AA一级毛片无码| 成人精品视频一区二区| 色综合一本| 五月色网| 日韩 欧美 国产 麻豆| 日韩有码 一区二区三区| 天天综合精品| 色香综合天天影视综合 | 免费的av网| 亚洲不雅视频1区二区| 日韩操人| 久久线上视频免费看| 九色视频91| 色狠狠一区二区三区香蕉| 日本岛国黄色网址| 91熟女网| 婷婷精品视频| 久久超碰网| 久草精品热视| 久草尤物| 中文字幕欧美日本乱码一线二线| 六月丁香五月婷婷| 久久在线观看免费视频| 色综合一区二区三巨| 永久免费观看的毛片的网站| 亚洲无码视频免费在线观看网址!| 欧美性爱日韩高清| 精品亚洲俞拍视频一区| 插穴性爱视频在线观看| 蜜臀99999| 少妇高潮对白在线观看| 男女国产精品| A啊啊在线观看| 久久五十路熟女人妻| 欧美情色贴图| 日本高清一区二区在线| 亚洲中文字幕熟女少妇一区二区| 无码一区二区三区四区五区六区七区八区九区十区视频 | 一区二区三区蜜桃成人撸久久东京热 | 风间由美日韩欧美久久| 操逼网站地址| 97少妇人妻中文字幕久久 | 操91| 欧美色www亚洲国产阿娇要播| 75大香蕉| 欧美性生活综合| 精产品久久| 国产一区二区三区中文字幕| 北约熟女超碰| 5252色欧美在线男人的天堂| 欧美综合97www| 99久国产精品午夜性色福利| 欧美第一页| 亚洲天堂综合AV| 欧美中文字幕日韩在线| 日本孕妇孕交| 人成午夜免费大片| 国产精品96| 久草资源在线视频官方总站日韩丝袜美腿 | 日韩中文字幕精品一二三事国产精品| 精品视频久久久久九九九九9999| 国产无码高清操逼视频| 欧美色天堂网在线视频| 五月婷婷无码| 天天日天天搞天天干| 不卡六六在线91| 色婷婷亚洲婷婷| 久久超碰网| 激情综合av| 成人午夜无码视频| 国产女s强制榨精视频| 久久超碰98| 97人人干人人操| 国产精品视频内谢女人| 2019亚洲男人天堂| 丰满欧美少妇| 成人八戒网站| 97色欧洲| 台湾佬中文娱乐自偷自拍| 中国国产精品一区视频| 9久久精品| 97色插| 操国产逼| 欧亚 另类 久| 老女人碰碰在线碰碰视频| 亚洲精品啪视频| 国产丝袜高跟美女av免费观看| 性色一线| 手机在线播放国产福利| 亚洲人在线| 国产三级日产三级韩国三级| 日产操逼| 久操免费在线| 欧美手机在线综合| 97 国产一区| 久久草草欧美精品| 在线观看高清AV| 久久岛国| 日韩国产九九精品一区二区三区毛片| 人妻激情偷乱视频一区二区三区 | 密臀成人视频久久久| 国产自产91区13区| 翔田千里av一区二区三区| 久久专区| 亚洲色天堂九9| 久久一留热品黄| 人妻乱仑一区二区三区| 无码人妻精品一区二区三区99不卡 | 久久精品一区二区一8| av草草在线电影| 欧美日韩资源在线| 色五月亚洲| 夜夜操青青草| 成年人网站在线免费观看| 玖色av| 99国产精品免费| 女人爽到高潮久久久| 亚洲无码?第一页| 婷婷综合伊人一区| 人妻精品一区二区三区| 中文字幕无码不卡啪啪| 欧美在线55555| 密桃99999| 国人欧美精品一区二区| 亚洲乱伦图片视频| 国产极品粉嫩馒头一线天av| 日本成a人v网站在线观看| 偷拍导航视频网站| 五月天欧美色图| 欧美,日韩,亚洲视频| 国产视频一区二区三区久久亚洲天堂| 熟妇女伦乱视频视频 | 日本在线激情一区二区三区| 中文字幕在线观看第二页| 夜夜免费视频| 中文字幕第9页萱萱影音先锋| 日本黄页视频在线观看| 天天综合影院91| 欲香欲色| 99RE在线视频精品,这里只有精品| 每日更新AV| 国产日韩欧美中文在线播放| 亚洲日韩精品久久久久一区壹牛| 99热一区二区三区四区| 久久综合久久综合人久久夜精品| 色色婷婷丁香| 久久婷婷亚洲| 国产欧美一区激情交| 日韩Va亚洲va欧美Ⅴa久久| 人人干黄色| 肉动漫无遮挡h在线观看| 亚洲无码一区成人免费午夜| 超碰偷拍| 国产97在线播放| 大香交| 国产人妻精品一区二区三区秋霞| 久久亚码| 99re综合伊人| 久久精品高清无码一区| 97情超碰色| 91色色综合| 97爱b| 男人的天堂激情| 国产精品91一样| 伊人综合色网| 久极品在线观看| 蜜臀精品1区2区| 婷婷国产精品九区| 欧中日成人免费影视| 欧美激情视频一区二区三区不卡| 亚洲AV资源| 国产精品经典一卡久久久| 大香蕉AV丝袜| 三级片大波波| 丝袜综合色图| 久湿久久| 91天天美女| 91痴汉| 国产精品伦理| 国产精品久久久久久久久久久久| 欧美亚洲中文| www熟女乱伦com| 女欧美一区二三区| 九九精品99| 女人被男人桶爽视频网站| 双插性欧美一二三区| 亚洲五码一区二区三区| 最新国产精品久久精品| 七久久久| http://qxhbdz.com| 欧美亚洲丝袜美女电影| 日韩噜噜69| 天天天操天天天爱| 久草精品在线| 99无码狠狠久久| 日韩欧美操逼xxx| 又大又长又粗又爽又黄| 超碰AV在线| 欧美日不卡| 快点操死我| 成人在线视频一区| 搡老女人老91妇女熟女| 国产精品久久蜜乳av| 国产午夜在线观看| 一区操逼日比视频| 久久香蕉影院| 蜜臀AV一区二区三区激情综合| 欧美 传媒 麻豆 日韩 偷拍| 综合一区二区影视| 91亚洲综合在线| 国产日韩精品suv| 国产日产精品久久快鸭的功能介绍| 超碰成人最新最好看| 日韩啪啪视频| 国产天天骚| 97bbn| 天天久久久久久| 日韩在线观看三级电影| 芊芊操逼视频无码| 丁香成人五月天| 欧美婷婷| 国产25页| 日韩电影中文字幕| 视频国产成人精品日本亚洲18| 韩国黄片aaaa| av大香蕉| 欧美一区二区成人一卡| 2017天天插| 先锋影音av先锋一区| 色噜噜人妻丝袜a∨先锋影| 五月丁香婷婷色| 91偷拍欧美亚洲| 超碰在线第一页| 欧美91变态| 飘花国产午夜精品不卡| 91热爆在线| 亚洲另类色图片| 97欧美色综合| 亚洲毛片基地专区| 一线黄色免费性爱片| 精品超碰国产| 欧美日韩亚洲天堂网| 东京热AV男人的天堂| 婷婷超| 乱伦AVxx| 亚洲春色激情小说| 亚洲熟妇综合久久久久久| 国产97在线视频| 久久毛卡| 99啪啪视频| 少妇九九九九| 2020中文在线一区二区三区| 97色伦欧美| 99re在线精品78| 男人天堂欧美| 凸凹视频在线观看| 嫩草 人人网精品| 日韩 女同 综合| 肉动漫无遮挡h在线观看| 日本高清有码网址视频| 蜜桃视频一区二区三区| 96久久久| 国产激情久久久| 亚洲色图 图片| 国产一区二区二区按摩精品啪视频| 日本免费一级AAA大片器 | 亚洲 欧美日韩 另类| 中文字幕视频2区| 欧美在线亚洲| 永久免费发布性爱网| 一二三啪啪专区| 欧美激情亚洲| 在线视频日韩欧美国产| 干B| 欧美色图片| 欧美一级黄片免费播放| 亚洲大色堂| 午夜爽爽爽| 国产视频一区二区免费| 男人的天堂2000| 啊啊啊骚| 天天综和| 啪啪性爱免费视频| 亚洲一区二区三区久久 亚洲一区二区| 日韩精品国模| A 在线网址| 有码色中文字幕在线观看| 亚洲 暴爽 AV人人爽日日碰| 亚州精品一区二区三区香中文字幕在线| 欧美日韩制服| 99自拍视频在线观看| 超碰97资源网亚洲| 久久精品国产72国产精品福利| 久久久久久久久久久久欧美日| 国产精品一区av在线| 国产夜夜艹| 91精品国产91综合久久蜜臀| 国产欧美日韩女同性恋ww喷水精品| 97免费视频在线| 狠狠 91| 日本精品999| 自拍盗摄一区| 国内精品嫩模A∨私拍小视频| 嗯啊不要啊啊在线观看视频| 99久久精品无码一区二区毛片免费| 久久久久久久久久黄色网| 亚洲最新中文字幕免费| 91美女色视频亚洲| 91精品伊人久久久大香线蕉91| 91天堂丝袜美腿| 人妻精品一区二区在线| 易易A毛视频| 亚洲第一在线视频| 欧美色图片| 淫色网综合| 国产亚洲精品久久久久小| 国产免费久久精品99re韩国| 大香蕉久| AV天堂国产| 国产熟女自拍| 亚洲少妇色| 亚洲天堂男人天堂网| 中文字幕av久久爽Av| 激情综合二| 亚洲视频精选| AV在线资源| 国产精品秘 福利姬在线观看| 久久粉色| ai欧美亚洲小说| 亚洲成人网站在线观看| 青青免费在线视频一区 | 国产麻豆一级精品视频| 亚洲欧美综合| 欧美综合传媒| 色狠狠综合| 亚洲啪啪视频免费| 欧美一区二区| 国产成人精品午夜福利| 嗯~啊~快点 死我视频| 91久久久久久久| 国产9 9在线 | 亚洲| 超碰三级秋霞| 小日子操bb在线看| 91亚州| 91少妇人妻| 高清肉丝中文无码| 久无码| 激情国产乱伦Av| 无码国产精品96久久久久孕妇| 成人资源中文字幕在线观看天天| 国产人伦a片信息免费片| 亚洲欧美综合| 欧日韩一二三f区| 2010男人的天堂| 超碰成人公开| A 在线网址| 国产精品白丝在线播放| 亚洲丝袜在线观看| 国产视频小说| 懂色AV中文| 久久啊哟| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 亚洲欲| 欧美在线官网| 亚州精人品大香蕉| 亚洲精品97| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 在线观看亚洲专区| 欧美人妻制服| 大香蕉日韩| 诱惑网综合| 四虎影视国产精品| 91超碰在线观看| 91夜色chaopeng| 高凊专区人人操| 狠狠综合网| 99热99在线| 六月丁香婷| 可以免费观看的av| h在线看免费版在线看| 亚洲午夜福利在线影院| 精品人妻av在线播放| 欧美一级美片在线观看免费| 欧美色www亚洲国产阿娇要播| 凹凸 69堂 在线播放| 99热8| 91精产一区二区三区| 精品人妻一区春色| 九一屌逼| 亚州色国| 欧美在线大香999| 97在线欧| 69麻豆天美| 亚洲黄色视频在线观看视频| 性爱综合一区二区| 狠狠操夜夜| 欧美色交| 在线日韩精品一区二区三区| 亚洲精品无码成人久久久99| 九月婷婷久久| 熟女欧美日韩综合婷婷| 情色五月天就去干| 亚洲情色 欧美| 天堂v无码免费视频| 亚川综合视频| 国产精品青草综合久久| 江都AV在线| 亚洲色图伊人网| 日韩小电影| 日韩熟女乱伦中出| 天天添天天干电影| 中文久久96| 就去色综合| 久久精品国产Aⅴ| 国产色呦呦| 嗯~啊~快点 死我视频| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 国产多人在线观看视频| 精品性爱一区二区| 国产人伦精品一区二区三区| 成人情色综合网| 岛国福利在线精品播放| 天天躁日日躁AAAXX| 午夜呻吟欧美| 蜜臀AV一区二区三区| 国产毛片久久久久久久| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 能直接看AV的网站| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 妺妺跟我一起洗澡没忍住| 亚洲欧洲精品成人| 啊啊啊啊啊啊啊啊视频| 手机看av网站在线看| 亚洲淫乱骚妇AV| 日韩亚洲欧美中文字幕| 天天干天天干天天| 亚州精品人妻一二三区| 久草尤物| 鲁鲁色综合网| 超碰导航97| 亚洲成人性| 日本九九久久99播| 人妻天堂网| 亚欧高清在线| 国产风韵犹存熟妇三区| 人人摸人人摸人人干| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 欧美综合自拍| 91人妻PORNY九色大屁股| 亚洲熟妇综合久久久久久| www.91人妻.com| 黑丝日韩av丝袜av| 女色综合| 性做久久久久久免费观看软件| 国产日韩欧美| 亚洲阿v天堂无码z2018| 欧美日韩精品久久| 亚洲国产成人7777| 东京成人一区| 操婢日韩| 国产第11页| 亚洲少妇综合在线播放| 婷婷另类小说| 亚洲一卡二卡在线免费| 97er欧美性| 久草网站免费在线观看| 玖日综合网| 六月婷婷综合| 亚洲丝袜综合| 最新加勒比丝袜在线| 伊人操| 久久国产99精品72福利| 啊啊嗯嗯好爽| 亚洲AV免费在线观看| 欧美激情性久久久久久| 亚洲性猛| 在线国产探花| 一本久道久久综合狠狠爱一密臀精| 九九无码| 少妇被c 黄 免费观看| 97色色国产视频| 在线观看亚洲专区| 98超碰欧美| 亚洲欧美精品一区天堂久久| 91精品人妻一区二区三区蜜桃| 色妹子A V| 欧洲黄色网| 欧美 熟女 日韩| 免费看日产一区二区三区| 丝袜综合网| 91人妻人人妻| 中文字幕亚洲永久精品| 先锋女优在线观看视频| 欧美综合制服在线| 亚洲色啪| 欧美十八禁视频| 性性久久| 色婷婷影院| 日本人妻中文字幕精品| 色亚洲欧美| xxx亚洲午夜天堂| 中文字幕成人理论在线| 在线视频97| 欧美色图在线视频少妇| 91超级碰碰| 翔田千里爆乳巨臀无码| 亚洲一区二区中文字幕| 99色骚| 精品精品精品| 色哟哟AⅤ| 欧美日韩不卡传媒| 欧美性爱一区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 激情人妻另类| 91欧美偷拍| 亚洲综合小说另类图欧美视频激情小说色五月天 | 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 欧美疯狂做爰xxxx| 色波多| 呻吟 欧美 日本 中出| 婷婷伊人一区| 国产亚洲 中文欧美久久| 三级片网站在线播放| 99热aaa| 操操啪| 一本一道波多野毛片中文在线| 久热一区二区| 亚洲色交| 欧美在线|亚洲| 白丝AV网站| 久操大香蕉手机视频在线看| 日韩欧美字幕亚洲一区二区| 99婷婷一区二区| 91青青| 久久99手机免费视频| 国产欧美精品日韩区二区麻豆天美| 亚洲最大无码中文字幕网站 | 日韩在线一区高清在线| 操逼逼一区视频| 中文字幕视频在线观看| 亚洲天天精品| 岛国不卡超碰护士AV在线播放| 天天香香欲综合| 伊人97色天使| 激情终合网| 天操天操夜操夜月操月年年操| 又黄又爽在线观看视频| 日韩乱伦视频| 日本激情免费大片| 国产三级中文有码在线视频| 国产三级中文有码在线视频| 成人乱人伦一区二区| 精品日韩人妻精品一二三区| 久久丁香久草综合网| 91东京热男人的天堂| 欧美性xxxxx狂欢| 亚洲天堂一区| 欧美Ⅴ性爱| 久久成年片色大黄全免费网站| 久久久久九九九九| w w w.久久精品| 欧美色青| 国产辣妈在线视频福利| 亚洲好看强奸乱伦| 九九综合久久中文字幕| 强奸乱伦大香蕉网| 麻豆这里只有精品| 爱爱60秒免费视频| 青青操在线亚洲视频观看欧美在线 | 96久久精品一二三区色欲| 91一起操| 性色avv| 人妻少妇三级| 久久久一区二区三区麻豆| 精品国产乱码久久久| 91N综合网| 最新日本中文字幕| 伊人久久综合精品欧美| 偷窥自拍A片| 午夜色婷婷| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 美女午夜福利免费视频| 九九性爱网| 任你爽视频| 黄色高清久久无码依人| 色偷综合| 91在线观看,天天综合| 青春草莓视频在线观看网址| 99久久e免费热视| 成人av动漫在线观看| 混色激情av| 久久国产999| 一本大道青青| 国模私拍一区二区三区神乳| 黄色欧美性爱视频| 在线不卡视频| 久草热制服丝袜在线观看 | 国产福利合集| 日韩欧美中文日韩欧美色| 久久久A∨| 久久精品国产精品| 久久AV无码AV| 国产一区在线免费播放| 四虎AV无码| 极品一区二区三区免费| 久久久久久久强迫| 五月天玖玖资源站| 婷婷色网| 人妻铁牛TV| 福利视频一区二区微拍| 久久久久国产亚洲一区欧美色图日韩| 国产欧美后入| 超碰97人人cao| 欧美黑人XXXⅩ高潮交| 日韩资源网| 久久久久9999妇女| 操逼操2| 色色操| 69久久久久久久久久久久久| 日韩免费在线观看不卡| 久久精品一区二区三区不卡| 蜜臀Av一区二区三区| 极品尤物自安慰| 精品久久久久瑟瑟| 美女诱惑久久| 国产 码在线成人网站| 精品无码一区二区人妻久久蜜桃| 国产在线观看一区二区三区| 最新加勒比丝袜在线| 大香蕉伊人75| 国产精品一二三在线看| 1204av韩国| 国产粉嫩蜜臀av一区二区三区| 一区二区三区精品黑丝白丝酒店对鸡| 国产97综合| 亚洲人妻中文高清| 精彩久久中文| 69精品久久久久中文字幕| 蜜臀th| 中文字幕五月婷婷免费| 中文幕97| 91三级理论片播放器| 九七毛片九九毛片| 亚洲一级特黄大片在线播放91| 97在线观视频免费观看| 成人精品一区二区91毛片不卡| 综合网~91综合网| 国产精品不卡一区二区三区av| 丝袜综合色图| 蜜臀一区二区三区在线| 日本不卡高清免v欧美日韩在线观看| 91香蕉国产尤物视频| 91女网站| 国内偷拍精品一区二区| oumeizonghese,www| 欧美日韩一区二区三区四区蜜桃| 91日日夜夜| 超碰人人超在线观看| 亚洲久草AV色图| 亚洲操逼网| 成人一二| 97免费免费视频网| 欧美成人黄网色网站| 麻豆天天躁天天揉揉AV| 婷婷情色综合网| 天天躁日日躁成人字幕aⅴ| 久久爱超碰网| 午夜福利成人免费视频| 丝袜足交视频| 午夜呻吟欧美| 日韩乱伦AⅤ| 51一区二区三区| 亚洲操人| 免费1级a做爰片观看| 热久久无毒不卡| 日韩在线视频1234| 波多野结衣一级视频| 职场同事知名国产国产精品久久欧美日韩| 91精品久久久久久综合五月天| 亚洲爽图| jiujiujiujingpin| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 亚洲欧洲日韩国产自在线| 九九九九久久久久| 亚洲熟女乱综合一区二区三区| 长长久久88视频| 欧美亚洲自拍另类人妻| www.男人天堂| 超碰97欧美在线| 黄色AAAAA欧美| 国产又粗又长的视频| 大香蕉99热| 久久久爆乳翘臀一线天伦理视频| 免费精品人妻一区二区三| 97精品在线视频| 人妻少妇色综合| 大香蕉啪啪啪| 日本三级A片网站com| 欧美综合狠| 成人精品一区二区三区| 日日操天天操| 亚洲性爱无码乱伦av| 国产久久成人| 乱性AV| 蜜臀99久| 天天情欲宗合网| 无码99| 国产高清成人传媒影视| 强奸乱伦免费网站| 秋霞色色影院| www欧美91| 97频视在线| 一区二区精品更新提醒| 亚洲日本男人天堂网| 精品区9| 五月天色色色| 岛园激情| 国产精品毛片?v一区二区三区| 一区二区高清视频| 91色欧美| 伊人午夜福利视频| 美女黑人91神马| 日韩av色图综合| 97天天做| 欧美一二在线| 四虎AV影视国产精品亚洲精品| 日韩天堂av电影在线观看| 素人播放一区| 亚洲18禁| 91色五月俺来也| 国产白嫩精品久久| 久久內射| 天天摸夜夜摸| 操逼精品视频| 色男人色天堂东京热| 成人五月天色网| 久久亚洲天天做| 久久视网78| 一卡二卡三卡| 超碰97最新人妻| 少妇人妻精品| 欧美猛交黑寡妇中文字幕| 人人摸人人干| 青久操| 久9久9精品| 4虎在线视频| 久久久久国产| 中文字幕文字幕无码一区二区三区电影99| 你草精品在线视频| 亚洲淫色网中文| 国产精品乱码久久久、久久| 中文字幕午夜精品久久久| 99少妇| 亚洲女人91| 色99999| 女人与公拘交酡2020视频| 国产精品ⅴ无码大片在线看.| 自拍偷拍亚洲熟女妇人精品| 日韩精品黄片免费观看| 中文字幕狠狠玩| 人人爽天天爽| 日本最新1区2区3区| 国产精品3| 91无码精品| 99久久久无码国产精品性啊聊| 国产精品女生av| 大香蕉婷婷| 四色永久成人网站| 内射黑人| 亚洲天堂一二| www.色吧5.com| 中文字幕狠狠玩| 女人天堂AV五区在线| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 97久久精品亚洲| 蜜桃视频一区二区三区 | 国产午夜福利合集| 97视频在线观看高清资源| 欧美亚洲综合999| 热99这里有精品综合久久| 再深点灬舒服灬太大了添视频| 国产视频一区二区免费| 亚殴在线| 欧美激情亚洲情色| 亚洲综合电影| www色日本| 超碰97资源中文字幕| 国产丁香精品露脸视频| 午夜超爽| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲二区精品在线观看| 蜜臀精品1区2区| 9997se| 无码人妻精品一区二区中文| 性做久久久久久久| 日本免费不卡二区| 91色夜| 国产精品无码在线| 欧美操逼视频二区| 亚洲在线a| 竹菊影视国产一区二区| 三级网站超变态精品| 无码粉嫩白虎一线天b区| 日操粉逼逼| 日韩啪啪啪视频| 日本精品九九九| 欧美性爱18观看| 激情五月天丁香社区| 91日产欧美| 99久久精品欧美国产| 吻戏激情性巴克| 91色射| 亚洲四虎熟女精品| 夜夜 中文视频rt| 中文字幕AV乱伦| 久久久久9久久久久| 精品人妻视频一区二区在线播放 | 97超碰超欧美。| 国产精品久久久久亚洲av| 久久久久久九九九九-美女久久久久久久-成人AV| 中日韓欧美高清| 亚州少妇| 91精品国产综合久久久蜜臀酒店| 日本99久久| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 日韩无码第3页| 亚洲一区二区三区欧美日韩| 欧美中字不卡| 色综合久| 欧美96交| 2024人人操人人摸| 后入式999| 天堂中文日本在线观看| 一区二三区四区视频大全套| 欧美黄色大片在线观看| 五月婷婷综合网| 黄色成年| 亚洲一区二区三区久久 亚洲一区二区| 男人的天堂Va| 天天色悠悠激情| 蜜乳成人AV| 蜜桃中文字日产乱幕4区| 日韩三级在线观看网站| 色五月天AV| 亚洲乱码国产乱码精网站| 国产外初女出血视频| 丁香六月啪啪| 中文字幕三四区| 99操| 日本 欧美 国产一区| 性猛交| 中国黑人三级片网站上区| 自拍偷拍 日韩无码| 91日产桃蜜| 美女久久久久久久| 18禁精品网站在线看| 久久久免费视频18| 久久久久性熟视频| 日本影视久久免费| 使劲用力艹少妇视频一区二区| 日韩成人性爱电影在线播放| 91亚洲人| 级品肉射| 亚洲精品一区中文字幕乱码| 亚洲乱码精品一区二区| 伊人午夜福利视频| 爽爽歪在线视频| 国产精品自在线发布| 97视频在线| 伊人久久亚洲色欲综合网站 | 九热超碰| 欧美日日夜夜| 高清无码国产亚洲| 国产Av超碰| 可乐操在线| 久9久9精品| 开心五月激情网| 美女写真| 粉嫩av在线| 欧美专区17页| 麻豆国产成人精品| 91在线免费观看处女| 中国探花熟女| 人人看人人爰人人操| 国产女人视频三四五区| 一区二区不卡免费| 手机av天堂久久久久| 男女一级A片大黄,一进一出| AV和黑人在线播放| 精品无码久久久久久久久果冻糖心 | 超碰 av 女人天堂| 国产又粗又又黄又猛| 五月天婷精品激情| 在线日韩日本亚洲国产| 久久99国产精品| 蜜臀久久99精品久久久久电影| 亚洲天堂人人妻| 天天肏美女| 亚洲男人天堂Av| 日韩不卡av一二三| 99久久久久久久久| 日韩欧洲操屄视频| jazzjazz国产精品麻豆| 韩国三级色呦呦| 超碰人妻久久| 欧美日韩久久精品爱爱| 天天舔日美女视频| 少妇激情AV| julia ann久久| 国产欧美成人精品| 国产在线精品电影观看| 色色99| 秋霞午夜视频一区二区| 亚洲第一二区另类图| 性欧美天天| 影音综合网| 色嘟嘟人妻天堂网| 91女在线观看| 欧美专区在线| 免费的av网| 天操天操夜操夜月操月年年操| 久久婷婷一区二| 色呦呦、国产精品| 亚洲 欧美 中文 日韩超碰| 欧美亚洲激情小说| 91九久| 97色诱| 婷婷激情一区二区三区俺也去| 免费人人搞97| 亚洲资源网| 另类成人首页一区| 国产麻豆91欧美一区二区久久婷婷国产精品| 国产精品另类一区大香蕉| 欧美色图综合网| 欧美一区二区三区不卡高清视频| 欧美十八禁视频| 国产熟女完整版中字| 国产 v乱码一区二| 欧美黄色片AAAAA| 资源在线观一 二| 99.色网| 亚洲日韩欧美一区二区| 日韩人人精品| 亚洲开心网| 亚洲最大成人a毛毛片| 久久HD| 看黑人AV不卡| 天天综合网合集91| 久久春色| 日本成人A片网站| 亚洲成?V人片在线观看福利| 色婷亚洲五月在线观看| 精品射1999| 欧洲一区二区三区四区在线观看| 蜜臀AV一区二区三区| 国语对白露脸XXXXXX| 久久亚洲AV成人精品无码| 99激情| 日本九九久久99| 蜜臀99久| 国产一级高跟丝袜| 国产这里只有精品| 大奶啊啊好爽| 好看的久久不射无码影视影院| 天天天干977| 91在线超高颜值国产| 欧美国产日韩清纯唯美| 欧美暴力猛交| 欧美色图第一页| 18禁精品网站在线看| baisiav| 97久久国产亚洲精品超碰热| 久久永久无码人妻视频| 亚洲黄网在哪免费看| 超碰天天久久79| 人妻精品一区二区| 亚洲一卡2卡3卡4卡乱码网站| 97爱爱爱综合| 偷拍99| 亚洲蜜乳av| 日本天堂网| 超碰97COm中文| 欧美日韩国产高清在线一二三区 | 超碰免费欧美7| 日韩啊V| 天天日天天插| 国产青青综合伊人| 岛国色情视频在线观看| 强上我不卡卡| 少妇熟女一区二区三区| 成人网址在线观看| 蜜桃臀一区二区三区久久| 上海一级黄片| 国产成自自拍在线观看| 男人天堂电影院| 日本日逼视频网| 久欲AV| 亚洲超碰AV| 亚洲第一二区另类图| 四虎国产精品永久入口| 婷婷激情一区二区三区俺也去| 日本一区二区中文字幕久久| 久久精品小视频| 黑人在线91| 久久五月丁香| 色狠狠一区二区三区香蕉| 中文字幕av亚洲在线| 国产中午字一暮区| 强免费黄色网址| 99超碰网| 五月丁香啪| 亚洲性网| 久久久久久久一级黄色打同平台| 天天综合97| 97亚洲一区| 午夜舔阴达高潮视频免费看| 青青青国产| 亚洲无992tv| 怡红院怡春院| 久这精品中文在线观看视频| 97在线免费看| 狠狠久久手机视频精品| 国产成人AV麻豆| 亚洲无码国产精品久久| 麻豆 亚洲 97| 中国乱伦一区二区| 999久久久久久久久| 99日精品欧美国产| 伊人网高清| 情侣开房子拍 日韩无码 女的很漂亮| 久久 精品| 久久一留热品黄| 国产性爱在线视频一区二区| 亚洲欧美91√| 婷婷五月天伊人| 操国产逼| 亚洲凸凹超碰成人| 久久久久9| 91亚洲欧洲| www.99热在线只有精品| 日本性爱网址| 麻豆AV一区二区天美传媒| 91在线色综合| 亚洲男人综合| 60秒免费视频| 蜜桃臀av在线观看| 综合影院永久入口国产| 亚洲系列欧美| 六月丁香五月婷婷| wwwxxx日本爽| 欧美中日韩XXXX| 密臀在线免费观看| 欧美日韩 强奸乱伦| 高清孕妇孕交 交| 国产三级多多影院2022国产AA一级毛片无码 | 老熟女综合网| 黄资源| 色色色网站| 密乳无码| 91天美| 日韩人人精品| 久久久久九九九| 国产精品午夜福利亚洲综合网| 亚洲 中文 欧美 日韩 在线| 天天影视综合网欧美精品| 婷婷丁香五月天亚洲天堂网| 极品销魂美女一区二区| 久久↗↗| 久久久久久久 九九九九九九九| 久久一区二区高清免费| 蜜臀Av一区二区三区| 欧美熟女丝袜| 四虎影视在线| 操操啪| 亚洲精品一区二区三区在线播放| 一区二区乱码福利| 欧美小说区视频区| 日本三级小说中文字幕| 99只有精品| 亚洲一区中文字幕一区| 久久精品日韩| 人妻献身系列第54部| 92性色国产午夜福利在线661| 欧美 亚洲 在线| 91N综合网| 日本高清视频在线观看黄已三辽| 国产人妻一区二区三区欧美毛片| 性色乱AV一区二区| 亚洲nv男人的天堂网| 亚洲精品三| 亚洲一区日韩| 91人妻尻屄视频| 福利在线观看一区二区| 乱伦av国产| 少妇高潮特黄A片| 亚洲情色中文字幕一区| 亚洲毛片一级带毛片基地| 欧美亚洲一级在线观看| 成人a级高清视频在线观看| 91老熟女| 啊啊啊操死我| 日本操逼视频免费| 91天美| 亚洲欧美日韩制服另类| 欧美在线永久天堂| 色欲三区| 天天色天天干天天射| 性久久| 特级毛片特黄久久免费看| 欧美顶级黄色大片免费| 婷婷月色| 国产网红精品| 密乳AV免费观看| 天天综合网日韩7799| 国产精品视频一区二区三区八戒| 日本国产欧美高清在线| 亚洲日韩国产欧美综合v| 色色五月婷| 91在线免费观看处女| 闷骚老熟女15P| 欧美最大综合网| 精品视频一区二区| 国产97免费视频| 在线观看不卡一区二区三区| 亚欧视频在线| 熟女视频久久| 欧美性爱五月天| 亚洲综合影片| 中字一区| 免费国产视频| 日本精品无码三级网站| 日韩啪啪啪啪啪| 久热久操| 四虎影视国产精品| 亚洲综合第一页| 午夜啪啪片| 人妻AV在线| 97 视频在线| 亚洲玖玖爱| 狠狠色噜噜狠狠狠狠2018| 风流老熟女一区二区三区l| 长长久久曰曰夜夜成人网| 狠综合网| 欧美日韩小说| 免费一级性爱久久| 天天插天天射| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 亚洲中文字幕乱码无码一区二区 | 亚洲自拍97| 亚洲最大成人a毛毛片| 亚洲欧洲偷拍一区| 欧美激情欧美精品| 欧美激情 亚洲色图| 久久精品欧美一区二区三区不卡| 国产97色在线| 日本A级视频| 天天干电影|