了解了Docker的概念和特點(diǎn)后,相信很多人對Docker與虛擬機(jī)的區(qū)別會產(chǎn)生疑惑,那么它們到底有什么不同呢?下面通過一張對比圖來說明兩者的主要區(qū)別,如下圖所示:查看全文>>
Docker是一個(gè)開源的應(yīng)用容器引擎,它基于go語言開發(fā),并遵從Apache2.0開源協(xié)議。使用Docker可以讓開發(fā)者封裝他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任意的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。Docker 容器完全使用沙箱機(jī)制,相互之間不會有任何接口,這保證了容器之間的安全性。查看全文>>
自旋鎖原理非常簡單,如果持有鎖的線程能在很短時(shí)間內(nèi)釋放鎖資源,那么那些等待競爭鎖的線程就不需要做內(nèi)核態(tài)和用戶態(tài)之間的切換進(jìn)入阻塞掛起狀態(tài),它們只需要等一等(自旋),等持有鎖的線程釋放鎖后即可立即獲取鎖,這樣就避免用戶線程和內(nèi)核的切換的消耗。查看全文>>
樂觀鎖是一種樂觀思想,即認(rèn)為讀多寫少,遇到并發(fā)寫的可能性低,每次去拿數(shù)據(jù)的時(shí)候都認(rèn)為別人不會修改,所以不會上鎖,但是在更新的時(shí)候會判斷一下在此期間別人有沒有去更新這個(gè)數(shù)據(jù),采取在寫時(shí)先讀出當(dāng)前版本號,然后加鎖操作(比較跟上一次的版本號,如果一樣則更新),如果失敗則要重復(fù)讀-比較-寫的操作。查看全文>>
對于sleep()方法,我們首先要知道該方法是屬于Thread類中的。而wait()方法,則是屬于Object類中的。查看全文>>
Java語言提供了弱同步機(jī)制,即volatile變量,以確保變量的更新通知其他線程。volatile變量具備兩種特性,volatile變量不會被緩存在寄存器或者對其他處理器不可見的地方,因此在讀取volatile類型的變量時(shí)總會返回最新寫入的值。查看全文>>