原创 分佈式事務解決方案-springboot 整合rabbitMQ-圖解

代碼地址:https://github.com/ArvinHu/rabbit

原创 CopyOnWriteArrayList隨筆

CopyOnWriteArrayList內部操作   特點  多佔用內存: 寫數據時是copy了一份完整的數據,單獨進行操作 數據一致性:操作完數據,其他線程不一定能馬上讀取到最新數據 (只能保證最終數據一致性,不能保證數據實

原创 Java8 Stream 常用操作

Stream是Java8中的一大亮點,支持順序和並行聚合操作的一系列元素,爲了執行計算,流operations被組合成流管道 。 流管線由源(其可以是陣列,集合,生成函數,I / O通道等)組成,零個或多個中間操作 (其將流轉換成另一個

原创 Jdk1.7中HashMap結構及代碼追蹤

HashMap在JDK1.7版本中的數據存儲結構實際上是一個 Entry<?, ?>[] EMPTY_TABLE數組 static final Entry<?, ?>[] EMPTY_TABLE = {}; // table就

原创 Hbase操作工具類-maxVersion設置爲1,那麼相同數據在時間戳大於等於原數據時間戳時,數據會被覆蓋

Hbase依賴 <!-- 包含HbaseClient和聚合工具類 --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-

原创 Java 線程的終止方式

線程的終止 JDK中提供了stop()[不建議使用] 和 interrupt()兩種方式, 同時拋出一個未實現的destroy()[不能使用]方法, 目前stop已經被廢棄了,因爲stop是暴力停止會存在安全問

原创 Java 線程的狀態剖析及狀態的轉換

public enum State {//在Thread類中有明確定義線程的狀態[內部類] /** * Thread state for a thread which has not yet start

原创 Spring高級特性-多種類會員折扣問題

解決問題:當有多種類型的會員時,訂單計費的價格是有差異的,代碼中太多的if和else必然導致代碼的臃腫和難以維護,其實可以優雅的設計它。 1、定以訂單類 @Service @Slf4j public class OrderService

原创 Java8 一篇文章徹底弄清楚HashMap底層實現

HashMap的特點 不允許重複的key,支持Null值和Null鍵(Null鍵會被放在第一位) 元素是無序的-不能保證存儲順序 是線程不安全的(存在高併發問題) 性能較高 Java8HashMap採用的是數組+鏈表+紅黑樹的數

原创 HashSet 的內部實現

HashSet 的內部採用了HashMap作爲數據存儲 因爲HashMap是無序的,因此HashSet也不能保證元素的順序 因爲HashSet中沒有對應同步的操作,因此是線程不安全的 支持null元素(因爲hashMap也支持null鍵

原创 Hbase 2.0+壓縮及查詢性能測試

Hbase 版本爲 2.2.2 採用3個節點的集羣部署,壓縮算法採用SNAPPY  創建兩張表,一直使用壓縮算法一張不使用壓縮算法 test表使用SNAPPY 壓縮 create 'test', { NAME => 'info', CO

原创 Java7中的 ConcurrentHashMap存儲結構

Java7中的 ConcurrentHashMap總體的設計思路和Java7中的HashMap差不多,但是因爲需要支持併發的操作,那麼就需要對其中的數據結構進行加鎖處理,用以保證數據的一致性。 值得一題的是ConcurrentHash

原创 Java JDK 中提供的線程通信方式

JDK 中提供的線程通信方式 1、wait/notify方式 wait/notify要求在同步關鍵字中使用,避免了死鎖現象,但是如果不先調用wait,而先調用notify的情況下,容易導致線程永久掛起 package com.m

原创 Spring高級特性-監聽事件[觀察者模式]

1、定義一個事件      訂單支付之後的擴展業務,可直接動態擴展不用改動之前任何的代碼 package com.milla.navicat.spring.study.event; import org.springframework