原创 一起讀源碼之 — HashMap(jdk1.8)

jdk1.8的hashMap相比1.7的最大的變動就是結構的修改,在之前數組+鏈表的基礎上,增加了紅黑樹的結構。 1.7的hashMap我們已經看過了,其中在查找節點的時候,會去根據hash找到對應的數組,接着去遍歷之後的鏈表結構,當has

原创 一起閱讀HashMap(jdk1.7)源碼

廢話不多說,直接進入主題: 首先我們從構造方法開始: public HashMap() { this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR); }

原创 springboot整合solr8(一)

環境:ubuntu18 + springboot2.0 + solr-8.0.0 第一部分 安裝solr 先去官網下載solr:Index of /apache/lucene/solr/8.0.0我這裏下載的是zip的包,下載之後unzip

原创 jmeter從登錄接口抓取header(session)中的token信息,做爲其他接口的參數使用

說明一下場景,我們準備先進行用戶登錄,再去獲取當前登錄的用戶發表的文章列表。 首先add一個Thread Group,在此基礎上創建兩個http request,如圖: 填寫好login接口需要的信息,如下圖: 我們可以先運行一下Lo

原创 改造rm命令,刪除文件至回收站

rm 是我們經常使用的Linux命令之一,我會習慣於使用 rm 與 -rf 參數同時使用,將文件移除,但是這樣做的話,在之後再想找回就會很麻煩。 下面我們做一些調整,將rm命令的刪除改爲將文件移動到回收站,方便找回。具體操作如下: 創建

原创 “+=”和append的區別

“+=”和append的區別是面試中出現頻率較高的一個題目了,下面我們就來分析一下這兩者的區別吧。首先看一下這段代碼的結果: String s1 = "a"; String s2 = s1 + "b"; System.out.println

原创 關於"a"+"b"共創建了幾個對象的問題

首先,我們先看下以下代碼的輸出情況 String s = "a" + "b"; System.out.println(s == "ab"); // true 將這段代碼反編譯後得到如下結果 public static void mai

原创 關於stringRedisTemplate.setIfAbsent()並設置過期時間遇到的問題

spring-date-redis版本:1.6.2場景:在使用setIfAbsent(key,value)時,想對key設置一個過期時間,同時需要用到setIfAbsent的返回值來指定之後的流程,所以使用了以下代碼: boolean st

原创 jvm類加載的過程

一個類從加載到虛擬機到使用結束從虛擬機卸載包括了加載、驗證、準備、解析、初始化、使用、卸載,即爲一個類的生命週期 下面來看一下類加載的過程,即加載、驗證、準備、解析、初始化5個階段都做了什麼事: 階段1:加載 加載階段虛擬機主要3件事:

原创 Java虛擬機的內存區域以及各區域主要用途

jvm在運行Java程序時,會有把內存分成如下幾個區域: 區域 線程私有/共享 主要用途 程序計數器 私有 可以看作是當前線程執行的字節碼行號指示器,字節碼解釋器會通過改變程序計數器的值來記錄下一條需要執行的字節碼命令;分支、循環

原创 redis創建主從複製的過程

首先我們會在從庫配置中文件加入slaveof masterHost masterPort來指定相應的主庫。此時如果啓動從庫,那麼redis會找到指定ip和端口號來連接master;如果是一個正在運行的redis服務器,那麼我們可以執行sla

原创 使用jenkins+svn自動部署java/vue項目

之前發佈代碼需要每次本地打包-->發到服務器-->重啓tomcat等一系列操作,服務器多了會很繁瑣,使用jenkins可以自動部署和統一管理,解放人力,擠出很多喝茶時間。1、下載jenkins.war官網地址 http://jenkins-