標籤:

管窺編程

基礎

  1. 局部性原理:計算機中整體和局部的關係。分為時間局部性和空間局部性。
  2. 緩存:局部性原理的應用。利用數據的副本解決速度不匹配的問題 ,讓慢者快起來
  3. 抽象:指令集是對CPU的抽象, 文件是對輸入/輸出設備的抽象, 虛擬存儲器是對程序存儲的抽象, 進程是對一個正在運行的程序的抽象, 而虛擬機是對整個計算機(包括操作系統、處理器和程序)的抽象。
  4. 分層:隔離變化。TCP/IP分層。
  5. 非同步調用:比如CPU利用DMA讀硬碟數據。比如前端技術AJAX,當瀏覽器的javascript發出HTTP請求時,不會等待伺服器返回數據,而是設置一個回調函數,等伺服器響應到達的時候調用一下就可以了。再比如Ngnix的線程,不會等待一個耗時操作,等這個操作完成後再去通知線程。
  6. 分而治之:分析-綜合。如果子問題和母問題相似,可用遞歸。常見快速排序和歸併排序。

OOP

  1. 由一個類挖掘出一棵樹:類的最大特點是層次的邏輯,繼承和多態都由此而來。
  2. 很多樹聯繫起來組成一片森林,這就是UML圖。

設計

  1. bug:bug分成兩類,一種是底層bug,另一種是頂層bug
  2. 好代碼的標準有很多,但好代碼不是寫出來的,而是好的設計自動帶出來的。
  3. 好的設計至少兩個方案比較出來的,而非直覺。
  4. 好的設計有一個insight 的深度,能用三言兩語概括出來。
  5. 解決問題的路子就是深入理解問題內部的原理和本質,而非一個又一個地解決細節沒有全局觀念。
  6. 善待身邊的人,只有這樣才能交流出智慧,否則將失去太多的機會。
  7. 偉大是細節堆出來的,勇敢暴露暗處的細節,重新思考忽略的細節,精雕細刻粗糙的細節,苦心鑽研困惑的細節

框架

  1. 配置文件和註解(元數據)
  2. API
  3. 應用實例
  4. 原理內幕

推薦閱讀:

第二封信:關於工作/轉行
周報的邏輯·續(轉)
為什麼真的真的要寫單元測試
經歷如何變成經驗

TAG:工作經驗 |