原创 Poj 2586 解題報告

  一個超市有一個待售商品集合Prod,集合中每一個商品都有一個最晚銷售時間,每一個產品都需要一個單獨的單位時間銷售(即兩件商品不能同時銷售),一個銷售計劃是一個有序子集Sell,Sell<=Prod,根據子集中的順序,每一個商品都能在規

原创 記 第十七次CCF計算機軟件能力認證

由於前年考的那次第一題被坑了,所以這次特別注意了前面兩道簡單題的效率和特殊情況,總共前兩題花費大約四五十分鐘,當時是比較滿意的。 現在的題目還沒有出來,題目細節也記得不是很清楚,只能憑藉記憶回憶每道題。 第一、二題 這兩個題意外的

原创 編譯原理:Introduction

1.1 語言處理器 如何實現語言? Interpreter 解釋器(用“is”的方法解釋程序,幾乎沒有預處理) source code + input —interpreter—> output compilers 編譯器

原创 SLP(Chapter 10 part 2):性能優化

1 介紹 通常,使用一個邏輯簡單但比較慢的程序比較好。 因爲一個快的程序通常:1. 編寫時間長;2. 提速不高,難以察覺;3.可以通過硬件升級達到 不同層次優化: 建模 - 算法 編碼 - 程序/過程 編譯 - 底層 Low-l

原创 SLP(Chapter 5):函數的調用返回

複習 PUSH & POP SP 指向當前棧頂最後壓入的一個字節 例子: PUSH EAX (32bits) 假設壓棧前SP = 0x0012ff40,則PUSH執行後, 0x0012ff3c~3f將用於存放EAX的值,

原创 SLP(Chapter 3):代碼表示

0. 引子 Why 彙編 CPU不能理解,如 c = (a + b) * d 但是CPU可以理解,如將這倆個寄存器的值相加,並將結果存在第一個寄存器中 基礎知識 編譯 數據和代碼在內存中分開存儲 代碼(存儲在cs+ip)

原创 Chapter 4(Part 1):語法分析

4.1 Introduction 語法分析是將詞法單元構造成語法樹。也與符號表有關 parsersequence-of-tokensSyntax-tree 三種語法分析方法:(常用後兩者) universal 通用 top-do

原创 Chapter 4(Part 3):自底向上的語法分析

自頂向下語法分析的分析類型 最右推導的反序(從葉子到根) 自頂向下和自底向上的比較 語法分析類別 語法分析樹 自底向下 自頂向下 自底向上語法分析 句柄(handle):分析樹最右邊有父子兩代的子樹,從

原创 SLP(Chapter 10 part 1):性能評估 / 性能測試

1 基礎知識 性能優化對象:瓶頸 bottleneck / Hot spot(需要很長時間執行的代碼段) 優化過程 2 Performance Principles (法則) 2.1 80/20定律 (Pareto Princi

原创 SLP(Chapter 6):內存佈局和分配(part 1)內存使用方式

1 內存使用方式 1.1 內存管理 不同生存期lifetime對應於三種內存分配機制之一: 靜態:在整個程序執行過程中保留的絕對地址 動態分配 棧:以後到先出順序分配的交易,具有函數調用和返回 堆:根據用戶的要求,在任意時間分

原创 SLP(Chapter 4):結構化數據表示

0 複習 內存地址 所有數據都存儲在內存中。 內存是編號的字節序列,以 0x 開頭。那個號碼是地址。(將內存視爲單個一維數組 通常,編譯器後,沒有變量的名稱和類型。 變量在內存中不連續 全局變量在內存中順序也並不按照定義的順序

原创 Chapter 4(Part 2):自頂向下的語法分析

自頂向下語法分析的分析類型 易知,一定是最右推導(回想程序的遞歸算法,一定要遞歸到底才返回) 最右推導過程 = 語法樹的前序遍歷 0. 需要的知識:First and Follow Set First 集(用於選產生式的選項)

原创 SLP(Chapter 2):數據表示

1. 位與位運算 字節 Word 總線傳輸定長的數據塊;C語言中一個int的大小;8位一個字節 計算機的地址是字節的地址 大小端 MSB: maximum sign bit 最高符號位 LSB: 下面是輸出結

原创 SLP(Chapter 0、1):緒論

why 《系統級編程》? 通過操作系統(OS)課程我們明白了進程管理,同步互斥,虛擬內存管理,文件管理 但我們仍然不清楚進程化爲進程映像後,程序究竟是如何執行的? 因此當程序運行出現問題時,很難準確定位錯誤 Some Quest

原创 SLP(Chapter 6):內存佈局和分配(part 3)垃圾回收

3 垃圾回收 3.1 內存管理機制 什麼是空間分配? 分配器提供一組塊的內存抽象 爲什麼動態內存分配? 程序通常不知道數據結構的大小,直到程序實際運行 動態內存分配的類型 顯式:malloc free C 隱式/自動:應用程序分