原创 jvm-第五節類加載器

# jvm-第五節類加載器 本篇知識點概況 字節碼相關知識 字節碼的基礎知識,瞭解字節碼的概念,用途,特點 字節碼的分析工具使用 class文件格式格式與詳解 字節碼的指令:基礎存儲運算指令,異常處理,裝箱拆箱,數組 熱點探測之jit

原创 圖-鄰接表-leetcode207

你這個學期必須選修 ​​numCourses​​​ 門課程,記爲 ​​0​​​ 到 ​​numCourses - 1​​ 。 在選修某些課程之前需要一些先修課程。 先修課程按數組 ​​prerequisites​​ 給出,其中 ​​prer

原创 圖-入度n-1,出度0-lc997

小鎮裏有 ​​n​​​ 個人,按從 ​​1​​​ 到 ​​n​​ 的順序編號。傳言稱,這些人中有一個暗地裏是小鎮法官。 如果小鎮法官真的存在,那麼: 小鎮法官不會信任任何人。 每個人(除了小鎮法官)都信任這位小鎮法官。 只有一個人同時滿足

原创 有向無環圖-dfs-797所有可能的路徑

給你一個有 n 個節點的 有向無環圖(DAG),請你找出所有從節點 0 到節點 n-1 的路徑並輸出(不要求按特定順序) graph[i] 是一個從節點 i 可以訪問的所有節點的列表(即從節點 i 到節點 graph[i][j]存在一條有向

原创 二叉樹-前序遍歷-leetcode222

給你一棵 完全二叉樹 的根節點 root ,求出該樹的節點個數。 完全二叉樹 的定義如下:在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層爲第 h 層,則該層

原创 二叉樹-快排-leetcode912

給你一個整數數組 nums,請你將該數組升序排列。 示例 1: 輸入:nums = [5,2,3,1] 輸出:[1,2,3,5] 示例 2: 輸入:nums = [5,1,1,2,0,0] 輸出:[0,0,1,1,2,5] 提示: 1 <=

原创 jvm-第三節jvm中的對象及引用

# jvm中的對象以及引用 問題 這篇文章主要探討的幾個問題: jvm中對象創建過程 對象的內存佈局 對象的訪問方式 如何判斷對象是否存活 對象分配策略 四種引用的區別 jvm中對象的創建過程 檢查加載:檢查指

原创 jvm-第二節jvm的內存區域

### 深入理解jvm的內存區域 分析一段代碼,看他的各個部分存儲的位置 具體分配步驟如下 首先jvm申請一篇內存區間 jvm活得內存空間後按照配置分配堆,棧,方法區空間 類加載,把class文件放入方法去區中 執行對象創建,放入堆

原创 遞歸-二叉搜索樹插入數據-leetcode701

給定二叉搜索樹(BST)的根節點 root 和要插入樹中的值 value ,將值插入二叉搜索樹。 返回插入後二叉搜索樹的根節點。 輸入數據 保證 ,新值和原始二叉搜索樹中的任意節點值都不同。 注意,可能存在多種有效的插入方式,只要樹在插入

原创 二叉搜索二叉搜索樹-leetcode-700

給定二叉搜索樹(BST)的根節點 root 和一個整數值 val。 你需要在 BST 中找到節點值等於 val 的節點。 返回以該節點爲根的子樹。 如果節點不存在,則返回 null 。 示例 1: 輸入:root = [4,2,7,1,3]

原创 jvm-第一節基礎概念

# jvm-第一節基礎概念(需要了解基礎概念,比如jvm運行時數據區都有什麼,都是幹啥的,類比os中那些部件) jvm的內存結構 jvm的全稱呼 java virtual machine,是在os的基礎上虛擬出來的一塊區域,可以調用os的

原创 遞歸-二叉搜索樹-leetcode98驗證二叉搜索樹

//leetcode submit region begin(Prohibit modification and deletion) /** * Definition for a binary tree node. * public

原创 多線程-線程池與java內存模型

多線程-線程池與java內存模型 線程池的使用(思路:什麼是線程池->他的基本構造以及參數含義->如何使用,使用過程中需要注意什麼->有哪些好用的工具類) 線程池的基笨概念:首先看一下的繼承關係,其次看他的狀態,它是利用int的高三位表

原创 多線程-aqs與reentrantLock

AQS和ReentrantLock ReentrantLock的lock特點 異常的鎖是包含死鎖和活鎖,死鎖無法解決,活鎖可以通過錯開執行時間解決 lock的特點:可打斷,可重入,可設置超時時間,可設置鎖類型(公平非公平),支持多變

原创 多線程-sychronized鎖膨脹

sychronized 什麼是cas cas的定義:在操作系統中,CAS通常代表“Compare And Swap”,它是一種原子操作,用於解決併發訪問的問題。具體地說,CAS操作會比較並交換一個內存位置的值,只有當內存位置的值與期望的