原创 數據結構和算法(6)-----鏈表

1.鏈表和數組的比較 1).數組作爲數據存儲的一種結構,有一定的缺陷,比如無序數組搜索效率低,有序數組插入效率低,兩者刪除效率都比較低。而且在創建數組的時候需要指定數組的大小,如果無法提前預知大小,數組的動態擴展也是件麻煩事(netty的

原创 java基礎(8)-----Lock and synchronized

     synchronized可以實現同步,爲什麼我們還需要Lock呢?jdk5之後增加了一個新的包java.util.concurrent,java在這裏提供了新的併發編程的工具,其中下面的Locks包都是關於Lock這一部分的,如

原创 java基礎-----(反射)

1.什麼是反射?     引用百度百科的解釋。java反射機制是在運行狀態中,對於任意一個實體類,都能夠知道這個實體類的所有屬性和方法;對於任意一個對象,都能夠調用他的屬性和方法;這種動態獲取類信息以及調用對象方法的功能稱爲java語言的

原创 數據結構和算法(8)-----堆

在Java數據結構和算法(五)——隊列中我們介紹了優先級隊列,優先級隊列是一種抽象數據類型(ADT),它提供了刪除最大(或最小)關鍵字值的數據項的方法,插入數據項的方法,優先級隊列可以用有序數組來實現,這種實現方式儘管刪除最大數據項的時間

原创 數據結構和算法(4)-----算法的時間複雜度和空間複雜度

1.算法的時間複雜度定義  在進行算法分析時,語句總的執行次數T(n)是關於問題規模n的函數,進而分析T(n)隨n的變化情況並確定T(n)的數量級。算法的時間複雜度,也就是算法的時間量度。記作:T(n)=O(f(n))。它表示隨問題n的增

原创 數據結構和算法(2)-----數組

1.JAVA數據介紹 在Java中,數組是用來存放同一種數據類型的集合,注意只能存放同一種數據類型(Object類型數組除外)。 ①、數組的聲明 第一種方式: 數據類型 []  數組名稱 = new 數據類型[數組長度]; 第二種方式:

原创 數據結構和算法(7)-----二叉樹

接下來我們將會介紹另外一種數據結構——樹。二叉樹是樹這種數據結構的一員,後面我們還會介紹紅黑樹,2-3-4樹等數據結構。那麼爲什麼要使用樹?它有什麼優點?   前面我們介紹數組的數據結構,我們知道對於有序數組,查找很快,並介紹可以通過二分

原创 數據結構和算法(5)-----隊列

1、隊列的基本概念 隊列(queue)是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱爲隊尾,進行刪除操作的端稱

原创 數據結構和算法(3)-----棧

1、棧的基本概念  棧(英語:stack)又稱爲堆棧或堆疊,棧作爲一種數據結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最

原创 Maven-----idea最簡單方式打出可執行jar

依賴插件: <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId

原创 java基礎(10)-----JDK中觀察者模式和事件驅動模型源碼解析

      引用百度百科,觀察者模式概念:觀察者模式(Observer)是軟件設計模式的一種,在此模式中,一個目標物件管理所有依附於它的所有觀察者物件,並且在它本身的狀態發生改變時主動發出通知。這通常通過呼叫觀察者實現的方法來實現,此種常

原创 java基礎(11)-----CallBackListener監聽回調

直接貼一個小demo吧 AbstractCallBackListener類: /** * 監聽回調抽象類 * @author zisong yue * @date 2018-12-05 */ public abstract cl

原创 數據結構和算法(7)-----鏈表

1.鏈表和數組的比較 1).數組作爲數據存儲的一種結構,有一定的缺陷,比如無序數組搜索效率低,有序數組插入效率低,兩者刪除效率都比較低。而且在創建數組的時候需要指定數組的大小,如果無法提前預知大小,數組的動態擴展也是件麻煩事(netty的

原创 數據結構和算法(1)-----簡介

數據結構和算法是編程的基礎,優秀的開源項目和JDK源碼可以看到裏面充斥着這些,那,如果你覺得看這些源碼吃力的話,比如netty中使用了雙向鏈表,如果你練概念都不清楚,就更別談能不能看懂了,看了網上其他人的文章,有的寫的真的非常好,我就借鑑

原创 java基礎(9)-----Future和Callable

     在多線程協作場景中,我們可以通過繼承Thread或者實現Runnable接口。但是,Runnable接口並沒有返回值,如果我們需要之前的執行結果,發現沒轍了;這個時候出現了Callable和Future,通過實現Callable