原创 分佈式id生成方案

ID是數據的唯一標識,傳統的做法是利用UUID和數據庫的自增ID,在互聯網企業中,大部分公司使用的都是Mysql,並且因爲需要事務支持,所以通常會使用Innodb存儲引擎,UUID太長以及無序,所以並不適合在Innodb中來作爲主

原创 第 6 章 Netty 核心模塊組件

6.1 Bootstrap、ServerBootstrap 6.2 Future、ChannelFuture Netty 中所有的 IO 操作都是異步的,不能立刻得知消息是否被正確處理。但是可以過一會等它執行完成或者直接註冊

原创 第 3 章 Java NIO 編程

3.1 Java NIO 基本介紹 Java NIO 全稱 java non-blocking IO,是指 JDK 提供的新 API。從 JDK1.4 開始,Java 提供了一系列改進的輸入/輸出的新特性,被統稱爲 NIO(即

原创 ActiveMQ

1.入門概述 1.1MQ的產品種類和對比 MQ就是消息中間件。MQ是一種理念,ActiveMQ是MQ的落地產品。不管是哪款消息中間件,都有如下一些技術維度: (1) kafka 編程語言:scala。 大數據領域的主流MQ。

原创 Kafka

一. Kafka 概述 1.1 定義 Kafka 是一個分佈式的基於發佈/訂閱模式的消息隊列(Message Queue),主要應用於大數據實時處理領域。 1.2 消息隊列 1.2.1 傳統消息隊列的應用場景 使用消息隊列的

原创 JVM----③類加載與字節碼技術2

3. 編譯期處理 4. 類加載階段 5. 類加載器 6. 運行期優化 3. 編譯期處理 所謂的 語法糖 ,其實就是指 java 編譯器把 *.java 源碼編譯爲 *.class 字節碼的過程中,自動生成和轉換的一些代碼,主

原创 JVM----④內存模型

內存模型 1. java 內存模型

原创 24.順序存儲二叉樹

基本說明: 從數據存儲來看,數組存儲方式和樹的存儲方式可以相互轉換,即數組可以轉換成樹,樹也可以轉換成數組,看下面的示意圖 要求: 上圖的二叉樹的結點,要求以數組的方式來存放 arr : [1, 2, 3, 4, 5, 6,

原创 28.樹結構實際應用---平衡二叉樹(AVL樹)

看一個案例(說明二叉排序樹可能的問題) 基本介紹 平衡二叉樹也叫平衡二叉搜索樹(Self-balancing binary search tree)又被稱爲 AVL 樹, 可以保證查詢效率較高。 具有以下特點:它是一棵空樹或它

原创 25.線索化二叉樹

先看一個問題 將數列 {1, 3, 6, 8, 10, 14 } 構建成一顆二叉樹. n+1=7 問題分析: 當我們對上面的二叉樹進行中序遍歷時,數列爲 {8, 3, 10, 1, 6, 14 } 但是 6, 8, 10,

原创 29.樹結構實際應用---多路查找樹

① 二叉樹與B樹 二叉樹的問題分析 二叉樹的操作效率較高,但是也存在問題, 請看下面的二叉樹 二叉樹需要加載到內存的,如果二叉樹的節點少,沒有什麼問題,但是如果二叉樹的節點很多(比如 1 億), 就存在如下問題: 問題

原创 22.哈希表

哈希表的基本介紹 散列表(Hash table,也叫哈希表),是根據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。這個映射函數叫做散列函數,存放記

原创 16.排序算法---希爾排序

簡單插入排序存在的問題: 數組 arr = {2,3,4,5,6,1} 這時需要插入的數 1(最小), 這樣的過程是: {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6}

原创 14.排序算法---選擇排序

基本介紹: 選擇排序屬於內部排序法,是從預排序的數據中,按指定的規則選出某一元素,再依規定交換位置後達到排序的目的。 選擇排序思想: 選擇排序(select sorting)也是一種簡單的排序方法。它的基本思想是:第一次從arr[

原创 21.查找算法

查找算法介紹 在java中,我們常用的查找有四種: 1) 順序(線性)查找 2) 二分查找/折半查找 3) 插值查找 4) 斐波那契查找 線性查找算法 1.順序(線性)查找 有一個數列: {1,8, 10, 89, 1000, 1