《程式設計師的自我修養》
首先來大致說一下讀這本書的感覺,可以說對於我自己而言,是第一次對於程式設計有了個純粹的認識,或者說的更明確一點,是對整個作業系統有了乙個大致的感覺。雖然自己這一年也算是寫了一些**,你讓我去寫個什麼小程式也沒什麼問題,debug也算是用的熟練。但是,每次如果讓我換一台新的電腦去程式設計,心裡真的是發怵。一旦什麼編譯環境,編碼之類的出了問題,整個人就可憐又無助了。究其原因,是對於程式設計一事僅僅掌握了最表層的東西,也就是說,所有都程式設計都是在照葫蘆畫瓢而已。而這本書算是解決了一些我在這方面的迷惑。
作業系統的重要性
實際上,這學期的另外兩門課在這方面給予我了很明顯的感受。乙個是微機原理,另乙個是電設實踐。這兩門課都有程式設計,一是最簡單的組合語言,另乙個雖然是我熟悉的c語言,但是對於微控制器的功能使用方面,尤其是有關中斷的,也讓我花費了大量的是時間去了解。
在用慣了高階語言以後,再一次的返回來去寫這些最底層的語言,真的是讓我倍感難受。尤其是在彙編的程式設計中,頻繁的從儲存器和暫存器中訪問資料,讓人不勝其擾。同時開始無限懷念高階語言,只要設定乙個變數,就啥都不用我管了hhh
而在電設裡面,微控制器的**編寫讓我第一次對於優先順序有了乙個較為明確的概念,雖然只是乙個簡單的中斷優先順序,但根據實際功能的實現,卻要謹慎再謹慎的去設定。
同樣,這兩方面,一是記憶體的管理,一是優先順序的管理,都被作業系統乙個人給解決了。這裡插一句題外話,就是曾聽說過 linux 系統的原始碼就是用c寫了1w多行,雖然一直沒有去讀過,但這種操作真的是驚為天人。實際上的實現,採用了執行緒的方式,就我個人簡單的理解,cpu的確每一時間只能解決一件事情,但如果以乙個較快的頻率去在幾件事情之間切換執行,從外部看起來呢,就和同時執行好幾件事無異了。如同書中所說「併發實際上是一種模擬出來的情形」
緊接著,書中提出了乙個經典的例子:
直觀來說,執行結束後的 i 毫無疑問是0。但是,計算機在執行這些指令的時候,並不像我們看起來這麼直觀,因為一切的運算,都要在暫存器裡執行,而不能在儲存器裡面,畢竟他沒這個功能。那麼,如果兩個執行緒都被巧妙地割裂開來,就會導致問題的出現。
實際的處理中,很容易想到,就是先強迫執行緒1中的++i完成,再去執行--i,也就是說,i是乙個不可分割的執行緒,被定義為原子操作。
讀書筆記 Week4 2018 3 29
讀書筆記 week 4 我是乙隻it小小鳥 其中看到一段話,讓我感觸頗多 誠然因為時間不夠,並未讀完過多的章節。但看到這段話的時候,真的就感覺彷彿我一直想要掩蓋的,想要努力去無視的,突然被人毫不留情的揭露出來,堂而皇之的展示給別人看。也算是藉此機會,發發牢騷吧。就我個人而言,按部就班的上學,按部就班...
讀書筆記week1 塗涵越
這次讀書筆記主要是就 程式設計師修煉之道 這本書的前半部分做一些總結以及發表一些自己的看法。本書前面的一部分主要是一些程式設計師應該在工作中時刻注意的事情,一些關鍵的資訊如下 1 處理問題的態度與責任。這是在本書序言中就提到的,可見其重要性。處理問題的正確態度以及對自己的行為負責是無論什麼職業的人都...
mysql運維 讀書筆記 Mysql 讀書筆記
mysql儲存時間有兩種型別 datetime和timestamp。分別說一下兩者的區別。datetime,以8位元組儲存時間,理論上可以從0000年儲存到9999年。並且沒有時區的概念,它儲存的就是乙個時間點的概念。timestamp和datetime最主要的不同就是,它是以4個位元組儲存,由19...