原创 OpenCV + Kotlin 實現 USB 攝像頭(相機)實時畫面、拍照 一. 業務背景 二. 原先的實現方式以及痛點 三. 使用 OpenCV 進行重構 四. 總結

一. 業務背景 我們團隊前段時間做了一款小型的智能硬件,它能夠自動拍攝一些商品的圖片,這些圖片將會出現在電商 App 的詳情頁並進行展示。 基於以上的背景,我們需要一個業務後臺用於發送相應的拍照指令,還需要開發一款軟件(上位機)用於接收拍

原创 Java 多線程模式 —— Guarded Suspension 模式 Guarded Suspension 模式的介紹 Guarded Suspension 模式的使用 總結

Guarded Suspension 模式的介紹 我們只從字面上看,Guarded Suspension 是受保護暫停的意思。 Guarded Suspension 模式 在實際的併發編程中,Guarded Suspension 模式適用於

原创 《Kotlin 進階實戰》及勘誤表 本書的內容 致謝 勘誤

我從打算寫一本 Kotlin 的書,到最終完成。斷斷續續經歷了2-3年的時間,終於在2021年的下半年10月《Kotlin 進階實戰》 出版了,書中融入了我這些年使用 Kotlin 的實踐思考與經驗積累。 該書由清華大學版社出版,目前已經在

原创 使用 Kotlin Compose Desktop 實現了一個簡易的"手機助手"

一. adbd-connector adbd-connector 是一個實現 adb server 和 adb daemon 之間的通信協議的庫,使用 Kotlin 編寫。支持 PC 端直接連接 Android 設備操作 adb 相關的指

原创 基於 Laplacian 實現簡單的圖像模糊檢測 業務背景 Laplacian 算子 圖像模糊檢測算法 總結

業務背景 從去年年底開始,我們團隊一直在做一款能夠給電商商品自動拍照的智能硬件。拍完照後,會將商品的套圖在電商平臺上進行展示。 對於要展示的商品圖片而言,我們對圖片本身的質量要求會比較高,例如不能將模糊不清的圖片進行展示。因此,需要一種圖

原创 基於 Kotlin + OkHttp 實現易用且功能強大的網絡框架(一) 一. General 二. DSL 三. Interceptors 四. Coroutines 五. WebSocket

okhttp-extension 是針對 okhttp 3 增強的網絡框架。使用 Kotlin 特性編寫,提供便捷的 DSL 方式創建網絡請求,支持協程、響應式編程等等。 其 core 模塊只依賴 OkHttp,不會引入第三方庫。 okht

原创 使用 OpenCV 實現國慶漸變版的頭像

國慶期間發現很多小夥伴的頭像都換了,添加了國旗的效果,變得更加喜慶。 該效果看上去不難,用 OpenCV 幾十行就可以實現了。 最簡單的圖像融合版本 先來一個最簡單的圖像融合版本,找一張頭像以及一張標準國旗的圖片,將找到的頭像做裁剪,大小跟

原创 Java 反射 VS Kotlin 反射

Kotlin 跟 Java 可以無縫銜接,因此 Kotlin 能夠使用 Java 的反射機制。另外,Kotlin 也有自己的反射機制,需要額外地引入 kotlin-reflect.jar。 implementation "org.jetb

原创 RxJava 容易忽視的細節: subscribeOn() 方法沒有按照預期地運行

我們知道,subscribeOn() 方法通過接收一個 Scheduler 參數,來指定對數據的處理運行在特定的線程調度器 Scheduler 上。若多次執行 subscribeOn() 方法,則只有最初的一次起作用。 subscribeO

原创 RSocket 學習(二):HTTP VS WebSocket VS RSocket 一. HTTP 的特性 二. WebSocket 的特性 三. RSocket 與這些協議的對比 參考資料

在比對 HTTP、WebSocket、RSocket 之前,我們先通過下面這張 OSI 七層模型的圖快速梳理一下網絡通信的面貌, 以便後續更好地理解它們。 一. HTTP 的特性 超文本傳輸協議(英語:HyperText Transfer

原创 RSocket 學習(一):初探 一. RSocket 介紹 二. RSocket 特點 三. RSocket 使用的術語

一. RSocket 介紹 RSocket 是一種二進制字節流傳輸協議,位於 OSI 七層模型中的5、6層,對應 TCP/IP 模型中的應用層。RSocket 並沒有規定必須使用何種底層傳輸層協議,開發者可以使用不同的底層傳輸協議,包括

原创 使用 OpenCV 替換圖像的背景 一. 業務背景 二. 技術實現 三. 總結

一. 業務背景 在我們的某項業務中,需要通過自研的智能硬件“自動化”地拍攝一組組手機的照片,這些照片有時候因爲光照的因素需要考慮將背景的顏色整體替換掉,然後再呈現給 C 端用戶。這時就有背景替換的需求了。 二. 技術實現 使用 OpenCV

原创 Kotlin 、RxJava 以及傳統的機器學習在手機質檢上的應用

一. 業務背景 隱私清除是手機質檢的重要一環,我們回收的手機在經過自動化質檢完成後,會對手機進行隱私清除。 在進行隱私清除之前,需要確保手機退出雲服務的帳號。例如 iPhone 手機需要退出 iCloud ,華爲、小米等手機都要退出對應的

原创 在 Kotlin 中使用 WebFlux + R2DBC 開發 Web 項目

一. R2DBC 介紹 在 R2DBC 官網(http://r2dbc.io/) 上,對 R2DBC 有一句話的介紹: The Reactive Relational Database Connectivity (R2DBC) proj

原创 Kotlin Contract

Kotlin 的智能推斷是其語言的一大特色。 智能推斷,能夠根據類型檢測自動轉換類型。 但是,智能推斷並沒有想象中的強大,例如下面的代碼就無法進行推斷,導致編譯失敗: fun String?.isNotNull():Boolean {