blueskyson (林政傑)
簡介
- 成功大學 資訊工程系 111 級 (2018~2022)
- github: blueskyson
2020 秋季班 自我評量
- 知道 x - y < 0 敘述為何不能寫為 x < y 嗎? (CS:APP 第 2 章)
需要考慮 overflow 的狀況,例如在 int32 下 2147483647 - (-1) < 0 ,但是 2147483647 > -1
- 知道 C 語言規格書如何解釋 ptr++ 和 *ptr++ 行為的差異嗎?
在第 40 頁中 p++ 實際上會被視為 (p++) ,也就是 *ptr++ 會回傳對 ptr 的取值,然後將 ptr 指向該型態的下個位址;而 ptr++ 則單純回傳 ptr 然後指向該型態的下個位址。
- 知道如何實作無失真資料壓縮嗎?你知道有哪些相關演算法?
- wiki: 產生輸入資料的統計模型,利用這個統計模型將較常出現的資料用較短的位元序列表示,較不常出現的資料用較長的位元序列表示
- Huffman coding, Run-Length coding, Golomb-Rice coding
作業
小考
期末專題
以 exp-golomb code 說明 clz ,並改進 x-compressor
2022 春季班 自我評量
作業/隨堂測驗
期末專題
探討從無到有打造 Linux 平台的高效能網頁伺服器,涵蓋是否該將伺服器實作於 Linux 核心內部、並行處理、I/O 模型、epoll、Reactor pattern,和 Web 伺服器在事件驅動架構的考量。
自我評量 (1 ~ 10)
我給自己 6 分。
在學期初做 lab0 實作 linked list 的 merge sort 過程中,學習到了查閱原始材料的重要性,其可以避免繞許多彎路,也不會被其他人的穿鑿附會所誤導,再來 trace code 時也要避免舉燭,而要參照 commit message 理解目標程式碼的目的,並搭配實驗去執行。在設計演算法的同時最好也針對硬體特性來優化,例如 linux 的 list_sort 為了減少 cache thrashing,引進了 2:1 balanced merge。前述這些經驗都幫助我在未來設計軟體時考慮到更多議題。
在學期中做 fibdrv 時,學習了 kernel module 的特性和相關議題,例如 kernel space 到 user space 資料複製的成本、讓記憶體配置能夠 deterministic、in-place,比較 Karatsuba 和 Schönhage–Strassen 乘法的差異。在 ktcp 的作業追蹤了 kernel module 載入的過程。