原创 嗶哩嗶哩淘寶小程序盲盒抽獎實踐

目錄 背景 名詞解釋 整體業務流程 技術實現 調用鏈路 雲開發( Serverless ) 雲開發的限制 編寫雲函數 怎麼拿到授權查詢輕店鋪用戶訂單 輕店鋪雲網關 數字簽名網關 網關技術選型 Vert.x介紹 同步和異步 阻塞和非阻塞 I

原创 JavaMail的大坑

關於郵箱的坑,不妨先看一篇幽默的文章(=^ ◡ ^=):救命!我的電子郵件發不到 500 英里以外! 問題背景 一般使用JavaMail發送郵件大致過程如下,創建同郵件服務的Session,配置Session參數等: // Com

原创 fastjson1.2.9解析帶abstract方法枚舉棧溢出剖析

一、案例背景 一個類裏面添加了枚舉,通過fastjson把該類解析爲json的過程報錯。 二、 案例現場 定義一個帶abstract方法的枚舉 public enum OpenSourceEnum { BILIBILI(

原创 使用性能分析工具定位Spring Boot啓動慢問題

背景 項目最近做了大的改動,添加了大量配置,Spring Boot項目啓動時間從原來的100秒變成了400秒以上。從大量無效日誌中一時難以看出瓶頸所在。首先需要一款性能分析軟件,發現Intel® VTune™ Profiler對項

原创 Job輪詢總結與思考

  背景 在業務數據沒達到一定量又不想引入分佈式事務框架增加複雜性,基於Job框架實現的補償方案不失爲一種簡單優雅的方案。 微服務環境下雖然使用了retry框架,對一些冪等的接口一次失敗多次嘗試,但有些場景比如下單後無庫存,要保證庫存在一

原创 首頁性能優化實戰

背景 商品首頁需要在部分商品詳情裏展示已下單總額,通過商品Id查詢已支付訂單總金額。 由於分庫分表後訂單數據分佈在多個庫多個表中,而商品id並不是分庫分表的路由id,每次得根據商品id到多個庫多個表裏面窮舉查詢。耗時200多毫秒,影響用戶

原创 對象池化工具commons-pool

  關於對象池的概念這裏不做過多解釋,除了用來緩存數據庫連接java.sql.Connection這種重量級對象也能用於其他場景。初始化對象的代價高,就值得池化。池化的一個代價是被重用的對象會在堆中停留很長時間。如果有大量對象存在

原创 一步步降低代碼複雜度

Table of Contents   1 Sonar認知複雜度計算規則 2 降低複雜度 2.1 降低複雜度前的準備 2.2 一個for循環只做一件事 2.3 減少for循環中的if else、continue 2.4 抽離try/cat