原创 C++類型萃取 -- 1

std::enable_if_t #include <iostream> #include <type_traits> #include <string> template<typename T, typena

原创 C++ 可變索引模板 和 template template

可變索引模板 某些情況下,我們需要指定參數的索引並輸出,此時可以選擇可變索引模板,只要支持[]操作的,都可以執行可變索引模板。下面給出代碼實例: #include <iostream> #include <vector> #inc

原创 C++模板元編程---摺疊表達式

基礎博客:https://blog.csdn.net/qq_35976351/article/details/106985750 摺疊表達式同樣是運行在編譯期間的,先給出基本的規則: 注意,一元表達式只有&&、||或者,有缺省值

原创 C++模板元 -- 變長參數模板

基礎 變長參數模板的一般格式是: // 編譯遞歸的終止位置 template <T arg> void foo(T arg) { // do something with arg } // 展開編譯表達式 template <

原创 理解C++ Executor的設計理念

文章目錄簡介代碼示例參考 簡介 很多時候,我們的可調用對象需要某些非參數依賴的執行環境。可以這麼理解,我們的任務是就緒的,不需要依賴外界傳入參數了,只需要以某種方式控制方法的when 、where和how即可。 三個分別是指:

原创 Ubuntu18.04安裝facebook folly庫

安裝步驟 安裝boost ubuntu18.04安裝的boost有點陳舊,因此自行下載最新版本,執行安裝即可:https://www.boost.org/ 具體步驟直接參考readme 安裝gtest: wget https://

原创 CMake總結筆記1

總結筆記

原创 redis筆記2 限流、GeoHash和Scan

限流 簡單限流 簡單限流的思路是,在規定的時間窗口內,給出規定的最大操作數量限制。使用zset結構作爲一個用戶行爲的記錄。zset的value和score都用來表示操作的時間戳。每次操作前,先把操作時間戳加入zset結構,然後移除

原创 reids筆記4 集羣

主從機制 基本原理 CAP原理: Consistent:一致性 Availability:可用性 Partition tolerance:分區容忍性 網絡分區:分佈式節點網絡斷開的場景。 CAP基本原理是:當網絡分區發生時,

原创 Golang結構體與面向對象

結構體和內嵌類型 結構體是Golang中面向對象的核心,Golang允許內嵌類型,內嵌可以理解爲使用組合來實現繼承,給出代碼示例: package main import "fmt" type SmallFoo struct {

原创 分佈式基礎理論筆記

分佈式系統的特點以及問題 分佈式系統的概念是,機器之間僅僅通過網絡進行通信。有4個特性: 分佈性 對等性:計算機之間沒有主從之分,計算機節點之間是對等的。數據副本是在不同的節點持久化相同的數據,主節點丟失時,可以從從節點讀取數據

原创 Goroutine心跳檢測

Goroutine心跳檢測 心跳檢測的核心思想是,單獨啓動心跳協程,然後通過向協程發送數據,表示心跳。 package main import ( "fmt" "math/rand" "time" ) fu

原创 redis筆記5 stream消息隊列

基礎 Stream結構相當於一個消息隊列。消息是存儲在磁盤上的,而且是鏈式結構。每個stream都有自己的唯名稱,是redis的key。stream在集羣情況下,也是異步複製的。 每個stream上可以有多個消費組,每個消費組都可

原创 redis緩存雪崩、緩存穿透和緩存擊穿等總結

redis作爲緩存 互聯網高併發請求數據的情況,可能出現頻繁訪問MySQL的情況,但是MySQL由於自身的特性,可能無法抗住這麼大的壓力,因此我們想利用redis存儲一些MySQL中的數據,redis作爲緩存時,一般有以下幾個場景

原创 Golang slice高級應用

原文參考:https://github.com/golang/go/wiki/SliceTricks 代碼示例: package main import "fmt" func initSliceValue(s []int) {