原创 FastDFS集羣搭建 + Spring Boot集成

    FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題,同時也能做到在集羣環境下一臺機子上傳文件,同時該組下的其他

原创 HttpServletRequestWrapper的應用

    最近的一個項目前後端分離,然後後端自定義Filter,通過繼承org.springframework.web.filter.OncePerRequestFilter實現在請求到達Controller層之前進行統一的參數驗籤

原创 生產環境不同問題定位及分析

    在實際的程序運行中,有很多問題只有在線上或者預發佈環境纔會出現,而線上又不能調試代碼,所以線上問題定位只能看日誌,系統狀態和dump線程。 一. 生產環境服務器變慢,診斷思路和性能評估 系統日誌:/var/log/m

原创 GitHub的騷操作

Github,一個被業內朋友成爲「全球最大的同性交友社區」的平臺。 一. GitHub操作之常用詞 如何找到優秀的源碼 + 進行深度的框架解讀 watch:會持續收到該項目的動態 fork:複製某個項目到自己的Github倉

原创 基於RabbitMQ的分佈式事務解決方案

具體實現代碼:https://github.com/Go007/springboot-mq 一. 多系統間的分佈式事務問題 假設一個外賣系統,其中有訂單系統和運單系統,用戶下單,在訂單系統生成訂單後,調用運單系統,生成派送信息,

原创 Docker:安裝RabbitMQ

一. 拉取RabbitMQ官方鏡像 docker search rabbitmq #該版本包含了web控制頁面 docker pull rabbitmq:management 二. 運行鏡像,創建容器 #方式一:默認guest

原创 排序(二):冒泡排序法

一. 基本思想     通過從左到右不斷交換逆序的相鄰元素,在一輪的交換之後,可以讓未排序的元素上浮到右側。在一輪循環中,如果沒有發生交換,就說明數組已經是有序的,此時可以直接退出。 二. 代碼實現 版本一 /** - <

原创 排序(五):歸併排序法

一. 基本思想     歸併排序的思想是將數組分成兩部分,分別進行排序,然後歸併起來。把長度爲n的輸入序列分成兩個長度爲n/2的子序列;對這兩個子序列分別採用歸併排序;將兩個排序好的子序列合併成一個最終的排序序列。 二.

原创 MySQL(十):MySQL鎖機制

一. 概述     鎖是計算機協調多個進程或線程併發訪問某一資源的機制。在數據庫中,除傳統的計算資源(如CPU、RAM、I/O等)的爭用以外,數據也是一種供許多用戶共享的資源。如何保證數據併發訪問的一致性、有效性是所有數據庫必須解

原创 MySQL(十一):MySQL主從複製

一. 複製的基本原理 slave會從master讀取binlog來進行數據同步。 複製過程分爲以下三步: (1) master將改變記錄到二進制日誌(binary log)。這些記錄過程叫做二進制日誌事件,binary log e

原创 深度剖析池化技術內幕---高性能底層組件探祕

    JDK中有常量池,線程池,數據庫操作有連接池,那麼這些池到底是什麼?有什麼作用?底層原理是啥?下面以連接池示例。 測試環境:JDK1.8 + MySQL8.0.16 + Spring Boot 2.1.3.RELEASE

原创 設計模式---觀察者模式

一. 概述     觀察者模式:對象之間多對一依賴的一種設計方案,被依賴的對象爲Subject,依賴的對象爲Observer,Subject通知Observer變化。 Subject:登記註冊、移除和通知 register

原创 設計模式---策略模式

一. 概述 策略模式(Strategy Pattern)中,定義算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶。 這算法體現了幾個設計原則: 第一、把變化的代碼從不變的代碼中分離出來; 第二

原创 設計模式---狀態模式

一. 概述 狀態模式(State Pattern):它主要用來解決對象在多種狀態轉換時,需要對外輸出不同的行爲的問題。狀態和行爲是一一對應的,狀態之間可以相互轉換。 當一個對象的內在狀態改變時,允許改變其行爲,這個對象看起來像是

原创 設計模式---中介者模式

一. 概述 中介者模式(Mediator Pattern),用一箇中介對象來封裝一系列的對象交互。中介者使各個對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。 中介者模式屬於行爲型模式,使代碼易於維