原创 MySQL常用操作記錄

在MySQL的使用過程中, 有一些基本的操作需要記錄下來以備需要時方便查詢。 安裝數據庫 比較方便的是yum 安裝, 如果沒有特別的指定, 直接yum安裝: yum install -y mysql-server mysql-clie

原创 BloomFilter(布隆濾波器)原理與使用

BloomFilter在NoSql、大數據的去重、判斷數據是否存在等領域有着廣泛的應用。 它是一種空間效率極高的概率型算法和數據結構,用於判斷一個元素是否在集合中(類似Hashset), 其核心一個很長的二進制向量和一系列hash函數

原创 Skiplist 的原理與使用

Skiplist在很多場景下都有應用, 比如redis的有序集合, LevelDB、hbase、Cassandra、Bigtable等的MemTable。它是一個實現比較簡單的帶跳躍功能的搜索鏈表, 採用空間換時間的方式來加快鏈表的查

原创 LevelDB的實現框架

LevelDB是一個由Google提供的K-V型的存儲引擎, 具有非常高的寫入性能, 目前很多的存儲系統底層都會用到LevelDB及其基礎上的RocksDB。 LevelDB的特徵 所有的key和value是任意的字符數組; 按照k

原创 Golang RPC功能

RPC框架在分佈式系統中, 尤其是大型系統, 應用非常廣泛, 它相對於http的系統調用更爲效率高。本文主要介紹如何使用RPC以及golang 中的gorpc的使用。 什麼是RPC? RPC(Remote Procedure Call

原创 Golang mock 框架實踐

Golang 有很多優秀的開源框架, 能夠幫我們很方便的寫出測試代碼, 來模擬不同的場景。 gomonkey gomonkey 是一種很簡單的mock框架, 基於打樁函數的方式來進行mock不同的函數調用, 從而實現不同的場景的moc

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

行爲型模式包括:模板方法模式(Template Method),觀察者模式(Observer),狀態模式(State),策略模式(Strategy),職責鏈模式(Chain of Responsibility),命令模式(Command)

原创 googletest (gtest)的使用方法

最近在項目中, 碰到一些問題, 發現無法從集成測試來覆蓋, 比較合適的辦法就是通過單元測試, 就順便研究了一下Google test的使用方法。 Google test是一種比較方便的C++測試框架, 它能夠幫助我們比較方便的進行測試代

原创 存儲引擎分類

當前市面上能見到的數據庫有340多種, 每一種數據庫會有一個或者多個數據引擎, 通過對這些存儲引擎的分類, 能夠幫助我們瞭解一些共性的東西。 爲什麼我們需要不同類型的存儲引擎? 因爲我們希望能夠讀寫的性能能夠最優, 不同的操作引擎, 對

原创 智能指針用法

在C++中, 有4種常用的智能指針: auto_ptr、unique_ptr、shared_ptr以及weak_ptr.   智能指針的作用是管理一個指針,因爲存在以下這種情況:申請的空間在函數結束時忘記釋放,造成內存泄漏。所以智能指針的

原创 redis的消息發佈(publish)/ 訂閱(subscribe)

最近項目需要一個可以實現發佈/訂閱 機制的消息隊列, 首先想到的是Kafka, RabbitMQ之類的消息隊列組件, 但是感覺我們的項目也許不需要引入那麼複雜的組件, Redis也有一個比較輕量的訂閱機制。 我們可以參考redis的 Pu

原创 protobuf的使用

在項目中, 不同的模塊用過到了不同的語言, 進行通信的時候, 原本採用的方法是在不同的模塊定義相同的通信結構體, 但是隨着系統變得越來越複雜, 這樣的方法越來越不可行。 Protobuf是一個跨語言、跨平臺的具有可擴展機制的序列化數據工具

原创 AWK 字符串處理

字符串處理的另外一個強大的工具是AWK, 與SED不同的是AWK更加擅長對字符串進行切分, 進行列處理。 語法 awk [ -F re] [parameter…] [‘prog’] [-f progfile] 參數說明: -F re:

原创 WiredTiger 的數據緩存機制

大多數的存儲引擎都有自帶的緩存機制, WiredTiger也不例外。 存儲引擎的緩存機制都是基於數據庫數據的總量要遠遠大於內存的容量, 在數據庫的使用過程中, 不可能將全部的數據放進內存中, 總是需要將當前用到的數據從磁盤讀入內存, 當內

原创 Golang 實現併發架構

Golang 一個重要的優點就是可以容易實現併發的架構,它通過提供goroutine和channel的語言機制,很簡單、方便的實現了這個優點。 goroutine 機制 goroutine簡單理解就是輕量版的線程, 協程就是一個不由OS內