原创 好未來課件系統技術升級實踐—引入OpenFeign

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockq

原创 AQS應用方式

​ 同步器的設計是基於模板方法模式的,也就是說,使用者需要繼承同步器並重寫指定的方法,隨後將同步器組合在自定義同步組件的實現中,並調用同步器提供的模板方法,而這些模板方法將會調用使用者重寫的方法。 重寫同步器指定的方法時,需要使用

原创 kafka生產者原理分析

生產者客戶端整體架構: ​ 整個生產者客戶端由兩個線程協調運行,這兩個線程分別爲主線程和Sender線程(發送線程)。在主線程中由KafkaProducer創建消息,然後通過可能的攔截器、序列化器和分區器的作用之後緩存到消息累

原创 mysql8.0主從搭建

mysql版本 8.0.19 docker與非docker配置修改一樣 1. 主節點 [xuhaixing@xhx151 ~]$ docker run --name mysql-master1 --privileged=true

原创 AQS之同步隊列

同步器依賴內部的同步隊列(一個FIFO雙向隊列)來完成同步狀態的管理,當前線程獲取同步狀態失敗時,同步器會將當前線程以及等待狀態等信息構造成爲一個節點(Node)並將其加入同步隊列,同時會阻塞當前線程,當同步狀態釋放時,會把首節點

原创 kafka生產者實例配置參數

KafkaProducer中有三個參數是必填的: bootstrap.servers: 指定生產者客戶端連接kafka集羣所需的broker地址列表,格式爲host1:port1,host2:port2,可以設置一個或多個。這裏並

原创 mysql單機安裝-centos

進入官網https://dev.mysql.com/downloads/,選擇MySQL Yum Repository,下載合適自己系統的版本 wget https://dev.mysql.com/get/mysql80-com

原创 leetcode5.Longest Palindromic Substring

返回最長迴文串 Example 1: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. Example 2: Input: "cbbd" Outpu

原创 爲什麼HashMap的容量要是2的冪

看一下HashMap的get()方法 public V get(Object key) { Node<K,V> e; return (e = getNode(hash(key), key)) ==

原创 爲什麼計算hashcode用31*

String的hashcode()方法 public int hashCode() { int h = hash; if (h == 0 && value.length > 0) {

原创 Semaphore源碼解析

1. 構造函數 public Semaphore(int permits) { sync = new NonfairSync(permits); } public Semaphore(in

原创 CyclicBarrier源碼解析

1. 先看一下構造函數 public CyclicBarrier(int parties, Runnable barrierAction) { if (parties <= 0) throw new IllegalArgu

原创 OutOfMemory問題定位

內存溢出定位 程序加入啓動參數 -Xms30M -Xmx30M -XX:+HeapDumpOnOutOfMemoryError 加入下面代碼 while (true) { //0.5M byte[] chars =

原创 CountDownLatch源碼解析

1. 首先看一下CountDownLatch的構造函數 public CountDownLatch(int count) { if (count < 0) throw new IllegalArgument

原创 cpu100%問題定位

cpu100%問題定位 程序中寫一個死循環 thread = new Thread(() -> { while (true) { } }); thread.start(); top -c顯示進程運行詳細