原创 Spring Boot @EnableAutoConfiguration解析

剛做後端開發的時候,最早接觸的是基礎的spring,爲了引用二方包提供bean,還需要在xml中增加對應的包<context:component-scan base-package="xxx" /> 或者增加註解@ComponentScan

原创 Java引用類型原理深度剖析,看完文章,90%的人都收藏了

Java中一共有4種引用類型(其實還有一些其他的引用類型比如FinalReference):強引用、軟引用、弱引用、虛引用。其中強引用就是我們經常使用的Object a = new Object(); 這樣的形式,在Java中並沒有對應的R

原创 面試官都叫好的Synchronized底層實現,這工資開多少一個月?

本文爲死磕Synchronized底層實現第三篇文章,內容爲重量級鎖實現。 本系列文章將對HotSpot的synchronized鎖實現進行全面分析,內容包括偏向鎖、輕量級鎖、重量級鎖的加鎖、解鎖、鎖升級流程的原理及源碼分析,希望給在研究s

原创 一文讓你讀懂Synchronized底層實現,秒殺面試官

本文爲死磕Synchronized底層實現第三篇文章,內容爲輕量級鎖實現。 輕量級鎖並不複雜,其中很多內容在偏向鎖一文中已提及過,與本文內容會有部分重疊。 另外輕量級鎖的背景和基本流程在概論中已有講解。強烈建議在看過兩篇文章的基礎下閱讀本文

原创 死磕Synchronized底層實現,面試你還怕什麼?

關於synchronized的底層實現,網上有很多文章了。但是很多文章要麼作者根本沒看代碼,僅僅是根據網上其他文章總結、照搬而成,難免有些錯誤;要麼很多點都是一筆帶過,對於爲什麼這樣實現沒有一個說法,讓像我這樣的讀者意猶未盡。 本系列文章將

原创 面試題深入解析:Synchronized底層實現

本文爲synchronized系列第二篇。主要內容爲分析偏向鎖的實現。 偏向鎖的誕生背景和基本原理在上文中已經講過了,強烈建議在有看過上篇文章的基礎下閱讀本文。 本文將分爲幾塊內容: 1.偏向鎖的入口 2.偏向鎖的獲取流程 3.偏向鎖的撤銷

原创 面試必問:讀寫一致性,你需要思考的問題

先說明下,本文要討論的多線程讀寫是指一個線程寫,一個或多個線程讀,不包括多線程同時寫的情況。 試想下這樣一個場景:一個線程往hashmap中寫數據,一個線程往hashmap中讀數據。 這樣會有問題嗎?如果有,那是什麼問題? 相信大家都知道是

原创 linux內核級同步機制--futex

在面試中關於多線程同步,你必須要思考的問題 一文中,我們知道glibc的pthread_cond_timedwait底層是用linux futex機制實現的。 理想的同步機制應該是沒有鎖衝突時在用戶態利用原子指令就解決問題,而需要掛起等待時

原创 分佈式Redis深度歷險-Cluster

本文爲分佈式Redis深度歷險系列的第三篇,主要內容爲Redis的Cluster,也就是Redis集羣功能。 Redis集羣是Redis官方提供的分佈式方案,整個集羣通過將所有數據分成16384個槽來進行數據共享。 集羣基礎實現 一個集羣由

原创 分佈式Redis深度歷險-Sentinel

上一篇介紹了Redis的主從服務器之間是如何同步數據的。試想下,在一主一從或一主多從的結構下,如果主服務器掛了,整個集羣就不可用了,單點問題並沒有解決。Redis使用Sentinel解決該問題,保障集羣的高可用。 如何保障集羣高可用 保障集

原创 面試中關於多線程同步,你必須要思考的問題

ReentrantLock的實現網上有很多文章了,本篇文章會簡單介紹下其java層實現,重點放在分析競爭鎖失敗後如何阻塞線程。 因篇幅有限,synchronized的內容將會放到下篇文章。 Java Lock的實現 ReentrantLoc

原创 面試官問:多線程同步內部如何實現的,你知道怎麼回答嗎?

線程同步可以說在日常開發中是用的很多, 但對於其內部如何實現的,一般人可能知道的並不多。 本篇文章將從如何實現簡單的鎖開始,介紹linux中的鎖實現futex的優點及原理,最後分析java中同步機制如wait/notify, synchro

原创 分佈式Redis深度歷險-複製

Redis深度歷險分爲兩個部分,單機Redis和分佈式Redis。 本文爲分佈式Redis深度歷險系列的第一篇,主要內容爲Redis的複製功能。 Redis的複製功能的作用和大多數分佈式存儲系統一樣,就是爲了支持主從設計,主從設計的好處有以

原创 用 Hystrix 構建高可用服務架構

1.Hystrix 是什麼? 在分佈式系統中,每個服務都可能會調用很多其他服務,被調用的那些服務就是依賴服務,有的時候某些依賴服務出現故障也是很正常的。 Hystrix 可以讓我們在分佈式系統中對服務間的調用進行控制,加入一些調用延遲或者依

原创 spring boot入門,看這篇文章就夠了

一、SpringBoot入門 1、基本介紹 簡化Spring應用開發的一個框架、整個Spring技術棧的一個大整合; J2EE開發的一站式解決方案; 優點: 快速創建獨立運行的Spring項目以及與主流框架集成; 使用嵌入式的Ser