原创 java併發工具類:CountDownLatch,CyclicBarrier,Semaphore,Exchange

jdk1.5之後,提供了非常多的輔助類來給我們使用,其中就有CountDownLatch,CyclicBarrier,Semaphore,Exchange 一,等待多線程完成CountDownLatch類位於java.util.concu

原创 線程池ThreadPoolExecutor參數設置

JDK1.5中引入了強大的concurrent包,其中最常用的莫過了線程池的實現ThreadPoolExecutor,它給我們帶來了極大的方便,但同時,對於該線程池不恰當的設置也可能使其效率並不能達到預期的效果,甚至僅相當於或低於單線程的

原创 Solr搜索引擎入門1

一,solr的安裝 1.solr搜索引擎的使用,去官網下載:http://archive.apache.org/dist/lucene/solr/ ,關於哪個版本的solr,我使用的是4.10.3;將它解壓到一個目錄下,我解壓在:D:\I

原创 java.util.concurrent源碼包的結構

打算看一下concurrent包的源碼,通過java併發編程的藝術這本書,大致將concurrent包分爲五個模塊 1. Aomic數據類型 這部分都被放在java.util.concurrent.atomic這個包裏面,實現了原子化操作

原创 java中的線程池

一,線程池的好處: 1.降低資源消耗;可以重複利用已創建的線程降低線程創建和銷燬造成的消耗 2.提高響應速度;當任務到達時候,任務不需要等到線程創建就能立即執行 3.提高線程的可管理性;線程不會無限制的創建,可以通過線程池進行統一分配,調

原创 Command命令設計模式

命名模式其實是比較好理解的,顧名思義,老師想讓學生交作業,而不是跟每個學生都說,而是跟班長說,讓學習委員傳達老師的命令;三者相互解耦,任何一方都不用去依賴其他人,只需要做好自己的事兒就行!老師要的是結果,不會去關注學生到底聽到了沒有。 命

原创 Executor框架講解

       Java的線程既是工作單元,也是執行機制。從JDK 5開始,把工作單元與執行機制分離開來。工作單元包括Runnable和Callable,而執行機制由Executor框架提供。從下圖中可以看出,應用程序通過Executor框

原创 多線程的三種實現方式

多線程的實現有三種方式: 1.繼承Thread類 2.實現Runnable接口 3.實現Callable接口,不過該方式需要利用線程池 第一種和第二種方式比較簡單,就不贅述了;主要是講解第三種方式。 實現Callable接口的例子: p

原创 爲什麼你們項目用Solr而不用ElasticSearch

首先,先說一下solr的優缺點和elasticSearch 的優缺點; Solr 優點 Solr有一個更大、更成熟的用戶、開發和貢獻者社區。 支持添加多種格式的索引,如:HTML、PDF、微軟 Office 系列軟件格式以及 JSON、X

原创 Object類裏面有哪些方法

Object類被稱爲上帝類。在Java類中,如果沒有指定父類,默認都會去繼承Object類,那麼Object類中到底有哪些方法! 1.getClass();   這個方法可以引出有關反射,類加載機制 2.hashCode();   這裏會

原创 java計算PI後面的100位小數點

首先,這個題目是以前讀書時候競賽上出現的一道題目,當時沒有做出來,我只是知道思路,因爲數太大沒計算出現;最近剛好複習BigInteger和BigDecimal 的知識,而不能用double,就想到了這個題目; 要求解PI首先要知道他的求解

原创 Singleton單例設計模式

定義:單例設計模式確保一個類只有一個實例,並提供一個全局訪問點。所謂單例,指的就是單實例,有且僅有一個類實例,這個單例不應該由人來控制,而應該由代碼來限制,強制單例。單例有其獨有的使用場景,一般是對於那些業務邏輯上限定不能多例只能單例的情

原创 java類加載過程

       虛擬機的類加載機制就是把描述類的數據從Class文件(或者其他途徑)加載到內存,並對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型。 1.加載:      1.1,通過一個類的全限名獲取定義此

原创 紅黑樹與平衡二叉樹(AVL)樹

紅黑樹 定義: 1. 每個節點要麼是紅色,要麼是黑色; 2. 所有的葉子結點是空結點,且都是黑色; 3. 如果一個結點是紅色的,那麼它的子節點都是黑色; 4. 根結點永遠是黑色; 性質: 1. 紅節點的孩子節點不能是紅節點; 2. 從

原创 java深拷貝與淺拷貝

clone()方法 與構造器創建對象不同 是克隆一個新的對象; 1.引用拷貝 public class CloneTest { public static void main(String[] args) { Person p =