原创 Java 使用Redis實現延時隊列

A:需求說明: 如果系統中需要用到定時執行計劃的,又不想用到中間件,如果輪詢數據庫的話,會導致大量資源消耗,這樣我們就可以使用Redis來實現類似功(需要使用rabbitMQ的請看這裏:https://blog.csdn.net/u010

原创 Springboot + rabbitMQ實現延遲隊列(消費者)

由於太長了,所以分成兩篇寫,接上一篇講解了消息的定義和發送,這裏繼續講解消費者 由於可能每條消息所處理的邏輯可能不一樣,例如:常規訂單30分鐘不支付則取消訂單,團購訂單一天拼團不成功則取消等等,爲了避免在消費者監聽類中使用大量if els

原创 Springboot + rabbitMQ實現延遲隊列(生產者)

前言:在電商系統中,可能有這樣一個需求,訂單下單之後30分鐘後,如果用戶沒有付錢,則系統自動取消訂單。如果用常規的定時器定時去查詢,這會造成很大的消耗(頻繁訪問數據庫)。 這裏選擇RabbitMQ來實現類似的功能(使用隊列的TTL特性)

原创 Java-微信和支付寶進行默認授權獲取openId/UserId

前提:有些需求需要用到微信用戶的openID的時候,而又不想用戶進行確認授權的時候,就可以進行默認授權 一、微信默認授權 1.1設置網頁授權域名--(公衆號設置-功能設置-網頁授權域名) 1.2.獲取APPID和secret 1.3

原创 使用POI讀取大文件Excel

前言:前段時間,由於項目中有一個功能,導入大量的數據,整個Excel的容量大概有200M左右,用以前的方法讀取很慢,甚至會內存溢出,所以後面改用另外一種方式(驅動模式),其實我也不是很懂,是借鑑了一個前輩的思路(https://www.c

原创 springboot集成Mybatis-plus完整示例

說明:MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,爲簡化開發、提高效率而生。 以前項目中經常使用的是mybatis,現在項目中接觸到mybatis-plus,個人

原创 springboot實現線程池--使用@Async實現異步調用

舉例場景:當用戶支付成功之後,需要馬上通知商家(發短信或者語音提示功能等),然後再處理其他業務,如果按照正常邏輯,同步執行,當通知商家這個步驟響應很慢,則後面邏輯就需要等待它執行完畢後才能繼續走下去。這樣子,我們就可以用線程去異步處理,而

原创 springboot使用註解實現定時器

springboot實現定時作業非常的簡單,只需要幾個簡單的註解就行了 1.@EnableScheduling 2.@Scheduled   @EnableScheduling @Slf4j @Component public clas

原创 springboot統一處理異常和自定義異常

在我們做web系統的時候,難免會出現各種各樣的異常,但是這種異常,不能直接顯示在客戶端,所以我們服務端就需要做統一處理,統一返回格式給客戶端 這裏用到了spring的兩個註解:@ControllerAdvice---控制器增強和@Exce

原创 Java Map的幾種遍歷方式

模擬數據: Map<String, String> map = new HashMap<>(); map.put("A","a"); map.put("B","b"); map.put("C","c");

原创 Java HTTP工具類

package com.redis.sign; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.apache.h

原创 Java使用Redis實現分佈式鎖來防止重複提交問題(Redis鎖)

前言: 在系統中,有些接口如果重複提交,可能會造成髒數據或者其他的嚴重的問題,所以我們一般會對與數據庫有交互的接口進行重複處理。我們首先會想到在前端做一層控制。當前端觸發操作時,或彈出確認界面,或disable入口並倒計時等等,但是這並不

原创 Java 開放api接口簽名驗證(MD5模式)

前言:當服務端對外提供API接口時,一般會對參數進行簽名來保證接口的安全性,在設計簽名算法的時候,主要考慮的是這幾個問題:  請求的來源是否合法 請求參數是否被篡改 請求的有效時間 請求的唯一性,防止重複請求   解決思路: 服務端和調用

原创 使用Redis實現輕量級延時隊列

A:需求說明: 如果系統中需要用到定時執行計劃的,又不想用到中間件,如果輪詢數據庫的話,會導致大量資源消耗,這樣我們就可以使用Redis來實現類似功(需要使用rabbitMQ的請看這裏:https://blog.csdn.net/u010

原创 redisTemplate操作Redis工具類

public class RedisUtils { @Autowired private StringRedisTemplate redisTemplate; /** * 寫入緩存 *