原创 鏈接、裝載與共享庫

程序執行簡述     由下圖編譯的過程可以看出,源程序經過預處理,編譯,彙編等步驟形成可重定位目標文件,再由多個可重定位目標文件鏈接成可執行目標文件。     每個步驟做的事情: (1)預處理(預編譯),處理源代碼中以“#”開頭的預處理

原创 C++協程概述

    本篇文章記錄了,我在學習C/C++實現協程封裝過程的新得體會,以及對協程的理解。一開始對知道“協程”這個概念實在go語言裏面,很多資料對其的描述都是“輕量級的用戶態線程”。     首先,用戶態和內核態分別是程序在運行過程中的兩種

原创 C++智能指針循環引用問題

    今天遇到一個問題需要記錄一下,C++中的RAII機制對於內存泄漏問題有了很大的幫助。當我們在拿到一塊堆空間的時候,就應該用智能指針包裹起來,當對象生命週期結束的時候會自動釋放申請的內存。     智能指針的類型常用的有三種,sha

原创 C++11新特性解析

   Table of Contents 類型推導 智能指針 移動語義 雜項 nullptr、0、NULL constexpr 本篇博客對於C++11的新特性做一些詳細的描述和記錄。儘量用簡潔的語言和小栗子說明C++11做了哪些優化工作。

原创 Redis的對象及命令

上一章講解了Redis中的數據結構,這一章對Redis中的對象做簡要介紹。本篇文章是對Redis對象做一個全局性的概覽,每個對象的代碼實現部分以後會一一解析。 Redis對象 Redis中有五大對象,分別是:字符串對象,列表對象,

原创 深入理解數據結構——紅黑樹

本篇文章深入講述紅黑樹的原理與實現。紅黑樹是一個非常重要的數據結構,其本質上是一個平衡查找樹,可是其“平衡”的條件和AVL樹不同。在深入瞭解紅黑樹之前要先熟悉平衡查找樹的相關知識,這裏就不再介紹。 紅黑樹簡介 紅黑樹性質 首先,什

原创 Redis中的持久化策略——RDB與AOF

之前敘述了Redis中的數據庫鍵值對存儲方式以及鍵過期策略。本篇文章將着重介紹一下Redis中的數據持久化策略,這也是Redis中的重中之重。衆所周知,Redis是一種基於內存KV數據庫,也就是說一般情況下,數據都是存儲在內存中,

原创 #include " *.c / *.cpp "源文件的理解和使用

今天在看redis源碼的時候,ae庫中爲了跨平臺式多路複用的實現,運用瞭如下代碼。 /* Include the best multiplexing layer supported by this system. * The f

原创 Nginx基礎流程與啓動過程解析

最近在學習Nginx源碼,由於時間有限,主要看主體邏輯流程,事件模塊,HTTP模塊等重要模塊。本章首先對Nginx啓動過程做詳細分析。 Nginx架構設計理念 Nginx的架構設計思想非常的好,很適合高性能服務器的要求,這種服務器

原创 Redis初識與配置

最近在瞭解Nosql的具體實現,redis作爲KV數據庫的重要成員,怎麼能遺忘他呢。本篇文章對其特性做一些介紹,以後有時間對其底層做詳細分析。 Redis簡介 Redis是一個存儲key-value對的內存型數據庫,也就是說對其的

原创 Redis中的事件管理

Redis中的很重要的一部分是對於事件的管理,ae事件庫的最大特點就是簡潔明瞭且高效。本章以epoll爲例,分析Redis對於事件的處理過程。 Redis事件 Redis中事件分成兩種類型,一種是文件事件,一種是時間事件。Redi

原创 LevelDB源碼解讀——Compaction和VersionEdit

前面幾篇簡單介紹了LevelDB中的數據結構和存儲方式(log、MemTable、sstable)。這一章節來解讀一下LevelDB最核心的內容——合併操作與版本控制。 Compaction 按照LevelDB的框架思路,Comp

原创 Redis中的鍵空間與鍵過期

本章主要來介紹一下Redis的數據庫對象,主要關注Redis對於存儲在服務器中的鍵值對數據如何進行管理。 Redis中的數據庫是一個redisDb結構體的對象。首先先來看一下客戶端、服務器與數據庫的關係,服務器中有一個變量保存這r

原创 c++雲風coroutine庫解析

雲風coroutine庫是一個C語言實現的輕量級協程庫,源碼簡潔易懂,可以說是了(ru)解(keng)協程原理的最好源碼資源。 我在之前的文章中,藉助騰訊開源的libco,對C/C++的協程實現有了一個簡單介紹,參考博客。其實li

原创 6.824分佈式系統學習筆記

Lecture 1:Introduction 爲什麼需要分佈式系統? 並行,多機能提供解決問題效率 容錯,多機器可以有效降低系統出錯概率,當一臺機器宕機後,另一臺機器依舊能工作 解除物理限制,分佈在多地的機器能相互通信 安全性與