原创 MySQL日誌文件解析(binlog)
前言: binlog(二進制文件)一直來說都是一個比較難搞懂的點,筆者前後讀了幾遍,讀了當時理解了,但是事後還是很模糊,尤其是跟redo log放在一起的時候,更是蒙的不行。 總結原因:還是沒有真正理解binlog的作用。
原创 通過Wireshark學習三次握手、四次揮手
前言: TCP的三次握手、四次揮手是大家耳熟能詳的。 筆者實際是個網絡方面的渣渣。每次在面試前都要狂補一下相關知識點用於應付面試(大家都懂的。。哈哈)。 但是老是這樣也不行,每次都是一個模糊的概念,所以這次準備用W
原创 ApplicationEvent與ApplicationListener
前言: Spring的世界中有這麼一對好基友,兩個人總是同時出現,相愛相殺。這就是ApplicationEvent與ApplicationListener。感覺有點像小偷和警察,只要ApplicationEvent一出現,Appl
原创 FactoryBean和BeanFactory
前言: 這是一個很容易被問到的關於Spring的面試題。 兩個特別像,但是功能卻千差萬別。 有關於BeanFactory,我們都知道,這是Spring容器的基礎實現類,它負責生產和管理Bean的一個工廠。當然Bea
原创 定製化Bean的利器:BeanPostProcessor、BeanFactoryPostProcessor
前言: Spring的面試中,一般都會問到IOC和AOP,大部分同學都能回答出這些知識點的基本運用,如果再多問一句,AOP的底層實現方式,大部分人都會回答動態代理。那麼動態代理是如何被使用到Bean上的呢?到這裏可能要刷掉一大部分
原创 @Autowired使用全紀錄
前言: @Autowired應該是我們在Spring項目中最常用的註解了。 使用起來非常方便,但是一旦出現問題調試起來也是比較麻煩的。 筆者就是這樣,平時用來一時爽,出現問題兩行淚。 究其原因,還是對@Au
原创 @Resource那點事
前言: 在項目開發中,@Autowired和@Resource之爭,一直搞不清楚,反正也不想搞清楚到底什麼時候用@Autowired,什麼場景下用@Resource,就一直用@Autowired得了。 現在又到了還賬的時候
原创 Spring容器生命週期管理:SmartLifecycle
前言: 筆者之前在項目中倒也沒有關注過Spring容器的生命週期管理(大家注意下:之前一篇博客介紹的是Spring中Bean的生命週期管理,與目前要介紹的Spring容器的生命週期管理倒還是千差萬別的,千萬不要混淆了)。
原创 Spring如何引入其他資源:和@Import @ImportResource
前言: 作爲一箇中型的基於Spring的項目時,我們經常會分模塊開發,那麼bean定義文件我們如何分配和管理呢?是都放在一個配置文件中嘛? 我們在老項目二次開發的時候,經常會遇到需要使用之前的beans配置文件,集成到當前
原创 Spring控制Bean生命週期行爲的幾種方式
前言: Spring中的Bean從創建到銷燬經歷了一個又一個階段,在這些階段中,我們可以通過某些方法來控制Bean的創建、Bean的銷燬。 在Spring的官方文檔中,有這麼一段話 As of Spring 2.5, y
原创 Spring官方文檔學習:和@Bean
前言: Spring中最重要的概念IOC和AOP,實際圍繞的就是Bean的生成與使用。 什麼叫做Bean呢?我們可以理解成對象,每一個你想交給Spring去託管的對象都可以稱之爲Bean。 今天通過Spring官方
原创 Spring官方文檔學習:開篇
前言: 入行也算有幾年了,Spring也是一直都在用,源碼也看了一些,相關博客也寫了一些,但是總覺得還是對Spring的理解不夠深入。仔細想來,應該是Spring的使用還不夠深入,所以導致理解也不夠深入。 痛定思痛,決心把
原创 JDK源碼解析之ThreadPoolExecutor
前言: 線程池的使用在java開發中屢見不鮮,我們一般會這樣使用 // 1.創建一個固定線程數的線程池 ExecutorService threadPool = Executors.newFixedThreadPool(5);
原创 JDK源碼解析之AtomicInteger及CAS
前言: JDK中的鎖大致可以分爲兩類:Synchronized和CAS。 CAS的使用中,有直接使用的,比如AtomicInteger;有間接使用的比如ReentrantLock。 本文就說一下直接使用CAS的At
原创 JDK源碼解析之AbstractQueuedSynchronizer
前言: JDK中的鎖大致可以分爲兩類:Synchronized和CAS。 CAS的使用中,有直接使用的,比如AtomicInteger;有間接使用的比如ReentrantLock。關於AtomicInteger的分析可參考