原创 【深入理解 Java原理】Condition 實現原理

Condition 實現原理 說 Codition 前,需要說下 ConditioObject。 ConditionObject 是同步器 AbstractQueuedSynchronzied 的內部類,因爲 Condition

原创 LeetCode 34深度優先+回溯

LeetCode 34 輸入一棵二叉樹和一個整數,打印出二叉樹中節點值的和爲輸入整數的所有路徑。從樹的根節點開始往下一直到葉節點所經過的節點形成一條路徑。 示例: 給定如下二叉樹,以及目標和 sum = 22,

原创 Apacche Dubbo 反序列化漏洞

Apacche Dubbo 反序列化漏洞 早在2019年開發者社區就有談到這個 http 協議漏洞問題,近期360靈騰安全實驗室判斷漏洞等級爲高,利用難度低,威脅程度高。 建議升級 dubbo 版本,避免遭受黑客攻擊。 漏洞描述

原创 【深入理解Dubbo原理】dubbo SPI 是怎麼實現的?

dubbo SPI 是怎麼實現的? Dubbo SPI 的目的是爲了得到一個指定實現類的對象 Dubbo 並未使用 Java SPI ,而是重新設計了一套增強版的 SPI 。 Dubbo SPI 的相關邏輯封裝在了 Ext

原创 數據表的範式

數據表的範式 數據庫設計有哪些範式? 關係型數據庫一共有 6 種範式,按照範式級別,從低到高分別是: 1NF 第一範式 2NF 第二範式 3NF 第三範式 BCNF 巴斯-科德範式 4NF 第四範式 5NF 第五範式,也叫完美範式

原创 【深入理解Java併發原理】Thread.yield、Thread.sleep、Object.wait、 LockSupport.park 對比

Thread.yield、Thread.sleep、Object.wait、 LockSupport.park 對比 sleep、wait、park區別 Thread.sleep() 不會釋放佔有的鎖,Object.wait()

原创 LeetCode 22 題解--深度優先遍歷 -- 括號匹配

LeetCode 22 題解 AC 通過 public class LeetCode22 { // 2^2n 局部不合法,不再遞歸 public List<String> generateP

原创 【深入理解Zookeeper原理】Zab 協議

Zookeeper 原理 Zookeeper 概念 Zookeeper 是一個分佈式協調服務,可以用於服務發現,分佈式鎖,分佈式選舉,配置管理等場景。 Zookeeper 提供了一個類似於 Linux 文件系統的樹形結構(可以認爲

原创 【深入理解Spring源碼】-容器如何初始化?

                                               Spring源碼-容器如何初始化?     初始化Spring如下 AbstractApplicationContext applicati

原创 LeetCode110 判斷一個樹是不是平衡樹

給定一個二叉樹,判斷它是否是高度平衡的二叉樹。 本題中,一棵高度平衡二叉樹定義爲: 一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。 示例 1: 給定二叉樹 [3,9,20,null,null,15,7] 3 /

原创 廣度優先算法 LeetCode102 題解

廣度優先算法模板 def BFS(graph, start, end): queue = [] queue.append([start]) visited. add(start) while queu

原创 Condition 實現原理

Condition 實現原理 說 Codition 前,需要說下 ConditioObject。 ConditionObject 是同步器 AbstractQueuedSynchronzied 的內部類,因爲 Condition

原创 劍指Offer42題解-- 動態規劃

AC 通過,動態規劃的思想 遞推+記憶化= 遞推 狀態轉移方程 public class Jianzhi42 { // 分治思想是將大問題轉換成小問題 動態規劃,其實就是遞歸+記憶化-> 遞推 //

原创 高併發系統通用設計方法是什麼?

高併發系統通用設計方法是什麼? 高併發代表着大流量,舉個例子,從古至今對黃河的治理,大禹治水是拓寬河道,清除淤泥,讓水流更通暢,流向大海。都江堰是通過引流的方式將岷江之水分流到多個支流,分擔水流壓力。三峽門和葛洲壩採用的是建造水庫

原创 劍指 Offer 40 題 最小的 K個數

輸入整數數組 arr ,找出其中最小的 k 個數。例如,輸入4、5、1、6、2、7、3、8這8個數字,則最小的4個數字是1、2、3、4。 示例 1: 輸入:arr = [3,2,1], k = 2 輸出:[1,2] 或者 [2,1