原创 《RxJava 2.x 實戰》

我最近寫了一本書《RxJava 2.x 實戰》。 該書由電子工業出版社出版,目前已經在淘寶、京東、噹噹、亞馬遜等各大電商平臺上進行銷售或預售。 京東自營 https://item.jd.com/12341530.html 天貓電子工業出

原创 Kotlin 如何優雅地使用 Scope Functions

一. Scope Functions Scope Functions :The Kotlin standard library contains several functions whose sole purpose is to ex

原创 基於 Kotlin 特性實現的驗證框架

一. kvalidation 介紹 kvalidation 地址:https://github.com/fengzhizi715/kvalidation 它包含如下的功能: DSL 風格 支持對象的驗證 內含多個驗證規則,也支持自定義驗

原创 使用 Kotlin+RocketMQ 實現延時消息

一. 延時消息 延時消息是指消息被髮送以後,並不想讓消費者立即拿到消息,而是等待指定時間後,消費者纔拿到這個消息進行消費。 使用延時消息的典型場景,例如: 在電商系統中,用戶下完訂單30分鐘內沒支付,則訂單可能會被取消。 在電商系統中

原创 Kotlin 範型之協變、逆變

一. 類(Class) 與類型(Type) Kotlin 中類和類型是不一樣的概念。 下圖充分展示了它們的區別。 二. 型變 型變是指類型轉換後的繼承關係。 Kotlin 的型變分爲逆變、協變和不變。 2.1 協變 如果 A 是

原创 Netty + ZooKeeper 實現簡單的服務註冊與發現

一. 背景 最近的一個項目:我們的系統接收到上游系統的派單任務後,會推送到指定的門店的相關設備,並進行相應的業務處理。 二. Netty 的使用 在接收到派單任務之後,通過 Netty 推送到指定門店相關的設備。在我們的系統中 Netty

原创 Kotlin 泛型之類型擦除

一. Java 泛型的優點 泛型是 Java 5 的重要特性之一。泛型的本質是參數化類型,也就是說所操作的數據類型被指定爲一個參數。這種參數類型可以用在類、接口和方法的創建中,分別稱爲泛型類、泛型接口、泛型方法。 Java 泛型的優點

原创 基於 ZooKeeper 實現爬蟲集羣的監控

ZooKeeper ZooKeeper 是一個開源的分佈式協調服務,ZooKeeper框架最初是在“Yahoo!"上構建的,用於以簡單而穩健的方式訪問他們的應用程序。 後來,Apache ZooKeeper成爲Hadoop,HBase和

原创 通用爬蟲框架中多線程的使用

一. 前言 NetDiscovery 是本人開發的一款基於 Vert.x、RxJava 2 等框架實現的通用爬蟲框架。它包含了豐富的特性。 二. 多線程的使用 NetDiscovery 雖然藉助了 RxJava 2 來實現線程的切換,仍然

原创 從源碼角度分析 Kotlin by lazy 的實現

by lazy 的作用 延遲屬性(lazy properties) 是 Kotlin 標準庫中的標準委託之一,可以通過 by lazy 來實現。 其中,lazy() 是一個函數,可以接受一個 Lambda 表達式作爲參數,第一次調用時會執

原创 Java 各種鎖的小結

一. synchronized 在 JDK 1.6 之前,synchronized 是重量級鎖,效率低下。 從 JDK 1.6 開始,synchronized 做了很多優化,如偏向鎖、輕量級鎖、自旋鎖、適應性自旋鎖、鎖消除、鎖粗化等技術來

原创 RxJava2 中 doFinally 和 doAfterTerminate 的比較

在 RxJava 中 doFinally 和 doAfterTerminate 這兩個操作符很類似,都會在 Observable 的 onComplete 或 onError 調用之後進行調用。 使用了這兩個操作符在 Observable

原创 ReentrantReadWriteLock讀寫鎖及其在 RxCache 中的使用

一. ReentrantReadWriteLock讀寫鎖 Lock 是相當於 synchronized 更面向對象的同步方式,ReentrantLock 是 Lock 的實現。 本文要介紹的 ReentrantReadWriteLock

原创 堆外內存及其在 RxCache 中的使用

RxCache RxCache 是一款支持 Java 和 Android 的 Local Cache 。目前,支持堆內存、堆外內存(off-heap memory)、磁盤緩存。 github地址:https://github.com/fe

原创 Java 字節的常用封裝

一. Java 的字節 byte (字節) 是 Java 中的基本數據類型,一個 byte 包含8個 bit(位),byte 的取值範圍是-128到+127。 byte 跟 Java 其他基本類型的關係: 基本類型 所佔字節數 備註