原创 基於java8分析CountDownLatch源碼

ReentrantLock和ReentrantReadWriteLock都實現interface接口,內部又繼承AbstractQueuedSynchronizer。而CountDownLatch是JUC中提供的一個多線程間協同的工具類,

原创 設計模式-剖析單例模式

一、單例模式         在進程中只有一個對象存在 二、應用場景         最常用的就是代碼中的緩存,保證數據的唯一性 三、關注的問題         1、對象唯一性,構造函數private;2、多線程併發場景下是否支持高併發;

原创 基於jdk8分析分析ReentrantReadWriteLock源碼

ReentrantReadWriteLock可重入讀寫鎖,同樣是基於AQS實現的。與ReentrantLock區別就是讀寫分離,將鎖的粒度都將細化,提升性能。在共享數據讀寫操作中,讀操作遠遠超過寫操作的次數,那麼可以理解爲共享數據在大部分

原创 基於jdk8分析ReentranLock源碼

 通過下述代碼,來深挖ReentranLock的底層實現。下述代碼使用了ReentrantLock鎖的lock、unlock、condition等常用方法。讓我們一一解析底層實現。 public class TestReentrantL

原创 生產者分區機制

一、分區目的        kafka的結構是Topic、分區、消息三層結構        Topic下的多個分區可以部署在不同的服務器上,實現負載均衡,提高吞吐量。數據的讀寫就是針對分區實現的。 二、分區策略        分區策略指的

原创 對象的共享——《Java併發編程實戰》學習筆記二

    倘若synchronize只能用於實現原子性或確定臨界區(Critical Section)。那麼線程A修改了某個共享參數後,線程B可能獲取到的參數不是最新的,同樣會出現問題。因此,同步還有另外一個重要方面:內存可見性(Memor

原创 kafka消息丟失的場景分析

一、生產者程序丟失數據       消息大小超過Broker的message.max.bytes的值,Broker會直接返回錯誤;消息的格式錯誤;網絡的瞬時抖動都可能造成生產者程序的數據沒有發送到Broker;分區首領副本掛了等    

原创 線程安全性——《Java併發編程實戰》學習筆記一

一、線程安全性     線程安全代碼的核心:管理對共享的(Shared)和可變的(Mutable)狀態的訪問操作。  “共享”:變量可以由多個線程同時訪問; “可變”:變量的值在生命週期內可以發生變化。即:一個對象是共享和且可變得,同時由

原创 kafka線上集羣相關配置

1、操作系統、磁盤、磁盤容量和帶寬      操作系統:linux|windows      1> I/O模型           阻塞式I/O、非阻塞式I/O、I/O多路複用、信號驅動I/O和異步I/O。通常後一種模型比前一種模型高級,

原创 清晰理解紅黑樹的演進

紅黑樹的演進 https://www.cnblogs.com/tiancai/p/9072813.html

原创 基於Heros的過程間數據流分析的相關API

https://ssebuild.cased.de/nightly/soot/javadoc/ soot.jimple.toolkits.ide ClassMain: public classMain extends Object. 構造

原创 Android顯式調用第三方app

Android顯示調用App內部組件/第三方App內組件 Android提供顯示調用的方法有四種API,分別是:setClass(Context packageContext,Class<?> cls) setClassName(Cont

原创 soot代碼分析框架的基礎知識(二)

Soot中的結構 本篇內容簡單概括一下:soot中存在的主要對象、soot的執行流。 Soot中提供了幾種對象,分別是:Scene、SootClass、SootMethod、SootField、Body。表示的意義如下所示: Scene

原创 基於soot的過程內數據流分析

程序靜態分析 程序靜態分析(program static analysis)是指在不運行代碼的方式下,通過詞法分析、語法分析、控制流、數據流分析等技術對程序代碼進行掃描,驗證代碼是否滿足規範性、安全性、可靠性、可維護性等指標的一種代碼分