分享到plurk 分享到twitter 分享到facebook

User/zhu849

zhu849(朱冠穎)

經歷:

  • 海洋大學 資訊工程學系

  • 成功大學 資訊工程研究所

個人資料:

  • github:https://github.com/zhu849

  • email: st81801@gmail.com

2020q3 - 學習歷程

2020q3 - 學習回顧

  1. 知道 x - y < 0 敘述為何不能寫為 x < y 嗎? (CS:APP 第 2 章)

雖然直觀想多數的情況可以使用,但是因為浮點數運算的關係使得在邊界條件發生時會有誤差,造成錯誤

  1. 知道 C 語言規格書如何解釋 ptr++ 和 *ptr++ 行為的差異嗎?

ptr++:會依照指向的型態,使指標每次指向一個該型態大小單位的位移

ptr++:這個操作先需要考慮 operation 的優先權問題,因為 ++ 優先權較 (取值符號) 大,會先將ptr指向下一個位置後才做取值

  1. 知道 memory misalignment 對程式正確性和效能的影響嗎?

如果沒有正確 alignment 會使資料的擺放錯亂,而且如果有 alignment 可以利用 page 的方式管理記憶體增加效能(能更快找到目標 page)

  1. 知道 page fault 嗎?Segmentation fault 的訊息是如何顯示出來,請以 GNU/Linux 為例解說

某個程式執行時缺少了實體記憶體可以使用,因而觸發OS產生 page 的替換機制。Segmentation 是因為對記憶體的錯誤使用導致的,錯誤引用記憶體會觸發 OS 的保護機制進而告知使用者。

  1. 看懂 CS:APP 第 9 章講虛擬記憶體的描述嗎?知道 Linux 如何處理嗎?

將實體記憶體當作硬碟地址位置的快取,在實體記憶體只保留 active areas,根據不同需要在硬碟和實體記憶之間雙向傳輸資料。Linux 會給每個 process 個別的 page table 並且映射到實體記憶體上,可以有共享區域和私有區域,並且有許多保護機制需要探討(copy-on-write 等)。

  1. 知道 Bloom filter 嗎?以你寫過或用過的程式,舉例說明這機制帶來的好處

透過這種方式能夠做到的檢查不是最精準,但是能夠提供空間和時間上的優勢做到高準度查詢。在網路領域中,Sketch 對於封包的收集也是利用類似 bloom filter 的方式來達到高效能的收集。

  1. 本學期課程內容中,讓你印象最深刻、顛覆過往認知的部分是什麼?請舉例說明

Bitwise 操作可以如此博大精深,從前可能只知道如何去用 bitwise 更新像是 bit-vector 或是一些簡單運算邏輯,但是經過這堂課因為刷 Leetcode 看到許多奇異的 bitwise 操作。甚至程式效能改進的技巧到中期的難度已經超出想像力了,可以說是魔法了吧。不過也不能只是專注在程式技巧上,還有程式的嚴謹性是我們常忘記的事情,老師也很強調這些小細節都可能成為危害,這也是程式開發工作者的我們需要去注意的,不能只是用「程式能動就好」的心態去寫程式。

2020q3 - 所見所聞心得

在這堂課可以看到很多未來的強者是如何萌芽茁壯的,也可以看到不僅是除了成大同學之外的外校同學也同樣努力著。大家都有一樣的目標就是「變強」,雖然大家努力的方向不盡相同,但環境會使人成長,當大環境營造出一種大家都很努力的氣氛自己會更有動力跨出那步。Jserv 老師是這堂課最大的寶庫,但是卻是我沒有善加利用的,原因卻是因為努力、能力的不足使得沒有東西能夠和老師討論,希望往後修課的同學可以先準備好努力的決心,並且不要在上課開始才點燃動力,在想到的當下或是看到這段話的當下就點燃動力奮力向上。這堂課就像一座放在眼前的金山,只怕自己不肯動手鑿,努力總會有收穫,失敗也可以是進步的動力。而且,老師比你還認真寫程式的課是真的不多了!

2020q3 - 自我評量(1-10)

我給自己 7.5 分,原因是我覺得自已在課程的投入仍不足,到了課程的第七週左右已經開始失去戰鬥意識,直到期末專案的到來才重新找到選課的初衷。在課堂上與其說是解題技巧,更多的是學到如何研究一項議題、從不同面向切入問題。而且也是因為這堂課才認知到原來自己不會的事情還這麼多(或是甚至以前學會的是錯的),如果有機會仍會想再修這堂課,希望這堂課作為星星之火,目標是將 CS:APP 詳細的讀完且做完所有的 lab 來強化不足的基本功。