原创 《計算機網絡自頂向下方法》學習筆記——1、應用層

目錄 1、進程與計算機網絡之間的接口 2、何爲應用層協議 3、SSL 4、HTTP 5、FTP 6、電子郵件 7、DNS 8、BitTorrent 1、進程與計算機網絡之間的接口        進程通過一個稱爲套接字的軟件接口向網絡發送報

原创 Disruptor原理概述與輕量級C++實現

       最近學習了disruptor,於是自己實現了一個極輕量化的多生產者多消費者c++版本disruptor,並用這個版本優化了github上排第一的threadpool項目,效率得到了一定的提升,特別是執行函數相對比mutex鎖

原创 InnoDB雜談

目錄   一、索引算法 1、B+樹 1.1B+樹的插入 1.2B+樹的刪除 2、B+樹索引 2.1聚集索引 2.2輔助索引 2.3創建索引 2.4Online DDL 2.5Cardinality 2.6MRR 2.7哈希索引 二、鎖 1

原创 levelDB源碼學習總結

關於leveldb框架的介紹,已經有無數個大佬進行過詳細論述了。以下三篇博客就很不錯,本文的圖片也基本摘自第一篇博客: LevelDB原理探究與代碼分析 Leveldb二三事 leveldb實現原理 本文爲看完以上博客後總結的一些問題,在

原创 面向對象使用的輕量化高併發Linux c++網絡庫kikilib

目錄 一、概述 二、使用 三、實現 1、框架 2、Socket 3、定時器 4、線程池 5、讀寫緩衝區 6、日誌 7、對象池 四、測試 五、遇到的問題mark 六、後續 一、概述                kikilib網絡庫是輕量,

原创 《計算機網絡自頂向下方法》學習筆記——3、網絡層

      目錄 1、IP 2、因特網控制報文協議(ICMP) 3、路由選擇算法         英特網的網絡層有三個主要組件。第一個是IP協議,第二個是路由選擇部分,它決定數據報從源到目的地所流經的路徑。最後一個是報告數據報中差錯和對某

原创 《計算機網絡自頂向下方法》學習筆記——2、運輸層

目錄 1、多路複用與多路分解 2、UDP 3、TCP 1、多路複用與多路分解        將主機間交付擴展到進程間交付被稱爲運輸層的多路複用與多路分解:         一個進程有一個或多個套接字,它相當於從網絡向進程傳遞數據和從進程向

原创 C++超輕量限流器實現

目錄 一、簡介 二、令牌桶算法簡述 三、使用 四、實現 五、後續 一、簡介        該限流器基於令牌桶算法實現,特點如下: 接入方便,無業務侵入:接入只需要添加一行代碼r.pass()。 線程安全,CPU友好,無鎖高效。 輕量,核心

原创 epoll原理的一點總結

       之前只是使用epoll,也只在別人的博客上了解過大致的工作原理。這幾天刷面經,看到許多問epoll的問題,於是花了一天去看了看epoll的源碼,給自己也整理了一個原理簡述。        epoll是linux的IO多路複用

原创 linux c++11高性能協程庫netco

目錄   一、開源協程庫調研 1、golang語言自帶協程 2、雲風的coroutine協程庫 3、騰訊的libco協程庫 4、魅族的libgo協程庫 二、netco協程庫概述 三、netco的實現 1、框架 2、Context 3、Co

原创 《redis設計與實現》讀書筆記

目錄 一、數據結構 1、字典 2、跳躍表 3、整數集合 4、壓縮列表 5、對象 二、單機數據庫 1、過期鍵刪除策略 2、RDB持久化 3、AOF持久化 4、事件 5、客戶端 6、服務端 三、多機數據庫 1、複製 2、Sentinel 3、

原创 設計模式——創建型模式

1.單例模式※        整個程序有且僅有一個實例。該類負責創建自己的對象,同時確保只有一個對象被創建。 class myStaticSingleton { public: static myStaticSingleton* g

原创 設計模式——行爲型模式

  1.策略模式※        策略模式定義了算法家族,分別封裝起來,讓它們之間可以互相轉換,此模式讓算法的變化,不會影響到使用算法的用戶。        策略模式就是用來封裝算法的,但在實踐中,我們發現可以用它來封裝幾乎任何類型的規則

原创 設計模式——結構型模式

1.代理模式※ (1)代理模式的定義:        代理模式給某一個對象提供一個代理對象,並由代理對象控制對原對象的引用。通俗的來講代理模式就是我們生活中常見的中介。        Proxy模式在訪問對象時引入了一定程度的間接性。根據

原创 OOP三大特徵和五大設計原則

1.封裝         封裝就是把數據和對數據進行的操作集合在一起,然後將實現與使用分離,只暴露部分接口和屬性供外部使用。   2.繼承         繼承,可以讓某個類型的對象獲得另一個類型的對象的屬性和方法,並在無需重新編寫原來的