原创 protobuf 使用的開頭和結尾

使用protobuf 的一個好習慣就是在程序的開頭加上 GOOGLE_PROTOBUF_VERIFY_VERSION; 宏調用; 作用:如果檢測到版本不匹配時,程序將終止。 其實,在每一個.pb.cc 文件中都會有這一個宏的調用。 在程

原创 cmake 學習之路 記錄中間所遇到過的所有錯誤與問題的解決

在使用CMAKE 的過程中遇到了一個問題:在程序代碼中將自己的中間代碼編譯成一個靜態庫,提供給其它的幾個程序代碼時,總是找到這個庫。 愁了好久,終於在一個不起眼的小地方,發現了一個可能的問題。 在使用TARGET_LINK_LIBRAR

原创 cmake 學習之路 筆記

CMAKE 中有一些默認定義的變量,我們可以直接使用,在有時候是很方便的。 1、CMAKE_SOURCE_DIR ==> 這個是最頂層的cmake 目錄 2、PROJECT_SOURCE_DIR ==> 這個是當前項目的目錄 3、PRO

原创 cmake 學習之路 記錄中間所遇到過的所有錯誤與問題的解決

CMAKE_BUILD_TYPE  宏匹配問題: 錯誤代碼: # Linux operation system IF (CMAKE_BUILD_TYPE MATCHES "Debug" OR C

原创 剔除冗餘空格字符

// 剔除冗餘的空格字符(第一個和最後一個字符不能爲空格字符,中間空格不能有連續兩個存在 int RemoveUnnecessarySpaceBar(char *strSource) { if (strSource == NULL)

原创 Win32 ::CreateEvent() 函數

微軟有一個很有意思的同步對象,某種程度上和Linux的條件變量很相似。但秉承微軟一貫的作風,有些地方設計的又有點怪異。Event通過函數CreateMutex創建,可以分爲手動模式和自動模式兩種模式,兩種模式下表現迥異。和其他同步對象一

原创 boost tcp 同步方式 筆記

原代碼來自:<a target=_blank href="http://www.cppblog.com/janvy/archive/2010/03/24/110478.html">http://www.cppblog.com/janvy/

原创 protobuf 的序列化與反序列化

bool ParseFromString(const string& data); bool SerializeToString(string* output) const: ParseFromString() 函數是protobu

原创 protobuf mutable_* 函數

protobuf mutable_* 函數 從該函數的實現上來看,該函數返回指向該字段的一個指針。同時將該字段置爲被設置狀態。 若該對象存在,則直接返回該對象,若不存在則新new 一個。

原创 Linux 鏈接庫

靜態鏈接庫創建: zj@zj:~/C_pram/practice$ gcc -c fun.c zj@zj:~/C_pram/practice$ ar

原创 protobuf 一個.proto 文件的簡單講解

示例代碼來自:https://developers.google.com/protocol-buffers/docs/cpptutorial <span style="font-size:18px;">package tutorial;

原创 Win32 TCP粘包處理,源代碼。

// ShareHeadFile.h // 雖然說是共享頭文件,但是主要在服務器端被使用,客戶端直接用的char 數組, // 儘管定義了一個變量,然而卻只使用了部分字段。 #ifndef SHARE_HEAD_FILE_H #de

原创 運行程序找不到動態鏈接庫

現象: <span style="font-size:18px;">[suyh@localhost server]$ ./server ./server: error while loading shared libraries: l

原创 一個簡單的C/S 架構程序

// server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #inc

原创 程序員的自我修養鏈接地地址

http://www.cnblogs.com/zhuyp1015/category/376363.html