日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

一個注解實現(xiàn)接口冪等,這樣才優(yōu)雅!

來源: 責編: 時間:2023-08-05 11:46:08 4808觀看
導讀場景碼猿慢病云管理系統(tǒng)中其實高并發(fā)的場景不是很多,沒有必要每個接口都去考慮并發(fā)高的場景,比如添加住院患者的這個接口,具體的業(yè)務代碼就不貼了,業(yè)務偽代碼如下:圖片上述代碼有問題嗎?誰能說有問題?一般情況下是沒什么問題

場景

碼猿慢病云管理系統(tǒng)中其實高并發(fā)的場景不是很多,沒有必要每個接口都去考慮并發(fā)高的場景,比如添加住院患者的這個接口,具體的業(yè)務代碼就不貼了,業(yè)務偽代碼如下:sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

上述代碼有問題嗎?誰能說有問題?一般情況下是沒什么問題,但是在高并發(fā)的場景下肯定是存在問題,為什么?sJf28資訊網(wǎng)——每日最新資訊28at.com

因為有事務的隔離性,step1這個階段對住院號的校驗肯定是存在問題的,在高并發(fā)的場景下無法保證這里的校驗一定準確。sJf28資訊網(wǎng)——每日最新資訊28at.com

其實這個接口的并發(fā)并不高,在碼猿慢病云管理系統(tǒng)中一般不會出現(xiàn)這種問題,那么什么時候會出現(xiàn)呢?sJf28資訊網(wǎng)——每日最新資訊28at.com

醫(yī)院中大部分是內(nèi)網(wǎng)+外網(wǎng),如果由于網(wǎng)絡的抖動,系統(tǒng)請求響應的時間延遲,這樣會導致醫(yī)護操作時會出現(xiàn)重復點擊的情況,比如1秒中之內(nèi)由于第一次點添加患者這個按鈕沒反應,往往護士都會重復點擊,這種情況下是會出現(xiàn)問題。sJf28資訊網(wǎng)——每日最新資訊28at.com

這里我們就暫且不談對單個接口的冪等優(yōu)化了,要想一個方案全局解決這個問題,在碼猿慢病云管理系統(tǒng)中其實只要保證這種并發(fā)不高的接口在一定時間段內(nèi)保證冪等即可,比如5秒之內(nèi),這樣在5秒之內(nèi)護士重復點擊就沒事。sJf28資訊網(wǎng)——每日最新資訊28at.com

解決方案

在碼猿慢病云管理系統(tǒng)中新增了一個注解:@RepeatSubmit,代碼如下:sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

只需要將該注解標注在新增、修改、刪除接口上就能保證在默認的5秒之內(nèi)接口冪等。sJf28資訊網(wǎng)——每日最新資訊28at.com

比如新增住院患者這個接口:sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

那么原理是什么?其實很簡單,先來說下原理,再介紹具體的實現(xiàn):sJf28資訊網(wǎng)——每日最新資訊28at.com

  1. AOP攔截增強@RepeatSubmit注解
  2. 獲取請求的URL、IP地址、請求參數(shù)
  3. 將請求URL、IP地址、請求參數(shù)以一定形式轉為key
  4. 借助Redis的setNx命令將key存入Redis,且設置失效時間
  5. 如果存入成功則允許訪問,失敗則拋出異常
  6. 全局異常捕獲,輸出指定信息給客戶端

上述6個步驟中其實只有一點比較難實現(xiàn)的,其他的都是基本操作,就是獲取這個請求參數(shù),下面將詳細介紹一下如何獲取這個請求參數(shù)。sJf28資訊網(wǎng)——每日最新資訊28at.com

獲取請求參數(shù)

對于form-data的入?yún)⒅恍枰{(diào)用HttpServletRequest的API讀取,但是對于@RequestBody標注的入?yún)⑹峭ㄟ^IO流讀取數(shù)據(jù),且IO流只能被讀取一次,如果在AOP中讀取了,那么在接口層面的入?yún)⒆x取肯定是有問題,報錯如下:sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

解決方案也很簡單,只需要保證IO流能夠多次讀取即可,下面就來介紹一下方案。sJf28資訊網(wǎng)——每日最新資訊28at.com

這里我們可以利用裝飾者模式對 HttpServletRequest 的功能進行增強,具體做法也很簡單,我們重新定義一個 HttpServletRequest:sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

這段代碼并不難,很好懂。sJf28資訊網(wǎng)——每日最新資訊28at.com

首先在構造 RepeatedlyRequestWrapper 的時候,就通過 IO 流將數(shù)據(jù)讀取出來并存入到一個 byte 數(shù)組中,然后重寫 getReader 和 getInputStream 方法,在這兩個讀取 IO 流的方法中,都從 byte 數(shù)組中返回 IO 流數(shù)據(jù)出來,這樣就實現(xiàn)了反復讀取了。sJf28資訊網(wǎng)——每日最新資訊28at.com

接下來我們定義一個過濾器,讓這個裝飾后的 Request 生效:sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

判斷一下,如果請求數(shù)據(jù)類型是 JSON 的話,就把 HttpServletRequest “偷梁換柱”改為 HttpRequestWrapper,然后讓過濾器繼續(xù)往下走。sJf28資訊網(wǎng)——每日最新資訊28at.com

這樣就可以配置后就可以在程序中反復讀取參數(shù)了!sJf28資訊網(wǎng)——每日最新資訊28at.com

防重注解實現(xiàn)

解決了參數(shù)讀取的問題,下面就可以輕松實現(xiàn)這個防重注解了,首先定義注解com.code.ape.codeape.common.security.annotation.RepeatSubmit:sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

接下來直接用AOP實現(xiàn),com.code.ape.codeape.common.security.component.CodeapeRepeatSubmitAspect代碼如下:sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

邏輯很簡單,上述已經(jīng)介紹過完整的流程,這里需要注意的是參數(shù)的讀取,代碼如下:sJf28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片sJf28資訊網(wǎng)——每日最新資訊28at.com

其實就是將request判斷下是否是經(jīng)過過濾器封裝后的HttpRequestWrapper對象,如果是的話則是@RequestBody入?yún)ⅲ苯訌腎O流中讀取。sJf28資訊網(wǎng)——每日最新資訊28at.com

總結

本節(jié)內(nèi)容介紹了防重注解@RepeatSubmit的實現(xiàn)原理,后續(xù)開發(fā)中只需要在非查詢接口中添加這個注解就能保證在一定時間內(nèi)防止重復提交。sJf28資訊網(wǎng)——每日最新資訊28at.com

碼猿慢病云管理系統(tǒng)已經(jīng)在星球中陸續(xù)更新,目前更新內(nèi)容如下:sJf28資訊網(wǎng)——每日最新資訊28at.com

前言     01 項目架構+業(yè)務介紹     02 三方組件介紹     03 服務端項目部署     04 前端項目部署     05 多租戶架構設計     06 醫(yī)療系統(tǒng)中的權限如何設計?     07 項目搭建     08 關掉驗證碼登錄     09 開發(fā)平臺自動生成業(yè)務代碼認證鑒權     01 認證登錄生成token     02 token檢驗、鑒權     03 token有效期設置     04 刷新token     05 檢查token     06 服務中如何獲取當前登錄用戶信息?     07 接口對外暴露     08 接口只允許內(nèi)部調(diào)用怎么處理?     09 如何實現(xiàn)token中繼?     10 當前登錄用戶身份信息如何異步傳遞?     11 科室權限如何定一個注解自動注入?     12 一個注解防止接口重復提交業(yè)務     01 科室管理     02 醫(yī)院管理     03 角色管理

sJf28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-146-0.html一個注解實現(xiàn)接口冪等,這樣才優(yōu)雅!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 從零到英雄:高并發(fā)與性能優(yōu)化的神奇之旅

下一篇: WebRTC.Net庫開發(fā)進階,教你實現(xiàn)屏幕共享和多路復用!

標簽:
  • 熱門焦點
  • 5月iOS設備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數(shù)據(jù),像安卓陣營的榜單都有著比較大的變動,不過iOS由于設備的更新?lián)Q代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優(yōu)化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現(xiàn)了一個流處理程序
  • 2023 年的 Node.js 生態(tài)系統(tǒng)

    隨著技術的不斷演進和創(chuàng)新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態(tài)系統(tǒng),可以幫助開發(fā)人員更快地實現(xiàn)復雜的應用。本文就來看看 Node.js 最新的生
  • SpringBoot中使用Cache提升接口性能詳解

    環(huán)境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架從 3.1 開始,對 Spring 應用程序提供了透明式添加緩存的支持。和事務支持一樣,抽象緩存允許一致地使用各
  • 學習JavaScript的10個理由...

    作者 | Simplilearn編譯 | 王瑞平當你決心學習一門語言的時候,很難選擇到底應該學習哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內(nèi)容創(chuàng)建項目,添加 Spring Web 依賴項,并單擊“生成”按鈕下載 .zip 文件,為下一步做準備。請在進入步驟2之前進行解壓。圖
  • 首發(fā)天璣9200+ iQOO Neo8系列發(fā)布首銷售價2299元起

    2023年5月23日晚,iQOO Neo8系列正式發(fā)布。其中,Neo系列首款Pro之作——iQOO Neo8 Pro強悍登場,限時售價3099元起;價位段最強性能手機iQOO Neo8同期上市
  • 質(zhì)感不錯!OPPO K11渲染圖曝光:旗艦IMX890傳感器首次下放

    一直以來,OPPO K系列機型都保持著較為均衡的產(chǎn)品體驗,歷來都是2K價位的明星機型,去年推出的OPPO K10和OPPO K10 Pro兩款機型憑借各自的出色配置,堪稱有
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項實用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發(fā)布的朋友圈
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久人人九九| 小嫩嫩精品导航| 亚洲国产精品成人精品| 亚洲精品小视频在线观看| 亚洲少妇在线| 久久精品国产亚洲一区二区| 欧美成人午夜影院| 欧美性片在线观看| 国产综合自拍| 99精品热视频| 久久精品一区中文字幕| 欧美精品 日韩| 国产日韩欧美一区在线 | 欧美大片一区二区| 国产精品va在线播放| 国语自产精品视频在线看8查询8| 亚洲国产一区二区三区在线播| 亚洲午夜久久久| 久久一区免费| 国产精品久久99| 亚洲成色www久久网站| 中国亚洲黄色| 久久在线免费观看| 国产精品毛片在线看| 在线播放亚洲一区| 亚洲欧美综合一区| 欧美人成免费网站| 伊人成人在线| 午夜精品福利在线观看| 欧美久久久久久久| 影音先锋久久久| 午夜精品福利一区二区蜜股av| 欧美精品国产精品日韩精品| 好吊一区二区三区| 午夜国产不卡在线观看视频| 欧美精品自拍偷拍动漫精品| 黄色综合网站| 欧美一级在线视频| 欧美午夜在线| 亚洲精品一区在线| 蜜臀91精品一区二区三区| 国产欧美一区二区三区在线老狼 | 亚洲一区二区在线观看视频| 奶水喷射视频一区| 国产真实乱偷精品视频免| 亚洲深夜av| 欧美顶级大胆免费视频| 国外视频精品毛片| 亚洲欧美日韩区| 欧美视频在线观看免费| 亚洲国产午夜| 久久婷婷国产综合国色天香| 国产精品五月天| 亚洲视频在线一区观看| 欧美区在线观看| 亚洲国产视频a| 乱中年女人伦av一区二区| 韩日精品在线| 久久精品国产77777蜜臀| 国产精品网站在线播放| 亚洲视频图片小说| 欧美视频专区一二在线观看| 99热免费精品| 欧美伦理一区二区| 亚洲乱码国产乱码精品精| 美女精品在线| 亚洲国产成人精品女人久久久 | 国产精品亚洲第一区在线暖暖韩国 | 在线精品国精品国产尤物884a| 欧美在线一区二区三区| 国产亚洲成av人片在线观看桃| 亚洲欧美中文日韩在线| 国产精品夜夜夜一区二区三区尤| 亚洲永久网站| 国产精品欧美日韩一区| 午夜精品久久久久久久99黑人| 国产精品网红福利| 亚洲欧美日韩国产成人| 国产精品毛片va一区二区三区| 亚洲一区二区不卡免费| 国产精品久久一区主播| 亚洲欧美激情四射在线日 | 免费短视频成人日韩| 1024成人网色www| 嫩模写真一区二区三区三州| 亚洲激情成人在线| 欧美激情中文字幕乱码免费| 91久久精品一区二区别| 欧美精品在线一区二区三区| 一级日韩一区在线观看| 欧美亚洲成人精品| 香蕉乱码成人久久天堂爱免费 | 日韩视频免费观看高清在线视频 | 欧美一区二区| 狠狠干狠狠久久| 蜜月aⅴ免费一区二区三区| 亚洲精品久久久久| 欧美性事免费在线观看| 午夜国产精品视频| 国产在线观看精品一区二区三区 | 欧美大胆a视频| 一区二区欧美国产| 国产精品爽黄69| 久久久久久久91| 最新精品在线| 欧美色道久久88综合亚洲精品| 亚洲欧美国产77777| 国内精品国语自产拍在线观看| 另类尿喷潮videofree| 亚洲免费高清| 国产欧美日韩视频| 麻豆精品网站| 在线亚洲观看| 国内精品免费在线观看| 欧美激情精品久久久久久久变态 | 亚洲日本激情| 国产精品入口尤物| 久久躁日日躁aaaaxxxx| 99精品国产一区二区青青牛奶| 国产精品一区一区| 蜜桃av久久久亚洲精品| 亚洲一区二区三区乱码aⅴ| 精品成人一区二区三区| 欧美日韩精品一区二区天天拍小说| 午夜亚洲精品| 亚洲区一区二| 国产欧美欧美| 欧美看片网站| 久久激五月天综合精品| 日韩视频三区| 好吊一区二区三区| 欧美视频在线观看一区| 久久免费观看视频| 亚洲一区二区精品视频| 在线观看欧美成人| 国产精品免费观看视频| 欧美77777| 欧美亚洲日本网站| 亚洲免费成人av电影| 国产一区二区三区无遮挡| 欧美日韩三区| 久久综合99re88久久爱| 亚洲影院在线| 亚洲精品之草原avav久久| 国产性猛交xxxx免费看久久| 欧美日韩精品一区二区天天拍小说| 久久www成人_看片免费不卡| 99re视频这里只有精品| 黄色日韩精品| 国产精品中文在线| 欧美精品一区二区三区在线看午夜| 欧美伊人精品成人久久综合97| 99视频+国产日韩欧美| 在线观看国产一区二区| 国产日韩欧美麻豆| 国产精品国产自产拍高清av| 噜噜噜噜噜久久久久久91| 欧美亚洲一区二区在线观看| 9i看片成人免费高清| 亚洲国产91色在线| 国内综合精品午夜久久资源| 国产精品嫩草久久久久| 欧美日韩国产精品专区| 女仆av观看一区| 久久久视频精品| 欧美一区视频| 亚洲欧美日韩一区在线| 一二三区精品| 亚洲精品女av网站| 亚洲国产日韩在线| 在线不卡视频| 激情懂色av一区av二区av| 国产手机视频一区二区| 国产精品色婷婷| 国产精品劲爆视频| 欧美午夜精品久久久| 欧美日本不卡| 欧美日本中文字幕| 欧美极品影院| 欧美交受高潮1| 欧美国产日韩一区二区三区| 久热精品在线| 久久亚洲综合色一区二区三区| 欧美在线一级va免费观看| 亚洲欧美一区二区原创| 亚洲夜晚福利在线观看| 亚洲色图制服丝袜| 中文亚洲免费| 亚洲一区二区免费看| 亚洲午夜激情网站| 亚洲深夜激情| 亚洲一区在线视频| 亚洲影院色在线观看免费| 亚洲一区久久| 亚洲欧美中文日韩在线| 欧美一区二区三区视频在线| 午夜精品久久久久久久久久久久久| 亚洲一区二区三区777| 亚洲午夜性刺激影院| 国产精品99久久久久久久vr| 亚洲一区二区免费视频| 亚洲欧美日本在线| 欧美主播一区二区三区美女 久久精品人| 性久久久久久久|