原创 C++只能在棧上或堆上創建對象

只能在堆上創建對象 方法一:構造函數私有化 將類的構造函數私有,拷貝構造聲明成私有。防止別人調用拷貝在棧上生成對象。 提供一個靜態的成員函數,在該靜態成員函數中完成堆對象的創建 class only_heap1 { publi

原创 基於GZIP壓縮算法的模擬實現

ZIP壓縮的歷史 1977年,兩位以色列人Jacob Ziv和Abraham Lempel,發表了一篇論文《A Universal Algorithm forSequential Data Compression》,一種通用的數

原创 socket套接字編程之UDP協議封裝

1.UDP 協議特點: ①傳輸層協議 ②無連接 ③不可靠傳輸 ④面向數據報 2.封裝之前先將清楚幾個要點: 2.1網絡字節序:注意設備的大小端。 ①發送主機通常將發送緩衝區中的數據按內存地址從低到高的順序發出 ②接收主機把從網絡上

原创 socket套接字編程之tcp協議封裝

1.tcp特點 ①傳輸層協議 ②有連接 ③可靠傳輸 ④面向字節流 2.幾個常用接口 // 創建 socket 文件描述符 (TCP/UDP, 客戶端 + 服務器) int socket(int domain, int type,

原创 插入排序(模板)

直接插入排序:直接插入排序是一種簡單的插入排序法,其基本思想是:把待排序的記錄按其關鍵碼值的大小逐個插入到一個已經排好序的有序序列中,直到所有的記錄插入完爲止,得到一個新的有序序列 。、 下圖是一個升序的排序過程 直接插入排序的

原创 C++實現鏈表(模板)

#pragma once #include<cassert> #include<iostream> using namespace std; template<class T> //定義節點 class Node { publ

原创 C++string類詳解及部分函數實現

string是表示字符串的字符串類 該類的接口與常規容器的接口基本相同,再添加了一些專門用來操作string的常規操作。 string在底層實際是:basic_string模板類的別名,typedef basic_string<

原创 選擇排序(模板)

基本思想: 每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完 。 直接選擇排序的特性總結: 直接選擇排序思考非常好理解,但是效率不是很好。實際中很少使用 時間複雜度:O

原创 fork和vfork詳解及區別

1.fork函數:Linux環境下,創建進程的主要方法是調用fork函數。Linux下所有的進程都是由init(PID爲1)直接或間接創建。 pid_t fork(void); pid_t類型其實就是一個整型 返回值:如果

原创 http協議詳解(新手必看)

1.簡介 http協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。 http是一個基於

原创 Linux進程創建、進程等待和進程替換

1.進程創建 fork函數初識 在linux中fork函數時非常重要的函數,它從已存在進程中創建一個新進程。新進程爲子進程,而原進程爲父進程。 pid_t fork(void); 返回值:子進程中返回0,父進程返回子進程id,出

原创 看了就會的Linux虛擬地址和頁表分析

1.物理內存 物理內存是由系統實際提供的硬件處理單元,所有的程序指令和數據必須裝人內存才能執行。 內存中所有的存儲單元從0開始依次編號,這個編號稱爲這個存儲單元的內存地址或物理地址。CPU通過物理地址找到相應的存儲單元中存放的指令

原创 MTU,MSS,MSL,TTL概念區分

文章目錄MTUMSS區分MTU和MSSMSLTTL MTU MTU(Maximum Transmission Unit):最大傳輸單元,用來通知對方所能接受數據服務單元的最大尺寸,說明發送方能夠接受的有效載荷大小。 Linux下使

原创 Ubuntu設置網絡(NAT)

網絡配置 需要說明的是,上面博客的第三步可能有錯誤 重啓配置文件:sudo /etc/init.d/networking restart 可以使用以下命令 ifdown -a ifup -a 參考博客

原创 Linux下select詳解和簡單封裝

文章目錄select函數原型select執行過程(特點)優點和缺點select封裝 select函數原型 系統提供select函數來實現多路複用輸入輸出模型 select系統調用是用來讓我們的程序監視多個文件描述符的狀態變化的