萃取出主要特徵,而摒棄次要不相關的特徵;無需瞭解物質的內部實現細節而基於其提供的抽象來構造應用;聲明與實現相分離。計算機科學中的抽象俯拾便是,好比彙編語言是對機器硬件的抽象,編譯器是對高級程序語言的抽象,進程是對程序一次執行的抽象,線程是對任務執行流的抽象等。html
閱讀連接: 《抽象, 編程之道》 :http://www.cnblogs.com/lovesqcc/p/4038408.htmljava
由抽象直接引出的重要概念就是封裝。函數是算法的良好封裝,對象是狀態與邏輯的良好封裝, 封裝是實現軟件模塊化、提升軟件可維護性的重要技術。封裝是實現許多軟件工程思想的溯源。好比,隔離變化, 將變化的影響局部化等。JAR 包便是 Java 平臺實現可複用的庫、框架的封裝。python
不要重複發明輪子。複用是軟件工程領域的重要技術。從 LinuxShell、標準庫函數,STL,JDK這樣的代碼級複用,到 Struts, hibernate 的應用框架複用, 以及 設計模式的複用, 解決方案的複用, 複用無處不在。 複用是站在巨人的肩膀上, 可以直接利用專家級的知識和經驗,何樂而不爲?正則表達式
新的更優的解決方案每每是現有可複用方案的組合創新。算法
閱讀連接:《編程語言與可複用性》 :http://www.cnblogs.com/lovesqcc/p/4333392.html編程
將系統分解爲多個層次,精肯定義每層所提供的服務及層次之間提供的服務接口;處於某個層次的層依賴於下一層提供的服務,併爲上一層提供服務;各層之間無需知道彼此的細節。典型例子是網絡協議棧及操做系統虛擬機的概念;實際工程項目中的 View - Model - Bussiness - Service - Controller 。《JavaWeb應用開發架構淺談》闡述了分層思想在 Web 軟件架構設計中的實際表現形式。設計模式
閱讀連接: 《JavaWeb應用開發架構淺談》:http://www.cnblogs.com/lovesqcc/p/4037745.html緩存
在《水平思考的力量》一書中談到,大腦的運做機制主要是模式機制,即經過模式存儲、識別、鏈接和提取來實現思考。生活中無時不刻使用着模式,模式提升了人們的適應能力和反應能力。設計模式是模式思想在軟件設計中的運用,用於構造可擴展性、可維護性良好的軟件。JavaIO 是使用裝飾器模式實現的優雅而擴展性良好的 IO 框架;《使用規則引擎Drools計算圓周率PI》使用了策略模式去計算 PI, 在實際應用的時候能夠經過參數和須要來選擇任意一種實現。網絡
閱讀連接: 《javaIO框架小析》:http://www.cnblogs.com/lovesqcc/p/5201929.html架構
將一部分已求解值存儲起來以備後用;或者將一次性存儲一部分數據(包括但不只含有當前所需數據),以便以後緊隨着訪問。動態規劃法是使用緩存思想的典型例子。
存儲器高速緩存是緩存思想的又一典型例子,與程序局部性原理密切相關。要想達到更好的程序性能,則必須採用必定手段,使得訪問數據的順序與數據在存儲器中的存儲順序保持一致,這樣才能提升命中率,防止大量的缺頁中斷帶來的低效。在實際應用中,分佈式緩存、內存緩存也是提高系統查詢性能的關鍵技術手段。
經過替換靜態模板中的動態變量, 從而生成動態文本的思想和技術。WordPress 是模板思想的生動應用,能夠定義不一樣層次的不一樣優先級的模板,而後將內容應用其上; Velocity 是一款經常使用的 Java 模板引擎,能夠生成服務端頁面。《python實現動態更新遠程機器列表的SSH登陸腳本》展現了模板的最簡單應用和實現:定義一個靜態模板腳本,裏面含有一些字符串變量;而後使用程序生成的內容填充字符串變量,從而生成最終的腳本。《三個 DAL 相關的Java代碼小工具》第二個工具,使用模板和正則替換,從 DO 類自動生成 DataTransfer 類源文件。模板一般會與正則表達式匹配和替換聯合使用。
經過繼承與混入的方式,使得子類能夠靈活地繼承或重寫父類的行爲; 同一個方法簽名能夠表現出不一樣的行爲。Scala Trait 語言特性體現了混入與多態的思想。
閱讀連接: 《Scala-Trait:混入與多態》:http://www.cnblogs.com/lovesqcc/p/5327435.html
排序無疑是計算領域中很是重要而又實用的技術,也是必知必會的技能之一。選擇排序、插入排序、冒泡排序、歸併排序、快速排序、堆排序、二叉排序、桶排序、計數排序、多關鍵字排序、位圖排序,任君選擇。在實際應用中,每每要根據對象的某個屬性進行排序, 須要編寫比較器函數,或是實現比較器類, 好比 Java 的 Comparator, Comparable , C quicksort 裏的比較函數。一般會選擇快速排序、歸併排序、堆排序。
自動化使得人從繁瑣易錯的事情中解脫出來, 從事更具備創造性的工做, 令人與計算機並行協做, 在計算機幹活的時候人休息一會也不耽擱事情。善於發現可自動化的流程、規律、事務, 儘量使用程序自動化和簡化手工活, 減小或消除繁瑣易錯的手工操做。
閱讀連接:《Debian6.0.5 squeeze 一站式開發環境安裝腳本》http://www.cnblogs.com/lovesqcc/archive/2012/09/16/4037802.html
工欲善其事,必先利其器。創建適合本身的快捷鍵是提高效率的有力途徑之一。Linux 命令 ln 能夠用於創建文件或程序的快捷方式。
閱讀連接: 《構建本身的快捷鍵設置》, 《VIM 編輯器筆記》
可以編寫出品質過硬的可信賴的程序也是必須掌握的技能之一。《如何編寫可信賴的代碼》給出了編寫可信賴程序的若干實用建議; 《Web服務端軟件的服務品質概要》給出了評估服務端軟件的各類質量屬性;《一個圖片文件批量重命名工具的質量改善過程》經過一個示例闡述如何逐步地提高程序的質量。
學到的東西就記錄下來, 事無鉅細, 積微至著。 不按期地總結、概括和回顧已經學到的知識和技能