原创 裝飾模式(Decorator)

前言: 裝飾模式又名包裝模式。裝飾模式以對客戶端透明以的方式擴展對象的功能,換言之,客戶端並不會覺得對象在裝飾前和裝飾後有什麼不同。裝飾模式可以在不使用創造更多子類的情況下,將對象加以擴展。是繼承關係的一個替代方案。

原创 ArrayList源碼解析

前言: ArrayList是基於數組實現的,是一個動態數組,其容量能自動增長,ArrayList就是傳說中的動態數組,就是Array的複雜版本,它提供瞭如下一些好處:動態的增加和減少元素、靈活的設置數組的大小等。 一:Ar

原创 排序總結(二)

前言: 本篇總結插入排序和希爾排序,把兩種放在一起討論的原因,兩種排序的算法的思想是很相似的,可以說希爾排序就是插入排序的改進版本。 一,插入排序   插入排序(Insertion Sort)是一種簡單直觀的排序算法。它的工作原理是通過構

原创 排序總結(一)

各種排序的性能總結 一:冒泡排序 原理:原理是臨近的數字兩兩進行比較,按照從小到大或者從大到小的順序進行交換,這樣一趟過去後,最大或最小的數字被交換到了最後一位,然後再從頭開始進行兩兩比較交換,直到倒數第二位時結束。冒泡排序對n個

原创 java反射分析

前言:        Java反射機制可以讓我們在編譯期(Compile Time)之外的運行期(Runtime)檢查類,接口,變量以及方法的信息。反射還可以讓我們在運行期實例化對象,調用方法,通過調用get/set方法獲取變量的值。ne

原创 進程與線程

進程(process)和線程(thread)是操作系統的基本概念,但是它們比較抽象,不容易掌握。 最近,我讀到一篇材料,發現有一個很好的類比,可以把它們解釋地清晰易懂。 1. 計算機的核心是CPU,它承擔了所有的計算任務。它就

原创 策略模式

前言: 策略模式作爲一種軟件設計模式,指對象有某個行爲,但是在不的場景中,該行爲有不同的實現算法。比如每個人都要“交個人所得稅”,但是“在美國交個人所得稅”和“在中國交個人所得稅”就有不同的算稅方法。策略模式提供了管理相

原创 ArrayList源碼解析

前言: ArrayList是基於數組實現的,是一個動態數組,其容量能自動增長,ArrayList就是傳說中的動態數組,就是Array的複雜版本,它提供瞭如下一些好處:動態的增加和減少元素、靈活的設置數組的大小等。 一:Ar

原创 觀察者模式(Observer)

前言: 觀察者(Observer)模式是對象的行爲模式,又叫做發佈-訂閱模式、模型-視圖模式、源-監聽器模式或從屬者模式。 觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀

原创 二叉樹的遞歸遍歷

#include <iostream> #include <cstdio> #include <cstdlib> using namespace std; struct node {     struct node * lchild;  

原创 AVL樹的旋轉分析與實現

AVL樹是帶有平衡條件的二叉查找樹。這個平衡條件必須要容易保持,而且它須保證樹的深度是O(log N).**一棵AVL樹是其每個節點的左子樹和右子樹的高度最多插1的二叉查找樹** 基本的數據結構: struct AvlNode; typ

原创 棧的實現

比較簡單,直接上代碼了 #ifndef _Stack_h struct Node; typedef int ElementType; typedef struct Node * PtrToNode; typedef PtrToNode S

原创 java學習筆記-繼承與接口

(一)繼承 什麼情況下用繼承: 當子類和父類出現同樣的函數時,子類函數重寫(覆蓋)父類函數.覆蓋方法:1.子類覆蓋父類,必須保證子類權限大於等於父類.2.靜態只能覆蓋靜態.重寫和重載重載:只看同名函數的參數列表.重寫:方法一摸一樣.子父

原创 線索二叉樹

一、線索二叉樹的原理     通過考察各種二叉鏈表,不管兒叉樹的形態如何,空鏈域的個數總是多過非空鏈域的個數。準確的說,n各結點的二叉鏈表共有2n個鏈域,非空鏈域爲n-1個,但其中的空鏈域卻有n+1個。如下圖所示。  

原创 鏈表總結

鏈表是最基本的數據結構,面試官也常常用鏈表來考察面試者的基本能力,而且鏈表相關的操作相對而言比較簡單,也適合考察寫代碼的能力。鏈表的操作也離不開指針,指針又很容易導致出錯。綜合多方面的原因,鏈表題目在面試中佔據着很重要的地位。本文對鏈