原创 共享內存多進程間通信,進程間同步使用信號量來實現

Linux 環境下C編程指南,通過共享內存進行進程間通信的例子,進程間同步使用信號量來實現。 代碼 11-5 使用說明:這是一個簡單的服務器和客戶端程序,如果啓動程序時不帶參數,則執行服務器程序; 如果帶參數,則執行客戶端程序,所

原创 epoll使用經典入門

在linux的網絡編程中,很長的時間都在使用select來做事件觸發。在linux新的內核中,有了一種替換它的機制,就是epoll。相比於selec

原创 C++中volatile的作用

volatile的語法和const的是一樣的,但是volatile的意思是“在編譯器認識的範圍外,這個數據可以改變”。環境正在改變數據(可能通過多任務、多線程或者中斷處理),所以,volatile告訴編譯器不要擅自做出有關該數據的任何假定

原创 c/c++內存分配(棧與堆的區別)

一、在C++中,內存分成5個區,他們分別是堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區。 1.棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變量的存儲區。裏面的變量通常是局部變量、函數參數等。2.堆,就是那些由n

原创 可重入函數與不可重入函數略解

1、可重入函數:主要用於多任務環境中,一個可重入的函數簡單來說就是可以被中斷的函數,也就是說,可以在這個函數執行的任何時刻中斷它,轉入OS調度下去執行另外一段代碼,而返回控制時不會出現什麼錯誤;所謂可重入函數是指一個可以被多個任務調用的過

原创 一個進程能用的最大內存(堆區)空間大小爲1G

網上看到的分析: 32位意味着4G的尋址空間,linux把它分爲兩部分:最高的1G(虛擬地址從0xC0000000到0xffffffff)用做內核本身,成爲“系統空間”,而較低的3G字節(從0x00000000到0xbffffff)用

原创 一個進程在內存中的佈局

對於一個完整的程序,在內存中分佈情況如下圖:             值得一提的是:在C#中struct存放在棧區,class存放在堆區,所以一般struct要比class要快的。   堆和棧的比較表(僅針對C++)  

原创 設計模式C++實現(15)——觀察者模式

       軟件領域中的設計模式爲開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了面向對象編程語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每

原创 設計模式C++實現(16)——狀態模式

     軟件領域中的設計模式爲開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了面向對象編程語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模

原创 【微軟Visual Studio面世20週年鉅製】全宇宙功能最強大IDE Visual Studio 2017 正式版發佈

Visual Studio 2017 正式版發佈,該版本不僅添加了實時單元測試、實時架構依賴關係驗證等新特性,還對許多實用功能進行了改進,如代碼導航、IntelliSense、重構、代碼修復和調試等等。無論使用哪種語言或平臺,都能節省開發

原创 友元函數的說明

友元函數 friend 類型名 友元函數名(形參表); 然後在類體外對友元函數進行定義,定義的格式和普通函數相同,但可以通過對象作爲參數直接訪問對象的私有成員 說明如下 1)必須在類的說明中說明友元函數,說明時以關鍵字friend開頭,後

原创 設計模式C++實現(13)——中介者模式

     軟件領域中的設計模式爲開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了面向對象編程語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模

原创 設計模式C++實現(14)——職責鏈模式

軟件領域中的設計模式爲開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了面向對象編程語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用C+

原创 設計模式C++實現(8)——代理模式

  軟件領域中的設計模式爲開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了面向對象編程語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用

原创 設計模式C++實現(7)——外觀模式、組合模式

     軟件領域中的設計模式爲開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了面向對象編程語言的重要特性:封裝、繼承、多態,真正領悟設計模式的精髓是可能一個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模