原创 Phaser多任務協同的神器

上篇 CyclicBarrier多任務協同的利器 我們藉助部門TB團建的例子,一步步分析了 CyclicBarrier 多線程協調的功能。 並在文章末尾,留出思考: 實際部門TB活動中,可能有人白天有事,不能參加公園的活動、但晚上

原创 終於有人把Java內存模型(JMM)說清楚了

  網上有很多關於Java內存模型的文章,在《深入理解Java虛擬機》和《Java併發編程的藝術》等書中也都有關於這個知識點的介紹。但是,很多人讀完之後還是搞不清楚,甚至有的人說自己更懵了。本文,就來整體的介紹一下Java內存模型,目的

原创 Redis底層協議RESP詳解

RESP 文章開始前,先放出兩道面試題 1.Redis底層,使用的什麼協議? 2.RESP是什麼,在Redis怎麼體現的? 帶着這兩個問題,來一探究竟。 什麼是 RESP? 是基於TCP的應用層協議 RESP(REdis Se

原创 手寫Redis客戶端-實現自己的Jedis

手寫Redis客戶端-實現自己的Jedis 上一篇,我們詳細研究了Redis底層使用的協議——RESP(REdis Serialization Protocol),這篇我們在基於理解了RESP原理的基礎上,手寫一個Redis客戶端

原创 開闢鴻蒙,聊聊華爲微內核

  曾經,微內核的操作系統一直活在實驗室裏,從來沒走出過實驗室。無數教授拿着教材說“微內核的操作系統沒有實現過”。 過了昨天,這句話就就成爲歷史了。 操作系統(Operating System)內核有幾種? 操作系統內核kernel,

原创 Redis鍵空間通知(Keyspace Notifications)

Redis Keyspace Notifications https://redis.io/topics/notifications Redis 是一個鍵值對數據庫服務器,服務器中每個數據庫都由 redisDB 結構表示(默認

原创 CyclicBarrier的剋星—BrokenBarrierException

上篇 CyclicBarrier多任務協同的利器 我們藉助部門TB的例子,一步步分析了 CyclicBarrier 多線程協調的功能。 CyclicBarrier 功能強大的同時,意味着提供了更多的API,並且在使用過程中,可能有

原创 CyclicBarrier多任務協同的利器

疫情逐漸好轉,部門也有半年多沒有TB團建了,並且金三銀四,部門又招了一波新人; leader讓你組織一次TB:週六上午,大家先到公司集合,然後一起去朝陽公園玩,最後一起去餐廳聚餐,然後回家。 爲了體現團隊集體意識,在每次開啓新項目

原创 CountDownLatch的兩種常用場景

CountDownLatch的兩種使用場景 先來看看 CountDownLatch 的源碼註釋; /** * A synchronization aid that allows one or more threads to wa

原创 Spring LDAP的使用

LDAP入門http://www.jianshu.com/p/7e4d99f6baaf       Spring LDAP,是Spring的一個組件,實現對LDAP的操作。   在編程操作MySQL時,我們除了用JDBC,可能都會選用一些

原创 Redis dict詳解

dict,又稱字典(dictionary)或映射(map),是集合的一種;這種集合中每個元素都是KV鍵值對。 字典dict在各編程語言中都有體現,面向對象的編程語言如C++、Java中都稱其爲Map。 Redis的KV存儲結構

原创 一文掌握Redis持久化

Redis持久化 Redis常用作KV緩存,熱點數據都在內存、訪問速度極快。 但誰也不能保證服務的100%可用,意外宕機內存中的數據就沒了,對一些數據敏感的業務勢必會造成影響。 因此,Redis提供了持久化,目的就是將內存中的數據

原创 使用pipeline加速Redis

面試官:怎麼快速刪除10萬個key? 某廠面試題:prod環境,如何快速刪除10萬個key? 帶着思考,我們一來研究Redis pipeline。 why pipeline ? Redis客戶端與server的請求/響應模型

原创 LDAP入門

LDAP入門     首先要先理解什麼是LDAP,當時我看了很多解釋,也是雲裏霧裏,弄不清楚。在這裏給大家稍微捋一捋。   首先LDAP是一種通訊協議,LDAP支持TCP/IP。協議就是標準,並且是抽象的。在這套標準下,AD(Active

原创 Java 實現大數次方、階乘

/** * Java 實現大數次方、階乘 * @param args */ public static void main(String[] args) { // 計算 19