原创 (譯)JVM Concurrent Mark Sweep (CMS) Collector 1.8

更多請移步: 我的博客 最近線上JDK升級到啦1.8,應用在發佈時,總會發生Full GC報警,看了下GC日誌,發現應用重啓時會接連發生4次Full GC,但是這4次GC後很久一段時間(第二天再次查看GC日誌和jstat的統計)沒

原创 思考延時隊列

更多請移步我的博客 背景 項目中存在以下場景需要延遲觸發一些事件: 訂單在未支付狀態下30分鐘後自動關閉; 訂單超過15天未主動確認收貨需要自動確認收貨; 商品價格需要在不同的時間段生效不同的價格方案等。 以上場景下需要有一個相對

原创 rocketmq-深入消費源碼

更多請移步我的博客 對比看兩種消費方式的實現:順序消費與併發消費。這裏對順序消費只關注消費端,不關心producer與broker怎麼處理順序消息,假設架構及策略已保證消息的全局或者局部順序性。通過構建假定前提,我們可以忽略本次討論的

原创 rocketmq-消息重複分析

更多請移步我的博客 以下介紹均假設已經初步瞭解rocketmq,如果還不是很清楚,可以看下我的這邊博客rocketmq-半入門級架構及核心流程概覽。 部署結構 在聊重複消費前,先大概瞭解下Broker的部署結構及其HA。 一個ma

原创 ocketmq-半入門級架構及核心流程概覽

一直在用rocketmq,對他的功能和大概流程略知一些,但是比較浮,經不起稍微的推敲。是時候進一步瞭解下這個NB的中間件了。 這裏不再贅述它的那些特性,網上一大堆,這裏主要按照自己想了解的一些方面作整理,貼出部分核心代碼,意圖通過表現

原创 筆記-JMH(Java Microbenchmark Harness)

更多請移步我的博客 看開源項目時,時不常遇到一個叫做benchmark的目錄,此時腦子停滯,一眼帶過,最近一次看到就順手問了下谷大哥,發現benchmark還是個挺有意思的東西。 基準測試是什麼 基準測試是指通過設計科學的測試方法、測

原创 丟了眠的精神病

更多請移步我的博客 失眠這件事已經擾了我很久,看樣子還要隨我走很長時間。翻到以前失眠時隨手拼湊的夢話,覺得有意思,原來失眠逼得我作文不寫謊話,想起那些年爲完成作文編的故事,唉!實在是對不起小明、小紅等等這些素未謀面的夥伴,原諒我吧。 三分

原创 內存僞共享測試及Java對像內存估算

更多請移步我的博客 引入 之前每次入門Disruptor對此部分總是泛泛看過,主要關注點在如何應用上,急於按照文檔完成第一個Demo,怠慢了其實現的核心思想及其要解決的主要問題,導致雖然入門過幾次Disruptor,仍對其認識十分淺薄。最

原创 狀態機選型簡記

更多請移步我的博客 背景 業務中涉及到一些關於單據的操作,每種單據單據都會有自己的狀態,單據的一些行爲受限於當前訂單的狀態,單據的狀態直接用常量表示,業務進行前的檢查部分通過if判斷來檢測當前單據是否可以流轉到目標狀態。 痛點 業務發展的

原创 Dubbo源碼-網絡通信之提供者消費者通信

更多請移步我的博客 引入 之前簡單看過Dubbo基於SPI的“微核+插件”形式的架構模式,Dubbo因爲這種架構模式使得擴展十分簡單,另外Dubbo的框架分層十分清晰,看起源碼來相對輕鬆不少。 在使用Dubbo時突然想到幾個問題,Dubb

原创 設計模式-創建模式之Singleton

更多請移步我的博客 意圖 Singleton是創建模式的一種,讓你可以確保一個類只有一個實例,併爲此實例提供一個全局訪問點。 問題 Singleton同時解決了兩個問題(違反了單一職責原則): 確保一個類只有一個實例。最常見原因是控制一

原创 設計模式-行爲模式之Iterator

更多請移步我的博客 意圖 Iterator是行爲模式的一種,允許在不暴露底層結構的情況下順序訪問聚合對象中的元素。 問題 集合是編程中最常用的數據結構。它把一組對象放到一個單獨的容器中。 大多集合看起來都像元素的列表。然而,一些集合以樹、

原创 設計模式-創建模式之Abstract Factory

更多請移步: 我的博客 目的 Abstract Factory是創建模式的一種,讓你在沒有指定具體類的情況下生產相關對象的系列。 問題 假設你在寫一個傢俱店的模擬器。你的代碼由以下構成: 相關產品的系列,像:Chair + Sofa +

原创 設計模式-結構模式之Strategy

更多請移步:我的博客 意圖 Strategy是行爲模式的一種,讓你定義一組算法,各自封裝,並且他們可替換。Strategy讓這些算法獨立與使用他們的客戶端。 問題 一天你決定寫一個給驢友使用的導航應用。這個應用以漂亮的地圖爲中心,允許用戶

原创 設計模式-行爲模式之Visitor

更多請移步我的博客 意圖 Visitor是行爲模式的一種,允許你在不改變要操作對象類的情況下定義一個新操作。 問題 你的團隊正在開發一款地理信息結構地圖的app。圖的節點不僅表示城鎮也有其他諸如景點,行業等信息。節點間通過道路關聯。在引擎