原创 Nacos如何實現服務自動註冊

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"1. 背景"}]},

原创 Spring事件執行流程源碼分析

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":" 1. 背景"}]}

原创 Mybatis 緩存 源碼分析

文章目錄1. 結論2. Show code2.1 SimpleExecutor2.2 CacheExecutor3 細說 1. 結論 老規矩,先說結論。給各位大兄弟來點總結。 mybatis有兩級緩存,分別是: SqlSessi

原创 mybatis執行過程源碼分析

1 總結 代碼有些多,怕有的大兄弟耐不下心, 就先寫一個總結。 mybatis的的大概流程是這樣的: 通過解析配置文件分析mapper文件和接口,生成代理對象。 根據配置文件,創建會話 通過會話拿到代理對象 通過代理對象,執行具

原创 特大消息!!

特大消息!! 爲各位愛學習的同學準備了最新的Java Study Video(架構師方向, 懂得都懂,不懂的不多說). 關注公衆號 星球x,回覆學習起來就可以領走啦!只有7天,過時不候!

原创 SpringBoot之Feign調用方式比較

一:事發原因  兩個東家都使用SpringCloud,巴拉巴拉用上了Spring全家桶,從eureka到ribbon,從ribbon到feign,從feign到hystrix,然後在使用feign的時候發現使用方式不同,仔細一看這種調用方

原创 ReentrantReadWriteLock之讀寫鎖判斷

一. 讀寫鎖是怎麼實現的?   繼承AQS,然後通過將AQS中的state轉化爲二進制,分爲高16位和低16位來區分。高16位表示讀狀態,低16位爲寫狀態。 二. 解析表示方式(高低16位)   假設此時state是數值S   a.寫鎖

原创 SPI簡要分析

一、背景介紹   在看spring源碼和dubbo源碼的時候,發現兩者都用採用了JDK中spi的技術,發現都有大作用,所以就來分析下JDK中的SPI的使用方式及源碼實現。 二、什麼是SPI   SPI的全稱是 Service Provid

原创 01 AutoConfigurationImportSelector到底怎麼初始化

1. 前言 我們知道,在spring中,一般的實現ImportSelector接口,然後重寫selectImports方法,就可以使用到spring的SPI技術,加載spring.factories中配置的org.springfr

原创 Redis數據存儲結構之String

前言:   在Redis使用中,我們最常使用的操作是set key value,或 get key value 。這裏麪包含了redis最基本的數據類型:String,字符串類型是redis中最基本的類型,它能存儲任何形式的字符串,包括二

原创 Java開發工具與HelloWorld

環境裝好了,那接下來就進入開發啦。在開發過程中,爲了加快我們的開發速度,我們就要選擇一款合適的IDE,接下來我們將介紹開發中使用到的IDE。(喜歡用txt直接開擼的老鐵,可以直接跳過本文) 1. IDE介紹 1.1 Intelli

原创 記一次線上事故

1. 事故發生 某天晚上,收到系統CPU佔用過高報警,立刻登錄服務器查看cpu信息(top,命令即可),此時CPU佔用率高達750%+, 查看GC日誌,頻繁的發生Full GC, 並且一次Full GC市場可達到6s,立刻使用jm

原创 用jdk8的stream來實現斐波那契數列

1. 爲什麼 jdk8用着越來越舒服,各種API, 一頓操作,代碼從上到下一氣呵成,爽! 突然想到,怎麼用stream來實現斐波那契數列? 2. 說幹就幹 斐波那契數列就是後一個數是前兩個數的和,即 n = (n-1) + (n

原创 Nacos配置中心源碼分析

1. 什麼是Nacos ? Nacos主要用做註冊中心和配置中心。Nacos介紹,Nacos用法, Nacos源碼下載 etc… 請查看Nacos官方文檔, 本文基於nacos版本1.2.0進行分析。 2. Nacos代碼

原创 Spring之byte[]傳輸

事出原因   某些原因,需要在在服務之間傳輸文件,想到只有通過Byte數組,或者是Stream傳遞,遂定下兩方法,一個byte,一個inpustream,老樣子,upload(@RequestParam("id")Integer id,