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