原创 GC的可達性算法、java對象的四種引用及對象逃逸

 可達性分析算法         在主流的商用程序語言(Java、C#,甚至包括前面提到的古老的Lisp)的主流實現中,都是稱通過可達性分析(Reachability  Analysis)來判定對象是否存活的。這個算法的基本思路就是通過一

原创 Zookeeper客戶端Curator可重入排它鎖InterProcessMutex

InterProcessMutex是一個跨JVM的可重入排它鎖,使用Zookeeper來持有鎖。 所有的JVM的進程通過使用相同的鎖路徑來完成跨進程的鎖機制。 該鎖是一個公平鎖,按照請求的順序獲取排它鎖(從Zookeeper角度來看請求順

原创 linux下ab(Apache Benchmark)壓力測試工具

1.ab的簡介    ab是apachebench命令的縮寫。    ab是apache自帶的壓力測試工具。ab非常實用,它不僅可以對apache服務器進行網站訪問壓力測試,也可以對或其它類型的服務器進行壓力測試。比如nginx、tomc

原创 負載均衡工具

DNS輪循   DNS輪循是指將相同的域名解釋到不同的IP,隨機使用其中某臺主機的技術。但其具有明顯的缺點:一旦某個服務器出現故障,即使及時修改了DNS設置,還是要等待足夠的時間(刷新時間)才能發揮作用,在此期間,保存了故障服務器地址的客

原创 分佈式事務常見解決方案

分佈式事務產生的原因 1. 數據庫分庫分表         當數據庫單表數據量超過2000W,就要考慮分庫分表,這時候,如果一個操作既訪問01庫,又訪問02庫,而且要保證數據的一致性,那麼就要用到分佈式事務。 2. 應用服務化    

原创 初識Open/X XA

初識Open/X XA XA是DTP的一部分接口規範。 Distributed Transaction Processing(DTP) DTP是一種實現分佈式事務處理系統的概念模型,OSI和Open/X組織都有正式文檔來定義它: X/Op

原创 強一致性算法Paxos、Raft、ZAB

在B站上一個講這三個算法的視頻網址https://www.bilibili.com/video/av21667358 Paxos協議 Basic paxos算法中,分爲4種角色: Client: 系統外部角色,產生議題者,像民衆 Prop

原创 Java 主線程結束與子線程結束之間的陷阱

問:Main 線程是守護線程嗎?運行中的線程還能設置成守護線程嗎? 答:main 線程是由 java 虛擬機在啓動的時候創建的非守護線程。main 方法開始執行的時候,主線程已經創建好並在運行了。 對於運行中的線程,調用 Thread.s

原创 Dubbo學習之Zookeeper註冊中心實現

        ZooKeeper註冊中心採用的是“事件通知”+“客戶端拉取”的方式,客戶端在第一次連接上註冊中心時,會獲取對應目錄下全量的數據。並在訂閱的節點上註冊一個watcher,客戶端與註冊中心之間保持TCP長連接,後續每個節點有

原创 Dubbo學習之zookeeper註冊中心數據結構

        Zookeeper 是 Apacahe Hadoop 的子項目,是一個樹型的目錄服務,支持變更推送,適合作爲 Dubbo 服務的註冊中心,工業強度較高,可用於生產環境,並推薦使用 [1]。 流程說明: 服務提供者啓動時:

原创 Dubbo學習之Directory的實現

          還是先從整體架構入手,先看下Dubbo官方的架構設計圖,調用方從集羣中選擇一個提供者時,首先得調用Directory獲取Invoker列表,再根據配置的路由規則過濾掉不符合的提供者 整個Directory體系UML圖

原创 GIT分支和合並命令之git-merge

名稱NAME git-merge - 將兩個或多個開發歷史聯繫在一起 概要SYNOPSIS git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] [--no-ve

原创 Java NIO之Reactor模型

Reactor模式思想:分而治之+事件驅動 1)分而治之 一個連接裏完整的網絡處理過程一般分爲accept、read、decode、process、encode、send這幾步。 Reactor模式將每個步驟映射爲一個Task,服務端線程

原创 JVM類加載的過程

        類從被加載到虛擬機內存中開始,到卸載出內存爲止,它的整個生命週期包括:加載(Loading)、驗證(Verification)、準備(Preparation)、解析(Resolution)、初始化(Initializati

原创 GIT分享和更新項目命令之git-push

名稱NAME git-push - Update remote refs along with associated objects 概要SYNOPSIS git push [--all | --mirror | --tags] [--