原创 AERON:archive學習筆記

由於工作上要求,需要用到aeron,一個高性能的rpc/ipc框架,之前也琢磨了一段時間,都沒記錄下來,現在需要用到archive,先記錄一下吧,希望能堅持記錄下去… 爲了啓動Archive Service,必須先啓動Arc

原创 JAVA學習——基於AQS的ReentrantLock公平鎖和非公平鎖的實現

之前筆者解析了AQS的源碼,在JUC中有很多鎖是基於AQS實現的,今天想寫個簡單的ReentrantLock實現,代碼也基本是在看了ReentrantLock源碼後寫出來的,做個筆記。 總結一下AQS的原理,就是使用一個int

原创 Netty學習前的基本知識

網絡I/O的基本知識 主要的I/O模型: 阻塞I/O模型 非阻塞I/O模型 在發起I/O請求後,立即返回,然後進行輪詢,直到數據到達 I/O複用模型 系統提供select/ poll,進程將一個或多個fd傳遞給select或p

原创 JAVA學習——基於AQS的共享式鎖CountDownLatch解析

筆者最近在解析基於AQS的ReentrantLock實現,ReentrantLock是可重入的獨佔鎖,今天解析一下juc包中的共享鎖CountDownLatch實現,僅當筆記。 CountDownLatch是一種共享鎖,區別於

原创 Java學習——AQS解析

最近在學習JUC,發現裏面大部分的併發組件都是基於AQS,因此研讀了一下源碼,在此做個筆記。 AQS(AbstractQueuedSynchronizer)翻譯爲抽象隊列同步器,是除Synchronized關鍵字外java自帶

原创 java——線程創建與Callable接口解析

Java的線程創建方法 在Java當中,最基本的線程創建方法有兩種,一種是通過繼承Thread類,重寫run方法: class MyThread extends Thread{ @Override

原创 Java學習——ArrayList的源碼解析

ArrayList是JAVA的一種泛型容器,它實際上是一個用數組實現的鏈表,今天解析一下ArrayList的源碼,並寫個簡單的實現。 ArrayList的依賴關係 首先我們來看ArrayList的依賴繼承關係: 通過ArrayL

原创 Java——CompletableFuture接口解析

CompletableFuture接口說明 CompletableFuture是Future的子類,接口Future接口雖然實現了異步調用,但是存在一個問題,爲了判斷線程是否已完成計算,或者要獲取計算結果,我們需要不斷的輪詢,通過

原创 java多線程與CompleteFuture接口學習

Java的線程創建方法 在Java當中,最基本的線程創建方法有兩種,一種是通過繼承Thread類,重寫run方法: class MyThread extends Thread{ @Override

原创 RocketMQ源碼閱讀筆記-NameSrv功能解析

NameServer是RocketMQ的路由管理、服務註冊與服務發現中心,首先簡要說明一下NameServer的主要功能: 所有的Broker服務器會向所有的nameServer註冊自己的信息 消息生產者(Producer)在發

原创 RocketMQ-網絡傳輸與線程框架

由於工作的原因,需要在RocketMQ源碼的基礎上進行修改,實現自己的功能,因此打算讀讀源碼,寫寫日記,後續會使用aeron替換掉netty,比較兩者的性能指標。 RocketMQ主要包括NameSrv、Broker、Prod

原创 Java線程池簡單實現

工作中經常用到線程池實現併發設計,基本都是使用的Java自帶的線程池,寫了個簡單的demo,說明Java自帶線程池的基本原理。 ThreadPool主要有coreSize(核心線程數)、maximumSize(最大線程數)、任

原创 C++設計模式:工廠模式

工廠模式:工廠模式是在簡單工廠模式的基礎上,將工廠類也抽象爲一個接口,然後根據不同要求,編寫具體的生產對象的工廠子類。 代碼實現思路:建立操作基類和工廠基類,然後再建立具體的操作子類繼承操作基類;建立具體的工廠子類繼承工廠基類。因此,當要

原创 C++設計模式:策略模式

=策略模式:定義了算法家族,分別封裝起來,然後定義一個統一的藉口,算法之間可以相互替換。使用該模式可以讓算法的變化不影響到使用算法的客戶。 模式實現:策略模式具體實現時通常與工廠模式相結合,定義一個工廠類,來決定初始化哪個算法。 代碼如下