原创 JAVA線程之Thread類詳解

Thread類用於操作線程,是所以涉及到線程操作(如併發)的基礎。本文將通過源碼對Thread類的功能作用進行分析。 一、屬性 /* Make sure registerNatives is the first thing <cl

原创 JAVA之創建線程與線程池

一、線程創建 JAVA創建線程的方式有三種,分別是: 繼承Thread 實現Runnable 實現Callable 1、繼承Thread 通過繼承抽象類Thread,創建MyThreadExtends對象,調用其start方法。 p

原创 JAVA之IO

一、概述 IO即輸入輸出系統。我在平時使用過程中,都是直接在網上覆制粘貼,沒有仔細梳理,導致現在使用自己寫有點磕磕巴巴,故此梳理一遍。 IO重點有5個類:File、OutputStream、InputStream、Writer、Read

原创 JAVA併發之Synchronized(悲觀鎖)

一、關鍵字介紹 synchronized是Java中的關鍵字,是一種同步鎖。可修飾實例方法,靜態方法,代碼塊。 synchronized是一種悲觀鎖。 二、使用場景 synchronized可以修飾實例方法,靜態方法,代碼塊。 修飾實

原创 使用LockSupport喚醒指定線程

一、wait與notify、notifyAll 開發過程中,對線程阻塞與喚醒我們都知道可以使用object的wait和notify,notifyAll實現。 以上方式的缺點:notify是隨機喚醒某個阻塞的線程,notifyAll喚醒所

原创 優先隊列之二項隊列(JAVA實現)

一、定義 1.二項樹 堆性:每個結點都比它的左右子樹中結點要小(小頂堆) 高度爲 k 的二項樹B(k)通過將一棵二項樹B(k-1)附到另一棵二項樹B(k-1)的根上構成。而B(k-1)又可以由B(k-2)附到另一棵B(k-2)的二項樹上

原创 內部排序八大算法原理及JAVA實現

一、概述   排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。具體分類如圖1-1(源自網上)      圖1-1     某些必要的

原创 優先隊列之二叉堆(JAVA實現)

一、定義: 1.完全二叉樹(除了最後一層可能不飽和,其他都飽和,且最後一層節點是從左往右排滿) 2.堆性:父節點要小於等於(最小堆)或者大於等於(最大堆)子節點。 二叉堆由於是完全二叉樹,故父節點和子節點的位置存在一定的關係。若將二叉

原创 java發送http和https請求(忽略證書)

通過java發送http請求和https請求 一、發送http請求 import java.io.*; import java.net.URL; import java.net.URLConnection; public class

原创 並查集(不相交集)原理及JAVA實現

一、定義 並查集(Disjoint set或者Union-find set)是一種樹型的數據結構,常用於處理一些不相交集合(Disjoint Sets)的合併及查詢問題。在使用中常常以森林來表示。 二、操作 並查集主要有三個操作,分別爲:

原创 優先隊列之左式堆(JAVA實現)

一、定義: 1.零路徑長度:某節點的零路徑長度爲該節點到沒有兩個兒子的節點最短距離。 2.左式堆性質: 父節點屬性值小於子節點屬性值; 堆中的任何節點,其左兒子的零路徑長>=右兒子的零路徑長的二叉樹。 任一結點的零路徑長比他的諸兒子結點