1. 原子性的操作:read,load,assign,use,shore,write 2. 可見性的操作:volatile,synchroniz...
時間先后順序于先行發(fā)生沒有絕對關(guān)系,一切以先行發(fā)生原則為主。 1. 程序次序原則。同一個線程內(nèi),按照程序代碼順序先后執(zhí)行。 2. 管道鎖定規(guī)則。...
1. 不可變。final。如果是對象,所有屬性為final即可。 2. 絕對線程安全。 3. 相對線程安全。對象單獨操作都是線程安全的,對于一些...
1. 互斥同步。保證在某一時刻共享數(shù)據(jù)只被一個線程使用。 synchronize為什么消耗大呢?synchronize在方法完成之前,會阻塞...
1. 自旋鎖與自適應(yīng)自旋。共享數(shù)據(jù)的鎖定只會持續(xù)短時間,通過自旋看看持有鎖的線程是否會很快釋放。1.6之后加入自適應(yīng)自旋,根據(jù)前一次在同一個鎖上...
SDS:simple dynamic String 優(yōu)勢: 1.提升效率,C語言的字符串如果需要知道字符串的長度,需要遍歷,復(fù)雜度是O(n)...
每個字典的底層采用哈希表實現(xiàn),每個字典帶有兩個哈希表,一個平常使用,一個僅在rehash時使用。redis使用murmurHash2算法來計算h...
Redis 并沒有直接使用數(shù)據(jù)結(jié)構(gòu)來構(gòu)建鍵值對,而是基于這些數(shù)據(jù)結(jié)構(gòu)創(chuàng)建了一個對象系統(tǒng)。 該對象保存與數(shù)據(jù)有關(guān)的三個屬性分別是:type(類型)...
哈希對象的編碼可以是ziplist或hashtable 1. ziplist編碼的哈希對象使用壓縮列表作為底層實現(xiàn),每當(dāng)新的鍵值對加入哈希對象時...