kafka生產(chǎn)者線程負(fù)責(zé)生產(chǎn)消息,而將消息發(fā)送給broker是有一個(gè)專門的發(fā)送者線程來處理的,也稱之為IO Thread,實(shí)現(xiàn)了消息的生產(chǎn)與發(fā)送解耦,提高吞吐量。 IO Th...
kafka生產(chǎn)者線程負(fù)責(zé)生產(chǎn)消息,而將消息發(fā)送給broker是有一個(gè)專門的發(fā)送者線程來處理的,也稱之為IO Thread,實(shí)現(xiàn)了消息的生產(chǎn)與發(fā)送解耦,提高吞吐量。 IO Th...
程序中調(diào)用kafka生產(chǎn)者發(fā)送消息,并不是每調(diào)用一次send方法,就直接將消息通過底層網(wǎng)絡(luò)發(fā)送給broker了,而是會(huì)將多個(gè)消息形成一個(gè)批次,然后再以批次的形式,發(fā)送給bro...
在kafka中,生產(chǎn)者發(fā)送的消息最終會(huì)落在主題下的某個(gè)分區(qū),但是很多開發(fā)者在使用的過程中其實(shí)并沒有指定消息發(fā)往哪個(gè)分區(qū),那么kafka是如何處理的呢? 在kafka中,消息主...
在netty開發(fā)中,當(dāng)調(diào)用pipeline的write方法時(shí),并不會(huì)將數(shù)據(jù)直接寫入到底層channel通道發(fā)送出去,而是先添加到緩沖區(qū)中;只有當(dāng)調(diào)用flush方法,才會(huì)真正將...
編解碼器指的是轉(zhuǎn)換兩種不同格式的數(shù)據(jù),在網(wǎng)絡(luò)編程中幾乎是必不可少的。比如將String轉(zhuǎn)成ByteBuf,將Student轉(zhuǎn)成String等等。 netty中,編碼器處理的是...
拆包與粘包是網(wǎng)絡(luò)編程中必會(huì)出現(xiàn)的一個(gè)問題。因此,本文先介紹下什么是拆包與粘包,然后通過例子演示這個(gè)現(xiàn)象,最后再介紹netty中如何處理拆包與粘包 所謂的拆包就是發(fā)送方發(fā)送一條...
在netty中,ByteBuf是對(duì)字節(jié)的封裝,對(duì)nio的ByteBuffer的增強(qiáng),用于從socket緩沖區(qū)讀取和寫入數(shù)據(jù)的。 ByteBuf有基于堆內(nèi)存和直接內(nèi)存的,若是堆...
NioEventLoop的事件循環(huán)處理,就是在一個(gè)死循環(huán)中處理IO事件和隊(duì)列里的任務(wù),并且可以根據(jù)策略來平衡這兩者之間的執(zhí)行比例。 首先,先來看下selectStrategy...
上一篇中netty注冊(cè)流程分析一[http://www.lxweimin.com/p/0743e40dee69],分析到了channel注冊(cè)到nioEventLoop中了,接...
在之前的這篇文章有講述三者的關(guān)系[http://www.lxweimin.com/p/84b0456f4f83],本文主要講解下三者的一些重要方法及方法的調(diào)用關(guān)系 先看下Ch...
netty的自適應(yīng)緩沖區(qū)用于接收從channel讀取的數(shù)據(jù),且可以動(dòng)態(tài)調(diào)整緩沖區(qū)大小,減少內(nèi)存的浪費(fèi)。當(dāng)連續(xù)兩次讀取的字節(jié)數(shù)小于當(dāng)前緩沖區(qū)大小時(shí),就會(huì)縮小,當(dāng)讀取的字節(jié)數(shù)剛好...
從本文開始,來分析下springmvc幾個(gè)重要組件是如何工作的。 首選,來看下HandlerMapping 這個(gè)接口主要有這個(gè)方法,通過request獲取一個(gè)HandlerE...
在之前的文章說過,springmvc在要初始化spring容器時(shí),會(huì)提前注冊(cè)一個(gè)監(jiān)聽器,當(dāng)spring容器完成刷新后,此監(jiān)聽器的回調(diào)方法會(huì)收到回調(diào)通知,會(huì)執(zhí)行如下方法 這個(gè)方...
在前文知道了,DispatcherServlet的init方法是springmvc項(xiàng)目初始化的入口,init方法內(nèi)部又調(diào)用了initServletBean configure...
springmvc的啟動(dòng)流程分析一 在servlet3.0以前,啟動(dòng)一個(gè)springmvc項(xiàng)目,需要在classpath目錄下web-inf目錄新建一個(gè)web.xml文件,然...
異常解析器也是springmvc的一個(gè)非常重要組件,在編寫程序代碼時(shí),若拋出異常了,那么springmvc是通過異常解析器來獲取異常并進(jìn)行后續(xù)的處理 看下接口定義的方法 入?yún)?..
會(huì)發(fā)送,有時(shí)間閾值和空間閾值,滿足其中一個(gè)就會(huì)發(fā)送
springmvc源碼分析-HandlerMapping工作流程之前的一篇HandlerMapping初始化流程[http://www.lxweimin.com/p/b43fe22546ab],講述了HandlerMapping的初始化流...
springmvc中HandlerAdapter用于執(zhí)行具體的Handler,也就是controller,是springmvc中一個(gè)特別重要的組件,先來看下接口定義的方法 方...
之前的一篇HandlerMapping初始化流程[http://www.lxweimin.com/p/b43fe22546ab],講述了HandlerMapping的初始化流...
spring容器管理的bean中,有一種比較特殊的類型FactoryBean,這種類型的bean,自身即是一個(gè)bean對(duì)象,也能產(chǎn)生其他類型的bean對(duì)象,通過接口方法便可得...