原创 Redis深度歷險-分佈式鎖 Redis分佈式鎖

Redis分佈式鎖 Redis可以用來實現分佈式鎖,有兩種實現方式:通過setnx實現的悲觀鎖和通過watch實現的樂觀鎖 悲觀鎖 package main import ( "fmt" "github.com/gar

原创 STL容器(1)-vector類 STL vector

STL vector vector是C++中的動態數組,支持動態擴容同時再末尾添加元素的時間複雜度控制在o(1) 動態數組特性 vector支持動態擴容,同時在末尾添加、刪除元素時時間複雜度爲O(1);不支持在頭部添加、刪除元素

原创 STL容器-Traits與偏特化 STL容器-Traits與偏特化

STL容器-Traits與偏特化 Traits是STL中非常重要的一個技巧,主要是用來優化性能,在STL空間配置器中有簡單介紹,這裏做一個更詳細的介紹;Traits主要有兩類:__type_traits和iterator_traits,對

原创 STL容器(3)-priority_queue類 STL容器(3)-priority_queue類

STL容器(3)-priority_queue類 優先級隊列 #include <queue> template<class elementType, class Container=vector<Type>,

原创 STL空間配置器-構造析構 STL空間配置器-構造析構

STL空間配置器-構造析構 STL空間配置器實際上包括兩部分,一部分是空間的分配,另外一部分就是構造函數、析構函數的執行,這樣纔是new和delete的完整過程,以vector的操作作爲說明 以vector的插入操作 void push

原创 STL源碼解析-空間配置器 STL源碼解析-空間配置器

STL源碼解析-空間配置器 STL中非常重要的一個模塊就是空間配置器,用來管理程序內存的。 空間配置器 template <class _Tp, _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Tp>)

原创 Go語言高併發Map解決方案 Go語言高併發Map解決方案

Go語言高併發Map解決方案 Go語言基礎庫中的map不是併發安全的,不過基於讀寫鎖可以實現線程安全;不過在Go1.9版本時,官方提供了sync.Map的線程安全Map 讀寫鎖實現安全map package main import (

原创 Redis深度歷險 - 持久化機制(一) Redis深度歷險 - 持久化實現

Redis深度歷險 - 持久化實現 Redis支持兩種持久化的方式:快照和AOF;快照指的是會將當前數據庫中所有的數據記錄下來,是一次性全量備份;AOF日誌記錄的是內存數據修改的指令文本記錄,是連續的增量備份。 Redis - 快照

原创 Redis集羣部署 Redis集羣部署

Redis集羣部署 Redis集羣有多種部署模式,包括主從模式、哨兵模式、集羣模式 主從模式   主從模式可以是一主一從或者一主多從,主從模式並不是分佈式分片存儲,而是每一臺設備都擁有全部的數據;   實際的運行中都是直接連接到主機上

原创 Redis深度歷險 - 持久化機制 Redis深度歷險 - 持久化實現

Redis深度歷險 - 持久化實現 Redis支持兩種持久化的方式:快照和AOF;快照指的是會將當前數據庫中所有的數據記錄下來,是一次性全量備份;AOF日誌記錄的是內存數據修改的指令文本記錄,是連續的增量備份。 Redis - 快照

原创 Go語言proto使用入門 Go語言proto使用入門

Go語言proto使用入門 環境安裝 protoc安裝 protoc是用於編譯proto文件的工具 scoop安裝 scoop bucket add extras //添加額外的倉庫 scoop install prot

原创 consul入門 consul入門

consul入門 consul是用於服務發現的一個框架,在實際的RPC調用中起到一個服務管理的作用;服務器提供者啓動時告知consul自己的IP、Port以及服務信息,服務調用者從consul查詢自己需要使用的服務的IP、Port;con

原创 Redis深度歷險 - embstr和raw的字符串 Redis深度離線 - embstr和raw的字符串

Redis深度離線 - embstr和raw的字符串 在Redis中字符串存儲有兩種方式,embstr和raw兩種形式,不超過44字節的情況下以embstr存儲,超過44字節則以raw形式存儲 <font color="red">注:

原创 Redis深度歷險 - dict的rehash Redis深度歷險 - dict的rehash

Redis深度歷險 - dict的rehash 字典是Redis中非常重要的一個數據結構,本質就是一個hash表;那麼這個hash表是怎麼解決衝突的呢?是怎麼進行rehash的呢? dict結構體 相關代碼在: dict.c、dict

原创 Golang數組與切片 Golang數組與切片

Golang數組與切片 數組的聲明 func main() { var arr1 [3]int fmt.Println(arr1) var arr2 = [3]int{1, 2, 3} var arr3 =