原创 tcp recv() 什麼時候停止

tcp 傳輸是基於流的方式。send() 只是把數據放到發送緩衝區,而recv() 只是從內核緩衝區取出現在的數據。不能send 一次 recv 一次。 例如你send 的數據大,那麼造成分成多個包發送過來那麼 recv() 一

原创 poco Mutex(互斥量)

作用: 互斥量用於線程間同步。實際上就是鎖住某部分指令。 linux 底層的 api 互斥量使用還是很麻煩的。pthread_mutex_init() pthread_mutex_lock() pthread_mutex_d

原创 poco JSON 的使用

三個例子:第一個是解析一個簡單的 json。第二個是在構造一個 json 對象並且加入數據。第三個是解析帶數組的 json對象。 這三個場景基本上滿足大部分需求了。 #include<iostream> #include <st

原创 c++ 迭代器與下標訪問效率問題

今天驗證下在 c++ vector 下標訪問及迭代器訪問的效率問題。 100W 數據存放到 vector 裏。便利訪問,以爲打印的效率很低,所以不打印,只是訪問下就 ok。 首先用迭代器的方式訪問了一下。 平均時間: rea

原创 linux 兩次 connect()

就是有時間研究這個。 一個已經 connect() 成功的 fd 再次 connect 會怎麼樣呢?擼代碼試一下就好了。 #include <sys/types.h> #include <sys/socket.h> #incl

原创 基數估計算法

譯註:給定一個數據集,求解數據集的基數(Cardinality,也譯作“勢”,表示一個數據集中不同數據項的數量)是非常普遍的一個需求。許多業務需求最終可以歸結爲基數求解,如網站訪問分析中的UV(訪客數,指一段時間內訪問網站的不同用

原创 linux 批量編碼轉換公具

安裝工具 sudo apt-get install enca 把當前目錄下所有文件轉換爲 utf-8 編碼。 enca -x utf-8 *

原创 c++ new 的幾個用法

在 c++ 裏 new 有三個用法。1) new xxx, 2) operator new( int size ), 3) placement new. 最常用的是 new xxx 例如 pstr = new string(“x

原创 關於C++類成員函數的重載、覆蓋、隱藏與virtual關鍵字

1. 重載、覆蓋與隱藏 1).重載:成員函數具有以下的特徵時發生”重載” A.相同的範圍(同一個類中) B.函數的名字相同 C.參數類型不同(不能進行隱式類型轉換) D.Virtual關鍵字可有可無 2).覆蓋(也叫”繼承”):指

原创 Poco TcpServer 介紹

TcpServer 使用簡介 簡介 1) Poco 的 TcpServer 是一個多線程的 Tcp 服務器。 服務器使用 ServerSocket(Poco 的一個用於初始化服務器的socket的類) 來接收鏈接。Serv

原创 c++ 在main 之前的全局對象

問題: google c++ 編程規範要求全局對象,應該用指針代替。指出類的構造函數在 main 之前執行是一個未定義的行爲。 查看資料之後,兩大主流編譯器 g++ , vs它們對於全局對象的處理是這樣的。。。 在 main()

原创 poco 數據庫連接池

poco c++ 是一個非常方便易用的 c++ 框架。功能非常齊全。有代碼可讀性強,只要你有不清楚的地方,你隨時可以取看源代碼。 poco c++ 交流羣:386220502 下面主要是myql 數據庫連接池的使用。 /* *

原创 linux snmp 安裝

tar -zxvf snmp++v3.3.4.tar.gz cd snmp++-3.3.4/ ./configure make sudo make install //測試 snmp++ 代碼 #include <io

原创 recv MSG_PEEK

因爲不清楚 MSG_PEEK 是否阻塞所以寫代碼測試。 結論:recv falg 爲 MSG_PEEK 時候是阻塞的。 #include <sys/types.h> #include <sys/socket.h> #inclu

原创 c++11 靜態成員線程安全?

c++11 要求保證函數內部靜態變量線程安全。 實測是保證靜態成員構造的時候線程安全。 #include <iostream> #include <unistd.h> #include <pthread.h> using na