原创 Java面試中常問的八大排序算法及代碼實現你都會了嗎?

一、直接插入排序 經常碰到這樣一類排序問題:把新的數據插入到已經排好的數據列中。 將第一個數和第二個數排序,然後構成一個有序序列 將第三個數插入進去,構成一個新的有序序列。 對第四個數、第五個數……直到最後一個數,重複第二步。

原创 應該沒人比我更細了吧:帶你深入剖析Redis分佈式鎖!

什麼是分佈式鎖 說到Redis,我們第一想到的功能就是可以緩存數據,除此之外,Redis因爲單進程、性能高的特點,它還經常被用於做分佈式鎖。 鎖我們都知道,在程序中的作用就是同步工具,保證共享資源在同一時刻只能被一個線程訪問,Java中的

原创 我把 Spring Cloud 給拆了!帶你詳細瞭解各組件原理!

我們先認識一下SpringCloud的各個組件,然後知其所以然。 原理講解前,先看一個最經典的業務場景,如開發一個電商網站,要實現支付訂單的功能,流程如下: 創建一個訂單之後,如果用戶立刻支付了這個訂單,我們需要將訂單狀態更新爲“已支付

原创 深入淺出MySQL靈魂十連問,你真的有把握嗎?

一、SQL語句執行流程 MySQL大體上可分爲Server層和存儲引擎層兩部分。 Server層: 連接器:TCP握手後服務器來驗證登陸用戶身份,A用戶創建連接後,管理員對A用戶權限修改了也不會影響到已經創建的鏈接權限,必須重新登陸。

原创 領統Java併發半壁江山的AQS你真的懂了嗎?

一、JUC的由來 synchronized 關鍵字是JDK官方人員用C++代碼寫的,在JDK6以前是重量級鎖。Java大牛 Doug Lea對 synchronized 在併發編程條件下的性能表現不滿意就自己寫了個JUC,以此來提升併發性

原创 不會數據結構?24張圖讓你徹底弄懂它,還不會你來打我!

數據結構想必大家都不會陌生,對於一個成熟的程序員而言,熟悉和掌握數據結構和算法也是基本功之一。數據結構本身其實不過是數據按照特點關係進行存儲或者組織的集合,特殊的結構在不同的應用場景中往往會帶來不一樣的處理效率。 常用的數據結構可根據數據訪

原创 你瞭解Spring事務傳播行爲嗎?多個方法之間調用事務如何傳播?

前言: Spring在TransactionDefinition接口中規定了7種類型的事務傳播行爲。事務傳播行爲是Spring框架獨有的事務增強特性,他不屬於的事務實際提供方數據庫行爲。這是Spring爲我們提供的強大的工具箱,使用事務傳

原创 深入學習:三分鐘快速教會你編寫線程安全代碼!

相信有很多同學在面對多線程代碼時都會望而生畏,認爲多線程代碼就像一頭難以馴服的怪獸,你制服不了這頭怪獸它就會反過來吞噬你。 誇張了哈,總之,多線程程序有時就像一潭淤泥,走不進去退不出來。 可這是爲什麼呢?爲什麼多線程代碼如此難以正確編寫呢?

原创 五分鐘讓你徹底理解二叉樹的非遞歸遍歷

什麼是二叉樹 在計算機科學中二叉樹,binary tree,是一種數據結構,在該數據結構中每個節點最多有兩個子節點,如圖所示: 二叉樹的定義就是這樣簡單,但這種看起來很簡單的數據結構遍歷起來一點都不簡單。 如何遍歷二叉樹 所謂遍歷簡單的

原创 超長解析:一文帶你分析與解決分佈式系統互斥性與冪等性問題

隨着互聯網信息技術的飛速發展,數據量不斷增大,業務邏輯也日趨複雜,對系統的高併發訪問、海量數據處理的場景也越來越多。如何用較低成本實現系統的高可用、易伸縮、可擴展等目標就顯得越發重要。 爲了解決這一系列問題,系統架構也在不斷演進。傳統的集

原创 史上最全:近萬字總結延遲任務實現方式!附代碼(強烈推薦)

什麼是延遲任務? 顧明思議,我們把需要延遲執行的任務叫做延遲任務。 延遲任務的使用場景有以下這些: 紅包 24 小時未被查收,需要延遲執退還業務; 每個月賬單日,需要給用戶發送當月的對賬單; 訂單下單之後 30 分鐘後,用戶如果沒有付錢

原创 年輕同事不講武德,直接懟上MySQL常見SQL的七大錯誤用法

今天來分享幾個MySQL常見的SQL錯誤(不當)用法。我們在作爲一個初學者時,很有可能自己在寫SQL時也沒有注意到這些問題,導致寫出來的SQL語句效率低下,所以我們也可以自省自檢一下。 常見SQL錯誤用法 1、LIMIT 語句 分頁查

原创 京東二面:爲什麼HashMap底層樹化標準的元素個數是8?

一般的面試題 對於HashMap,我們再熟悉不過了,日常開發最常用的Java集合類就是它了,而且面試的時候對於HashMap知識點基本是必問的,就拿我之前的面試經歷來看,問的最多的無非是這麼幾個: HashMap的底層存儲結構是怎樣的啊

原创 爲什麼要學習數據結構和算法?你瞭解數據結構和算法嗎?

前言 爲什麼要學習數據結構和算法,這裏我舉個簡單的例子。 編程好比是一輛汽車,而數據結構和算法是汽車內部的變速箱。一個開車的人不懂變速箱的原理也是能開車的,同理一個不懂數據結構和算法的人也能編程。但是如果一個開車的人懂變速箱的原理,比如降

原创 不會安裝Kubernetes學習環境?Mac筆記本上安排一個!

這篇文章是基於Linux虛擬機安裝的,所需要的資源環境還是相對複雜。而我們在日常學習Kubernetes的過程中,其實是更希望在開發電腦上直接部署一個簡單的Kubernetes環境,這樣學習起來會更加方便。今天的內容就給大家介紹下如何在M