原创 白話解析冒泡排序優化

        冒泡排序就是每2個相鄰的數據進行比較後,按照升降序進行交換,每次排序至少會讓一個最大或最小的元素(默認從左至右排序,升序爲最大元素,降序爲最小元素)移動至隊尾,重複N次後,完成此次排序。        假設我們用 2,5,

原创 重寫jdk源碼:HashMap的resize方法優化思考

        友情提示:本文推理過程是不準確的,因爲在HashMap中處於數組同一位置的元素的哈希值大部分情況是不同的,但整個思考過程比較完整,有興趣的可以看看。 話不多說,我們直接看HashMap的resize方法源碼: 重點在71

原创 快速排序計算第K大的數

        先說結論,最終版本代碼如下: public class KthNum { public static int k = 2; public static boolean bigK = false;

原创 快速排序進階:解決經典面試topK問題

       在上一篇快速排序計算第K大的數中,我們解釋瞭如何使用快排計算第K大的數,然後還發散思考了計算第K小的問題。在此基礎上我們來想一下如何使用快排解決topK的問題。topK是很經典的面試題,在面試中會經常碰到,即使沒有被問過,肯

原创 一文看懂mybatis底層運行原理解析

友情提示 : 本文的重點是解析mybatis執行一次sql 的流程 ,過程中思維比較跳躍,覺得比較難得可以往下查看總結中源碼流程   這篇文章通過一個insert語句來解析mybatis執行一次sql的運行流程。背景介紹,源碼來自於 my

原创 容易忽略的ConcurrentHashMap 線程不安全行爲

線程安全的基礎知識 首先解釋什麼是線程安全:在多線程中對一種數據類型的參數進行共享時,各個線程可以正確的執行,不會出現數據錯誤的情況就是線程安全。  接下來我們看一段常見的線程代碼: public class ThreadTest {

原创 記一次Http方式請求webservice的優化(遞歸業務實戰)

最近接了一家供應商,他們的服務端採用webservice,但只能通過http進行請求,請求的返回值是如下這種格式:    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xml

原创 源碼解析BeanUtils.copyProperties方法

       BeanUtils.copyProperties 方法在項目中的使用非常頻繁,但我們對它知之甚少,在一次使用中,我遇到了下面的這種情況,直接上代碼: public class ParentSrc { private

原创 白話解析歸併排序

    簡單來說,歸併排序主要是將多個有序的序列合併爲一個有序的序列.     我們首先看下2個簡單的數 5 , 2  ,那麼直接將5和2比較交換位置就變成 2,5 。然後再加2個數 4,3 ,同理,比較交換變成 3,4 。      現

原创 白話解析平安筆試題:多線程交替打印

題目:請使用A,B 2個線程,交替打印1-100,提供2種以上的實現方式 ? 說實話,我很懶,沒刷過什麼多線程相關的題目,和大多數人一樣只是知道一些多線程的基礎知識,所以第一眼看到這個題目是有點懵的。寫這篇文章主要是分享一下我的思考過程,

原创 白話解析快速排序

快速排序算法簡稱快排,就是在數組中選擇任意一個元素作爲臨界值,然後遍歷數組中的元素將小於臨界值的放到左邊,大於臨界值的放到右邊,這樣就完成了一次排序,最後通過遞歸依次將臨界值左右部分的元素進行排序即可。 現在我們來思考下如何實現這樣一種排

原创 源碼解析 HashMap 的線程安全問題

    我們經常在面試中會遇到這個問題:                   Q:HashMap是線程安全的嗎?                   A:不是                   Q:爲什麼?              

原创 源碼解析 xxl-job 如何進行穩定性保障

 本文是基於上篇 xxl-job 源碼運行解析 進行解析的 1. 調度中心如何進行故障轉移(Failover)?   故障轉移就是在調度階段,如果某一臺執行器發生故障支持自動切換到一臺正常的執行器機器並且完成調度請求流程 首先在新增一個調

原创 springboot VS springmvc的區別

        發現很多小夥伴不清楚springboot 和 springmvc 的區別,事實上從功能和本質上來講,這2者沒有任何關係。如果非要說有什麼關係,那就是都屬於spring家族的。      什麼是springboot : 一個

原创 由微服務聯想到如何保持職場競爭力

     近期由springboot掀起了一股微服務的熱潮,用過微服務的都知道,採用springcloud的架構,開發一個微服務時通常採用springboot+apollo或config+mybatisplus+代碼生成器 , 基本上簡單