原创 Hystrix常用配置

Netflix公司開源的Hystrix框架,對延遲和故障可以提供強大的容錯能力,在分佈式系統中對請求遠程系統、服務或者第三方庫產生的錯誤,通過熔斷、線程池隔離等手段,可以及時停止系統中的級聯錯誤從而起到自適應調節的作用。 Hy

原创 MySql中的範圍查詢對組合索引使用的影響

不知道大家有沒有聽過這麼一個江湖傳言: “如果組合索引中包含的列,有範圍查詢,那麼它之後的列將不會走索引”。 本着“先問是不是,再問爲什麼”的原則,我們搞個試驗。 首先準備一個表“goods_detail”,主要字段: ten

原创 類函數中獲取spring-ioc管理的bean

import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationLi

原创 guava中的事件總線(觀察者模式的應用)

觀察者模式:定義對象間一種一對多的依賴關係,使得每當一個對象改變狀態,所有依賴它的對象都會得到通知並自動更新。 Guava框架中的EventBus(事件總線)是對觀察者模式的一種實現。 EventBus是在單體架構內實現的松耦

原创 spring狀態機與自建狀態機

狀態機是有限狀態自動機的簡稱,是現實事物運行規則抽象而成的一個數學模型。目前網上已經有很多實現方案,可以根據自己需要採用。 spring狀態機框架:Spring StateMachine 在網上看了下關於spring狀態機的文

原创 canal環境搭建及基礎使用

前段時間有一個實時獲取某個表結構數據變動的需求,簡單對canal做了個瞭解,現將當時做demo的過程記錄下來。 canal工作原理 canal模擬mysql slave的交互協議,僞裝自己爲mysql slave,向mysql

原创 記一次線上事故的罪魁禍首--poi的oom

最近發生了一次線上故障 事後覆盤,發現引發當時的線上故障:內存急劇升高,docker重啓 查看日誌,發現在當時有一個商戶在不斷點擊一個導出功能(該商戶的此處數據達幾十萬),由於前端未做按鈕點擊禁用,導致用戶的多次導出請求打到服務

原创 linux中的查找相關命令

1. find Linux find命令用來在指定目錄下查找文件。任何位於參數之前的字符串都將被視爲欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。並且將查找到的子目錄和文件全部進

原创 java8日期類常用方法使用總結

java8已經推出了五六年時間了,項目中也經常用到它的一些特性,但是在日期使用方面,沒有進行過較爲全面的梳理,臨近年關,今日得空整理出來,一來備忘而來分享。 日期時間方面的常用類有三個LocalDate、LocalTime 、Lo

原创 nginx監聽相同端口通過域名分發到不同的服務

下面的配置主要解決兩個問題: 通過請求的不同域名分發到不同的服務 在後臺服務中獲取真實的遠程ip nginx配置 server { listen 80; proxy_set_header

原创 線程間通信--"wait/notify"機制

"wait/notify"機制:等待/通知機制,wait使線程暫停運行,而notify 使暫停的線程繼續運行 使用wait ,notify 和 notifyAll 時需要先對調用對象加鎖 調用wait 方法後,線程狀態有 Run

原创 docker安裝使用命令

安裝docker 安裝一些必要的系統工具: yum install -y yum-utils device-mapper-persistent-data lvm2 添加軟件源信息: yum-config-manager --ad

原创 你猜一個 TCP 連接上面能發多少個 HTTP 請求

一道經典的面試題是從 URL 在瀏覽器被被輸入到頁面展現的過程中發生了什麼? 大多數回答都是說請求響應之後 DOM 怎麼被構建,被繪製出來。但是你有沒有想過,收到的 HTML 如果包含幾十個圖片標籤,這些圖片是以什麼方式、什麼順序

原创 重新認識zookeeper

第一次接觸zookeeper是在使用dubbo的時候,它作爲服務的註冊中心。 當時只是簡單瞭解到zookeeper是一個分佈式應用程序協調服務,沒有深入系統地對它進一步瞭解。 近日,在思考一個分佈式鎖問題: 目前在項目中使用的是基

原创 springboot掃描自定義類註解、方法註解

import lombok.Data; import org.springframework.context.ApplicationListener; import org.springframework.context.event.