原创 BDS之線性順序表

         線性順序表(動態可變大小的數組存儲)可以說是數據結構裏最簡單的模型了,但其重要性確不容忽視。Java中的ArrayList,Vector以及c++ vector , 我們都可以看線性順序表的身影。它們都是基於線性順序表的

原创 BDS之數組與矩陣

數組 數組是將相同數據類型的元素按照一定順序排列而成的集合。由於存儲單元是一維結構,而數據是多維的結構,則用一組連續存儲單元存放數組元素就有個次序約定問題,這也就是數組結構產生的原因。 下面我們看下簡單的數組是如何實現的: #defin

原创 CSI-S2:編寫高速緩存友好的代碼

       在CSI-VII一篇中,我們瞭解了存儲器系統的層次結構,並知道了層次結構自上而下使用了緩存(cashing)技術,因此我們着重介紹了存儲系統中高速緩存的工作原理。本篇內容,我們通過分析幾個代碼實例來分析高速緩存如何影響程序

原创 BDS之串

串是由零個或多個字符組成的有限序列,一般記爲 S=a1‘a2'a3'....an' (n>=0)。一般我們討論串的模型可以分爲三種類型,分別是定長順序存儲模型,堆分配存儲模型,塊鏈存儲模型,其中定長順序存儲模型最簡單,它基於靜態數組就可以

原创 BDS之棧與隊列

棧     棧是限定僅在表尾進行插入和刪除操作的線性表。可以看做是一種特殊的線性表,它按照先進後出的原則存儲數據。更加的抽象的來說,棧具有記錄的功能,最典型的棧的應用就是計算機中進程地址區間的棧區,這塊區域被組織成棧的結構,供函數調用使用

原创 BDS之鏈表經典問題

這篇內容我將介紹幾個關於鏈表的經典問題,很多都是來自互聯網(相信絕大部分來自於經典書籍),特在本篇中收集和整理(持續更新,歡迎提供鏈表相關問題)。 以下問題,簡單的我都會列出解題的大體思路,複雜點的我會詳細的說明。 問題1:給定一個單向鏈

原创 CSI-S1:程序的機器級表示~緩衝區溢出詳解

前言          緩衝區溢出是一種非常普遍、非常危險的漏洞,在各個系統、應用軟件中都廣泛存在。因此,這也是一些hacker喜歡利用緩衝區溢出漏洞進行攻擊的原因之一。另一方面,通過緩衝器溢出可以讓攻擊者很輕易地植入攻擊代碼並執行,從而

原创 CSI-I:計算機系統漫遊-由hello程序所聯想到的問題

前言          這章內容是對整本書內容的概括和描述,你可以通過本篇文章快速的瞭解本書所涉及的內容,瞭解學習書中所列內容的必要性。之後你就會明白學習本書其實是非常有趣的歷程,你會知道計算機是怎麼工作,自己的寫的程序是如何工作的,以

原创 CSI-IV:程序的機器級表示-反彙編基礎

前言        看到標題,可能你就失去了繼續閱讀的興趣,反彙編?跟我的工作有關?彙編還記的?反正寫程序用不到?的確,你可能幾年都沒碰過彙編,對於彙編指令記得更是寥寥無幾,又或者你的工作永遠也不會用到彙編了,所以很少去關注。但我想學習

原创 CSI-III:信息的表示與處理-數值陷阱(二)

     本篇繼續上一篇,進行浮點數的介紹,浮點數的表示並不像整型那樣簡單,其在計算機中的運算也會使用更多地時鐘週期。我們都知道計算機並不能絕對正確的表示浮點數,都是在允許的精度範圍內進行計算,這是由計算的信息表示方式(0和1)所決定的。

原创 CSI-II:信息的表示與處理-數值陷阱(一)

前言          在程序中,我們經常會涉及到數值計算操作,比如從最簡單的數值的表示,到加、減、乘除,再到移位等等,而對於這些往往我們都信心十足,常常用直覺告訴自己:這麼做沒錯!但是,計算機並不是靠直覺來感知數值的,它可是個很嚴謹的

原创 CSI系列-讀

       《深入理解計算機系統》作者Randal E.Bryant / David R.O’Hallaron ,是一本很好的講解操作系統的書籍,從大學到現在爲止,前前後後也翻過了幾遍,每次都有所收穫,而且對於系統的理解也在不段地加深。

原创 BDS之串的模式匹配

關於串的模式匹配,簡單來講,就是從S串中找到子串T的位置。假設有串S=“acabcabcacbab”,子串T="abcac",這個問題,首先你會怎麼做呢?(可以先做思考) 這個問題,在<數據結構>一書中描述得已經足夠清楚,本篇特在此進行梳

原创 CSI-S4:動態存儲器分配-malloc與GC

1.用戶級存儲器映射          之前我們介紹過關於程序加載的詳細內容,我們知道在其加載執行之前要對程序進行存儲器映射,Unix進程可以使用mmap函數來創建新的虛擬存儲器區域,並將對象映射到這些區域。 Mmap函數要求內核創建一

原创 2.tcp/ip協議分析-IP協議、ARP協議和RARP協議

IP協議是TCP/IP協議族中最核心的協議,它提供不可靠、無連接的數據報傳輸服務。所以理解IP協議對於我們學習網絡至關重要。 IP首部 重要字段介紹: 4bit首部長度:以4字節爲單位,決定了IP首部長度最大爲15*4=60,一般