原创 C++ grpc stream message size 調整消息大小限制

在工作中遇到了grpc的stream通信(server通過stream向client返回一個消息的stream),client會收不到消息的情況。發現收不到的這個消息比較大,跟同事討論說可能是grpc限制了消息的大小,通常是4M。網上搜索

原创 glog沒有在-dir_log位置生成日誌文件

-dir_log是glog一個內置的gflag,如果不設置的話,默認的日誌文件會生成在/tmp目錄下。 ./mytest  -dir_log=./logs 但是發現設置了以後,運行沒有效果,文件還是生成在了/tmp下。main函數源碼如下

原创 protobuf - 使用arena構建proto對象

參考資料: [1] C++ Arena Allocation Guide:https://developers.google.cn/protocol-buffers/docs/reference/arenas#arenaclass [2]

原创 WARNING: perf not found for kernel 4.16.18

嘗試運行perf,發現沒安裝 $ perf 程序“perf”尚未安裝。 您可以使用以下命令安裝: sudo apt install linux-tools-common 按照提示安裝了linux-tools-common,然後再運行pe

原创 linux內核中PREEMPT_RT實時補丁的安裝

本文參考了兩篇博文: https://blog.csdn.net/zzsfqiuyigui/article/details/7621665 https://www.jianshu.com/p/8787e45a9e01 根據我自己安裝的實際

原创 實時內核中,使用chrt設置進程和線程的實時調度屬性

安裝了帶實時補丁的linux內核後,就可以讓指定的進程或者線程擁有實時優先級。有一些系統調用可以在代碼中來精細控制線程和進程的優先級,如果不方便修改代碼,則可以通過chrt命令來達到這個目的。 關於實時優先級和實時調度算法,可以參考lin

原创 使用實時補丁內核的ubuntu中安裝nvidia顯卡驅動

根據上上篇的博客,安裝了打了PREEMPT_RT實時補丁的內核。在我的應用場景中,是想在一臺機器上同時能夠使用兩種內核,並且在nvidia-docker中,跑一個需要用到顯卡的程序。 結果發現在實時內核中,非實時內核中裝好的顯卡驅動不能用

原创 C++中proto的field與序號index的對應關係查找

假設有一個proto message定義如下: message Example { optional bool a = 1; optional bool b = 2; }; 如果想在代碼裏知道a這個field定義時的給的序號是多

原创 ubuntu修改默認啓動的linux內核

修改/etc/default/grub這個文件中的配置可以達到目的。 這個文件裏,找到GRUB_DEFAULT所在的行。默認這個值是0,這個0對應的就是開機的時候,引導界面的第一行,如下圖就是Ubuntu(如果什麼都不動,這裏高亮的應該是

原创 boost::make_transform_iterator的基本用法

boost::make_transform_iterator接受一個迭代器對象作爲參數,得到一個boost::transform_iterator。 boost::transform_iterator的特別之處在於,可以在derefere

原创 檢查grpc server是否可連接

分兩種情況,一種是普通調用,一種是stream調用。 (1)普通調用 直接使用返回的status來檢查。不過如果請求本身就可能失敗,不是因爲server沒有啓動的原因,則可以進一步檢查error_message的內容。 普通調用下的ser

原创 C/C++中使用pugixml來讀寫xml文件

reference:http://www.gerald-fahrnholz.eu/sw/DocGenerated/HowToUse/html/group___grp_pugi_xml.html   xml文件,假設名爲hello.xml:

原创 查看文件被哪個vim進程打開(查找swap文件的位置)

假設用vim打開了一個叫abc.txt的文件(假設此時值打開了一個vim進程,可以用pgrep vim看到該進程的進程號,用於驗證後續找到的vim進程號是否正確) 通常可以使用lsof或者fuser這兩個命令來查看文件的被佔用情況。在該文

原创 C++標準庫 高斯分佈(正態分佈)隨機生成

#include <random> #include <chrono> #include <iostream> int main(void) { // 從epoch(1970年1月1日00:00:00 UTC)開始經過的納秒數,u

原创 在python裏調用C++帶參數的類方法

核心思路: python的底層是用C實現的,所以理論上python可以調用C的代碼。 如果想調用C++的代碼,需要另外將C++代碼通過extern "C"包含起來,使其命名修飾等符合C的規則 然後將C/C++代碼打包成一個.so文件(這一