原创 消息順序調度器--pmoc

一.說明 框架主要解決消息按順序消費問題,比如 1,2,3,4,5 ,可以一次性將消息消費完。 3,2,7 第一次只能消費3,第二次可以消費2,7 項目中主要支持兩個配置方式,redis模式,mysql模式

原创 接口冪等設計

一.引言       在系統設計時,經常會出現每次操作結果都需要一致的場景。比如典型的restful get請求 ,每次請求url/student/1(查詢第一個學生),結果都是一樣的。當然排除再修改學生信息後又查詢的情況。      接

原创 手寫springmvc--PMVC

一.引言      在java體系中,說起架構,spring不可不談,而它的一個子產品-springMVC在web開發中有着舉足輕重的地位。由於spring不在講解之列,就默認大家已經知曉。二.架構    對於springmvc架構,相信

原创 分佈式鎖實現方案

在高併發場景中,我們需要對資源上鎖。比如在秒殺商品時,大量請求過來,不上鎖可能導致超賣等現象的發生。大家都知道在java中,它自身就提供了很多鎖,synchronized,lock,ReentrantLock....它們可以工作在單機項目

原创 教你代碼實現搶紅包功能

一.場景帶入搶紅包在現實場景中經常見到,你知道如何通過代碼來實現嗎?一種通常的思路是,一定金額的紅包,只要有人過來搶,就在剩餘數額內給他分配金額,直到所有錢都分陪完。但是這樣有一個問題,最先搶的人,搶到錢多的概率會更大。比如有10塊錢,有

原创 java排序---快速排序

一.簡介       在排序算法中,快速排序算是裏面的佼佼者。它是對冒泡排序的一種改進,基本思想是,通過一趟排序將待排序記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整

原创 JAVA 中BIO,NIO,AIO的理解

在高性能的IO體系設計中,有幾個名詞概念常常會使我們感到迷惑不解。具體如下: 序號問題1什麼是同步?2什麼是異步?3什麼是阻塞?4什麼是非阻塞?5什麼是同步阻塞?6什麼是同步非阻塞?7什麼是異步阻塞?8什麼是異步非阻塞?在弄清楚上面的幾個

原创 《effective java》builder模式一些思考

      在java中,對於類中屬性賦值,大部分情況下會使用set,get,可能還有些boolean的屬性有些框架會用is做爲前綴。但是對於一個類中有多個參數,總不能set多個參數或者構造函數中寫多個參數的構造吧。在idea中生成構造函

原创 java排序--堆排序

一.簡介       上一篇講了快速排序,這一篇來講講堆排序。堆可以藉助藉助完全二叉樹來理解,數值排列按照廣度優先算法輸出的順序給出。堆排序分按大堆排序和小堆排序。堆排序就是一趟排序完,最大的值在最前面;而按小堆排序就是一趟排序完,最小的

原创 高併發下ArrayList空值(null)問題

對於ArrayList,有一篇blog專門的介紹,它不適用於多線程環境中,廢話不多說,直接上代碼讓大家看個明白!public class ArrayListTest { @Test public void test() {

原创 淺談後端高併發的幾種設計方法

在高併發的應用場景中,前端需要更快的渲染速度,而後端不僅需要更快的接口速度,而且還需要保證數據的一致性。前端設計中可能會有靜態頁面,cdn等的優化手段,在後端架構中,通常也需要引用高併發程序的解決方案。下面主要談談後端的處理方案。分層後臺

原创 如何理解阻塞,非阻塞,同步,異步

一.問題引出之前和朋友討論多線程問題的時候,朋友問了一下阻塞和同步的區別,當時頓時懵逼了。這兩個概念給人最直接的感受就是:阻塞也是等,同步也是等呀!好像沒什麼區別吧。二.概念阻塞和非阻塞都是通常用來形容多線程間的相互影響。比如一個線程佔用

原创 基於redis實現分佈式限流器-pdlr

一.限流器介紹     簡單來講,限流器就是控制流量訪問速率的一種機制,在短時間內大量流量訪問時,不至於使服務器崩潰。比如,一分鐘之內,如果限制1000個請求可以訪問,當第1001個請求到達時,請求被拒絕(這時最好對其進行監控)。 二.限

原创 源碼解讀--AbstractQueuedSynchronizer講解之Reentrantlock實現

一.鎖  說起AbstractQueuedSynchronizer(傳說中的AQS),可能有些同學不知道,但是說到ReentrantLock,CountDownLatch,Seamphore,大家可能用用過吧。他們都是用鎖來實現了,而鎖裏

原创 一個字段首字母大小寫引發空值

一.引言     昨天同事反饋熱配置的值一直賦值不上去,之前也是這樣操作的,按道理沒有問題。今天有時間就看了下源碼。二.分析     首先交代一下代碼場景:一個類(A)裏面設置了三個字段 KFC,MyTest,age(這三個字段都是我隨便