原创 【微服務】註冊中心的設計和實現

當項目由單體結構拆分成一個個的服務,服務之間由本地調用轉變成遠程調用的時候,我們可以看成是通過一個個的url去獲取數據。調用方和被調用方需要知道彼此的狀態纔可互相通信,而註冊中心正是屏蔽了他們之間的狀態信息,使得服務之間不需要維護彼此的數據

原创 詳解JVM垃圾收集器和內存分配策略

JVM的內存結構模型由方法區、堆、虛擬機棧、本地方法區和程序計數器五個部分組成。虛擬機棧、本地方法和程序計數器是線程私有的,隨着方法或線程的結束,對應的內存也被回收了,而Java虛擬機規範也指出可不對方法區(jdk8叫元空間)做垃

原创 除了負載均衡,你還了解Nginx的那些功能?

Nginx應該是現在最火的web和反向代理服務器,是一款誕生於俄羅斯的高性能web服務器,尤其在高併發情況下,相較Apache,有優異的表現。除了負載均衡,以下還整理了Nginx的一些其他常見功能。 一、靜態代理 Nginx擅長處

原创 JUC中常見的併發工具類

1. CountDownLatch CountDownLatch允許一個或多個線程等待其他線程完成操作。簡單理解便是阻塞當前線程後不斷去監聽其他線程的狀態,等到其他線程都完成操作後,當前線程纔會繼續執行,但該類監聽粒度又比較細。

原创 詳解zookeeper的leader選舉算法

zookeeper是一個基於觀察者模式設計的分佈式服務管理框架,負責管理和存儲數據,接收觀察者的註冊。存儲結構類似於linux目錄結構,默認每個節點最多能存儲1M數據,因此並不能當做平常的RDB使用。zookeeper做爲一箇中間

原创 一個定位基礎開發的項目

JavaMark,一個開箱即用定位於基礎開發的項目,項目地址https://github.com/lveeJava/javamark,歡迎star 每一個開源的項目就像剛出生的孩子,都值得細心去呵護。今天的內容不是一篇技術分享

原创 對一個項目的記錄(JavaMark)

JavaMark,一個開箱即用定位於基礎開發的項目,項目地址https://github.com/lveeJava/javamark,歡迎star 每一個開源的項目就像剛出生的孩子,都值得細心去呵護。今天的內容不是一篇技術分享,而是對自

原创 Redis基礎篇-基本數據類型和API運用

Redis是一個基於內存亦可持久化的日誌型數據結構存儲,基於RESP協議進行通訊,可用於數據庫、緩存和消息隊列。協議簡單,數據在內存中進行操作同時又是單線程運行,避免了資源競爭以及線程之間上下文切換的開銷,因此Redis的速度很快。但同時也

原创 如何避免消息隊列的重複消費

消息隊列在數據傳輸的過程中,爲了保證消息傳遞的可靠性,一般會對消息採用ack確認機制,如果消息傳遞失敗,消息隊列會進行重試,此時便可能存在消息重複消費的問題。比如,用戶到銀行取錢後會收到扣款通知短信,如果用戶收到多條扣款信息通知則會有困惑。

原创 HDFS結構體系和核心流程分析

近年來,隨着大數據行業的興起,hadoop在技術圈內也混得風生水起。hadoop起源於谷歌關於處理大數據量的計算和存儲的兩篇論文,遵循分而治之,優先計算的思想設計。個人感覺hadoop在計算的思想上跟Java中的fork-join框架很相似

原创 zookeeper的leader選舉算法,撥開代碼看本質

zookeeper是一個基於觀察者模式設計的分佈式服務管理框架,負責管理和存儲數據,接收觀察者的註冊。默認每個節點最多能存儲1M數據,因此並不能當做平常的RDB使用。zookeeper做爲一箇中間層,使得客戶端和服務端的耦合性很小,可被應用

原创 Java實現經典排序算法

選擇排序 定義一個的標誌位temp,默認爲比較的第一個數的下標,分別與後面的數進行比較,若比比較的數字大,則把該數的下標賦給temp,循環一次結束後判斷temp的值,若temp值跟第一個數的下標不一樣,則把第一個數跟下標爲temp的值交換

原创 開發利器,Mybatis逆向工程

使用SSM,很大一部分在於接口的實現。Mybatis將開發者的注意力集中到了sql語句上,對於的sql的操作也比較靈活。但與此伴隨着的是大量的mapper.xml的編寫,如果開發者把大量的時間耗費在了配置文件的編寫上,而忽視了sql語句的

原创 使用多線程之間的通信模擬隊列

在java多線程中,JDK爲我們提供了wait和notify實現對進程的控制,兩者要和synchronized關鍵字一起使用,並且需要先獲取對象鎖。wait是釋放鎖,notify是不釋放鎖。 舉個例子: ListDemo代碼: publ

原创 基於POI實現Excel表的導入導出功能

對於批量數據的操作,在項目中引進Excel的導入和導出功能是個不錯的選擇。對於Excel表的結構,簡單理解可以把它分成三部分(Sheet,Cell,Row),這三部分可以理解爲excel表中的頁,列,行。因此,我們想要獲取到某一個單元的內