SpringBoot應(yīng)該是每個(gè)Java程序猿都會(huì)使用的基礎(chǔ)框架了,對(duì)于SpringBoot的核心內(nèi)容自動(dòng)裝配原理的掌握就顯得非常重要了。 自動(dòng)裝配原理分析 1 理論介紹 Sp...
SpringBoot應(yīng)該是每個(gè)Java程序猿都會(huì)使用的基礎(chǔ)框架了,對(duì)于SpringBoot的核心內(nèi)容自動(dòng)裝配原理的掌握就顯得非常重要了。 自動(dòng)裝配原理分析 1 理論介紹 Sp...
Redis 通常是我們業(yè)務(wù)系統(tǒng)中一個(gè)重要的組件,比如:緩存、賬號(hào)登錄信息、排行榜等。 一旦 Redis 請(qǐng)求延遲增加,可能就會(huì)導(dǎo)致業(yè)務(wù)系統(tǒng)“雪崩”。 我在單身紅娘婚戀類型互聯(lián)...
背景雙十一大促期間, 收到客服反饋通知,說(shuō) APP 領(lǐng)券接口緩慢。找到一個(gè)case,通過(guò)調(diào)用鏈路發(fā)現(xiàn),是操作redis 緩慢,并且還搜到一些redis 異常。 最后定位到原因...
什么是 WAL 數(shù)據(jù)庫(kù)中一種高效的日志算法,對(duì)于非內(nèi)存數(shù)據(jù)庫(kù)而言,磁盤(pán)I/O操作是數(shù)據(jù)庫(kù)效率的一大瓶頸。 在相同的數(shù)據(jù)量下,采用WAL日志的數(shù)據(jù)庫(kù)系統(tǒng)在事務(wù)提交時(shí),磁盤(pán)寫(xiě)操作...
要說(shuō) IO 的性能優(yōu)化就不得不提 Zero Copy(零拷貝),雖然名字叫零拷貝,但其實(shí)并不是完全沒(méi)有拷貝過(guò)程,而是盡量減少不必要的拷貝及上下文切換。各種消息隊(duì)列可以說(shuō)是將零...
1、消息整體處理過(guò)程 這里我們將消息的整體處理階段分為3個(gè)階段進(jìn)行分析: Producer發(fā)送消息階段。 Broker處理消息階段。 Consumer消費(fèi)消息階段。 Prod...
1. AOP的核心概念 切面(Aspect):似于 Java 中的類聲明,常用于應(yīng)用中配置事務(wù)或者日志管理。一般使用 @Aspect 注解或者 來(lái)定義一個(gè)切面。 連接點(diǎn)(...
添加@Component注解沒(méi)有報(bào)錯(cuò),而且也存在。但是maven編譯無(wú)法訪問(wèn)org.springframework.stereotype.Component pom文件 使用...
通過(guò)查閱官網(wǎng)可知,服務(wù)注冊(cè)實(shí)際上就是向Nacos服務(wù)端發(fā)起一個(gè)http請(qǐng)求。 對(duì)應(yīng)的controller(InstanceController)如下: 1. 客戶端服務(wù)注冊(cè)流...
Spring在正常創(chuàng)建Bean的時(shí)候,實(shí)際上是調(diào)用了createBean方法中的doCreateBean方法。 createBean方法關(guān)鍵源碼如下: Instantiati...
首先看一個(gè)問(wèn)題:Java對(duì)象的內(nèi)存分配過(guò)程是如何保證線程安全的? 對(duì)象的內(nèi)存分配過(guò)程中,主要是對(duì)象的引用指向這個(gè)內(nèi)存區(qū)域,然后進(jìn)行初始化操作。 但是,因?yàn)槎咽侨止蚕淼?,因?..
WebSocket是應(yīng)用層上的一個(gè)應(yīng)用層協(xié)議,持久化的協(xié)議,他必須依賴http協(xié)議進(jìn)行一次握手,成功后就直接從tcp通道傳輸,后續(xù)就與http無(wú)關(guān)了。 WebSocket是以...
1. 重傳機(jī)制 TCP 實(shí)現(xiàn)可靠傳輸?shù)姆绞街?,是通過(guò)序列號(hào)與確認(rèn)應(yīng)答。在 TCP 中,當(dāng)發(fā)送端的數(shù)據(jù)到達(dá)接收主機(jī)時(shí),接收端主機(jī)會(huì)返回一個(gè)確認(rèn)應(yīng)答消息,表示已收到消息。但是在...
AQS是一個(gè)用來(lái)構(gòu)建鎖和同步器的框架,使用AQS能簡(jiǎn)單且高效地構(gòu)造出應(yīng)用廣泛的大量的同步器,比如ReentrantLock,Semaphore,其他的諸如ReentrantR...
1. 設(shè)計(jì)模式 1.1 裝飾者模式 裝飾者(Decorator)和具體組件(ConcreteComponent)都繼承自組件(Component),具體組件的方法實(shí)現(xiàn)不需要依...
Redis是C語(yǔ)言開(kāi)發(fā)的,C語(yǔ)言自己就有字符類型,但是Redis卻沒(méi)直接采用C語(yǔ)言的字符串類型,而是自己構(gòu)建了動(dòng)態(tài)字符串(SDS)的抽象類型。Redis的key以及字符串?dāng)?shù)據(jù)...
kafka是一個(gè)分布式基于發(fā)布/訂閱模式的消息隊(duì)列,主要應(yīng)用于大數(shù)據(jù)實(shí)時(shí)處理領(lǐng)域。 發(fā)布/訂閱:消息的發(fā)布不會(huì)將消息直接發(fā)送給特定的訂閱者,而是將發(fā)布的消息分為不同的類型,訂...