原创 linux下多線程間通信之信號量,消息隊列的綜合運用

一、消息隊列介紹 消息隊列是消息的鏈接表,存放在內核中。其實質上就是一個內核鏈表,消息隊列提供了一種從一個進程向另一個進程發送一個數據塊的方法。Linux用宏MSGMAX和MSGMNB來限制一條消息的最大長度和一個隊列的最大長度

原创 arm-linux平臺下交叉編譯使用libxml2

一、xml文件簡介 libxml2 是一個xml的C語言版的解析器,本來是爲Gnome項目開發的工具,是一個基於MIT License的免費開源軟件。它除了支持C語言外,還支持C++,PHP,Pascal,Ruby,Tcl等,能

原创 UART協議詳解

UART簡介 通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART。UART通信在工作中相當常見,項目中需要生成uart信號,在博客中記錄下。uart是異步通信,

原创 C++中的單例模式

單例模式簡介: 在設計或者開發中,有時會碰到一種情況:一個類只能有一個對象被創建,如果有多個對象的話,可能會導致混亂或者不一致。就比如在一個系統中,有一個管理配置信息的類,顯然一個系統中只能有一份配置信息,所以這個類就可以用一個

原创 arm-linux下的多線程調試

gdb是UNIX及UNIX-like下的調試工具。在linux下開發的人一定不會陌生,在arm-linux下也有對應的調試版本。下面記錄一下在工作中用到的一些在arm-linux下用gdb調試多線程的一些知識。 一、下載調試工具

原创 虛擬機下dedora10的/mnt/hgfs文件下找不到共享文件share解決辦法!

新換了一家公司,天天加班的要命,好久沒有玩linux了~~~,最近買了臺新電腦,主機是win10操作系統,用的不習慣,安裝虛擬機核fedora10,發現設置的共享文件"share"在/mnt/hgfs找不到。解決辦法參考了網上的方法。在這

原创 Linux下多線程編程實例解析

提到線程,不得不讓人想起進程,所以還是先寫下進程與線程的區別吧! 一、進程與線程的區別 進程是程序執行的一個實例,進程有其自己獨立的地址空間。一個線程可以含有多個線程,這也是爲了提高系統資源利用率,線程的引入有其必然的優勢,線

原创 Makefile 中:= ?= += =的區別

在Makefile中我們經常看到 = := ?= +=這幾個賦值運算符,那麼他們有什麼區別呢?我們來做個簡單的實驗 新建一個Makefile,內容爲: ifdef DEFINE_VRE VRE = “Hello World!” e

原创 對linux內核的container_of和offsetof宏的理解

linux內核中存在container_of宏,其定義如下: /** * container_of - cast a member of a structure out to the containing structure * @p

原创 arm-linux系統下加入glog日誌

一、glog介紹 glog 是 Google 開發的一種輕量級C++日誌庫,使用方法十分簡潔、用在程序中也十分的輕巧。 主要支持以下功能: 1 參數設置,通過設置標誌參數來控制日誌記錄行爲; 2 嚴重性分級,根據日誌嚴重性分級記

原创 深入淺出 RPC - 深入篇

《深入篇》我們主要圍繞 RPC 的功能目標和實現考量去展開,一個基本的 RPC 框架應該提供什麼功能,滿足什麼要求以及如何去實現它? RPC 功能目標 RPC 的主要功能目標是讓構建分佈式計算(應用)更容易,在提供強大的遠程調用能力時不

原创 深入淺出 RPC - 淺出篇

近幾年的項目中,服務化和微服務化漸漸成爲中大型分佈式系統架構的主流方式,而 RPC 在其中扮演着關鍵的作用。在平時的日常開發中我們都在隱式或顯式的使用 RPC,一些剛入行的程序員會感覺 RPC 比較神祕,而一些有多年使用 RPC 經驗的程