1.共享變量 將要保存/修改的值set到共享變量中,通過獲取共享變量實(shí)現(xiàn)值在不同線程中的傳遞 如下在子線程中循環(huán)累加學(xué)生年齡,然后在主線程中獲取累加后的結(jié)果 2.Future...
創(chuàng)建一個(gè)線程池需要7個(gè)參數(shù) corePoolSize 核心線程數(shù)量 maximumPoolSize 最大線程數(shù)量 keepAliveTime 當(dāng)線程數(shù)大于核心時(shí),這是多余空閑...
spring cache是一個(gè)簡單靈活的緩存框架 簡單 : 基于注解,在需要緩存的方法上打上注解就可以緩存方法返回值 靈活 : 可自定義鍵值如何序列化,TTL等,更換緩存只需...
概述 本文源碼 https://github.com/nixuechao/rabbit-reliable-delivery 可直接運(yùn)行并且有詳細(xì)的注釋和readMe Rabb...
本文基于spring-boot-starter-amqp依賴實(shí)現(xiàn) RabbitMQ實(shí)現(xiàn)定時(shí)消息有兩種方式 基于消息TTL與死信交換 基于插件 RabbitMQ Delayed...
本文介紹三種常用操作,基于spring-boot-starter-amqp依賴 手動ack work模式(能者多勞) 消息格式轉(zhuǎn)換 手動ack 消息確認(rèn)模式 在amqp協(xié)議中...
在springBoot項(xiàng)目中使用rabbitMQ是很方便的,spring提供了spring-boot-starter-amqp依賴,只需要簡單的配置即可與spring無縫整合...
@wangzaiplu我上幾周也寫了一篇防止重復(fù)提交到文章,也思考過本文的想法,所以如此感興趣
springboot + redis + 注解 + 攔截器 實(shí)現(xiàn)接口冪等性校驗(yàn)一、概念 冪等性, 通俗的說就是一個(gè)接口, 多次發(fā)起同一個(gè)請求, 必須保證操作只能執(zhí)行一次比如: 訂單接口, 不能多次創(chuàng)建訂單 支付接口, 重復(fù)支付同一筆訂單只能扣一次錢 支...
@wangzaiplus 同一個(gè)用戶
springboot + redis + 注解 + 攔截器 實(shí)現(xiàn)接口冪等性校驗(yàn)一、概念 冪等性, 通俗的說就是一個(gè)接口, 多次發(fā)起同一個(gè)請求, 必須保證操作只能執(zhí)行一次比如: 訂單接口, 不能多次創(chuàng)建訂單 支付接口, 重復(fù)支付同一筆訂單只能扣一次錢 支...
@wangzaiplus ????,我的意思是,對于前端來說,每次新增都是1.獲取token 2.提交新增請求 那假設(shè)并發(fā)量是50 就有可能這50個(gè)線程都先執(zhí)行完1,再執(zhí)行2,這樣的話50個(gè)都能執(zhí)行成功了,難道我理解錯了?
springboot + redis + 注解 + 攔截器 實(shí)現(xiàn)接口冪等性校驗(yàn)一、概念 冪等性, 通俗的說就是一個(gè)接口, 多次發(fā)起同一個(gè)請求, 必須保證操作只能執(zhí)行一次比如: 訂單接口, 不能多次創(chuàng)建訂單 支付接口, 重復(fù)支付同一筆訂單只能扣一次錢 支...
若一個(gè)用戶保證只能有一個(gè),那么當(dāng)有多個(gè)接口打上注解后,對于前端來說請求打了注解這些接口變成了同步操作,不能異步同時(shí)請求兩個(gè)接口
springboot + redis + 注解 + 攔截器 實(shí)現(xiàn)接口冪等性校驗(yàn)一、概念 冪等性, 通俗的說就是一個(gè)接口, 多次發(fā)起同一個(gè)請求, 必須保證操作只能執(zhí)行一次比如: 訂單接口, 不能多次創(chuàng)建訂單 支付接口, 重復(fù)支付同一筆訂單只能扣一次錢 支...
為什么新增可能是并發(fā)請求token就不能是?對于前端來說邏輯是先獲取token再請求接口,那么100個(gè)并發(fā)有可能在redis里存了50個(gè)key那是不是就有49個(gè)重復(fù)的了
springboot + redis + 注解 + 攔截器 實(shí)現(xiàn)接口冪等性校驗(yàn)一、概念 冪等性, 通俗的說就是一個(gè)接口, 多次發(fā)起同一個(gè)請求, 必須保證操作只能執(zhí)行一次比如: 訂單接口, 不能多次創(chuàng)建訂單 支付接口, 重復(fù)支付同一筆訂單只能扣一次錢 支...
場景演示 假設(shè)有一個(gè)錄入學(xué)生信息的功能,為了便于演示,要求不能有重名的學(xué)生,并且數(shù)據(jù)庫對應(yīng)字段沒有做唯一限制. 學(xué)生表 上面這段代碼,如果什么都不做,100個(gè)請求同時(shí)進(jìn)來會發(fā)...
分布式鎖的解決方式 基于數(shù)據(jù)庫表做樂觀鎖,用于分布式鎖。(適用于小并發(fā)) 使用memcached的add()方法,用于分布式鎖。 使用memcached的cas()方法,用于...
說明 這是一個(gè)比較詳盡的SpringSecurity整合JWT的例子(代碼直接可以運(yùn)行,關(guān)鍵代碼都有很詳細(xì)的注釋) 本文并沒有使用spring oauth2,不要搞混 本文中...
項(xiàng)目地址: https://github.com/nixuechao/validate 改造需求 在springBoot中驗(yàn)證參數(shù)時(shí)需要傳入org.springframewo...
1.說明 docxFill 首先很小巧,就幾個(gè)類,其次可以很方便靈活的填充word模板,特別是當(dāng)需要填充的部分格式較為復(fù)雜時(shí),會顯得很愜意 項(xiàng)目地址 docxFill: ht...
代碼硬編碼 在代碼中實(shí)現(xiàn)適用于簡單的權(quán)限控制,一般只是限制是否登錄,或有簡單的角色 登錄與不登錄 簡單角色 在Restful API中,有可能針對同一個(gè)請求路徑,不同的請求方...