原创 票據系統設計

最近做票據系統,在此做一個總結。下面從幾個關鍵點逐一來闡述。 1. 庫存 通俗地講,票據系統的主要功能是出票、買票、賣票。買賣雙方之間的交易就形成了票據的流轉。這個過程中,票是最關鍵的元素。票據庫存是整個票據系統的核心,所有業務最終都是對庫

原创 MQ收到無序的消息時如何進行業務處理

業務背景 跟第三方系統做對接,雙方通過ActiveMQ進行通信,消息之間是有內在關聯的,也就是消息本來應該是有業務順序的,但由於一些原因,現在收到消息是亂序的,這種情況下做業務處理就有一點小問題了 方案一:自己重排序 收到消息後,自己在內存

原创 pip指定鏡像安裝

清華大學開源軟件鏡像站  

原创 MySQL樹形結構表設計

兩個字段: pid:父級ID parent_ids:所有經過的路徑節點ID 這樣設計有個好處是,可以查任意節點的所有子節點,從任意節點開始既可以向上查,也可以向下查 select * from enterprise where fin

原创 Apache RocketMQ 5.0 筆記

RocketMQ 5.0:雲原生“消息、事件、流”實時數據處理平臺,覆蓋雲邊端一體化數據處理場景。 核心特性 雲原生:生與雲,長與雲,無限彈性擴縮,K8s友好 高吞吐:萬億級吞吐保證,同時滿足微服務與大數據場景 流處理:提供輕量、高擴展、

原创 優化if...else...語句

寫代碼的時候經常遇到這樣的場景:根據某個字段值來進行不同的邏輯處理。例如,不同的會員等級在購物時有不同的折扣力度。如果會員的等級很多,那麼代碼中與之相關的if...elseif...else...會特別長,而且每新增一種等級時需要修改原先的

原创 Activiti7+SpringBoot

1. 版本問題 1.1. Activiti版本 7.1.0-M6是最後一個支持JDK1.8的版本,此後的版本都要求JDK11以上 目前,Activiti最新版本是7.6.0,它是用JDK11編譯的,因此要想使用最新版7.6.0必須升級JDK

原创 Seata 1.5.2 源碼學習(事務執行)

關於全局事務的執行,雖然之前的文章中也有所涉及,但不夠細緻,今天再深入的看一下事務的整個執行過程是怎樣的。 1. TransactionManager io.seata.core.model.TransactionManager是事務管理器

原创 Seata 1.5.2 源碼學習(Client端)

在上一篇中通過閱讀Seata服務端的代碼,我們瞭解到TC是如何處理來自客戶端的請求的,今天這一篇一起來了解一下客戶端是如何處理TC發過來的請求的。要想搞清楚這一點,還得從GlobalTransactionScanner說起。 啓動的時候,

原创 Seata Server 1.5.2 源碼學習

Seata 包括 Server端和Client端。Seata中有三種角色:TC、TM、RM,其中,Server端就是TC,TM和RM屬Client端。Client端的源碼學習上一篇已講過,詳見 《Seata 1.5.2源碼學習》,今天來學習

原创 博客園美化 —— 旋轉立方體效果

博客園美化,旋轉立方體 可自行調整位置,並替換圖片,示例代碼如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" conten

原创 分佈式事務框架 Seata 入門案例

1.  Seata Server 部署 Seata分TC、TM和RM三個角色,TC(Server端)爲單獨服務端部署,TM和RM(Client端)由業務系統集成。 首先,下載最新的安裝包 也可以下載源碼,然後本地編譯。最新的版本是1.5.

原创 Spring Retry 重試

重試的使用場景比較多,比如調用遠程服務時,由於網絡或者服務端響應慢導致調用超時,此時可以多重試幾次。用定時任務也可以實現重試的效果,但比較麻煩,用Spring Retry的話一個註解搞定所有。話不多說,先看演示。 首先引入依賴 <depen

原创 MySQL 窗口函數

1. 窗口函數概念和語法 窗口函數對一組查詢行執行類似聚合的操作。然而,聚合操作將查詢行分組到單個結果行,而窗口函數爲每個查詢行產生一個結果: 函數求值發生的行稱爲當前行 與發生函數求值的當前行相關的查詢行組成了當前行的窗口 相比之下,

原创 Java根據Freemarker模板生成Word文件

1.  準備模板 模板 + 數據 = 模型 1、將準備好的Word模板文件另存爲.xml文件(PS:建議使用WPS來創建Word文件,不建議用Office) 2、將.xml文件重命名爲.ftl文件 3、用文本編輯器打開.ftl文件,將