原创 Java虛擬機(一):對象在JVM中的內存佈局

文章目錄運行時數據區域程序計數器Java虛擬機棧本地方法棧堆方法區運行時常量池HotSpot虛擬機創建對象的流程類加載檢查內存分配指針碰撞空閒列表對象信息初始化對象在虛擬機中的內存佈局對象頭Mark Word類型指針實例數據對齊填

原创 JVM(二):垃圾收集器,內存分配策略

文章目錄確定對象是否存活引用計數法可達性分析算法引用強引用軟引用弱引用虛引用回收方法區廢棄常量無用的類垃圾收集算法標記清除法(mark-swap)複製算法(copy)標記整理法(mark-compact)分代收集算法GC觸發的時機

原创 final關鍵字內存語義

文章目錄寫final讀final 對於final修飾的變量,其實有兩個與指重排相關的規則 如果final變量在構造函數中賦值,那麼就禁止這個賦值操作與構造函數的返回操作進行指令重排序 如果一個對象中包含final變量,並且先訪問

原创 Mybatis執行流程,源碼解析

文章目錄簡單使用Mybatis源碼解析獲取配置文件的輸入流獲取SqlSessionFactory對象創建SqlSession獲取Mapper接口對象接口方法的調用 簡單使用Mybatis 在看Mybatis的內部執行原理之前,先簡

原创 JDK動態代理和Cglib動態代理的區別

這兩個動態代理都是在程序運行期間動態修改字節碼,然後通過反射創建出代理對象 JDK JDK動態代理是基於接口實現的,也就是說,只有實現了接口的類,才能被JDK進行動態代理。 JDK會通過一個工廠類,生成代理類的二進制字節碼流,這個

原创 聊聊Zookeeper之會話機制Session

文章目錄什麼是Zookeeper的會話機制Session相關的基本概念分桶機制Session激活(續約) 什麼是Zookeeper的會話機制 我們在服務器啓動Zookeeper的時候能得知,ZK服務端對外默認端口是2181。而客戶

原创 查漏補缺1:快速失敗與安全失敗

快速失敗與安全失敗都是在集合遍歷中的概念 快速失敗 快速失敗的核心思想是維護一個modCount字段。其實就是相當於一個版本號的功能,每當有線程對集合進行修改時,都會修改modCount的值。那在對集合進行遍歷的時候,每次調用ha

原创 SpringBoot整合RabbitMQ之交換機,確認與通知,持久化

梗概 RabbitMQ作爲一款高性能的消息隊列中間件,主要的作用有業務解耦,削峯,限流等作用。本文主要圍繞SpringBoot整合RabbitMQ後的基礎使用,介紹一下RabbitMQ中交換機,消息確認,持久化等機制 引入Rabb

原创 淺談Zookeeper之分佈式一致性協議:ZAB協議

文章目錄啥是ZAB協議?消息廣播崩潰恢復選舉發現同步 啥是ZAB協議? ZAB其實就是Zookeeper Atomic Broadcast,也就是zookeeper原子廣播,是zookeeper用來保持分佈式事務一致性的一種協議

原创 微服務容錯框架:Hystrix實現服務熔斷、降級、限流

文章目錄業務背景什麼是HystrixHystrix簡單實現Hystrix容錯資源隔離資源隔離-線程池信號量隔離熔斷降級Hystrix執行調用的幾個方法executequeueobservetoObservable 業務背景 在微服

原创 Zookeeper中的Watcher機制到底是啥?

文章目錄啥是watcher機制通知狀態(KeeperState)事件類型(EventType)EventType註冊與通知之客戶端實現EventType註冊與通知之服務端實現EventType註冊與通知流程zookeeper中Wa

原创 MongoDB的備份恢復以及關係建模

MongoDB執行mongodump指令,就可以再對應的目錄下生成一些列json和bson文件,這些文件可以用來恢復: 後續調用mongorestore命令,加上對應的路徑參數,就可以進行數據的恢復,需要注意的是,它會先把庫中所

原创 Spring IOC執行流程簡單解析

文章目錄IOC的基本使用BeanFactory初始化ApplicationContextrefresh方法obtainFreshBeanFactory方法createBeanFactory方法customizeBeanFactor

原创 PV操作簡介

PV操作就是荷蘭語Passeren(通過),Vrijgeven(釋放)的簡稱。對應的就是wait等待,signal釋放操作。 P操作就是,將進程從運行態轉化爲阻塞態,直到它被另一個進程喚醒 V操作就是,將一個處於阻塞態的進程喚醒。

原创 Spring的7種事務傳播行爲

文章目錄七種事務傳播行爲 事務傳播行爲指的是一個事務方法被另一個事務方法調用時,這個事務方法應該如何進行。 比如說,有一個A方法,裏面調用了B方法,當執行到B方法時,是應該在當前事務裏執行,還是重新打開一個事務來執行,這是由B方法