原创 Redis分佈式鎖(一):基於AOP和Redis實現的簡易版分佈式鎖

平時在項目中經常會遇到併發問題,理論上有些方法只應該被調用一次,但由於併發而被重複調用,導致出現系統問題。而在我們的項目中,最容易發生這種情況的是,推送消息的服務。無論是短信還是app推送,或者是公衆號的推送,因爲併發問題而導致的重複推送,

原创 Mac安裝mysql8並解決caching_sha2_password問題

Mac安裝mysql8版本會遇到不少的坑,大家可以用如下方式解決: 1、用brew安裝最新版本的mysql,我安裝的時候還是8.1.2 brew install mysql 2、開啓mysql服務 brew services start m

原创 Redis分佈式鎖(二):分佈式鎖註解優化

在上一篇文章基於AOP和Redis實現的簡易版分佈式鎖中我們已經介紹了實現一個簡易版的分佈式鎖。 那麼本文主要來講,如何將註解LockAnnotation和LockParamAnnotation合二爲一,在LockAnnotation添加l

原创 Redis分佈式鎖(三):鎖超時後導致多個線程獲得鎖的解決方案

使用現狀 Redis分佈鎖的基礎內容,我們已經在基於AOP和Redis實現的簡易版分佈式鎖這篇文章中講過了,也在文章中示範了正常的加鎖和解鎖方法。 分佈式鎖在之前的項目中一直運行良好,沒有辜負我們的期望。 發現問題 但在最近查線上日誌的時候

原创 如何動態加載@KafkaListener的topics

問題來源 我司最近剛重構完,終於有時間去償還欠下的技術債了。 最先準備改造的就是將一些原本應該異步執行而因重構時間緊而被迫同步執行的方法,通過消息隊列異步化。 在原來的老項目中,我們使用的是kafka。因此我們對kafka的熟悉程度遠勝於其

原创 通過攔截器Interceptor優化Mybatis的in查詢

在工作中,我們經常會因爲在mybatis中的不嚴謹寫法,導致查詢語句會產生in()的情況。這種情況不符合SQL的語法,導致程序報錯。 網上有一些解決方案,大部分的解決方案都是對list判null和判空來處理。 <if test="list

原创 基於AOP和Redis實現的簡易版分佈式鎖

平時在項目中經常會遇到併發問題,理論上有些方法只應該被調用一次,但由於併發而被重複調用,導致出現系統問題。而在我們的項目中,最容易發生這種情況的是,推送消息的服務。無論是短信還是app推送,或者是公衆號的推送,因爲併發問題而導致的重複推送,

原创 談談『0元購』

先說爲什麼要談『0元購』這個話題,是我覺得這個模式挺好玩的,有必要給大家講講,然後也正好來完善我對風險控制等的認知。 瞭解到『0元購』是從斐訊K2開始的,很久以前就有所瞭解,至於爲什麼等待現在才上車。是因爲以前路由器對我無用,而現在正好需要

原创 DelayQueue之通用組件

我們產品的的業務中有那麼一個場景,在醫生關閉問診的3min後,患者將無法繼續和醫生進行對話。我根據對業務的理解,和對技術實現成本的衡量,決定採用通過DelayQueue的方式來實現的方案。 關於DelayQueue的相關內容介紹和核心源碼解

原创 DelayQueue之持久化方案

上一篇文章中提到了我們在項目中運用DelayQueue解決了一些需要延遲執行的任務,但是最近我們在生產環境上遇到了一個問題。重啓服務器後,那些未執行的延遲任務就消失不見了。於是如何將延遲任務持久化就提上了日程。 關於DelayQueue的具

原创 基於AOP和Redis實現的簡易版分佈式鎖(二)

在上一篇文章基於AOP和Redis實現的簡易版分佈式鎖中我們已經介紹了實現一個簡易版的分佈式鎖。 那麼本文主要來講,如何將註解LockAnnotation和LockParamAnnotation合二爲一,在LockAnnotation添加l

原创 Mybatis中foreach標籤內list爲空的解決方案

在前一篇文章通過攔截器Interceptor優化Mybatis的in查詢中,我們已經解決了mybatis查詢中in()空列表的情況。 但是由於foreach標籤中list爲空導致的情況並非只有in()空列表一種,另一種常見的情況會發生在批量

原创 Mac安裝mysql8且支持Sequal pro等客戶端登錄的解決方案

Mac安裝mysql8版本會遇到不少的坑,大家可以用如下方式解決: 1、用brew安裝最新版本的mysql,我安裝的時候還是8.1.2 brew install mysql 2、開啓mysql服務 brew services start m

原创 DelayQueue之源碼分析

原文首發於簡書:http://www.jianshu.com/p/689e3fbd8833 本文將會對DelayQueue做一個簡單的介紹,並提供部分源碼的分析。 DelayQueue的特性基本上由BlockingQueue、Priorit