原创 哈希涉及到的面試題

問題實例(海量數據處理)   hash 表在海量數據處理中有着廣泛的應用,我們來看一道百度面試題: 題目一:海量日誌數據,提取出某日訪問百度次數最多的那個IP。  方案:IP的數目還是有限的,最多2^32個,所以可以考慮使用hash將i

原创 C++中必須在類初始化列表中初始化的幾種情況

一、const類型的成員變量    const對象或引用只能初始化但是不能賦值。構造函數的函數體內只能做賦值而不是初始化,因此初始化const對象或引用的唯一機會是構造函數函數體之前的初始化列表中。   從無到有叫初始化,初始化(調用拷貝

原创 中綴表達式求前綴和後綴的三種方法

一、根據運算符的優先級加括號法 舉例:中綴表達式求後綴表達式 a+b*(c-d)-e/f 根據運算符的優先級給表達式加上括號           ((a+(b*(c-d)))-(e/f))   將最外層的符號先提取到對應括號的右側:(

原创 互斥鎖、死鎖以及如何預防、避免、檢測、解除死鎖

一、互斥鎖: 1、互斥鎖基本原理:      互斥鎖是一個二元變量,其狀態爲開鎖(允許0)和上鎖(禁止1),將某個共享資源與某個特定互斥鎖在邏輯上綁定(要申請該資源必須先獲取鎖)。      (1)訪問公共資源前,必須申請該互斥鎖,若處於

原创 位段的使用

一.位段的使用     使用位段需注意一下幾點:     1)位段的類型只能是int,unsigned int,signed int三種類型,不能是char型或者浮點型;     2)位段佔的二進制位數不能超過該基本類型所能表示的最大位數

原创 內存分區

一、內存到底分幾個區? 1、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。 2、堆區(heap) — 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由os回收 。注意它與數據結構中的堆是兩回事,分

原创 memcpy函數和strcpy函數

1、memcpy指的是C和C++使用的內存拷貝函數,memcpy函數的功能時從源內存地址的起始位置開始拷貝若干個字節到目標內存地址中 函數原型:  void *memcpy(void *dest, const void* src, siz

原创 C語言中全局變量、局部變量、靜態全局變量、靜態局部變量

1、從作用域看: 1>全局變量具有全局作用域。全局變量只需在一個源文件中定義,就可以作用於所有的源文件。當然,其他不包含全局變量定義的源文件需要用extern 關鍵字再次聲明這個全局變量。 2>靜態局部變量具有局部作用域,它只被初始化一次

原创 C中靜態存儲區和動態存儲區以及C中需要注意的事項

c語言中需要內存來存放數據。而內存主要分爲兩類:靜態存儲區和動態存儲區; 1.靜態存儲區分爲:只讀數據(READONLY  DATA)區、以讀寫數據(RW DATA)區、未初始化區(BSS)。它們都是在程序編譯連接階段確定的,在程序執行的

原创 const和define的區別以及const的優點

一、const和define的區別 (1)就起作用的階段而言:#define是在編譯的預處理階段起作用(在預處理階段進行替換),而const是在編譯運行的時候起作用(const修飾的只讀變量是在編譯的時候確定其值) (2)就起作用的方式而

原创 管道的應用

一、跨越fork調用的管道(在不同進程之間進行讀寫操作) 管道的真正優勢體現在,當你想在兩個進程之間傳遞數據的時候。當程序用fork調用創建新進程時,原先打開的文件描述符仍將保持打開狀態,如果在原先的進程中創建一個管道,然後再調用fork

原创 fork源碼剖析

fork是複製進程,那麼首先要清楚進程是什麼?  進程是一個正在運行的程序,是資源分配的最小單位,系統管理進程是依靠對進程控制塊(PCB)的管理完成的,每個進程的產生分兩步,一是:分配PCB,二是準備進程實體,如分配內存空間等。 fork

原创 素數

C: #include<stdio.h> #include<math.h> int main() { int j = 2; int i = 200; while(i <= 300) { j = 2; while(j<s

原创 流量控制 滑動窗口

1. 流量控制           我們都知道當網絡上數據流量超過網絡硬件負荷時就會出現網絡擁塞,就是我們平常遇到的網絡緩慢的現象。對應影響網絡速度的原因主要有網絡傳輸設備的性能和傳輸的數據多少,網絡傳輸設備包含發送接收主機、路由器、傳輸

原创 C++函數重載實現的機制

一、函數重載:在相同作用域內的 具有相同函數名不同參數列表(參數個數、類型、順序)的函數構成重載 二、爲什麼要用函數重載   在C中,我們對一個功能函數要實現不同類型的調用時,就必須得取不同的名稱。如果調用的非常多就要起很多名字,這樣就增