原创 sbt快速入門

sbt類似與maven, gradle的項目管理工具,主要用在scala,也可以用在java項目,本文介紹一下常用的使用命令和語法 安裝 mac brew install sbt redhat&centos # remove

原创 Elastic Stack內置nginx日誌收集

Elastic Stack內置對很多常用軟件日誌的收集和字段處理,本文介紹最常用的nginx 在Elastic Stack安裝使用後,打開Kibana頁面,開始進入內置的Nginx數據收集配置嚮導 第一步:添加數據 第二步:

原创 Postman - 使用pre-request-script動態計算簽名

OpenApi一般都有簽名,在對接的時候,不管文檔寫得多麼完善,總是會有人不明白,所以可以提供一個Postman的Collection,裏面包含了簽名邏輯 整體思路 每個對接方分配一對appKey和appSecret,其中appSec

原创 Elastic Stack安裝使用

Elastci Stack分析日誌的利器,其中最重要的組件有ElasticSearch, Kibana, Logstash, Filebeat,本文記錄快速搭建步驟,以及收集nginx的日誌 安裝ElasticSearch https:

原创 使用公鑰完成簽名驗證

在對接微信支付接口時,需要對微信支付返回的信息進行簽名驗證,防止中間人攻擊,替換微信支付返回的結果 整體過程 微信支付生成簽名:私鑰 + 內容 -> signature 調用方驗證簽名:公鑰 + 內容 驗證 signature 示例

原创 使用Postman批量測試接口

Postman功能強大,還可以用來做接口測試,也可以方便使用不同的參數批量調用,本文介紹如何從文件中加載參數,然後批量調用接口並驗證結果 批量測試接口 創建接口請求集合 使用{{xxx}}作爲佔位符,實際運行的時候會用文件中的參數替

原创 使用Arthas實現熱更新代碼

在定位問題或快速驗證問題的時候,如果還需要編碼、推送到倉庫、在編譯發佈,整個流程會比較長,我們可以使用Arthas完成熱修改代碼,實時看到最新效果 啓動arthas curl -O https://arthas.aliyun.com/a

原创 Spring Boot支持多Redis數據源

項目需要把自建redis遷移到雲服務,因爲無法做到業務無感遷移,所以業務遷移時,部分數據需要雙讀,因此需要支持多Redis數據源 支持多Redis數據源 配置信息application.yml spring: redis:

原创 如何做好一個feature owner

啓動階段 瞭解feature特性,背景,價值 價值如何體現,上線後是否有校驗的方法 記錄特性啓動前的現狀,比如性能,投訴率,下單量等;上線後再進行對比 輸出:特性啓動書 開始階段 方案確定:輸出方案文檔,給出整體方案以及關鍵路徑的設計

原创 如何閱讀開源項目的源碼

一個開源項目源碼文件一般都有數千甚至更多,如果直接從源碼開始閱讀,很容易陷入到複雜的代碼邏輯中,其實閱讀源碼最好的辦法就是一開始不要去看源碼 上手體驗 開源項目一般都有一個Quick Start欄目,可以讓人快速體驗,建立感性認識

原创 5分鐘實現第一個Flink程序

因爲網絡上很多資料都過時了,有的是版本太老了,本文針對最新版本的1.13.2快速構建一個WordCount程序 項目介紹 本文創建一個可以從網絡上讀取輸入,然後每5秒鐘輸出每個單詞個數的項目 創建maven項目 mvn archetyp

原创 Mac安裝MAT(Memory Analyzer Tool) 安裝MAT

Java服務遇到了內存泄露的問題,一般使用MAT分析,可以定位到哪一個類以及其依賴的類佔用了最多的內存。 但是MAT新版本依賴Java 11,安裝的時候還遇到了一些小麻煩。 安裝MAT 下載: https://www.eclipse

原创 SOLID-如何實現開閉原則

開閉原則,就是對擴展開放,對修改關閉,是SOLID最重要的一條原則,大部分的設計模式都是爲了實現開閉原則 如何寫出符合開閉原則的代碼 時刻具備擴展意識、抽象意識、封裝意識 開發設計的時候,需要提前設計,並預留擴展點,但是也不能陷入過度

原创 SOLID - 如何應用接口隔離原則

接口隔離原則,客戶端不應該被強迫依賴它不需要的接口。其中的“客戶端”,可以理解爲接口的調用者或者使用者。 判斷標準 從接口調用方來判斷,是否提供了多餘的能力 也就是增加不必要的依賴,而且會造成調用方使用的困惑 與單一職責原則的區別

原创 如何開始DDD領域驅動設計

最近從多種不同渠道瞭解到DDD領域驅動設計,對複雜業務的設計具有特別好的效果,本人負責的是電商業務的交易系統,正好是很適合的。 那麼應該怎麼把當前數據庫驅動設計切換DDD呢? 數據庫設計驅動特點 一般分爲Controller, Ser