原创 JUC知識點總結(三)ReentrantLock與ReentrantReadWriteLock源碼解析

8. Lock接口 (ReentrantLock 可重入鎖) 特性 ReentantLock 繼承接口 Lock 並實現了接口中定義的方法, 它是一種可重入鎖, 除了能完成 synchronized 所能完成的所有工作外,還提供了

原创 Redis的持久化——RDB與AOF對比

Redis的持久化 RDB(Redis DataBase) RDB即在指定的時間間隔內將內存中的數據集快照寫入磁盤,也就是Snapshot快照,它恢復時是將快照文件直接讀到內存裏。 Redis會單獨創建(fork)一個子進程來進行

原创 JUC知識點總結(八)線程池面試知識點總結

15. 線程池 15.1 爲什麼要使用線程池? 降低資源消耗:通過重複利用已創建的線程降低線程創建和銷燬造成的消耗 提高響應速度:任務到達時,任務可以不需要等到線程創建就能立即執行 提高線程的可管理性 15.2 線

原创 JUC知識點總結(七)ConcurrentLinkedQueue知識點總結

13. ConcurrentLinkedQueue (循環CAS) 應用場景: 按照適用的併發強度從低到高排列如下: LinkedList/ArrayList 非線程安全,不能用於併發場景(List的方法支持棧和隊列的操作,因

原创 JUC知識點總結(二)Synchronized底層原理總結

7. synchronized關鍵字(重量級鎖) synchronized在JVM中的實現原理: JVM基於進入和退出Monitor對象來實現方法同步和代碼塊同步,但兩者的表現細節不同。**本質是對一個對象的監視器(monit

原创 818. 賽車

818. 賽車 問題描述: 你的賽車起始停留在位置 0,速度爲 +1,正行駛在一個無限長的數軸上。(車也可以向負數方向行駛。)你的車會根據一系列由 A(加速)和 R(倒車)組成的指令進行自動駕駛 。 當車得到指令 “A” 時,

原创 緩存算法:LFU和LRU的JAVA實現

LFU、LRU的實現總結 LFU和LRU均是常見的緩存算法,其中LFU表示最不經常使用,LRU表示最近最少使用。 10.1 LRU(Least Recently Used) 定義 LRU (最近最少使用) 緩存機制要求支持以下操作

原创 Hadoop文件系統——HDFS的組織架構設計

一、Hadoop Distributed FileSystem(HDFS) 1. HDFS的設計 HDFS時爲以流式數據訪問模式存儲超大文件而設計的文件系統,在商用硬件集羣上運行。 1.1 文件塊(Block) HDFS以塊爲單位

原创 JUC知識點總結(八)CopyOnWrite機制及其在JAVA中的實現

14. CopyOnWrite 寫時複製, 即在往集合中添加數據的時候,先拷貝一份存儲的數組,然後添加元素到這份副本中,然後用副本去替換原先的數組。併發寫入的時仍然通過synchronized加鎖。 14.1 特點: 相較於讀寫

原创 Hadoop文件系統——HDFS讀寫數據流

2. HDFS數據流 2.1 文件讀取流程剖析(重要) [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1a48nDo0-1586279469073)(picture\read.jpg)] publ

原创 LeetCode 32:最長有效括號——三種解法的總結思考

9. LeetCode 32:最長有效括號 給定一個只包含 ‘(’ 和 ‘)’ 的字符串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: “(()” 輸出: 2 解釋: 最長有效括號子串爲 “()” 示例 2: 輸入:

原创 TopK問題的兩種常見解法

5. TopK問題 解法1:改進的快排 O(n) public int[] getLeastNumbers(int[] arr, int k) { if(arr.length<=k){return arr;}

原创 MapReduce中的數據輸入——切片與數據處理

2. MapReduce中的數據輸入 2.1 文件切片 2.1.1 什麼是切片 數據塊(Block):HDFS中數據保存的單位,HDFS在物理上將數據分爲一個一個Block管理 數據切片(Split):在邏輯上對Map任務輸入數據

原创 Kafka高性能的原因——零拷貝機制

3.2 零拷貝(Kafka高性能的原因之一) “零拷貝”通常是指計算機在網絡上發送文件時,不需要將文件內容拷貝到用戶空間(User Space)而直接在內核空間(Kernel Space)中傳輸到網絡的方式。 Kafka所有數據的

原创 MapReduce的詳細工作流程

3. MapReduceTask工作流程 整理自Hadoop技術內幕 3.1 概述 MapReduce框架中,一個Task被分爲Map和Reduce兩個階段,每個MapTask處理數據集合中的一個split並將產生的數據溢寫入本地