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