原创 Java多線程中的wait/notify通信模式

前言   最近在看一些JUC下的源碼,更加意識到想要學好Java多線程,基礎是關鍵,比如想要學好ReentranLock源碼,就得掌握好AQS源碼,而AQS源碼中又有很多Java多線程經典的一些應用;再比如看了線程池的核心源碼實現,又學到

原创 詳解Java鎖的升級與對比(1)——鎖的分類與細節(結合部分源碼)

前言   之前只是對Java各種鎖都有所認識,但沒有一個統一的整理及總結,且沒有對“鎖升級”這一概念的加深理解,今天趁着週末好好整理下之前記過的筆記,並歸納爲此博文,主要參考資源爲《Java併發編程的藝術》與《Java多線程編程核心技術》

原创 認識Redis集羣——Redis Cluster

前言   Redis集羣分三種模式:主從模式、sentinel模式、Redis Cluster。之前沒有好好的全面理解Redis集羣,特別是Redis Cluster,以爲這就是redis集羣的英文表達啊,故寫本篇博文來儘可能全面加深理解

原创 工作三年多的感慨與總結(二) 工作三年多的感慨與總結(一)

前言   上週寫了“工作三年多的感慨與總結(一)”,最後說想再繼續記錄下自己9-11月份這兩個月經歷的一些面試(其實也就是一些奇葩經歷),經過這些面試讓我深知一些面試套路,同時也讓自己查缺補漏了很多知識點;   還是繼續介紹下背景:博主主

原创 工作三年多的感慨與總結(一) 工作一年多的感慨與總結(一)

前言   以前寫過“工作一年多的感慨與總結(一)”,現在突然怎麼就突然三年多了呢,沒錯,中間那一年也就是2019-2020年這一年,我在號稱是外包巨頭的某公司被“人力外包”駐場開發,各種忙加班單休,搞得整個人都疲憊,懶懶散散看了很多資料電

原创 Nacos+Spring Cloud Gateway動態路由配置

前言   Nacos最近項目一直在使用,其簡單靈活,支持更細粒度的命令空間,分組等爲麻煩複雜的環境切換提供了方便;同時也很好支持動態路由的配置,只需要簡單的幾步即可。在國產的註冊中心、配置中心中比較突出,容易上手,本文通過gateway、

原创 MySQL鎖:InnoDB行鎖需要避免的坑 MySQL優化(1)--------常用的優化步驟 MySQL優化(2)--------常用優化

  前言   換了工作之後,接近半年沒有發博客了(一直加班),emmmm.....今天好不容易有時間,記錄下工作中遇到的一些問題,接下來應該重拾知識點了。因爲新公司工作中MySQL庫經常出現查詢慢,鎖等待,節點掛掉........等一系列

原创 Redis的主從複製

前言   關係數據庫通常會使用一個主服務器向多個從服務器發送更新,並使用從服務器來處理所有的讀請求,Redis採用了同樣方法來實現自己的複製特性。   簡單總結起來就是:在接收到主服務器發送的數據初始副本之後,客戶端每次主服務器進行寫命令

原创 我在開發中常忽視的安全問題

前言   前不久,開發的任務告一段落。後來得知項目中bug比較多,需要去逐一檢查修復,苦於沒有專業的測試工程師,只好硬着頭皮上(覺得能學到很多東西),也學會了一些安全測試常用軟件基本操作,比如Burpsuite、sqlmap等。今天做一些

原创 四種途徑提升RabbitMQ傳輸數據的可靠性

前言 RabbitMQ雖然有對隊列及消息等的一些持久化設置,但其實光光只是這一個是不能夠保障數據的可靠性的,下面我們提出這樣的質疑: (1)RabbitMQ生產者是不知道自己發佈的消息是否已經正確達到服務器呢,如果中間發生網絡異常等情況呢

原创 Spring Cloud Hystrix理解與實踐(一):搭建簡單監控集羣

   前言   在分佈式架構中,所謂的斷路器模式是指當某個服務發生故障之後,通過斷路器的故障監控,向調用方返回一個錯誤響應,這樣就不會使得線程因調用故障服務被長時間佔用不釋放,避免故障的繼續蔓延。Spring Cloud Hystrix實

原创 Spring Boot自動配置原理與實踐(一)

前言   Spring Boot衆所周知是爲了簡化Spring的配置,省去XML的複雜化配置(雖然Spring官方推薦也使用Java配置)採用Java+Annotation方式配置。如下幾個問題是我剛開始接觸Spring Boot的時候經

原创 Spring Boot整合Spring Batch

引言   Spring Batch是處理大量數據操作的一個框架,主要用來讀取大量數據,然後進行一定的處理後輸出指定的形式。比如我們可以將csv文件中的數據(數據量幾百萬甚至幾千萬都是沒問題的)批處理插入保存到數據庫中,就可以使用該框架,但

原创 Spring Boot整合Redis

一、Spring Boot對Redis的支持 Spring對Redis的支持是使用Spring Data Redis來實現的,一般使用Jedis或者lettuce(默認),Java客戶端在 org.springframework.boot.

原创 如何正確使用Java序列化?

前言   什麼是序列化:將對象編碼成一個字節流,這樣一來就可以在通信中傳遞對象了。比如在一臺虛擬機中被傳遞到另一臺虛擬機中,或者字節流存儲到磁盤上。   “關於Java的序列化,無非就是簡單的實現Serializable接口”這樣的說法只