原创 不懂fork和fsync?你怕是學的假Redis持久化機制

熟悉 redis 都知道,redis 持久化有 RDB 和 AOF 兩種,一種是記錄數據,另一種是記錄操作。 不過一方面,爲了學習的縱向拓深、橫向延展,提高思維開闊性和學習態度嚴謹性,以便足以在實際環境中對這些特性運用自如; 另一

原创 99%的人把Spring的自動注入理解錯了!(範例→源碼證明)

突然發現現在有很多人把 @Autowired 註解加在屬性上,認爲是自動注入。 筆者閱讀官網之後,發現這是一個天大的誤解。 於是,筆者試着,寫一些代碼案例,來證明,這和 Spring 所提供的自動注入是有很大差別的。 當然,通過源

原创 99%的人答不對Spring推斷構造方法!打破你三觀!!!(範例→源碼)

大多數人只是停留在對 Spring 的簡單應用上,所以一般也不會瞭解到 Spring 的構造方法注入。 其實在 Spring 的官網中明確說到: Spring 推薦對於那些必須依賴注入的屬性,使用構造方法注入; 而那些不一定非要

原创 全網最權威:再次打破你對synchronized的認知!!!

這篇文章,我會直接把對象頭的信息打印出來給你看!!! 其實 synchronized 有關的博客我之前也寫過,描述的也還算比較清晰,比較深入。 比如這篇:99%的人答不對的併發題 還有這篇:當面試官懟你 synchronized

原创 從Spring的循環引用打破你的認知!!!

假設我現在給出兩個類,A、B,並且交由 Spring 容器管理,A、B 內部分別引用了 B、A,那麼這樣的循環引用是否會成功? 我們看結果: 可以發現,A、B 都成功在內部引用了對方,都執行成功了各自的 hello() 方法。

原创 全網最權威!Redis緩存擊穿、雪崩、穿透!刷新你的三觀!!!

緩存的擊穿、穿透和雪崩應該是再熟悉不過的詞了,也是面試常問的高頻試題。 不過,對於這三大緩存的問題,有很多人背過了解決方案,卻少有人能把思路給理清的。 而且,網絡上仍然充斥着,大量不太靠譜的解決方案,難免誤人子弟。 我的這篇文章,

原创 不爲技術而技術:Redis 從單點到集羣

如果你看過我的一些文章,你應該知道,我一般不會把知識點給你直接列出來; 這樣的文章網上有一大把,你大可不必來我這看; 如果你要看我的文章,那麼,就請你做好思考的準備,跟着我的思路,去一點一點,把這麼一個知識的歷程,把它研究透徹,你

原创 程序gc卡頓?我換了G1就高枕無憂了(從時代剖析垃圾收集器原理)

經典案例: 一個堆內存 2G 的資源服務器,PV 50萬,用戶反饋網站速度比較慢。於是公司決定對服務器進行升級,於是將堆內存擴展爲 16 個 G。 但是,用戶反饋卡頓十分嚴重,反而效率更低了。 可能一些對 JVM 還不夠熟悉的同學

原创 全網最權威講解:線程池源碼分析

我先列舉幾個線程池有關的題目,讀者可以做個自我檢測: 線程池初始化時,需要設置哪些參數 線程池的默認線程工廠,創建線程是如何命名的 線程池的拒絕策略,JDK 提供了哪些 線程池的核心線程是否會死亡 提交(submit)任務時有什

原创 Lock 的一百種玩法(剖析 Java Lock 原理)

大家都知道 Java 中有 synchronized 實現鎖,也有 Lock 接口來實現顯示的鎖。synchronized 關鍵字更多貼近 Java 虛擬機,而 Lock 則更多貼近我們的 Java 代碼。Lock 也具備了很多傳

原创 分享 HashMap 的精髓,它永遠比你自己寫 map 的效率高

HashMap是面試時幾乎必問的數據結構,也是Java中非常常用的一個數據結構,所以瞭解它的原理是對面試有極大的幫助,也是自身非常好的提升。 (大佬就不要來吹毛求疵了。。) 文章目錄爲什麼要使用hash表hash表如何達到高效的存

原创 深入理解Object類

衆所周知 java 是一門面向對象的高級語言,除了基本類型之外,其他的所有類(包括枚舉類 enum)都繼承於基類,也就是 Object 類。所以深入瞭解 java 語言的類特徵,Object 類的基本方法是非常有必要的。 下面請先

原创 當面試官懟你 synchronized 性能差時,你拿這篇文章吊打他(ReentrantLock 與 synchronized 的前世今生)

一天,你進入了一個大廠面試。坐立不安之中,一個禿頭中年男子,穿着一個發灰了的格子襯衫,戴着一副鏡片厚9mm的眼鏡,穩如磐石突然朝着你說到:“就是你這個小毛頭來面試吧。” 心裏一驚,這怕不是神仙級架構師。但還是故作鎮定:“面試官您好