在閱讀ArrayList的源碼時,你會發現這樣一個接口:RandomAccess。接下來讓我們探索一下這個接口。 首先,這是一個標識性接口,不包含實際方法。官方API中的介紹...

在閱讀ArrayList的源碼時,你會發現這樣一個接口:RandomAccess。接下來讓我們探索一下這個接口。 首先,這是一個標識性接口,不包含實際方法。官方API中的介紹...
阿里巴巴Java開發手冊中有這樣一條規定: 【強制】不要在foreach循環里進行元素的remove/add操作。remove元素請使用Iterator方式,如果并發操作,需...
基本概念 持續集成(Continuous integration,CI)指的是,頻繁地(一天多次)將代碼集成到主干。它的好處主要有兩個: 快速發現錯誤。每完成一點更新,就集成...
Java序列化可以將對象轉換為二進制序列,以方便對象持久化和網絡傳輸。 基本用法 要實現序列化的對象必須實現java.io.Serializable這個接口,并借助IDE生成...
在瀏覽器中輸入一個網址,會發生什么? 第一步,瀏覽器獲取域名后向DNS服務器請求獲得該域名對應的服務器的IP地址,這一步使用了UDP協議 第二步,瀏覽器和該服務器發起TCP的...
TCP底層會根據TCP緩沖區的實際情況對網絡傳輸的數據流進行包的劃分,而不會根據上層業務數據的具體含義來劃分,所以,一個在業務邏輯上完整的包在實際傳輸中可能會被拆分成多個包進...
select、poll、epoll等系統調用都是IO多路復用的操作系統層面的實現機制。IO多路復用是一種同步非阻塞的網絡IO模型,“復用”是指通過對一個線程的復用使其能夠同時...
如果明明有這個類存在但仍然提示cannot access,這可能是IDE的bug,可以清除緩存并重啟: 嘗試 File->Invalidate Caches /Restart...
策略模式簡介 當我們因不同的外部條件需要對某個對象執行不同的算法時,我們就可以把具體的算法實現從具體的業務處理中獨立出來,把它們實現成為單獨的算法類,從而形成一系列的算法,并...
推薦使用Angular 團隊的規范,其格式如下: 分為三個部分(使用空行分割): 標題行: 必填, 描述主要修改類型和內容 主題內容: 描述為什么修改, 做了什么樣的修改, ...
LockSupport簡介 LockSupport工具類用來掛起和喚醒線程,底層使用Unsafe類實現,其最核心的方法是park和unpark: park:該方法用來阻塞線程...
AQS是JUC包中的基礎組件,許多同步器例如ReentrantLock、Semaphore等都是基于AQS實現的,如果不懂AQS,怎敢說自己懂并發編程? AQS的作用簡述 A...
HashMap在并發環境下會出現死循環等問題,其不是并發安全的。使用并發安全的HashTable或者Collections.synchronizedMap(hashMap),...
費曼學習法的精髓在于用自己的語言把學習的知識給他人講懂 下面有一些問題,并附有答案和對該知識點的詳解,如果你能用自己的語言把該問題講解清楚,那恭喜你,該知識點你掌握了! 1....
HashMap的設計簡述 JDK1.8中的HashMap由數組+鏈表+紅黑樹構成,通過hash函數求下標值往數組里插入,當發生沖突時使用拉鏈解決,當拉鏈長度小于8時,使用鏈表...
顧名思義,Netty中的FastThreadLocal要比JDK中的ThreadLocal更快,那FastThreadLocal是怎么做到的呢? FastThreadLoca...
ThreadLocal的使用 多線程訪問共享變量時會出現競爭問題,可以使用加鎖等手段來解決問題,另一種解決問題的思路是讓共享變量在線程內擁有對應的本地變量,從而消滅了共享變量...
Java內存模型的抽象結構 Java線程之間的通信由Java內存模型(JMM,Java Memory Model)控制,JMM決定一個線程對共享變量的寫入何時對另一個線程可見...
我們首先來看一個標準二分查找的寫法: 對于標準的二分查找,你只需要記住以下幾點,就可以寫得又快又好: 左閉右開區間。我們要始終保持區間的左閉右開,主要體現在:left和rig...
當你學Java的并發包JUC時,不可避免,會經常遇見樂觀鎖、自旋鎖、CAS等字眼,實際上它們都是對同一個技術不同層面的一些描述。volatile變量的讀寫和CAS可以實現線程...