原创 cJSON源碼分析1-基礎

文章目錄宏定義調用方式版本類型定義cJSON結構bool值定義內存管理最大深度HOOK 宏定義 調用方式 stdcall: C++標準調用方式。 參數從右向左依次壓入堆棧. 由被調用函數自己來恢復堆棧,稱爲自動清棧。 函數名自動

原创 cJSON源碼分析2-接口

文章目錄類型判斷函數聲明實現原理創建函數聲明具體分析添加函數接口添加到數組添加到對象刪除接口具體分析獲取接口具體分析 類型判斷 函數聲明 //這一系列函數檢查item的type是不是某一類型 CJSON_PUBLIC(cJSON_

原创 leetcode 501. Find Mode in Binary Search Tree

頭文件說明:該頭文件爲一些簡單是二叉樹操作,提交leetcode時不需要,只是爲了本地測試而已~ #ifndef _TREE_INCLUDE_H_ #define _TREE_INCLUDE_H_ #include <iost

原创 SRS源碼分析-協程相關類

SRS中使用協程庫state-thread(ST), 在使用時對其進行了封裝,保證使用方便。這種封裝方法和使用thread庫比較類似。 SrsEndlessThread 用於創建一個永不退出的協程,生命週期和整個程序一樣。使用時需

原创 OpenGL01-初識

什麼是OpenGL OpenGL本身並不是一個API(Application Programming Interface, 應用程序編程接口),它僅僅是一個由Khronos組織制定並維護的規範(Specification)。 Op

原创 poj3468-線段樹詳解

什麼是線段樹 線段樹,是一種樹形結構,它的各個節點都保存的是一條線段。線段樹主要是解決動態查詢的問題,使用二叉樹的結構後,它的操作基本的複雜度爲O(logn). 線段樹的每個節點表示一個區間,其左右子樹表示該節點的左半區間和右半區

原创 LevelDB源碼分析9-MemTable

Memtable中存放內存中的key-value,其提供了寫入,刪除以及讀取k-v記錄的接口。leveldb在插入時要保證key的順序性,因此Memtalbe的核心數據結構是一個skip-list,Memtalbe只是一個接口類。

原创 LevelDB源碼分析10-比較函數

Comparator 在leveldb中Comparator爲一個抽象類。默認的比較函數爲字節比較, class Comparator { public: virtual ~Comparator(); // Three

原创 LevelDB源碼分析8-db key

爲了更好的閱讀Memtable,先看一看Memtable的key. ValueType levledb更新時不會操控db中的數據,每次操作都是直接插入一份kv數據,具體的數據合併和清除工作由後臺的compact完成。所以,每次 p

原创 leetcode 240. Search a 2D Matrix II

/* leetcode 240. Search a 2D Matrix II Write an efficient algorithm that searches for a value in an m x n matrix.

原创 可變參數

C語言中不定參數個數的處理方法 聲明存放的位置 va_list va; 開啓 va_start 迭代獲取 va_arg 結束清理 va_end 示例: #include <stdio.h> #include <stdarg.h

原创 cJSON介紹

文章目錄JSON簡介JSON的形式JSON示例cJSON簡介使用示例 JSON簡介 JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 JS

原创 cJSON源碼分析3-核心解析算法

解析函數 對於字符串,調用cJSON_Parse解析爲一個cJSON對象 CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value); parser_buffer 爲存解析的字符串,

原创 C++併發編程指南1

文章目錄併發計算機領域的併發併發的途徑爲什麼要使用併發關注點分離提高性能什麼時候不使用併發C++併發性能一個簡單的C++多線程程序 併發 兩個或多個獨立的活動同時發生。 計算機領域的併發 併發:單個系統裏同時執行多個獨立的任務。

原创 C++併發編程指南2

文章目錄線程管理基礎啓動線程等待線程向線程函數傳遞參數轉移線程所有權多個thread對象之間轉移函數返回thread對象thread作爲參數傳遞多個線程並等待結束運行時決定線程數量標識線程 線程管理基礎 每個程序至少有一個線程:執