原创 監控任務設計

文章目錄1 監控任務設計1.1 概述1.2 代碼實現 1 監控任務設計 1.1 概述 監控任務用於監控CPU利用率、管腳狀態,然後在串口中報告狀態。示例較簡單,也可以做得更爲複雜些。系統結構圖如下: 監控任務設計: 雖然監控任務

原创 文件操作的封裝

文章目錄1 文件操作的封裝1.1 代碼實現 1 文件操作的封裝 爲了更加方便對文件進行操作,我們這裏對系統提供的API進行封裝。主要實現在file_op.h和file_op.cpp中。 1.1 代碼實現 file_op.h: #i

原创 粘包的原因分析及解決

文章目錄1 粘包的原因分析2 客戶端解決粘包的問題3 服務端解決粘包的問題 1 粘包的原因分析 先看一下數據收發的示意圖: 我們之前每次只處理一幀數據,如果接收端的處理速度力和發送端的發送速度不匹配就會導致接收緩衝區滿的情況,這

原创 封裝Client

文章目錄1 封裝Client1.1 概述1.2 封裝Client 1 封裝Client 1.1 概述 爲了更方便的使用client的功能,我們這裏把Client相關代碼進行封裝。 1.2 封裝Client 封裝後主要有如下三個文件

原创 函數的後置返回類型

文章目錄1 函數的後置返回類型 1 函數的後置返回類型 在C++11中引入了函數的後置返回類型,這種寫法允許我們把函數返回類型放到函數名字之後,有利於返回類型很長時使得代碼看起來很清晰。 對於函數的後置返回類型,前面以auto開始

原创 for語句新特性

文章目錄1 範圍for語句 1 範圍for語句 範圍for語句用於遍歷一個序列,直接看如下代碼: int v[]{ 1, 2, 3, 4, 5, 6, 7 }; for (auto val : v) // 數組v中的每個元

原创 auto自動類型推斷

文章目錄1 auto 1 auto auto在C++11之前是自動變量的含義(棧變量,局部變量),在C++11後賦予其新的作用:自動類型推斷。 auto可以在聲明變量的時候根據初始值的類型自動爲此變量選擇匹配的類型(聲明時要賦予

原创 表索引

文章目錄1 索引概述 1 索引概述 基本概念: 日常生活中,我們經常會在電話號碼簿中查閱“某人”的電話號碼,按姓查詢或者按字母排序查詢; 在字典中查閱“某個詞”的讀音和含義等等,以快速的找到特定記錄。在這裏,“姓”和“字母”都

原创 淘寶文件系統文件映射原理及實現

文章目錄1 文件系統映射原理1.1 文件映射應用場景1.2 文件映射相關函數介紹 1 文件系統映射原理 1.1 文件映射應用場景 主要應用場景如下: 進程間共享信息。 實現文件數據從磁盤到內存的映射,極大的提升應用程序訪問文件的

原创 淘寶文件系統大文件結構

文章目錄1 淘寶文件系統大文件結構1.1 設計思路1.2 大文件存儲結構圖1.3 哈希鏈表簡介 1 淘寶文件系統大文件結構 1.1 設計思路 主要有如下幾個核心要點: 以block文件的形式存放數據文件(一般64M一個block

原创 將服務端移植到Linux和MAC OS

文章目錄1 將服務端移植到Linux和MAC OS1.1 概述1.2 服務端代碼實現 1 將服務端移植到Linux和MAC OS 1.1 概述 這裏我們將服務端移植到Linux和MAX OS,差異很小,直接上代碼即可。 1.2 服

原创 將客戶端移植到Linux和MAC OS

文章目錄1 將客戶端移植到Linux和MAC OS1.1 概述1.2 客戶端移植代碼 1 將客戶端移植到Linux和MAC OS 1.1 概述 我們這裏把將客戶端移植到Linux和MAC OS,由於Linux和MAC OS都是從U

原创 客戶端升級爲select模型

文章目錄1 客戶端升級爲select模型1.1 概述1.2 客戶端代碼實現1.3 服務端代碼實現 1 客戶端升級爲select模型 1.1 概述 這裏我們爲了讓客戶端有時間去處理其它業務邏輯,因此我們需要在客戶端也引入select

原创 Linux下配置Smba服務器

文章目錄1 Linux下配置Smba服務器 1 Linux下配置Smba服務器 Ubuntu安裝Samba 服務器: 確認安裝: dpkg -l | grep samba 安裝: sudo apt-get install

原创 爲客戶端加入輸入線程

文章目錄1 爲客戶端加入輸入線程1.1 概述1.2 客戶端實現 1 爲客戶端加入輸入線程 1.1 概述 爲了能讓客戶端處理我們的輸入,我們需要爲客戶端加入輸入線程。 1.2 客戶端實現 #define WIN32_LEAN_AND