管窺編程
05-08
基礎
- 局部性原理:計算機中整體和局部的關係。分為時間局部性和空間局部性。
- 緩存:局部性原理的應用。利用數據的副本解決速度不匹配的問題 ,讓慢者快起來
- 抽象:指令集是對CPU的抽象, 文件是對輸入/輸出設備的抽象, 虛擬存儲器是對程序存儲的抽象, 進程是對一個正在運行的程序的抽象, 而虛擬機是對整個計算機(包括操作系統、處理器和程序)的抽象。
- 分層:隔離變化。TCP/IP分層。
- 非同步調用:比如CPU利用DMA讀硬碟數據。比如前端技術AJAX,當瀏覽器的javascript發出HTTP請求時,不會等待伺服器返回數據,而是設置一個回調函數,等伺服器響應到達的時候調用一下就可以了。再比如Ngnix的線程,不會等待一個耗時操作,等這個操作完成後再去通知線程。
- 分而治之:分析-綜合。如果子問題和母問題相似,可用遞歸。常見快速排序和歸併排序。
OOP
- 由一個類挖掘出一棵樹:類的最大特點是層次的邏輯,繼承和多態都由此而來。
- 很多樹聯繫起來組成一片森林,這就是UML圖。
設計
- bug:bug分成兩類,一種是底層bug,另一種是頂層bug
- 好代碼的標準有很多,但好代碼不是寫出來的,而是好的設計自動帶出來的。
- 好的設計至少兩個方案比較出來的,而非直覺。
- 好的設計有一個insight 的深度,能用三言兩語概括出來。
- 解決問題的路子就是深入理解問題內部的原理和本質,而非一個又一個地解決細節沒有全局觀念。
- 善待身邊的人,只有這樣才能交流出智慧,否則將失去太多的機會。
- 偉大是細節堆出來的,勇敢暴露暗處的細節,重新思考忽略的細節,精雕細刻粗糙的細節,苦心鑽研困惑的細節
框架
- 配置文件和註解(元數據)
- API
- 應用實例
- 原理內幕
推薦閱讀:
※第二封信:關於工作/轉行
※周報的邏輯·續(轉)
※為什麼真的真的要寫單元測試
※經歷如何變成經驗
TAG:工作經驗 |