原创 ElasticSearch

一、es基本概述 es是基於lucene的開源分佈式查詢和分析的搜索引擎,可以通過簡單的restful api輕鬆實現搜索功能,可以進行大規模的橫向擴展,以支撐pb級的結構化和分結構化海量數據的處理。所謂的全文索引指計算機索引程序通過掃描

原创 RabbitMQ基本解析

RabbitMQ工作模型 交換機:綁定列表 交換機和隊列是多對多的關係 交換機常見的路由方式 1、direct直連 routing key路由鍵和binding key綁定建一致,交換機的消息只會路由到對應的隊列中 2、topic主題

原创 設計模式-代理模式

一、代理模式基本概述 代理模式給某一個對象提供一個代理對象,並由代理對象控制對原對象的引用。通俗的來講代理模式就是我們生活中常見的中介。 二、代理模式的優勢 1、解耦 2、功能擴展 三、代理模式的分類 1、靜態代理:由程序員創建或由特定工

原创 JVM-類加載機制

Java是使用 雙親委派模型 來進行類的加載的,所以在描述類加載過程前,我們先看一下它的工作過程 雙親委託模型的工作過程是:     如果一個類加載器(ClassLoader)收到了類加載的請求,它首先不會自己去嘗試加載這個類,   而

原创 JAVA-IO篇

一、java中有幾種類型的流 字節流,字符流 二、字節流和字符流哪個好,如何選擇 所有的硬盤上保存文件或進行傳輸的時候都是以字節的方法進行的,包括圖片也是按字節完成,而字符是只有在內存中才會形成的,所以使用字節的操作是最多的。 字節流在

原创 JAVA-鎖篇

【一】ReentrantLock:重入互斥鎖,可以重新進入的鎖,當前線程通過調用lock.lock()獲得鎖,如果再進入這個方法,不會阻塞,增加重入的次數。 Synchronized和ReentantLock都支持重入 重入鎖主要就是爲了

原创 JAVA-內存模型(JMM)

JAVA內存模型跟CPU緩存模型類似,是基於cpu緩存模型建立的,java線程內存模型屏蔽了底層不同計算機的區別。 JMM數據原子操作 1、read(讀取):從主內存讀取數據 2、load(載入):將主內存讀取到的數據寫入到工作內存 3

原创 JVM-運行時數據區

JVM運行時數據區基本結構 【java虛擬機棧】線程私有,生命週期和線程相同,虛擬機棧描述的是Java方法執行的內存模型,每個方法在執行的同時都會創建一個棧幀  用於存儲局部變量表,操作數棧,動態鏈接,方法出口等信息。每一個方法從調用直

原创 JAVA-集合篇

List,Set,Map都是接口,前倆個繼承Collection接口,Map是獨立接口 Set接口相關的實現類:HashSet,LinkedHashSet,TreeSet List接口相關的實現類:ArrayList,LinkedList

原创 JAVA-關鍵字volatile篇

volatile變量的特性 1、保證可見性,但不保證原子性       當寫一個volatile變量時,會把該線程本地內存中的變量強制刷新到主內存中       寫操作會導致其他線程中的緩存無效 2、禁止指令重排       重排序是指編