零碎知識與圖

  1. Http版本小區(qū)別



    http1.1:長連接
    http2.0:多路復(fù)用,二進制編碼格式

  2. redisson分布式鎖


    image.png
  3. springaspectj增強后置處理器


    image.png

    ProxyFactory對代碼進行判斷返回不同代理方法對象(jdk,cglib,Aspectj)

  4. epoll小總結(jié)


    epoll小總結(jié)

    vfs虛擬文件系統(tǒng)+輪詢轉(zhuǎn)為事件響應(yīng)

  5. Fegin的負載均衡


    image.png

    對于負載均衡自帶的配置類結(jié)構(gòu)


    image.png
  6. redis中的zset數(shù)據(jù)類型


    image.png

    對于zset來說他的底層是一個跳躍表(skiplist)


    image.png

    從上面的創(chuàng)建和插入的過程中可以看出于宙,每一個節(jié)點的層數(shù)(level)是隨機出來的,而且新插入一個節(jié)點并不會影響到其他節(jié)點的層數(shù)鞭衩,因此乘盖,插入操作只需要修改節(jié)點前后的指針,而不需要對多個節(jié)點都進行調(diào)整退客,這就降低了插入操作的復(fù)雜度。
    現(xiàn)在我們假設(shè)從我們剛才創(chuàng)建的這個結(jié)構(gòu)中查找 23 這個不存在的數(shù)链嘀,那么查找路徑會如下圖:
    image.png
  7. spring事務(wù)傳播機制圖


    image.png

    掛起就是新開一個conn連接對象萌狂,如果不是掛起就用的同一個conn對象就需要到commit()或者rollback()才標(biāo)志該事務(wù)的結(jié)束


    image.png

    createUser中調(diào)用addAccount方法,在addAccount方法中故意寫個Exception怀泊,幾種情況茫藏,無事務(wù)即autoCommit(true)每一行sql語句自動提交,
  8. http狀態(tài)碼


    image.png
  9. 關(guān)于復(fù)合索引


    image.png
  10. redis過期淘汰策略


    image.png

    11 mvcc
    關(guān)于ReadView


    image.png

    最新版本鏈trx_id比對然后分類
    image.png

    對比規(guī)則


    image.png

    可重復(fù)讀和讀已提交的mvcc關(guān)鍵在于
  • 可重復(fù)讀進行多次select霹琼,所使用的ReadView都是第一次select時生成的ReadView
  • 讀已提交的多次select务傲,每一次select都會新生成ReadView
    生成的ReadView是關(guān)于全庫的
  1. 進程間通信方式


    image.png
  2. 操作系統(tǒng)進程調(diào)度算法


    image.png
  3. 內(nèi)存泄漏與內(nèi)存溢出
  • 內(nèi)存泄漏


    image.png
  • 內(nèi)存溢出


    image.png
  1. Redis主從復(fù)制原理


    image.png
  2. Redis String類型底層
    首先來看一下C語言中的字符串:
image

就是一個簡單的字符型數(shù)組凉当。
Redis中為了實現(xiàn)方便的擴展、安全和性能售葡,自己定義了一個結(jié)構(gòu)用來存儲字符串看杭。
我們叫它SDS(simple dynamic string)簡單動態(tài)字符串


image

Redis定義了一個sdshdr的結(jié)構(gòu)。里面除了保存字符串buf挟伙,還保存了free(表示buf中剩余的空間)以及l(fā)en(當(dāng)前子字符串的長度)楼雹。

比如這個sdshdr就表示一個字符串長度為5,剩余空間為5的Redis字符串(末尾的‘\0’不算在長度里面)

image

相比于C中的字符串尖阔,Redis這樣做有幾點好處:

  1. 獲取字符串長度的復(fù)雜度為O(1)
    由于sdshdr結(jié)構(gòu)中定義了len用來保存當(dāng)前字符串長度烘豹,因此不必像C中一樣遍歷字符串來得到長度。
  2. 不會造成緩沖區(qū)溢出
    C中使用函數(shù)將一個字符串添加到另一個字符串默認是認為字符串剩余空間足夠容納添加的诺祸,但是事實可能并不夠携悯,會造成緩沖溢出。
    但是Redis再每一次執(zhí)行字符串拼接的過程前都會判斷當(dāng)前剩余的free是否能夠存下需要拼接的字符串筷笨,因此不會造成溢出憔鬼。
  3. 減少修改字符串帶來的內(nèi)存重分配次數(shù)
    我們直到字符串在擴容或者收縮時會進行復(fù)雜的操作,這些操作會消耗比較多的系統(tǒng)資源胃夏。Redis為了減少這些消耗轴或,采用了一些機制來減少這些操作的出現(xiàn)頻率。Redis使用的是內(nèi)存預(yù)分配方法仰禀,每次擴容都會額外預(yù)留一些空間方便下次擴容:當(dāng)Redis字符串進行刪減操作時不會進行內(nèi)存重分配照雁,多余出來的空間也不會被回收,會留著為以后的添加做準(zhǔn)備答恶。當(dāng)然Redis也提供了一些接口供我們主動釋放這些多余的空間(如果必要的話)饺蚊。
    額外分配未使用空間
    image.png
  4. 二進制安全
    我們知道在C字符串中是以‘\0’作為判斷字符串結(jié)束的標(biāo)準(zhǔn),所以在C中不存在這樣的字符串:
image

但是Redis中是根據(jù)len來判斷字符串有沒有結(jié)束悬嗓,所以可以存儲這樣的結(jié)構(gòu):

image
  1. 兼容部分C字符串函數(shù)
    由于buf本質(zhì)上是一個字符數(shù)組污呼,所以一些C中的字符串操作可以使用。
    比如用strcasecmp比較兩個字符串是否相等 用strcat將兩個字符串相連

總結(jié)起來就是下面這5點:

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末包竹,一起剝皮案震驚了整個濱河市燕酷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌周瞎,老刑警劉巖苗缩,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異声诸,居然都是意外死亡酱讶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門双絮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浴麻,“玉大人,你說我怎么就攤上這事囤攀∪砻猓” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵焚挠,是天一觀的道長膏萧。 經(jīng)常有香客問我,道長蝌衔,這世上最難降的妖魔是什么榛泛? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮噩斟,結(jié)果婚禮上曹锨,老公的妹妹穿的比我還像新娘。我一直安慰自己剃允,他們只是感情好沛简,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斥废,像睡著了一般椒楣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牡肉,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天捧灰,我揣著相機與錄音,去河邊找鬼统锤。 笑死毛俏,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的饲窿。 我是一名探鬼主播拧抖,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼免绿!你這毒婦竟也來了唧席?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤嘲驾,失蹤者是張志新(化名)和其女友劉穎淌哟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辽故,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡徒仓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了誊垢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掉弛。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡症见,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出殃饿,到底是詐尸還是另有隱情谋作,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布乎芳,位于F島的核電站遵蚜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奈惑。R本人自食惡果不足惜吭净,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肴甸。 院中可真熱鬧寂殉,春花似錦、人聲如沸原在。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晤斩。三九已至焕檬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間澳泵,已是汗流浹背实愚。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兔辅,地道東北人腊敲。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像维苔,于是被迫代替她去往敵國和親碰辅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 本文為原創(chuàng)文章介时,如需轉(zhuǎn)載請注明出處没宾,謝謝! 概述 本文將圍繞以下3點對 JVM 知識進行總結(jié),知識全部源于《深入理...
    Android_ZzT閱讀 4,406評論 8 29
  • 專業(yè)考題類型管理運行工作負責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 9,013評論 0 13
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹 對...
    cosWriter閱讀 11,113評論 1 32
  • 內(nèi)存溢出和內(nèi)存泄漏的區(qū)別 內(nèi)存溢出:out of memory沸柔,是指程序在申請內(nèi)存時循衰,沒有足夠的內(nèi)存空間供其使用,...
    Aimerwhy閱讀 744評論 0 1
  • 蓓蕾花閱讀 152評論 0 0