原创 踩坑筆記 —— Arrays.sort()方法

Arrays.sort()方法是一個java自帶的爲數組排序的方法,排序方法爲雙軸快排(具體雙軸快排可以自行百度一下,後續有精力的話我也會總結一篇該算法的文章),雖然一直知道這個方法但是其實很少用到,今天在刷leetcode的時候正好碰到

原创 JAVA基礎——HashMap線程安全

接觸過HashMap的人應該對線程安全問題都不陌生,就算是沒踩過多線程下HashMap的坑,起碼在學習的過程中應該也聽說過是非線程安全的,幾乎你問每一個程序員hashmap是不是線程安全的,大家都會告訴不是的,那麼我來從個人層面探討一下看

原创 強轉Integer的危險性以及工具類的理解

今天要記錄的最近上線的一個bug,本身很簡單,修復的也很快但是確實不應該發生。 首先代碼裏是通過redisson從redis裏取出一個關於用戶的緩存,用戶緩存信息使用map結構存儲,因爲value值相對變化比較多,有int型的us

原创 URLEncoder轉換字符串問題

今天在開發過程中遇到了一個坑,關於使用URLEncoder去encode字符串的問題,是解析一個下載地址,由於下載文件名中含有空格,導致encode之後所有空格變成了“ + ”,url拼接自然就出錯了,下載地址相應不到報了404異常,由於

原创 解決jar包輸出中文亂碼問題

今天週末在家擼代碼的時候遇到了一個小問題,特此記錄一下 在windows的電腦上寫了一個工具類,通過idea打成了jar包方便後續直接使用,功能比較簡單,例如main方法的入參是名字xxx,然後會根據一定的格式在指定目錄下生成一個

原创 SpringCloud學習筆記——分佈式配置中心客戶端

客戶端詳解 在學習瞭如何配置Spring Cloud Config配置中心後,現在我們需要一個客戶端來使用配置中心。 服務化配置中心 在微服務體系中,任何模塊都應該服務化,任何需要服務化的東西都只需要向註冊中心進行註冊,就可以簡單

原创 SpringCloud學習筆記——消息總線

在微服務的架構中,會使用輕量級的消息代理去構建一個消息主題,讓微服務中所有的實例都連接上來,主題中生產出的所有消息會被所有實例監聽並且消費,這就稱之爲消息總線,有點兒類似於計算機架構中的消息總線的概念。有了這樣一條總線就可以很方便

原创 SpringCloud學習筆記——分佈式配置中心

這一篇要學習的是SpringCloud中的新項目————配置中心,這一部分相對於前面來說屬於相對比較獨立的部分,在日常開發中配置文件幾乎存在於各個應用之中,常見的是數據庫的配置文件,項目框架的配置文件以及應用中使用的動態參數組成的

原创 SpringCloud學習筆記——聲明式服務調用Feign

Feign簡介 在前面我們已經搭建了Spring Cloud中的Ribbon和Hytrix,從而實現了微服務架構中客戶端的負載均衡以及斷路器機制保護服務,這兩者的使用非常廣泛並且經常一起出現,SpringCloud Feign其實

原创 SpringCloud學習筆記——服務註冊

註冊服務提供者 在上一篇文章中我們搭建了一個高可用的服務註冊中心,既然服務註冊中心搭建完成,那麼空有一個註冊中心毫無意義,重要的是提供服務,所以我們現在可以嘗試像註冊中心註冊一個服務的提供者,依舊類似於之前的方式生成一個Sprin

原创 SpringCloud學習筆記——服務容錯保護

服務容錯保護 在前面的微服務架構學習中我們已經有了自己的註冊中心集羣,服務提供者集羣,以及一個處理客戶端請求的負載均衡,但是微服務的世界裏首先有一條黃金法則:永遠不要相信第三方服務。也就是說在微服務中系統被拆分成了很多個模塊,隨着

原创 SpringCloud學習筆記——服務消費

在前文中我們已經搭建了高可用的註冊中心,並向註冊中心註冊了兩個服務,hello-service,現在已經有了服務的提供方,那麼自然也要有服務的消費方,這篇文章就來搭建一個服務消費者,可以發現並且消費服務。服務的發現是由Eureka

原创 Spring Cloud學習筆記——搭建註冊中心

服務治理 服務治理是微服務中最核心和最基礎的模塊,用於各個微服務的註冊和發現功能。在系統發展的初期可能由於模塊不多,完全可以通過一些靜態配置文件保存各個服務的地址,在各個項目中手工維護一份服務的實例清單。其實技術沒有好與壞之分,只

原创 Spring Cloud學習筆記——微服務基礎知識

基礎知識 微服務架構 簡單來說微服務架構就是把一個原本整合在一起的系統拆分成多個系統。微,代表了每個系統拆分的體積都不是很大,便於後期的維護和管理。服務,代表了系統拆分後的職責是對外提供服務,無論是業務功能或者是數據支持等等,

原创 MySQL數據orderby時間排序bug

懶得看我廢話的同學直接看結論: MySQL數據庫中datetime和datetime(n) 0<=n<=6 是有精度區別的,如果你默認datetime,那其實只是精確到了秒,如果此時基於這個字段排序,同一秒的請求排序很有可能不是