原创 C++總結7——STL基本原理和用法

1.STL的三種類型容器 順序容器: vector 向量容器 deque 雙端隊列 list 鏈表 容器適配器: stack 棧

原创 C++總結2——函數的重載

1.C++函數的重載 重載的原理: C和C++都是編譯性語言,編譯過程中函數要產生符號,生成符號表。C中,函數的符號只與函數名有關,C++中,函數的符號由函數名和參數列表構成,所以C++支持函數的重載。 重載的條件: <1>函

原创 C語言重點知識複習2

1.指針的算術運算 (1)指針之間不允許相加,但允許相減 指針相減表示兩個指針之間間隔的單元格數(1.先計算出字節數 2.再除以權重) (2)指針運算需要調整 p+數字(n) 加n單元格的權重 權重爲指針變量去掉一

原创 C語言重點知識複習1

1.進制之間的轉換 %d 十進制輸出 %0x 十六進制輸出 %08x 十六進制輸出,輸出8位,如果不夠,補0 編程題:將十進制的數字轉換成n進制的數字 #include <iostream> #include <sta

原创 C++總結5——繼承與多態

一、繼承 1.C++的繼承 繼承有3種形式:私有繼承、保護繼承、公有繼承,缺省的繼承方式是私有繼承。 不論哪種繼承方式,派生類都是顯示的繼承類基的保護成員變量和函數和公有成員變量和函數,繼承方式只是限定在派生類中這兩種成員變量

原创 C++總結4——內存泄露/資源泄露

內存泄露/資源泄露現象 1.malloc/new動態申請的內存,忘記寫free/delete,導致內存泄露。 2.調用默認的賦值運算符重載函數,發生淺拷貝現象,導致內存泄露。如下圖: 3.在構造函數中new,但是程序運行過程

原创 C++總結8——shared_ptr和weak_ptr智能指針

智能指針的提出:智能指針是存儲指向動態分配對象指針的類,用於生存期控制。能夠確保正確銷燬動態分配的內存,防止內存泄露。 1.智能指針的分類: 不帶引用計數的智能指針 auto_ptr unique_ptr scop

原创 GFS

1.GFS的架構 先來對這張圖,也就是讀取流程做一下解釋。 <1>client在把應用程序要讀寫的文件根據文件名和偏移量,根據chunk的大小轉換成文件的chunk index; <2>client將filename和ch

原创 C++總結3——volatile、explicit、mutable關鍵字

1.volatile關鍵字 volatile是類型修飾符(一致性、原則性、可見性) <1>防止多線程對共享變量進行緩存,保證各線程實時從內存中讀取變量值; <2>防止編譯器對指令順序進行調整。 防止CPU對指令順序進行調整

原创 Linux虛擬地址空間分佈

什麼是虛擬內存? IBM在解釋虛擬內存的概念時用了四句話: 如果它存在,而且你能看到它,它是真實的; 如果它不存在,但是你能看到它,它是虛擬的; 如果它存在,但是你看不到它,它是透明的; 如果它不存在,而且你也看不到它,

原创 單鏈表常見筆試面試題總結

1.單鏈表逆置 #include <iostream> using namespace std; typedef int KeyType; typedef struct Node { KeyType value;

原创 C++總結6——繼承與多態的筆試題

1————————————————— #include <iostream> using namespace std; class Base { public: Base(int data):_ma(data)

原创 32位Linux系統虛擬地址映射

  IA32體系即Intel32位體系架構,也被稱爲i386、X86-32或X86。在Intel公司1985年推出的80386微處理器中首先使用。用以取代之前的X86-16位架構,包括8086、80186、80286芯片。談到

原创 C++總結1——指針和引用/數組的區別

1.指針和引有什麼區別?(從反彙編角度回答) a.其實引用和指針本質上是一樣的,他們的彙編指令都是兩行。 int a = 10; int *p = &a; //lea eax,[a]

原创 深入程序編譯鏈接和運行

作爲C/C++後臺開發人員,但是對程序的編譯鏈接過程似懂非懂,只能說是門外漢!此文章旨在深入程序編譯鏈接過程,主要闡述程序編譯、鏈接過程中具體做了哪些事。如果你能正確回答下面的問題,那麼請點擊右上角的X,退出閱讀。 1.