原创 Linux下利用dlopen()+dlsym()實現單元測試中系統調用的mock(2)

還有一種情況,一些系統調用所在的庫並不在默認的路徑或者調用定義不在默認的庫中,此時需要我們指定庫的查找路徑和庫名稱,比如mock rt庫中的系統調用,具體查看以下代碼: #include <dlfcn.h> #include <t

原创 C++智能指針之不帶引用計數的智能指針(auto_ptr、scoped_ptr、unique_ptr),以及他們是如何解決淺拷貝問題?

auto_ptr:c++11前就存在於c++庫中: int main(){ auto_ptr<int> ptr1(new int); auto_ptr<int> ptr2(ptr1); //拷貝構造pt

原创 C++智能指針之強、弱智能指針使用以及用弱智能指針解決強智能指針的循環(交叉)引用解決方法

強智能指針:資源每被強智能指針引用一次,引用計數+1,釋放引用計數-1,如shared_ptr; 弱智能指針:僅僅起到觀察作用,觀察對象釋放還存在,也就是說對象的引用計數是否等於0,如weak_ptr. 強智能指針的使用,帶來

原创 使用自實現的string和vector類說明std::move和std::forward的強大

在看文章前需要明確一點,引用的重疊: template <typename T> void Func(T &&val){//....} 1.當實例化的T的爲一個左值引用時,即 T& ++ &&,最終val是一個左值; 2.當實例

原创 C++多線程中訪問共享對象錯誤場景以及使用shared_ptr和weak_ptr強弱指針設計解決方案

子線程訪問被主線程delete掉的共享對象 class A{ public: A(int val = 100){ std::cout<<"A()"<<std::endl; ptr_ = new int; *ptr_ = v

原创 ubuntu18.04開機後突然只顯示本地環回,不能正常連接網絡,之前一直都正常

#暫停網絡服務 sudo service network-manager stop #刪除舊有的網絡配置,重新讓networkmanager自動配置文件 sudo rm -rf /var/lib/NetworkManager/N

原创 C++智能指針unique_ptr的自定義刪除器及其lambad表達式實現

問題引出:智能指針默認刪除器做的事情太簡單啦,僅僅調用delete釋放資源可能還不夠 unique_ptr類: //第一個參數智能指針底層資源的類型,第二個參數是刪除器,就是下面struct default_delete //在刪

原创 C++11中使用帶右值引用參數的拷貝構造函數和賦值運算符重載函數來提升OOP效率

C++11前沒有右值引用的說法,涉及到拷貝構造和賦值時,過程如下: 簡單實現string較完整的代碼,初學者可以打開康康 #include<iostream> #include <string.h> using namespace

原创 C++智能指針由來與實現思想以及實現一個簡單的指針指針

智能指針的由來和基本思想 裸指針:int *p = new int; ,其實就是C風格的指針。 裸指針的缺點: 1.必須手動釋放資源,手動調用delete; 2.由於程序邏輯的錯誤return或者throw異常,導致釋放資源的代碼

原创 我們應該怎麼正確看待HTTP協議以及CDN和爬蟲充當的角色

一、HTTP是什麼:超文本傳輸協議(HyperText Transfer Protocol) 協議:首先,HTTP是一個協議,而協議是交流溝通雙方保證每次交流能夠順利正確高效的進行而提前商量制定好的規範,或者規則,只要交流雙方或

原创 linux雜談(1)

1. Linux:僅僅是一個內核,不包含其他應用程序。 GNU/Linux:通常以源碼方式提供,包含提供的開源應用程序,這樣給使用者使用方式的更多的選擇,區別於windows,我們將windows系統安裝在裸機上,幾乎所有功能接口

原创 從8086的實模式到80386的保護模式的地址映射發展

一、x86體系結構的發展歷史: 1.常見處理器: inter:pc主流的處理器; AMD:部分pc電腦; arm:主要用於手機和平板等; ppc,mips:主要用於一些智能眼鏡、只能手錶等智能可穿戴設備。 2.CPU位數含義:

原创 CAN總線原理簡介

一.CAN總線簡介: 是一種串行通信協議,能有效的支持具有很高安全等級的分佈實時控制 應用範圍十分廣泛,從高速網絡到低價位的多路接線都可以使用CAN 主要運用於汽車電子航天等行業,使用CAN連接發動機的控制單元等汽車部件 具有可

原创 make -j 參數加快編譯效率

對於大型項目,在使用cmake控制編譯時,僅僅執行make指令效率較低,使用make -j後面跟一個數字,比如make -j4 make -j6 make -j14等。 含義是 讓make最多允許n個編譯命令同時執行,這樣可以更有

原创 cmake編譯選項:訪問私有方法

ADD_COMPILE_OPTIONS(-fno-access-control)