原创 全網最權威:LVS高性能原因揭祕

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

原创 Java 併發基礎總結

說實話,這麼長的時間以來,很多的併發編程的知識都是零零散散的積累和學習到的,可能是通過許多博客,或者是平時學習工作中代碼出現過的問題,也可能是聽老師和同學說起過(其實我的大學的老師在這方面都比較菜,畢竟他們的主要研究方向不在這,也

原创 共享鎖重入次數怎麼記錄都不知道,誰敢給你漲薪(AQS源碼閱讀之讀寫鎖)

讀鎖重入次數怎麼分別保存?讀寫鎖的獲取數量如何原子性修改? 其實之前在學習 Lock 的時候,學得比較粗糙,我也相信很多人都知道,像 ReentrantLock,ReadWriteLock 都是基於 AQS,CAS 實現的。 通過

原创 手撕 HashMap(空口無憑,實戰爲真)

如果你還不瞭解 HashMap,建議你先看我上一篇博客: 分享 HashMap 的精髓,它永遠比你自己的寫 map 效率高 這篇博客更多的闡述瞭如何去寫,更多的是對代碼的分析,需要有閱讀代碼的能力。 如果你不太擅長閱讀代碼,可以去

原创 多線程交替執行的一萬種寫法(記一道面試題)

多線程是 Java 的經典,也是重難點。很多時候,可能你反覆運行了你的代碼,確認沒有了問題。但是很可能線上運行的某一天,突然出錯掛了。事後反覆尋找原因,卻是死活重現不了場景。所以我們有必要深入地學習,不放過每一個細節。 題目 讓兩

原创 全網最權威:AQS互斥鎖源碼講解(基於ReentrantLock)

AQS 加鎖自旋幾次?排隊的線程修改前一個線程?一般人真不知道。 其實之前在學習 Lock 的時候,學得比較粗糙,我也相信很多人都知道,像 ReentrantLock,ReadWriteLock 都是基於 AQS,CAS 實現的。

原创 再有面試官問TCP三次握手,你就拿這篇文章糊他臉(輕鬆幽默帶你理解TCP的通信原理:深度好文)

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

原创 99%的人答不對的併發題(從JVM底層理解線程安全,硬核萬字長文)

衆所周知,java 是一門可以輕鬆實現多線程的語言,再加之目前的社會環境和業務需求,對多線程的使用和高併發的場景也越來越多,與之帶來的就是併發安全的問題。如何在多線程的環境下寫出符合業務需求的代碼,是程序員的基本功。而理解 JVM

原创 拆箱裝箱都不知道?(從源碼帶你理解包裝類)

衆所周知,java 是一門面向對象的高級語言。但是 java 中的基本類型不能作爲對象使用,爲了解決對象的調用問題,爲每個基本類型創造了對應的包裝類型。 先來看一道包裝類的題目吧 int a = 10; Integer b = 1

原创 精通mysql索引機制,你就不用再背sql優化口訣了!!(萬字長文)

也許很多人都背過 MySQL 調優的口訣,但是從來不理解爲什麼這樣子寫出的 sql 語句,可以有更高的性能。 而要理解其中的原由,就必須對 MySQL 底層的做一定的瞭解。 同時,爲了進大廠,你也必須學會,才能去和麪試官噴。。 下

原创 你真的懂匿名類、lambda、方法引用?先過了這道題再說!!!

先給出一道很簡潔的小段 Java 程序,你看一下是否能答出正確結果。 在類中有一個靜態變量; 靜態方法塊中,拋出子線程修改變量的值,然後等待子線程執行結束; main 方法查看變量的值。 public class LambdaTe

原创 沒聽說過CyclicBarrier、Phaser、Semaphore?面試官說:你可能沒學過Java

Java 中的類非常非常多,雖然你不一定都用過,但是,對於一些關於線程交互、同步、通信等等相關的類我們還是需要去學習和了解的。 比如大名鼎鼎的 AQS,Lock…等等。 在我這一篇博客中,我主要去講一些平時大家可能會忽略的一些但是

原创 從BIO到epoll(硬核講解)

老樣子,我先放幾個問題,你自我檢測一下,看看自己掌握多少,再去看我的講解。 計算機怎麼能接收網絡信息 SocketException: Too many open files 是什麼 同步非阻塞的缺點是什麼 僅僅只是非阻塞,是否

原创 零xml配置SpringMVC!內嵌Tomcat帶你開闢新的天地!

想必,大多數人都早已經厭倦了繁雜的配置,以及每次都需要一個外部的 Tomcat, 來啓動一個還總是亂碼的 web 應用程序。 而實際上,SpringMVC 也是完全可以做到零 xml 配置就完好運行的,並且也可以不需要外部 Tom

原创 毀三觀!打破你對Java併發的認知!

大多數人對 Java 併發的理解可能只是 Thread.class 類,或者還有 synchronized、volatile 關鍵字等等,或者,再多一些,JUC、AQS 等等…… 當然,本着不斷學習的精神,也是對前面一段時間的知識