原创 SpringBoot2.x +redis5.x讀寫分離配置

redis的主從複製我就不贅述了,各大博客都有寫怎麼配置的,我們來講SpringBoot怎麼配置讀寫分離: 方法應該有多種:可能的實現有利用AOP動態的獲取redis連接工廠並注入對應的實例 本文的實現比較呆板,讀寫分離,主red

原创 關於JDK7HashMap多線程場景下擴容死循環問題的原因以及JDK8的解決方案

JDK7中HashMap擴容出現死循環的本質原因是,這個集合不是線程安全的,共享變量Node結點訪問出錯,當前線程在擴容到槽中最後一個節點B時,由於其他線程將最後一個節點B的next引用置成了A(下圖),被當前線程看到了(實際情況

原创 JDK8中HashMap鏈表轉紅黑樹的閾值爲什麼選8?爲什麼用紅黑樹做優化?

爲什麼會引入紅黑樹做查詢優化呢? 在平常我們用HashMap的時候,HashMap裏面存儲的key是具有良好的hash算法的key(比如String、Integer等包裝類),衝突機率自然微乎其微,此時鏈表幾乎不會轉化爲紅黑樹,但

原创 關於ThreadLocal的使用可能造成的內存泄露以及避免方案以及爲什麼使用弱引用

我們知道,每個Thread類中有一個ThreadLocalMap類型的threadLocals變量,即每個線程中都有一個自己的map,map中的key爲ThreadLocal實例,value爲要存儲的值 我們查看該Map的結構,

原创 深入理解JDK動態代理《從手寫模擬到源碼剖析》

目錄   一.java代理模式的實現   二.手寫模擬JDK動態代理   三.JDK動態代理源碼剖析 正題 一、java代理模式的實現   1.java中代理模式的實現方式 java代理分靜態代理和動態代理,java靜態代理實現有

原创 JDK7HashMap的存儲結構以及時間複雜度

我們知道HashMap是基於Hash表來設計的,他的底層是數組和鏈表的結合體,那麼HashMap的最大的特點就是快,因爲是由鍵找值。 (1)什麼是HashMap以及HashMap的構成 HashMap是基於哈希表的Map接口實現,

原创 爲什麼J2EE Service層、Dao層要有接口

在此不單單隻說爲什麼這兩層要有接口,包括了平時開發寫接口的好處,不是不寫不行,而是寫了更方便程序擴展和後期維護。 0.有個接口,注入的時候可以注入到Service對象,沒有你就要注入到ServiceImp對象。 以後修改了實現,變

原创 C語言 刪除單鏈表中值爲e的全部元素

#include<stdio.h> #include<malloc.h> //刪除單鏈表中值爲e的全部元素 typedef struct Node { int data; struct Node *next; } LNode,*L

原创 Gradle項目 tomcat 啓動not found for the web module

我這是Gradle項目,首先看看你的編譯器,在setting裏面搜索Gradle,看看編譯器是不是默認的Gradle了,因爲默認爲Gradle一般纔會出現這種問題,他不會自己創建exploded目錄,按照Tomcat尋找war的默