Protocolbuffhtml
目錄git
1 Protocolbuff定義和做用... 1github
2 Protocolbuff的使用步驟... 1編程
3 .proto編寫格式... 3json
3.1 編寫示例... 3數組
3.2 變量修飾符required 、optional、repeated. 4安全
3.3 基本數據類型... 4服務器
Protocolbuff是一種數據存儲傳輸格式,相似於Json、XML 數據存儲格式。發送方將結構體序列化爲二進制字節碼,能夠減小傳輸字節數量,加強安全性。接收方將字節碼再反序列化爲結構體。解析快速,無需像json或者xml那樣,兩邊添加生成報文和解析報文的編碼;編程語言
優缺點ui
優勢:Protocolbuff將結構體或對象轉換成二進制串,因此體積小,傳輸快,使用簡單,加密性好;
缺點:可讀性差,通用性差;
(1) 下載protoc.exe文件
源碼在 https://github.com/google/protobuf , 若是不想本身編譯得到最新版本,則能夠下載官方編譯好的各個平臺的,下載地址:https://github.com/google/protobuf/releases。
(2)編寫結構體的.proto文件CommEventLog.proto
(3)在window系統下,在protoc.exe所在的文件夾打開cmd,用以下命令生成C++的結構體文件;
protoc –I=./ --cpp_out=./ ./ CommEventLog.proto
protoc執行程序,後面的是命令行參數
-I 輸入目錄
--cpp_out 輸出目錄
./ CommEventLog.proto表示須要轉換的文件;
最後輸出的結果是C++的類文件CommEventLog.pb.cc和CommEventLog.pb.h
(4)將CommEventLog.pb.cc和CommEventLog.pb.h兩個文件複製到須要的工程。包含以下頭文件,添加libprotobuf.lib、libprotobuf.dll。代碼中建立類的對象,CommEventLog evnetlog;
(5)接收到二進制字節碼時,用對象的方法ParseFromArray 去將二進制字節碼轉化爲結構體;
if (evnetlog.ParseFromArray(buff,bufflen)==true)
{}
(6)而後就能夠用變量名稱命名的方法去獲取變量的值;
string strtime=evnetlog.start_time();
Proto文件開頭定義一個包名,即命名空間,爲了不不項目的命名衝突問題。而後用關鍵字message來定製結構體;
package protocobuff_Demo;//包名
message CommEventLog
{
required string log_id = 1;//日誌Id,惟一標識一次發生的事件
required int32 event_state = 2;//事件狀態,事件狀態爲開始或者瞬時時保存事件,狀態爲結束時更新日誌結束時間,狀態爲更新時保存聯動結果;0: 瞬時事件,保存;1: 事件開始,保存;2: 事件結束,更新結束時間;3: 事件脈衝,客戶端和服務器使用,CMS不用;4: 事件更新,聯動結果更新
optional int32 event_level = 3;//事件等級
optional string unit_idx = 4;//控制中心編號
optional int32 event_type = 5;//事件類型
optional string event_type_name = 6;//事件類型名稱
optional int32 sub_sys_type = 7;//事件所屬子系統類型,廢棄,事件整改,沒有子系統屬性了2015-10-28 13:45:13
optional string event_name = 8;//事件名稱
optional string start_time = 9;//事件開始時間
optional string stop_time = 10;//事件結束時間
optional string source_idx = 11;//事件源編號
optional int32 source_type = 12;//事件源類型
optional string source_name = 13;//事件源名稱
optional string log_txt = 14;//事件描述信息
optional string region_idx = 15;//事件源區域編號,可選
optional bytes ext_info = 20;//事件擴展信息,各個子系統根據子系統的消息結構體定義解析
repeated int32 user_id = 21;//事件接收的User Id數組,用於日誌查詢權限控制
}
變量修飾符的做用是修飾變量,肯定變量是否必須賦值。
基本數據類型用於定義變量類型。與編程語言的中的變量相似,名稱稍有不一樣,含義一致。
本身編了一個股票監控軟件,有以下功能,有興趣的朋友能夠下載;
(1) 個股監測。監測個股實時變化,能夠監測個股大單交易、急速拉昇和降低、主力入場和出場、股票最高點和最低點提醒。檢測到最高點、最低點、主力進場點、主力退場點、急速拉昇點、急速下跌點,給出語音或者聲音提醒,不用再時刻看着大盤了,給你更多自由的時間;
(2) 大盤監測。監測大盤的走勢,採用上證、深證、創業三大指數的綜合指數做爲大盤走勢。並實時監測大盤的最高點和最低點、中間的轉折點。
(3) 股票推薦。還能根據歷史數據長期或短時間走勢進行分析,對股市3千多個股票進行分析對比,選出漲勢良好的股票,按照增加速度從大到小排序,推薦給你漲勢良好的股票;
下載地址:
1.0.3版本(修復大盤指數崩潰缺陷)下載地址:
連接:https://pan.baidu.com/s/1BJcTp-kdniM7VE9K5Kd3vg 提取碼:003h
更新連接:
https://www.cnblogs.com/bclshuai/p/10621613.html
參考文獻