原创 自定義類型(一):結構體和位段

結構體:是一些值的集合,這些值稱爲成員變量,每一個成員可以是不同類型的變量。 結構體的聲明: struct tag { member_list; }variable_list; //例如使用結構體來描述一個學生 stru

原创 排序算法:快速排序和歸併排序

快速排序(升序排序):快速排序的核心就是找到一個基準值(我們這裏採用最後一個元素作爲基準值),然後在剩下的區間裏從左往右找到一個大於基準值的數,再從右往左找到一個小於基準值的數然後將二者交換,直到二者相遇一趟排序結束。然後在繼續下

原创 自定義類型(二):枚舉和聯合

枚舉:顧名思義就是一一列舉 比如在我們的日常生活中,一個星期有7天,一年有12個月等等都可以使用枚舉來一一列舉表示。 枚舉類型的定義: //例1 enum sex { male, //注意逗號 female

原创 shell學習筆記---(語法篇二)

· case命令 · for循環 · while循環 · until循環 · 死循環 · 命令行循環 # case命令 類比c的switch/case語句 esac表示語句塊的結束 # c中的switch/case只

原创 哈希表的基本操作(二):哈希桶處理哈希衝突

開散列:(鏈地址法或者也叫開鏈法) 首先對關鍵碼集合用哈希函數計算哈希地址,具有相同地址的關鍵碼歸於同一子集合,每一個子集合稱爲一個桶,每個桶中的元素通過單鏈錶鏈接起來,個鏈表的頭結點存儲在哈希表中。由此也有一個形象的叫法是哈希

原创 淺析海量數據處理問題

生活中我們經常會遇到一些海量數據處理的問題,那麼怎樣的問題就算是海量數據了呢?來看以下這幾個問題: 給定一個大小超過 100G 的文件, 其中存在 IP 地址, 找到其中出現次數最多的 IP 地址 。 給定100億個整數,

原创 哈希變形----位圖

瞭解過哈希表,我們接下來看一看哈希表的變形—–位圖。 位圖:顧名思義就是以bit位爲單位,但是需要注意的是我們的位圖並不能存儲我們的數據,而是借用這樣一個結構標記某一個數據是否存在。 如圖所示,如果該數據存在,則就將該位圖中的

原创 排序算法:冒泡,選擇,插入,希爾以及堆排序

冒泡排序:時間複雜度O(N^2),空間複雜度O(1),穩定排序 這裏的我們使用冒泡排序對數據升序排序,從後往前冒,每冒完一趟我們都會找到這一堆數據(待排序的數據)中最小的一個,並且該最小的數據就在待排序的數據中第一個位置上,

原创 網絡基礎:傳輸層(端口號、UDP協議)

傳輸層:負責數據能夠從發送端傳輸至接收端 之前我們提到過端口號(Port)標識了一個主機上進行通信的不同的應用程序。 由圖我們可以看出如果想要數據成功的發送出去。那麼我們就必須讓他知道IP地址和端口號。就像我們要找一個人,

原创 網絡基礎:傳輸層(tcp協議:連接管理機制)

tcp協議(傳輸控制協議):對數據的傳輸進行一個詳細的控制。 tcp協議段格式 源/目的端口號:表示數據來自於哪個進程,要去到哪個進程。 32位序號/32位確認序號:後面詳細講解 4位tcp報頭長度:表示該TCP

原创 網絡基礎:應用層(HTTP協議)

我們寫的解決我們實際問題的網絡程序都是在應用層。 今天我們詳細來了解一下應用層的HTTP協議。 協議就是一種約定,socket apide 接口,在讀寫數據時,都是按字符串的方式來發送接收的。如果我們要傳輸一些結構化的數據怎麼

原创 哈希變形----布隆過濾器

在上一篇文章中我們實現了位圖的基本操作,現在我們已經知道位圖是用來標記某一個數據是否存在,而今天我們要說的布隆過濾器則是另外一種變形應用,通過布隆過濾器我們可以判斷一個字符串是否存在於某一對數據中。與位圖相比稍有不同的是這裏我們可

原创 Shell·學習筆記---(語法篇一)

· 條件測試 · 多條件測試 · if語句 · 條件嵌套 · ||和&& # 條件測試 # shell腳本中測試是通過命令來完成的 # 常見的測試命令包括test或[ # 聽過檢查該類命令的退出碼,決定條件測試是否成

原创 Shell初識·學習筆記---(符號篇)

· shell變量 · 變量類型 · 字符串拼接 · 文件名待換 · 轉義字符 · 單引號和雙引號 · 命令代換和算術代換 # #用於註釋 # 此時以./shell.sh的形式運行該shell程序,真實的目錄

原创 TCP協議可靠性保證(確認應答機制,超時重傳機制,流量控制,擁塞窗口)

上一次我們知道了TCP協議通過連接管理機制保證可靠性,今天我們繼續來看一看TCP協議中其他幾種保證可靠性的方法。 · 確認應答機制 · 超時重傳機制 · 流量控制 · 擁塞窗口 確認應答機制 在將這部分的內容之前我們應該首