接口冪等性

接口冪等性

什么是接口冪等性?

簡(jiǎn)而言之即是 f(f(x))=f(x),一次執(zhí)行的結(jié)果和多次執(zhí)行的結(jié)果完全一致

最簡(jiǎn)單想到的實(shí)現(xiàn)接口冪等性(重復(fù)提交)的操作是什么?

1. 前端按鈕置灰
   發(fā)起請(qǐng)求時(shí)置灰,等接口響應(yīng)成功后恢復(fù),可以屏蔽一大半小白用戶
2. 鎖
   同步鎖synchronized這是最易想起的東西了,synchronized是鎖住某個(gè)變量或者某個(gè)方法或者是某個(gè)代碼塊,來保證解決多線程訪問臨界區(qū)造成的數(shù)據(jù)安全問題。synchronized鎖的是什么呢?它鎖住的是一個(gè)實(shí)例對(duì)象,假如每個(gè)線程都會(huì)重新產(chǎn)生新的實(shí)例對(duì)象,它只能鎖住單個(gè)線程,若系統(tǒng)存在負(fù)載均衡或者Spring管理的Bean,那么同步鎖就不起作用了
3. 分布式鎖(Redis)
   利用setnx實(shí)現(xiàn),在set之前若存在則不set,否則則set,即是先占位的拿到鎖,等這個(gè)key過期或者刪除了釋放鎖。但是采用redis來做分布式鎖,若過期時(shí)間沒有得到控制,還得考慮redis掛掉了怎么處理,還要解鎖,最終會(huì)演變成死鎖等問題

最簡(jiǎn)單稍靠譜的解決方案是什么?

利用數(shù)據(jù)庫的唯一約束解決
public void save(String 某個(gè)字段1,String 某個(gè)字段2){
    try{
        insert(某個(gè)字段1,某個(gè)字段2);
    }catch (Exception e){
        e.printStackTrace();
        throw new Exception ("已存在!");
    }
}

對(duì)參數(shù)設(shè)置unique約束,若存在則拋異常
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 元旦放假哪也沒去一個(gè)人在家里悶得慌,突然間想寫點(diǎn)東西打發(fā)打發(fā)時(shí)間,剛好想起前幾天在公司聽到一些同事在討論線上...
    Briseis閱讀 9,262評(píng)論 0 11
  • 高并發(fā)下接口冪等性解決方案 一、冪等性概念在編程中.一個(gè)冪等操作的特點(diǎn)是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影...
    ongahong閱讀 658評(píng)論 0 2
  • 1.冪等性定義 1.1 數(shù)學(xué)定義 在數(shù)學(xué)里,冪等有兩種主要的定義: 在某二元運(yùn)算下,冪等元素是指被自己重復(fù)運(yùn)算(或...
    王帥199207閱讀 5,039評(píng)論 0 152
  • 一、冪等性概念 在編程中.一個(gè)冪等操作的特點(diǎn)是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影響相同。冪等函數(shù),或冪等方...
    匆匆歲月閱讀 1,182評(píng)論 0 31
  • 含義:接口可重復(fù)調(diào)用后,在調(diào)用方多次調(diào)用的情況下,接口最終得到的結(jié)果是一致的。 有些接口天然具備冪等性,如查詢接口...
    劉敏_15da閱讀 1,861評(píng)論 0 0

友情鏈接更多精彩內(nèi)容