原创 初入Linux(Ubuntu18.04)必須要知道的事情!

1、爲什麼要入Ubuntu? 越早入Linux越好,非科班的人更要努力(有時感覺累成?)。Ubuntu更能夠銜接脫坑Windows帶來的不適感。別在虛擬機上裝Linux。 2、怎麼給磁盤分區? 我使用的uefi+gpt模式(現在的

原创 38、Internet傳輸協議之TCP之一(傳輸層)

引言 對於大多數Internet應用來說,它們需要可靠的、按序遞交的傳輸特性。UDP不能提供這樣的功能,所以Internet還需要另一個協議。這就是TCP,它是Internet上的主力軍。 1、TCP概述 傳輸控制協議(TC

原创 40、性能問題(傳輸層)

引言 在計算機網絡中,性能問題非常重要。當成百上千臺計算機相互連接在一起時,無法預知結果的複雜交互過程很常見。這種複雜性常常會導致很差的性能,而且無人知道其中的緣由。在下面的章節中,我們將討論許多與網絡性能有關的問題,以便了解可

原创 41、延遲容忍網絡(傳輸層)

引言 我們將通過描述一種全新的傳輸來結束本章,這種傳輸有朝一日可能會成爲Internet的重要組成部分。TCP 和大多數其他傳輸協議建立在這樣的假設基礎之上:發送端和接收端通過一些工作路徑持續地連接在一起,否則協議就會失敗且數據

原创 39、Internet傳輸協議之TCP之二(傳輸層)

1、TCP計時器管理 TCP 使用多個計時器(至少從概念上講是計時器)來完成它的工作。其中最重要的是重傳計時器(RTO, Retransmission Timeout )。當TCP 實體發出一個段時,它同時啓動一個重傳計時器。如

原创 37、Internet傳輸協議之UDP(傳輸層)

引言 Internet傳輸層主要有兩個協議,無連接和麪向連接各一個,互爲補充。無連接協議是UDP,它除了給應用程序提供發送數據包功能並允許它們在所需層次之上架構自己的協議之外,幾乎沒有做什麼特別的事情。面向連接的協議是TCP,該

原创 函數式編程?別費力氣了,它就是個愚蠢的玩具

Functional Programming? Don’t Even Bother, It’s a Silly Toy 函數式編程?別費力氣了,它就是個愚蠢的玩具 提示:本博文可能不再更新 請移步我的公衆號:躍寒或個人主頁 Ju

原创 01.4鏈錶

鏈錶(linked list) 基本介紹 鏈錶由一系列結點組成,結點可以在運行時動態生成。每個節點包括兩個部分:一個是儲存數據元素的數據域,另一個是儲存下一個結點地址的指針域。 單向鏈錶 單鏈表一般應設頭指針指向開始節

原创 01.1稀疏數組

稀疏數組(sparse array) ps:數據結構與算法主要根據韓順平老師的課程優化修改+整理。 基本介紹 當數組中大部分元素都是同一值時可以使用稀疏數組保存以節省空間。一般用作保存二維數組(棋盤、地圖等)。 應用實例

原创 01.6哈希表

哈希表(Hash table)(散列表) 散列表(Hash table,也叫哈希表),是根據關鍵碼值(Key value)而直接訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中的一個位置來訪問記錄,以加快查找的速度。這個

原创 01.2 隊列

隊列(queue) 基本介紹 隊列是有序列表,可用數組、鏈錶實現,先入先出(FIFO)的原則。隊列只允許在表的前端(front)進行刪除操作,在表的後端(rear)進行插入操作。 順序隊列 使用兩個指針管理順序數組,隊頭

原创 02.3選擇排序

選擇排序(Selection sort) 基本介紹 選擇排序的工作原理是每一次從待排序的數據元素中選出最小或最大的一個元素,存放在序列的起始位置。然後,再從剩餘排序元素中繼續尋找最小或最大的元素,然後放到以排序序列的末尾,以

原创 01.3棧

棧(stack) 基本介紹 棧又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一段進行插入和刪除運算。這一端被稱為棧頂,相對的,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上

原创 02.1冒泡排序

冒泡排序(Bubble Sort) ps:數據結構與算法主要根據韓順平老師的課程優化修改+整理。 基本介紹 它重複地走訪要排序的元素列,依次比較兩個相鄰的元素,如果它們的順序錯誤就把它們交換過來。(穩定) 代碼實現 va

原创 02.4快速排序

快速排序(Quick sort) 基本介紹 快速排序(Quick sort)是對冒泡排序的一種改進。它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另一部分的所有數據要小,然後再按此方法