原创 線程同步有哪些機制

 現在流行的進程線程同步互斥的控制機制,其實是由最原始,最基本的4中方法實現的: 1.臨界區:通過多線程的互串行訪問公共資源或一段代碼,速度快,適合控制數據訪問。 2.互斥量:爲協調共同對一個共享資源的單獨訪問而設計。只有擁有互斥對象

原创 TCP和UDP的區別有哪些

TCP和UDP的區別有哪些 傳輸層協議主要有TCP與UDP。 UDP:提供無連接的通信,不能保證數據包被髮送到目的地址,典型的即時傳輸少量數據的應用程序使用UDP TCP:面向連接的。可靠地。基於字節流的通信協議,它爲傳輸大量數據或

原创 static(靜態)變量的作用

1.在函數體中靜態變量有記憶功能,在這一函數被調用過程中其值維持不變。 2.在模塊內,它的作用域範圍是有限制的,如果一個變量被申明爲靜態的,那麼該變量可以被模塊內所有函數訪問,但不能被模塊內其他函數訪問。 3.內部函數應該在當前源文件中

原创 內存管理有哪幾種方式

常見的內存管理方式有塊式管理,業式管理, 段式管理, 段業式管理。 最長用的是段業式管理。 (1) 塊式管理:把主存分爲一塊一塊的,當所需的程序片段不再主存時就分配一塊主存空間,把程序load入主存,就算所需的程序片段只有幾個字節也只能

原创 內存分配的形式有哪些

一個c/c++編譯的程序所佔用的系統內存一般分爲以下幾個部分的內容: (1)  由符號起始的區塊(BlockStartedBySymbol BSS)段: BSS段通常是指用來存放程序中未初始化的全局數據和靜態數據的一塊內存區域。 (2)

原创 分段和分頁的區別是什麼

頁是信息的物理單位,分頁是爲了實現離散的分配方式,以消減內存的外零頭,提高內存利用率;或者說分頁僅僅是由於系統管理的需要,而不是用戶的需要。 段是信息的邏輯單位,它含有一組意義相對完整的信息。分段的目的是爲了能更好的滿足用戶的需要。業的

原创 區間重合判斷-編程之美2.19

/** 思路:先合併區間, 然後二分判斷給定區間是否在合併後的某個區間內。 **/ #include <iostream> #include <cstdio> #include <cstring> #include <vector>

原创 fork函數

fork 返回值: 若成功調用一次則返回兩個值,子進程返回0,父進程返回子進程ID;否則,出錯返回-1 目 錄 1fork()函數 UNIX 1.1 頭文件: 1.2 函數原型: 1.3 函數說明: 1.4 

原创 兩個有序鏈表合併爲一個有序鏈表

#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> using namespace std; struct Node { in

原创 平衡二叉樹(AVL)

平衡二叉樹的定義 (AVL—— 發明者爲Adel'son-Vel'skii 和 Landis)   平衡二叉查找樹,又稱 AVL樹。 它除了具備二叉查找樹的基本特徵之外,還具有一個非常重要的特點:它 的左子樹和右子樹都是平衡二叉樹,

原创 自己寫的大數相乘

#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> using namespace std;

原创 靜態鏈接與動態鏈接的區別

靜態鏈接是指要把調用的函數或者過程直接鏈接到可執行文件中,成爲可執行文件的一部分。 換句話說,函數和過程的代碼就在程序的exe文件中,該文件包含了運行時所需的全部代碼。 靜態鏈接的缺點是當多個程序都調用相同函數時,內存中就會存在這個函數

原创 各種與0比較的寫法

這是程序員面試的一道常見題,也是個C++基礎問題。若只在大學裏看過幾本基礎的編程入門書,看見這道題可能會覺得奇怪,不就是和0比較嗎,直接拿出來比就是了,其實非也。下文引自google搜索結果,出處不詳,高手可以無視,菜菜留下,記得做好筆

原创 函數重載的機制

C++的函數重載 2010-09-05 21:26 by 吳秦, 17479 閱讀, 10 評論, 收藏, 編輯 ——每個現象後面都隱藏一個本質,關鍵在於我們是否去挖掘 寫在前面: 函數重載的重要性不言而明,但是你知道C++中函數

原创 UDP實現可靠數據傳輸

UDP沒有Delievery   Garuantee,也沒有順序保證,所以如果你要求你的數據發送與接收既要高效,又要保證有序,收包確認等,你就需要在UDP協議上構建自己的協議。比如RTCP,RTP協議就是在UPD協議之上專門爲H.32