学习《码农翻身》之精进
生活随笔
收集整理的這篇文章主要介紹了
学习《码农翻身》之精进
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習《碼農翻身》之精進
局部性原理
在一段時間內,整個程序的執行僅限于程序的某一部分,相應的,程序訪問的存儲空間也局限于某個內存區域。
- 時間局部性:如果程序中的某條指令一旦執行,則不久后該指令可能被再次執行;如果某數據被訪問,則不久后該數據可能再次被訪問。
- 空間局部性:一旦程序訪問了某個存儲單元,不久之后,其附近的存儲單元也將被訪問。
緩存(cache)
- 根據局部性原理,操作系統會把經常用到的數據從硬盤取到內存中,CPU會把經常用到的數據從內存取到自己的緩存中。
- 采用這種方法,等待的問題能得到極大的緩解。
- Web開發中,由于數據庫太慢,大部分Web系統會把最常用的業務數據放到內存中緩存起來,以此加快訪問速度。
抽象
計算機系統層抽象
- 指令集是對CPU的抽象
- 文件是對輸入/輸出的抽象
- 虛擬存儲器是對程序存儲的抽象
- 進程是對一個正在運行的的程序的抽象
- 虛擬機是對整個計算機(操作系統、處理器和程序)的抽象
應用層抽象
- Model-View-Control
日志工具
- Logger、Formatter、Appender
分層
網絡協議分層
- 應用層
- 兩個應用是如何交互的,如HTTP、SMTP、FTP
- 傳輸層
- 為應用程序建立連接,可靠地傳遞,如TCP
- 網絡層
- 把一個分組從源主機移動到目標主機,跨越各個子網
- 鏈路層
- 將分組從一個節點移到下一個節點
- 物理層
- 傳輸介質:雙絞線、同軸電纜、光纖
Web開發分層
- 表示層
- 業務邏輯層
- 數據訪問層
- 數據庫
分層的好處就是隔離變化,在接口不變的情況下,某一層的變化只局限于本層次內。
異步調用
- 我不及了,先去做別的事情,你做完了告訴我一聲
- Node.js和Web服務器Nginx也是這樣,一個或若干個線程處理所有的請求,遇到耗時操作,絕不等待,馬上去做別的事情,等到耗時操作完成后,再來通知這些干活的線程。
- AJAX,當瀏覽器中的JavaScript發出一個HTTP請求的時候,也不會等待從服務器端返回數據,只是設置一個回調函數,服務器響應數據返回的時候調用一下就行了。
分而治之
- 將一個規模較大的問題分解為多個規模較小的子問題,這些子問題相互獨立且與原問題性質相同,求出子問題的解,最后組合起來就可能得到原問題的解。
- 由于子問題和原問題的性質相同,所以很多時候可以用遞歸。
- 歸并排序就是一個經典的例子。
- 在軟件設計領域,可以認為是把一個大問題逐步分解的過程。
寫作:
- 為什么要有這門技術,這門技術解決了什么問題,然后才是這門技術是怎么使用的。
總結
以上是生活随笔為你收集整理的学习《码农翻身》之精进的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安全事件响应观察报告及其变种
- 下一篇: 《码农翻身》读后感第二天