原创 適配器模式

適配器 將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。 Spring AOP 由於Advisor鏈需要的是MethodInterceptor(攔截器)對象

原创 redis-5.0.5安裝(linux centos)

下載 cd /data wget http://download.redis.io/releases/redis-5.0.5.tar.gz 歷史版本庫地址 http://download.redis.io/releases/ 安

原创 session原理及基本使用

基本原理 當用戶瀏覽器訪問服務器時,後臺服務代碼如下 //如果session存在,則獲取會話的session;否則創建一個會話session HttpSession session = request.getSession()

原创 jvm參數詳解

參數說明 -Xmx10m:設置JVM最大堆內存爲10M。在jdk8中,如果設置-Xms10m -Xmx10m,通過GC日誌可以觀察到 eden space + from space + end space + ParOldGen

原创 Solr Data Import Handler 同步數據2

實戰篇 單機同步db數據 創建core。 第一步: bin/solr start 第二步: bin/solr create -c item 創建core 更改solrconfi

原创 httpcomponents-client的資源釋放的正確方式

在公司內部看到他人使用httpcomponents-client發送http請求時,資源釋放存在着些問題。所以這裏記錄一下,給別人和自己一個警示。 同事寫了個類似以下的代碼 //獲取get請求狀態碼 public static in

原创 commons-lang工具類的使用

ObjectUtils 方法 說明 T defaultIfNull(final T object, final T defaultValue) object爲null時,提供默認值。 <T extends Comp

原创 mysql幻讀與加鎖規則

說明,在mysql的可重複讀級別下,是很難模擬出幻讀的情況的。幻讀是指在一個事務的多次查詢時,查到了之前沒有出現過的行(指新增的行)。由於一般的select查詢是“快照讀”,自然是不可能出現這種事情的,所以幻讀指的是“當前讀”(例如

原创 solr jvm性能調優

solr jvm參數 -XX:NewRation=3(solr默認值,新生代與老年代內存比1:3) -XX:SurvivorRatio=4(solr默認值, eden: from survivor: to survivor=4:1

原创 Executor框架的結構

參考 併發編程的藝術

原创 同步器AQS中的同步隊列與等待隊列

在單純地使用鎖,比如ReentrantLock的時候,這個鎖組件內部有一個繼承同步器AQS的類,實現了其抽象方法,加鎖、釋放鎖也只是涉及到AQS中的同步隊列而已,那麼等待隊列又是什麼呢? 當使用Condition的時候,等待隊列的概

原创 ReentrantLock中公平鎖與非公平鎖的實現原理

在java中,一般的鎖實現都要藉助隊列同步器AbstractQueuedSynchronizer,繼承它並重寫其指定的方法,隨後調用同步器提供的模板方法,模板方法最終會再調用到自己重寫的方法。tryAcquire(int acquir

原创 java中線程的基本方法使用

java中線程的基本方法的熟練使用是精通多線程編程的必經之路,線程相關的基本方法有wait,notify,notifyAll,sleep,join,yield等,本文淺要的介紹一下它們的使用方式。 線程的狀態圖 java將操作系統中

原创 jvm內存溢出會導致jvm停止工作嗎

一直以來以爲當java應用程序的內存溢出後,整個jvm就會停止工作,最近做了個小實驗發現並不是這樣。 java弱引用 一段示例代碼如下: /** * 弱引用 * -Xms5m -Xmx10m 時拋出 * Exception

原创 創建的zookeeper臨時節點不見了

在debug模式下(沒有關閉jvm),創建的臨時節點不見了,爲什麼呢? 背景 使用curator框架作爲zookeeper的客戶端時,使用debug模式,創建的臨時節點過一會就不見了。 pom.xml依賴如下: <de