原创 Linux----select、poll、epoll

Linux下實現I/O複用的系統調用主要有select、poll、epoll。I/O複用使程序能同時監聽多個文件描述符,能大大提高程序的性能。 使用I/O複用技術的主要有以下情況:(I/O複用雖然能同時處理多個文件描述符,但是本身是阻塞的

原创 網絡編程----TCP/UDP協議重點詳解(2)

TCP連接建立以後,是怎麼保證數據傳輸的可靠性的呢?往下看就OK了... 主要是依靠超時重傳、應答確認、滑動窗口和擁塞控制機制實現的。這些機制與TCP頭部有緊密聯繫~ 來看看TCP頭部的構造! 不難發現TCP頭部的各種字段爲管理T

原创 網絡編程----擁塞控制、流量控制詳解

網絡傳輸過程,某段時間傳輸量過大會給網絡造成很大的壓力。有沒有很好奇是怎麼解決的呢? 擁塞控制和流量控制即將到達現場。先講兩個概念~ 擁塞就是說到達網絡中的某一部分分組數量過多,使得網絡來不及處理,導致這部分甚至整個網絡性能下降。 流量控

原创 網絡編程----TCP/UDP協議重點詳解(一)

TCP、UDP協議是TCP/IP協議族中很重要的傳輸層協議。和IP協議相比,TCP、UDP更靠近應用層,可操作性更強。TCP協議本身的可靠性也爲網絡中的傳輸提供了一定的保障。相比於TCP協議,UDP協議傳輸和編程更簡單。 TCP的特點:面

原创 網絡編程-----網絡傳輸協議及端口號

在瞭解了網絡各層的職責和基本協議之後,對常見協議及對應端口號做個總結吧~ 協議名稱 端口號 基於TCP/UDP HTTP(超文本傳輸協議) 80 UDP HTTPS(在HTTP的基礎上添加SSL協議,可以數據加密和身份認證) 443 TC

原创 網絡編程-----OSI七層模型、TCP/IP模型

OSI網絡七層模型以國際標準化組織(ISO)制定的一個用於計算機或通信系統間互聯的標準體系爲參考模型,不僅包括一系列抽象的術語或概念,也包括具體的協議。 每一層實現各自的功能和協議,並完成與相鄰層的接口通信。 先來說說兩個簡單的概念: 網

原创 C和指針-----指針運算(指針加法、指針減法)

指針 + 數字:需要調整,調整的權重爲  sizeof(指針去掉一個*)    指針 + 1 即指針 + +; 指針 -  數字:需要調整,調整的權重爲  sizeof(指針去掉一個*)    指針 - 1 即指針 - -; 指針

原创 C++-----虛擬地址空間分佈

操作系統(32位)會爲每個進程分配4G(2的32次方計算得到)的虛擬地址空間,由用戶空間和內核空間兩部分構成。虛擬內存是內存的一種管理方式,實現對於邏輯上對於內存容量的擴展,使用硬盤(文件)來模擬的內存空間。Windows系統下,用戶空間

原创 C++-----內聯函數(inline)的使用

inline是C++的一個關鍵字,用來修飾函數。內聯函數是C++中的一種特殊函數,它可以像普通函數一樣被調用,但是在調用時並不通過普通函數調用的機制而是通過將函數體直接插入到調用處來實現,內聯函數和普通函數相比可以加快程序運行的速度,因爲

原创 C語言-----自己實現字符串拷貝及優化

如何不調用庫函數自己手動實現字符串的拷貝呢?我們一起來看看吧~ 首先我們回憶一下字符串的特徵,看看下面哪些是字符串呢? int main() //字符串:用""描述的字符集合,一定有'\0'結尾 只有以'\0'結尾的字符

原创 Linux-----文件層次結構及Linux常用命令

目錄 Linux文件層次結構 文件管理命令 權限管理命令 進程管理命令 系統管理命令 用戶管理命令 網絡通信 關機/重啓 文件壓縮   Linux文件層次結構 Linux系統中一切皆文件,並使用不同的字符來加以區分不同的文件類型,以樹狀形

原创 Linux---系統調用函數、庫函數、兩者區別

系統調用函數是系統內核拋出來給用戶空間調用的接口,系統調用函數由用戶態調用,在內核態執行。庫函數在函數庫文件中實現,執行時只需要在用戶態執行就可以了。 簡單來說,庫函數一般在庫文件裏實現,系統調用函數在內核中實現,在編寫代碼時就實現了該功

原创 C++-----程序編譯鏈接運行原理

計算機不能識別高級語言,導致我們寫好的程序不能直接運行,所以需要通過以下階段將高級語言翻譯成機器語言。 預編譯階段:(.i)      (gcc   -E   main.c   -o  main.i) 刪除“#define”並文本替換

原创 C++-----函數堆棧調用(調用過程、內存開闢、調用約定)

在前2篇博客中總結了函數的編譯鏈接運行過程和虛擬空間地址分佈,是不是還不能將它們聯繫起來呢?通過函數調用堆棧就可以把它們串起來了,那麼我們來看看它們到底是怎麼回事吧~ 其實程序的運行可以看作是連續的函數調用,我們以幾個問題開始分析函數調用

原创 http常見的狀態碼

    http狀態碼是用戶在瀏覽網頁時,瀏覽器會返回一個http狀態碼,用來指示是否完成特定請求。狀態碼是3位十進制數據,第一個數字指定了狀態碼的類型,後兩位沒有分類作用。主要分5類: 1xx(信息):服務器收到請求,繼續執行下一步操作