原创 c++11智能指針

unique_ptr auto_ptr強調的是所有權,拷貝和賦值都會讓原對象失去控制權,再使用原對象可能會造成崩潰,和STL容器、算法也不能很好的配合。 在c++11裏auto_ptr的功能被unique_ptr替代,與auto_

原创 設計模式簡單記錄

單例模式 工廠模式 建造者模式 將一個複雜對象的構建分成幾部分,比如汽車零件的分別建造 原型模式 用原型實例制定創建對象的種類,並通過拷貝這些原型的創建新的對象。爲每個類先創建一個對象,以後需要某種對象的時候,通過clone創建,

原创 c++11線程支持庫:thread和mutex

thread thread頭文件主要包含thread類和this_thread命名空間。 namespace std { namespace this_thread { thread::id get_id() noexce

原创 c++11日期和時間庫:chrono

std::chrono 主要包含兩部分,std::chrono::duration 和 std::chrono::time_point,它們都是類模板,std::chrono::duration 表示時間間隔,std::chron

原创 c++11線程支持庫:condition_variable

頭文件condition_variable主要包括類condition_variable,類condition_variable_any,函數notify_all_at_thread_exit。 condition_variabl

原创 makefile簡明使用方法

零碎 命令前面加一個減號的意思是,該命令如果出錯也不停止 命令前面加@的意思是,這個命令將不顯示出來 makefile中的變量其實就是C語言中的宏 :=定義的變量不能使用後面定義的變量 =定義的變量可以使用後面的變量 +=是追加

原创 shell總結

主要是語法層面,不過多關注詳細命令。主要是給自己參考用。 變量 只讀變量 使用 readonly 命令可以將變量定義爲只讀變量,只讀變量的值不能被改變。 rword="hello" echo ${rword} readonly r

原创 LevelDB中的Iterator

Iterator void Iterator::seek(const Slice& target); // 定位到第一個key大於等於target的位置 以下的Key指的是InternalKey。 MemTableIterator

原创 has_tostring:判斷某類型是否有public tostring函數的類模板

《C++11 標準庫源代碼剖析:連載之二》結尾提出了一個例子,想了很久纔想明白,這個例子類似: namespace nstd { template<class T, T v> struct integral_constant {

原创 由於引用了不同版本leveldb的頭文件導致的異常

下載了leveldb 1.5版本研究研究,寫了如下代碼: leveldb::Options options; options.create_if_missing = true; options.block_cache = leveld

原创 c++11常用新特性:語言層面

... 本文爲VIP專屬文章,單擊開通VIP

原创 單字符串匹配算法(Boyer Moore和Sunday)

字符串匹配(查找)算法是一類重要的字符串算法,給定一個長度爲n的字符串text,要求找出text中是否存在另一個長度爲m的字符串pattern(模式串)。 主要方法有樸素算法,KMP算法,BM(Boyer Moore)算法,Sunda

原创 通過UNIX域套接字傳送文件描述符

UNIX域套接字用於在同一臺機器上運行的進程之間的通信。UNIX域套接字提供流和數據包兩種接口。UNIX域套接字是套接字和管道之間的混合物。爲了創建一對非命名的、相互連接的UNIX域套接字,可以使用socketpair函數。 #inc

原创 線程同步與進程間通信

線程之間天然是共享數據的,所以重點討論線程同步;進程之間進程資源是隔離的,所以重點討論進程間通信。當然有些資源是多進程共享的,所以進程間也需要考慮同步。 線程同步 互斥量 pthread_mutex_t 讀寫鎖 pthread_rwl

原创 最好使用sigaction函數替代signal函數

APUE 習題15.15,一個XSI共享存儲的測試程序: #include <fcntl.h> #include <stdio.h> #include <assert.h> #include <unistd.h> #include <