原创 Java Stream Map和flatmap及集合處理

編程中多數要對集合進行各種操作,獲取Map、Set、List等。 Map 比如一個對象List,獲取所有人的名字集合 @Test public void should_can_get_name_map() {

原创 Java多線程之CountDownLatch、CyclicBarrier、Semaphore與Exchanger

Java多線程有Runnable、Thread、Callable、線程池、synchronized、volatile、Lock等可以直接使用。也有線程的直接實現可用。 下邊主要講下CountDownLatch、CyclicBarrier、

原创 IntelliJ IDEA jprofiler安裝及性能分析

Eclicpse 中可以集成MAT,即 Memory Analyzer Tool。進行性能分析。 而IntelliJ 裏面可以用jprofiler 進行vm 性能分析。 jprofiler功能 JProfile是一款性能瓶頸分析工具,監控

原创 Java的SPI

什麼是SPI SPI全稱Service Provider Interface。沒有翻譯,我的理解是服務提供者的接口。 先看下圖,一般服務提供方提供服務(實現),並暴露接口。這樣調用方只需要調用暴露出的接口即可獲取服務。 也就是說,接口與服

原创 布隆過濾器Bloom filter基本原理

最近有碰到布隆過濾器,發現redis本身沒有實現它。如果使用需要再安裝這個模。 有興趣的可以自己學習下 先看下介紹 The RedisBloom module provides four data structures: a scalab

原创 Java的synchronized 瞭解

  Java中的鎖 在 Java 中主要2種加鎖機制: synchronized 關鍵字 java.util.concurrent.Lock (ReentrantLock是該接口的一個常用實現) 兩者在底層存在一些差別: synchron

原创 Java中慎用yyyy與YYYY

開始之前,先看一個單元測試跑出的結果: @Test public void should_get_string_when_given_date() { Long timeFor20191230 = 157

原创 zookeeper與客戶端curator

zookeeper zookeeper被廣泛用於分佈式服務中,如集羣,kafka等。但基本的api卻很簡單。通過客戶端調用簡單的zookeeper的api實現數據更新、節點檢測、權限控制、異步操作、事件監聽等,最終實現分佈式需要。 這裏簡

原创 Java的ConcurrentHashMap 底層瞭解

  最近有人問Java8 中ConcurrentHashMap 底層實現,這裏簡單列下。 大家都知道 Java8 對 HashMap 、ConcurrentHashMap 進行了改進,前者非線程安全,後者線程安全。 HashMap 在Ja

原创 Java日誌系統概述SLF4J、log4j、JCL、Logback

  java日誌系統經常遇到SLF4j,JCL,logback,log4j2等等。一些人可能要暈了怎麼選擇,這裏簡單說下。 發展 這些都要從Java日誌框架的元老log4j說起。java1.3之前打日誌都是採用System.out.pri

原创 Java的IO、NIO、AIO瞭解

java提供了IO、NIO、AIO包,用於處理輸入輸出。 BIO:Block IO 同步阻塞式 IO,就是我們平常使用的傳統 IO,它的特點是模式簡單使用方便,併發處理能力低。 NIO:Non IO 同步非阻塞 IO,是傳統 IO 的升級

原创 Java線程池初步瞭解

線程池 線程池初始化時即創建一些空閒的線程。當程序將一個任務提交給線程池時,線程池就會選擇一個空閒的線程來執行該任務。在任務結束以後,該線程並不會死亡,而是由線程池回收成爲空閒狀態,等待執行下一個任務。 線程池狀態 線程池狀態有如下幾種(

原创 BTrace簡單使用

BTrace:Byte trace,通過動態字節碼將跟蹤操作代碼插入到正在運行的Java程序的類中。 簡單來說,就是通過 instrument + asm,對正在運行中的類,進行動態增強。使用過Jrebel 的對此可能非常熟悉,原理類似。

原创 Redis簡單瞭解三

  事務 redis 的事務跟之前瞭解的事務不一樣。它是將多個命令請求打包,然後按順序、一次性地執行多個命令。事務執行期間,服務器不會中斷事務而去執行其他客戶端的命令。 注意,redis事務是不支持回滾的。 事務分三步: 事務開始 MUL

原创 Redis簡單瞭解一

Redis 簡單來說就是,一個鍵值對類型的單線程內存數據庫。 支持String、List、Set、Sorted Set、hashes數據類型。   數據結構 簡單動態字符串sds   簡單動態字符串(Simple Dynamic Stri