原创 Linux — 網絡基礎三

網絡層 負責地址管理和路由選擇 通過對地址的管理,能夠保證數據從一臺主機發送到另一臺主機,並且選擇合適的路徑進行傳輸。 IP協議 主機: 兩端的PC 路由器: 實現中間數據轉發的設備 節點: 網絡中的每個設備都是一個節點 IP地址

原创 Linux — 網絡基礎一

協議 網絡中主機之間進行通信必須使用相同的協議,協議可理解爲“規則”,是數據傳輸和數據的解釋的規則。 協議就是一個相互能夠識別的約定,在網絡中因爲主機設備的生產廠商很多,每個廠商如果都使用自己的協議進行通信,那麼導致網絡上主機間無

原创 Linux — 網絡基礎二

應用層 負責應用程序之間的數據溝通 網絡通信協議: 網絡數據傳輸中的數據格式規定 自定義協議 序列化: 將數據對象按照持久化存儲或者網絡數據傳輸的格式來排布。 反序列化: 對持久化存儲或者傳輸的數據以指定的協議進行解析的過程。 知

原创 Linux — 高級IO

IO分兩步 等待 數據拷貝 五種IO模型 阻塞IO 在內核將數據準備好之前,系統調用會一直等待。 所有的套接字,默認都是阻塞方式。 非阻塞IO 如果內核還未將數據準備好,系統調用會直接返回,並且返回EWOULDBLOCK錯誤

原创 用C語言實現貪喫蛇遊戲

在這裏,我們主要使用C語言和數據結構鏈表來實現對貪喫蛇小遊戲的實現。 主函數 在主函數中,我們需要實現對貪喫蛇遊戲的整體流程的實現。 HideCursor();//隱藏光標顯示,調用一次 srand((unsigned)time(

原创 Linux — 基礎知識

環境: CentOS 6.5 Linux系統目錄結構——樹狀結構 樹狀結構 以下是對目錄的解釋 / 根目錄 /root 該目錄爲系統管理員,也稱作超級權限者的用戶主目錄。 /usr 這是一個非常重要

原创 Linux — 多線程

線程概念 Linux下沒有真正的線程,因爲Linux下的線程是用進程pcb模擬的(也就是說Linux下pcb實際上是一個線程),所以Linux下的線程也被叫做輕量級進程。既然Linux下pcb成了線程,那麼進程變成了線程組。 線

原创 C++ — 智能指針二

shared_ptr shared_ptr的原理: 是通過引用計數的方式來實現多個shared_ptr對象之間共享資源。 shared_ptr在其內部,給每個資源都維護了着一份計數,用來記錄該份資源被幾個對象共享。 在對象被銷燬

原创 C++ — 智能指針一

RAII 資源獲得及初始化,獲得資源馬上進行初始化 是一種利用對象生命週期來控制程序資源(如內存、文件句 柄、網絡連接、互斥量等等)的簡單技術。 在對象構造時獲取資源,接着控制對資源的訪問使之在對象的生命週期內始終保持有效,最後在

原创 用C語言實現貪吃蛇遊戲

在這裏,我們主要使用C語言和數據結構鏈表來實現對貪吃蛇小遊戲的實現。 主函數 在主函數中,我們需要實現對貪吃蛇遊戲的整體流程的實現。 HideCursor();//隱藏光標顯示,調用一次 srand((unsigned)time(

原创 C++ — 模板

函數模板 函數模板的定義 template<class T> //模板參數列表 不能使用struct //自動識別參數類型 template<typename T> //自動識別參數類型 //typena

原创 C++ — 多態

多態的概念 通俗來說,就是多種形態,具體點就是去完成某個行爲,當不同的對象去完成時會產生出不同的狀態。 多態定義的構成條件 基類中必須存在虛函數,派生類必須對基類中的虛函數進行重寫 必須通過基類的指針或者引用來調用虛函數 虛函數

原创 C++ — 繼承

繼承的基本概念 繼承(inheritance)機制 是面向對象程序設計使代碼可以複用的最重要的手段,它允許程序員在 保持原有類特性的基礎上進行擴展 ,增加功能,這樣產生新的類,稱派生類。繼承呈現了面向對象程序設計的層次結構, 體現

原创 Linux — 網絡套接字編程

網絡套接字編程,主要是針對於傳輸層,因爲傳輸層有兩個協議tcp/udp,因此我們必須選擇其一進行數據傳輸,選哪個那,這種時候我們必須就要明瞭兩個協議的優缺點,視使用場景而定。 TCP協議 優點: 可靠傳輸,並且傳輸靈活 缺點: 傳

原创 Linux —網絡基礎一

協議 網絡中主機之間進行通信必須使用相同的協議,協議可理解爲“規則”,是數據傳輸和數據的解釋的規則。 協議就是一個相互能夠識別的約定,在網絡中因爲主機設備的生產廠商很多,每個廠商如果都使用自己的協議進行通信,那麼導致網絡上主機間無