原创 tomcat8.5 配置https證書
第一步: 用java自帶的工具生成證書 keytool -genkey -v -alias tomcat -keyalg RSA -keystore C:\apache-tomcat-8.5.31\conf\key\tomcat.keys
原创 Java SPI(Service Provider Interface)
1.什麼是SPI SPI全稱Service Provide Interface,是JDK內置的一種服務提供發現機制(如:JDBC)。是一種動態替換髮現機制。例如:有個接口想在運行時才發現具體的實現類,那麼你只需要在程序運行前添加一
原创 springboot redisTemplate redis實現分佈式鎖
獲取鎖實現原理 使用redis lua腳本 lua腳本執行是個原子操作 重要命令 setnx 如果key不存在則設置值 代碼: /** * 獲取鎖 * 原因是 redis是單線程的 一但一個線程獲取鎖後 其
原创 線程的終止操作
1.使用interrupt()/isInterrupted()/interrupted() interrupt() 在一個線程中調用另一個線程的interrupt()方法,即會向那個線程發出信號-->線程中斷標誌已設置 isInterru
原创 重載和重寫的區別
1.重載(Overload) 重載方法名相同,參數列表不同(參數個數不同,參數類型不同,參數列表不同)。注:重載中返回值類型,方法修飾符可以不同,但是返回值類型,修飾符不同不能判斷是否爲重載。 2.重寫(Override) 1.方法名
原创 CountDownLatch使用和分析
使用案例: /** * CountDownLatch 使用以及原理分析 */ public class CountDownLatchDemo { public static void main(String[] args)
原创 ArrayList和LinkedList源碼分析
ArrayList和LinkedList源碼分析: package easyExcel; import java.io.FileNotFoundException; import java.util.ArrayList; impor
原创 Vector源碼分析以及ArrayList比較
源碼分析如下: package easyExcel; import java.util.Vector; public class VectorDemo { public static void main(String[]
原创 Final關鍵字的理解
final 不可變 1.Final修飾的類不能被繼承 2.final修飾的方法不能重寫 3.final修飾的變量必須初始化且只能初始化一次 4.final修飾的基本類型不可改變 5.final修飾的引用類型不可變,內容可以
原创 代理模式
1.靜態代理 接口 package ProxyDemo.staticProxy; public interface Person { void findJob(); } 委託類 package ProxyDemo.st
原创 ArrayList擴容機制
ArrayList構造函數 //存儲元素 transient Object[] elementData; //擴容時使用 private static final Object[] EMPTY_ELEMENTDATA = {};
原创 asList詳解
asList(T... a)返回的是一個固定大小的list集合 源碼分析: public static <T> List<T> asList(T... a) { return new ArrayList<>(a);
原创 Zookeeper使用
1.安裝 ................... 2.Zookeeper常見命令 ①create命令創建節點 create [-s][ -e] path data acl -s:順序節點 -e:臨時節點 都不加爲持久節點 path:節點名
原创 zookeeper簡介
1.什麼是zookeeper zookeeper是一個高效可靠的分佈式協調服務,提供了諸如統一命名服務、配置管理和分佈式鎖等分佈式服務。是一個典型的分佈式數據一致性的解決方案,分佈式應用程序可以基於它實現諸如數
原创 分佈式相關概念
1.CAP理論 C:一致性(Consistency) A:可用性(Availability)和分區容錯性(Partition tolerance)。在一個分佈式系統裏面不可能同時滿足CAP這三個基本需求,最多隻能同時滿足其