秋招復習-C++(三)

• 數據庫html

1.數據庫的索引有哪些?程序員

(1)B樹索引:利用B樹做爲底層數據結構的索引,在B樹索引中保存索引列的值和數據表的對應行的ID,每個葉子結點都存放着一個索引列的值和數據表對應行的ID,經過這個能夠實現快速查詢。數據庫

(2)位圖索引:當字段的基數很低時,須要使用位圖索引(效率較高),將某個字段全部可能的值用對應的位去表示,每一條記錄對應一組位,字段與位符合的置爲1,不然置爲0,節省內存空間session

(3)反向鍵索引:爲了解決B樹索引對順序鍵值的不適配致使創建好的索引而提出的一種特殊的B樹索引,可讓索引的葉子結點分佈更爲平均,每次進行索引時反向鍵索引會先反向每一個鍵值的字節,而後對反向後的新數據進行索引。數據結構

(4)基於函數的索引:即查詢語句中包含了函數表達式做爲查詢條件,爲了提升查詢效率(避免全表掃描),能夠採用基於函數的索引,即利用函數表達式做爲索引項進行查找。函數

(5)哈希索引、全局索引等其餘索引spa

 能夠參考這篇博客:https://www.cnblogs.com/sessionbest/articles/8689255.htmlcode

• C++htm

《Effective C++》總結:https://www.cnblogs.com/shenshenlei/p/5497967.html對象

1. 定義一個空類,會發生什麼?

      編譯器會自動爲空類聲明一個默認構造函數(無參),一個拷貝構造函數,一個賦值運算符(=)以及一個析構函數,而且這個析構函數默認是非虛函數,除非這個空類的基類定義了一個虛析構函數。注意這裏只是聲明,只有在這些函數被實際調用的時候纔會被編譯器所建立。(參考《Effective C++》條款5)

2.編譯器默認提供的函數,若是不想要使用,應該將拷貝構造函數和賦值運算符聲明爲私有的,而且不予以實現,這樣就能夠阻止編譯器實現將一個對象拷貝成另外一個對象(從邏輯上來講是不存在兩個對象徹底相同)。

      C++11之前:將拷貝構造函數和賦值運算符函數均聲明爲私有,而且不予以實現,以下代碼所示:

 class temp{ public: ...... private: temp(const temp& f);//拷貝構造函數
    temp& operator=(const temp&);//重載賦值運算符,只聲明不定義 }

        C++11出現了新的標準,容許程序員以一種新的方式實現以上功能,以下代碼所示, 支持C++11的編譯器上也能夠將成員函數定義成delete,這樣就實現了對編譯器默認提供的函數的屏蔽。(具體能夠參考《Effective C++》條款6)

1 class temp 2 { 3 public: 4  ... 5 private: 6  ... 7     temp(const temp&) = delete; //拷貝構造函數
8     temp& operator=(const temp&) = delete; //重載賦值運算符

 • 多進程

多進程通訊方式(IPC)及特色總結

     無名管道(pipeline): 簡單方便,但只適合於父子進程之間(也能夠提供給子進程的子進程即孫進程),侷限於單向通訊,必須有一方關閉管道的寫入,另外一方關閉管道的讀取,實用範圍小。

      命名管道(FIFO):與無名管道相反的是,FIFO能夠實現任意進程之間的通訊,不僅限於父子進程之間,功能比無名管道強大,不足之處是命名管道長期駐留在內存中,使用不當容易出錯。