阿里P7終于講完了JDK+Spring+mybatis+Dubbo+SpringMvc+Netty源碼
前言
這里普及一下,每個(gè)公司都有職別定級(jí)系統(tǒng),阿里也是,技術(shù)崗以 P 定級(jí),一般校招 P5, 社招 P6 起。
其實(shí)閱讀源碼也是有很多訣竅的,這里分享幾點(diǎn)心得:
- 首先要會(huì)用。你要知道這個(gè)庫(kù)是干什么的,掌握它基本的使用方法;
- 有目的性。針對(duì)某個(gè)功能有目的的去挖掘,這樣就不會(huì)在茫茫源碼中迷失方向;
- 不需要看完所有細(xì)節(jié)。有的人閱讀源碼愛(ài)鉆牛角尖,非要把每一個(gè)小細(xì)節(jié)都搞清楚,以至于看了一天可能都沒(méi)看明白主干是什么。
閱讀源碼確實(shí)不簡(jiǎn)單,但是不要著急,從簡(jiǎn)單的源碼開(kāi)始,慢慢提升,學(xué)會(huì)抽絲剝繭,層層遞進(jìn),逐漸培養(yǎng)閱讀源碼的習(xí)慣與能力。
今天給大家分享的是,阿里P7大牛大家整理總結(jié)的六大內(nèi)容:
JDK+Spring+mybatis+Dubbo+SpringMvc+Netty源碼解析學(xué)習(xí)路線和技術(shù)文檔分享,
希望大家能夠喜歡!!
spring源碼解析
本文從核心實(shí)現(xiàn)和企業(yè)應(yīng)用兩個(gè)方面,由淺入深、由易到難地對(duì)Spring源碼展開(kāi)了系統(tǒng)的講解,包括Spring的設(shè)計(jì)理念和整體架構(gòu)、容器的基本實(shí)現(xiàn)、默認(rèn)標(biāo)簽的解析、自定義標(biāo)簽的解析、bean的加載、容器的功能擴(kuò)展、AOP、數(shù)據(jù)庫(kù)連接JDBC、整合MyBatis、事務(wù)、SpringMVC、 遠(yuǎn)程服務(wù)、Spring 消息服務(wù)等內(nèi)容。
本文不僅介紹了使用Spring框架開(kāi)發(fā)項(xiàng)目必須掌握的核心概念,還指導(dǎo)讀者如何使用Spring框架編寫(xiě)企業(yè)級(jí)應(yīng)用,并針對(duì)在編寫(xiě)代碼的過(guò)程中如何優(yōu)化代碼、如何使得代碼高效給出切實(shí)可行的建議,從而幫助讀者全面提升實(shí)戰(zhàn)能力。
本文分為兩部分:核心實(shí)現(xiàn)和企業(yè)應(yīng)用。
第一部分核心實(shí)現(xiàn)(第1~7章):是Spring功能的基礎(chǔ),也是企業(yè)應(yīng)用部分的基礎(chǔ),主要對(duì)容器以及AOP功能實(shí)現(xiàn)做了具體的分析,如果讀者之前沒(méi)有接觸過(guò)Spring源代碼,建議認(rèn)真閱讀這個(gè)部分,否則閱讀企業(yè)應(yīng)用部分時(shí)會(huì)比較吃力.
第二部分企業(yè)應(yīng)用(第8~13章):在核心實(shí)現(xiàn)部分的基礎(chǔ)上圍繞企業(yè)應(yīng)用常用的模塊進(jìn)行討論,這些模塊包括Spring整合JDBC、Spring 整合MyBatis、事務(wù)、SpringMVC、遠(yuǎn)程服務(wù)、Spring 消息服務(wù)等,旨在幫助讀者在日常開(kāi)發(fā)中更加高效地使用Spring。
Mybatis源碼解析
本文中從一個(gè)簡(jiǎn)單的 MyBatis 查詢?nèi)胧郑罱ㄆ饘W(xué)習(xí) MyBati 的基礎(chǔ)開(kāi)發(fā)環(huán)境。通過(guò)全面的示例代碼和測(cè)試講解了在 MyBatis XML 方式和注解方式中進(jìn)行增、冊(cè) 改、查操作的基本用法,介紹了動(dòng)態(tài) SQL在不同方面的應(yīng)用以及在使用過(guò)程中的最佳實(shí)踐方案。針對(duì) MyBatis 高級(jí)映射、存儲(chǔ)過(guò)程和類型處理器提供了豐富的示例,通過(guò)自下而上的方法使讀者更好地理解和掌握 MyBatis 的高級(jí)用法,同時(shí)針對(duì) MyBatis的代碼生成器提供了詳細(xì)的配置介紹。此外,本書(shū)還提供了緩存配置、插件開(kāi)發(fā)、 Spring Spring Boot成的詳細(xì)內(nèi)容。最后通過(guò)介紹 Git GitHub 讓讀者了解 MyBatis 開(kāi)源項(xiàng)目,通過(guò)對(duì) MyBatis 源碼和測(cè)試用例的講解讓讀者更好掌握 MyBatis。
全文共11章,每一章的具體內(nèi)容如下。
第1章MyBatis入門(mén),本章先簡(jiǎn)單介紹了MyBatis 的發(fā)展歷史和特點(diǎn),然后通過(guò)一步 步的操作搭建了一個(gè)學(xué)習(xí)MyBatis的基礎(chǔ)環(huán)境,這個(gè)開(kāi)發(fā)環(huán)境也是學(xué)習(xí)后續(xù)幾個(gè)章節(jié)的基礎(chǔ)。
第2章 MyBatis XML方式的基本用法,本章設(shè)定了一個(gè)簡(jiǎn)單的權(quán)限控制需求,使用MyBatis XML方式實(shí)現(xiàn)了數(shù)據(jù)庫(kù)中一個(gè)表的常規(guī)操作。在查詢方面,通過(guò)根據(jù)主鍵查詢和查詢?nèi)績(jī)蓚€(gè)方法讓讀者在學(xué)會(huì)使用MyBatis查詢方法的同時(shí),還深入了解MyBatis返回值的設(shè)置原理。在增、刪、改方面提供了大量詳細(xì)的示例,這些示例覆蓋了MyBatis 基本用法的方方面面。
第3章MyBatis 注解方式的基本用法,雖然XML方式是主流,但是仍然有許多公司選擇了注解方式,因此本章非常適合使用注解方式的讀者。本章使用注解方式幾乎實(shí)現(xiàn)了同XML方式類似的全部方法,包含許多常用注解的基本用法。對(duì)于初學(xué)者來(lái)說(shuō),即使不使用注解方式,通過(guò)本章和第2章的對(duì)比也可以對(duì)MyBatis有更深的了解。
第4章MyBatis 動(dòng)態(tài)SQL,本章詳細(xì)介紹了MyBatis最強(qiáng)大的動(dòng)態(tài)SQL功能,通過(guò)豐富的示例講解了各種動(dòng)態(tài)SQL的用法,為動(dòng)態(tài)SQL中可能出現(xiàn)的問(wèn)題提供了最佳實(shí)踐方案,還提供了動(dòng)態(tài)SQL中常用的OGNL用法。
第5章MyBatis 代碼生成器,本章介紹的MyBatis代碼生成器可以減輕基本用法中最繁重的那部分書(shū)寫(xiě)工作帶來(lái)的壓力。通過(guò)本章的學(xué)習(xí),可以使用代碼生成器快速生成大量基礎(chǔ)的方法,讓大家更專注于業(yè)務(wù)代碼的開(kāi)發(fā),從枯燥的基礎(chǔ)編碼中解脫出來(lái)。
第6章MyBatis 高級(jí)查詢,本章介紹了MyBatis中的高級(jí)結(jié)果映射,包括--對(duì)--映射、--對(duì)多映射和鑒別器映射。通過(guò)循序漸進(jìn)的代碼示例讓讀者輕松地學(xué)會(huì)使用MyBatis中最高級(jí)的結(jié)果映射。本章還通過(guò)全面的示例講解了存儲(chǔ)過(guò)程的用法和類型處理器的用法。
第7章MyBatis 緩存配置,本章講解了MyBatis緩存配置的相關(guān)內(nèi)容,提供了EhCache緩存和Redis緩存的集成方法。雖然二級(jí)緩存功能強(qiáng)大,但是使用不當(dāng)很容易產(chǎn)生臟數(shù)據(jù)。本章針對(duì)臟數(shù)據(jù)的產(chǎn)生提供了最佳解決方案,并且介紹了二級(jí)緩存適用的場(chǎng)景。
第8章MyBatis 插件開(kāi)發(fā),本章介紹了MyBatis強(qiáng)大的擴(kuò)展能力,利用插件可以很方便地在運(yùn)行時(shí)改變MyBatis的行為。通過(guò)兩個(gè)插件示例讓讀者初窺門(mén)徑,結(jié)合第11章的內(nèi)容可以讓讀者開(kāi)發(fā)出適合自己的插件。
第9章Spring 集成MyBatis,本章介紹了最流行的輕量級(jí)框架Spring集成MyBatis的方法,通過(guò)一-步步操作從零開(kāi)始配置,搭建一個(gè)基本的Spring、Spring MVC、MyBatis 開(kāi)發(fā)環(huán)境。
第10章Spring Boot集成MyBatis,本章介紹了最流行的微服務(wù)框架Spring Boot集成MyBatis的方法,通過(guò)MyBatis官方提供,的Starter可以很方便地進(jìn)行集成。同時(shí),本章對(duì)Starter中的配置做了簡(jiǎn)單的介紹,可以滿足讀者對(duì)MyBatis各項(xiàng)配置方面的需要。
第11章MyBatis 開(kāi)源項(xiàng)目,本章是一扇通往開(kāi)源世界的大門(mén),也是一扇通往MyBatis 源碼學(xué)習(xí)的大門(mén)。從Git入門(mén)到GitHub入門(mén),讀者可以學(xué)會(huì)使用最流行的分布式版本控制系統(tǒng)和源代碼托管服務(wù)。通過(guò)一段代碼讓大家了解MyBatis 中的一部分關(guān)鍵類, 通過(guò)代碼包講解可以了解MyBatis 每個(gè)包中所含的功能。最后通過(guò)MyBatis豐富的測(cè)試用例為讀者提供更多更有用的學(xué)習(xí)內(nèi)容。
dubbo源碼解析
dubbo 是阿里基于開(kāi)源思想 java 實(shí)現(xiàn)的服務(wù)治理中間件,目前除了阿里之外已有很多公司直接使用或者基于阿里開(kāi)源版本擴(kuò)展使用。
第一章:Dubbo 內(nèi)核實(shí)現(xiàn)
Dubbo 采用微內(nèi)核+插件體系,使得設(shè)計(jì)優(yōu)雅,擴(kuò)展性強(qiáng)。那所謂的微內(nèi)核+插件體系是如何實(shí)現(xiàn)的呢!大家是否熟悉 spi(service provider interface)機(jī)制,即我們定義了服務(wù)接口標(biāo)準(zhǔn),讓廠商去實(shí)現(xiàn)(如果不了解 spi 的請(qǐng)谷歌百度下),jdk 通過(guò) ServiceLoader 類實(shí)現(xiàn) spi 機(jī)制的服務(wù)查找功能。
第二章: 代理
代理模式這里不再邏輯介紹,dubbo 中有使用這種模式,如: dubbo 服務(wù)的消費(fèi)端獲取的就是對(duì)遠(yuǎn)程服務(wù)的一個(gè)代理。Dubbo 由代理工廠 ProxyFactory 對(duì)象創(chuàng)建代理對(duì)象
第三章:與 spring 融合
Spring 中 bean 的定義可以通過(guò)編程,可以定義在 properties 文件,也可以定義在通過(guò) xml 文件中,用的最多的是通過(guò) xml 形式,由于 xml 格式具有很好的自說(shuō)明便于編寫(xiě)及維護(hù)。對(duì)于 xml 的文檔結(jié)構(gòu)、數(shù)據(jù)定義及格式驗(yàn)證可以通過(guò) DTD和 Schema, 在 spring2.0 之前采用的是 DTD,在 spring2.0 之后采用 Schema。
使用Schema方式使得spring更加便于與第三方進(jìn)行集成以及第三方可以提供更簡(jiǎn)單更便于使用的個(gè)性化配置方式。對(duì)于 Xml Schema 具體知識(shí)這里不做介紹,但是 Schema 中有個(gè)重要的概念命名空間(namespace)必須要提一下,spring 就是利用它來(lái)做第三方自定配置格式的解析的,在 spring 中 aop, transaction的就是給第三一個(gè)實(shí)現(xiàn)自己自定義配置很好實(shí)例。
第四章:服務(wù)發(fā)布
服務(wù)發(fā)布是服務(wù)提供方向注冊(cè)中注冊(cè)服務(wù)過(guò)程,以便服務(wù)消費(fèi)者從注冊(cè)中心查閱并調(diào)用服務(wù)。
第五章:服務(wù)引用
服務(wù)引用是服務(wù)的消費(fèi)方向注冊(cè)中心訂閱服務(wù)提供方提供的服務(wù)地址后向服務(wù)提供方引用服務(wù)的過(guò)程。
第六章: Listener & filter
第七章:注冊(cè)中心
第八章:集群&容錯(cuò)
Dubbo 作為一個(gè)分布式的服務(wù)治理框架,提供了集群部署,路由,軟負(fù)載均衡及容錯(cuò)機(jī)制。
第九章:服務(wù)調(diào)用
第十章:通信層
Dubbo 的整個(gè)遠(yuǎn)程通信層由 exchange, transport, serializeexchange,信息交換層,封裝請(qǐng)求響應(yīng)模式,同步轉(zhuǎn)異步,以 Request, Response為中心,擴(kuò)展接口為 Exchanger, ExchangeChannel,HeaderExchangeHandler ,ExchangeClient, ExchangeServertransport,網(wǎng)絡(luò)傳輸層,抽象 mina 和 netty 為統(tǒng)一接口,以 Message 為中心,擴(kuò)展接口為 Channel, Transporter, Client, Server, Codecserialize,數(shù)據(jù)序列化層,可復(fù)用的一些工具,擴(kuò)展接口為 Serialization,ObjectInput, ObjectOutput, ThreadPool
第十一章:編碼解碼
第十二章: telnet
Dubbo 提供了 telnet 命令去查看服務(wù)功能;這里主要介紹一下 dubbo 實(shí)現(xiàn) telnet 命令的整體實(shí)現(xiàn)!
第十四章:監(jiān)控
Dubbo 發(fā)布代碼中,自帶了一個(gè)簡(jiǎn)易的監(jiān)控中心實(shí)現(xiàn)。對(duì)于一般的小業(yè)務(wù)這個(gè)監(jiān)控中心應(yīng)該能夠滿足需求,對(duì)于那些大業(yè)務(wù)量的大公司一般都會(huì)有自己的監(jiān)控中心,更加豐富的功能如常用的報(bào)警短信通知等等。這章講解分析使得讀者能夠了解一般的監(jiān)控中心實(shí)現(xiàn), 也使得有自己接入監(jiān)控中心需求的大概知道如何集成自己的監(jiān)控中心實(shí)現(xiàn)。下面我們就以 dubbo 自帶的監(jiān)控中心開(kāi)始講解。
第十五章: 管理控制臺(tái)
Dubbo 的 dubbo-admin 模塊是后臺(tái)管理系統(tǒng),它的 MVC 框架式基于 webx3 的,webx 是阿里巴巴開(kāi)源出來(lái)基于頁(yè)面驅(qū)動(dòng)的 mvc 框架, webx 在阿里內(nèi)部廣泛使用。
Webx 是基于 turbine 發(fā)展而來(lái)逐漸成為一個(gè)功能強(qiáng)大擴(kuò)展性強(qiáng)的 mvc 框架,利用約定大于配置原則,雖說(shuō)使用簡(jiǎn)單,但是也有很多潛在規(guī)則在里面。Webx 作為除了阿里以外一個(gè)小眾框架學(xué)習(xí)起來(lái)還是很有成本的,再說(shuō) dubbo 中又對(duì)webx 進(jìn)行一層 restful 改造,使大家即時(shí)按官方文檔 http://www.openwebx.org/學(xué)習(xí)也很難很快看懂。這里不做 webx 的相關(guān)介紹,因?yàn)橐粫r(shí)半會(huì)沒(méi)法講,主要講下 dubbo-admin 基本流程,方便有的朋友對(duì) webx 不爽想遷移到 springmvc 或者 struts 之上。
springmvc源碼解析
國(guó)內(nèi)資深Web開(kāi)發(fā)專家根據(jù)Spring MVC最新技術(shù)撰寫(xiě),基于實(shí)際生產(chǎn)環(huán)境,從基礎(chǔ)知識(shí)、源代碼和實(shí)戰(zhàn)3個(gè)維度對(duì)Spring MVC的結(jié)構(gòu)和實(shí)現(xiàn)進(jìn)行詳細(xì)講解。
全面介紹Spring MVC的架構(gòu)、原理、核心概念和操作,通過(guò)案例完整呈現(xiàn)Tomcat的實(shí)現(xiàn),系統(tǒng)總結(jié)Spring MVC九大組件的處理以及常用的技巧和最佳實(shí)踐。
本文一共分為四篇。
第一篇首先講解了網(wǎng)站基礎(chǔ)知識(shí),包括網(wǎng)站架構(gòu)的演變以及每種架構(gòu)所針對(duì)的問(wèn)題、Web底層的協(xié)議以及簡(jiǎn)單的實(shí)現(xiàn)方法,最后分析了Tomcat的實(shí)現(xiàn)方法,這樣可以讓大家對(duì)Web有整體而且深人的理解,從而為分析Spring MVC打下堅(jiān)實(shí)的基礎(chǔ)。
第二篇分析了Spring MVC的整體結(jié)構(gòu),幫助大家理解請(qǐng)求是怎么到Spring MVC中的,以及在Spring MVC中都做了些什么,這部分主要是幫大家建立框架,讓大家對(duì)Spring MVC的整體結(jié)構(gòu)了然于胸,在后面內(nèi)容中只需要對(duì)具體的組件進(jìn)行分析即可。
第三篇分別對(duì)Spring MVC中的9大組件進(jìn)行了分析,這部分又分了兩步:第一步先分析了每個(gè)組件的接口、作用和用法,讓大家對(duì)每個(gè)組件有個(gè)大體的認(rèn)識(shí);第二步詳細(xì)分析了9大組件的實(shí)現(xiàn)。
第四篇對(duì)Spring MVC的整體結(jié)構(gòu)做了總結(jié),并對(duì)異步請(qǐng)求的原理及用法做了補(bǔ)充。總結(jié)分為兩步,首先是對(duì)Spring MVC的結(jié)構(gòu)進(jìn)行總結(jié),并從更高的層次分析其設(shè)計(jì)理念;然后通過(guò)跟蹤一個(gè)具體的請(qǐng)求幫助大家整體梳理請(qǐng)求的處理過(guò)程。異步請(qǐng)求是--塊相對(duì)獨(dú)立的內(nèi)容,如果將其放入Spring MVC的分析過(guò)程中將增加大家對(duì)Spring MVC的理解難度,所以在最后對(duì)其進(jìn)行單獨(dú)講解。
JDK源碼解析(jdk1.8經(jīng)典技術(shù)文檔)
Netty源碼解析
本文共分 4 個(gè)部分,且有一個(gè)附錄。
第一部分:Netty 的概念及體系結(jié)構(gòu)
第一部分是對(duì)框架的詳細(xì)介紹,涵蓋了它的設(shè)計(jì)、組件以及編程接口。
第 1 章首先簡(jiǎn)要概述了阻塞和非阻塞的網(wǎng)絡(luò) API,以及它們對(duì)應(yīng)的 JDK 接口。我們引入 Netty作為構(gòu)建高度可伸縮的、異步的、事件驅(qū)動(dòng)的網(wǎng)絡(luò)編程應(yīng)用的工具包。我們將首先看一下該框架的基礎(chǔ)構(gòu)件塊:Channel、回調(diào)、Future、事件及 ChannelHandler。
第 2 章解釋了如何配置讀者的系統(tǒng)以構(gòu)建并運(yùn)行本書(shū)中的示例代碼。我們將用一個(gè)簡(jiǎn)單的應(yīng)用程序來(lái)測(cè)試它,這是一個(gè)回送從連接的客戶端接收到的消息的服務(wù)器應(yīng)用程序。我們還介紹了引導(dǎo)(Bootstrap)——在運(yùn)行時(shí)組裝和配置一個(gè)應(yīng)用程序的所有組件的過(guò)程。
第 3 章首先討論了 Netty 的技術(shù)以及體系結(jié)構(gòu)方面的內(nèi)容。介紹了該框架的核心組件:Channel、EventLoop、ChannelHandler 以及 ChannelPipeline。這一章的最后解釋了引導(dǎo)服務(wù)器和客戶端之間的差異。
第 4 章討論了網(wǎng)絡(luò)傳輸,并且對(duì)比了通過(guò) JDK API 和 Netty 使用阻塞和非阻塞傳輸?shù)挠梅?。我們研究?Netty 的傳輸 API 的底層接口的層級(jí)關(guān)系以及它們所支持的傳輸類型。
第 5 章專門(mén)介紹了該框架的數(shù)據(jù)處理 API——ByteBuf,Netty 的字節(jié)容器。我們描述了它相對(duì)于 JDK 的 ByteBuffer 的優(yōu)勢(shì),以及如何分配和訪問(wèn)由 ByteBuf 所使用的內(nèi)存。我們展示了如何通過(guò)引用計(jì)數(shù)來(lái)管理內(nèi)存資源。
第 6 章重點(diǎn)介紹了核心組件 ChannelHandler 和 ChannelPipeline,它們負(fù)責(zé)調(diào)度應(yīng)用程序的處理邏輯,并驅(qū)動(dòng)數(shù)據(jù)和事件經(jīng)過(guò)網(wǎng)絡(luò)層。其他的主題包括在實(shí)現(xiàn)高級(jí)用例時(shí)ChannelHandlerContext 的角色,
以及在多個(gè)ChannelPipeline 之間共享ChannelHandler的緣由。這一章的最后說(shuō)明了如何處理由入站事件和出站事件所觸發(fā)的異常。
第 7 章提供了關(guān)于線程模型的一般概述,并詳細(xì)地介紹了 Netty 的線程模型。我們研究了interface EventLoop,它是 Netty 的并發(fā) API 的主要部分,并解釋了它和線程以及 Channel的關(guān)系。這個(gè)信息對(duì)于理解 Netty 是如何實(shí)現(xiàn)異步的、事件驅(qū)動(dòng)的網(wǎng)絡(luò)編程模型來(lái)說(shuō)至關(guān)重要。我們展示了如何通過(guò) EventLoop 進(jìn)行任務(wù)調(diào)度。
第 8 章以介紹 Bootstrap 類的層級(jí)結(jié)構(gòu)作為引子,深入地講解了引導(dǎo)。我們重新審視了一些基本用例以及一些特殊用例,例如,在一個(gè)服務(wù)器應(yīng)用程序中引導(dǎo)一個(gè)客戶端連接、引導(dǎo)數(shù)據(jù)報(bào) Channel,以及在引導(dǎo)的過(guò)程中添加多個(gè) ChannelHandler。這一章最后討論了如何優(yōu)雅地關(guān)閉應(yīng)用程序并有序地釋放所有的資源。
第 9 章是關(guān)于對(duì) ChannelHandler 進(jìn)行單元測(cè)試的討論,對(duì)此 Netty 提供了一個(gè)特殊的Channel 實(shí)現(xiàn)——EmbeddedChannel。本章的示例展示了如何使用這個(gè)類和 JUnit 一起來(lái)測(cè)試入站和出站 ChannelHandler 實(shí)現(xiàn)。
第二部分:編解碼器
數(shù)據(jù)轉(zhuǎn)換是網(wǎng)絡(luò)編程中最常見(jiàn)的操作之一。第二部分介紹了 Netty 提供的用于簡(jiǎn)化這一任務(wù)的豐富的工具集。
第 10 章首先解釋了解碼器和編碼器,它們將字節(jié)序列從一種格式轉(zhuǎn)換為另外一種格式。一個(gè)無(wú)處不在的例子便是將一個(gè)非結(jié)構(gòu)化的字節(jié)流轉(zhuǎn)換為一個(gè)特定于協(xié)議的布局結(jié)構(gòu),或者相反的。編解碼器則是一個(gè)結(jié)合了編碼器以及解碼器以處理雙向轉(zhuǎn)換的組件。我們提供了幾個(gè)例子,展示了通過(guò) Netty 的編解碼器框架類創(chuàng)建自定義的解碼器以及編碼器是多么地容易。
第 11 章研究了 Netty 提供的用于各種用例的編解碼器以及 ChannelHandler。這些類包括用于協(xié)議的(如 SSL/TLS、HTTP/HTTPS、WebSocket 以及 SPDY)即用型的編解碼器,以及能夠通過(guò)擴(kuò)展來(lái)處理幾乎任意的基于分隔符的協(xié)議、變長(zhǎng)協(xié)議或者定長(zhǎng)協(xié)議的解碼器。這一章的最后介紹了用于寫(xiě)入大型數(shù)據(jù)的和用于序列化的框架組件。
第三部分:網(wǎng)絡(luò)協(xié)議
第三部分詳細(xì)闡述了幾種本書(shū)前面簡(jiǎn)要介紹過(guò)的網(wǎng)絡(luò)協(xié)議。我們將會(huì)再次看到 Netty 是如何使你能在自己的應(yīng)用程序中輕松采用復(fù)雜的 API,而又不必關(guān)心其內(nèi)部復(fù)雜性的。
第 12 章展示了如何使用 WebSocket 協(xié)議來(lái)實(shí)現(xiàn) Web 服務(wù)器和客戶端之間的雙向通信。示例程序是一個(gè)聊天室服務(wù)器,其允許所有已連接的用戶與其他已連接的用戶進(jìn)行實(shí)時(shí)通信。
第 13 章通過(guò)利用了用戶數(shù)據(jù)報(bào)協(xié)議(UDP)的廣播能力的服務(wù)器和客戶端應(yīng)用程序,說(shuō)明了 Netty 對(duì)于無(wú)連接協(xié)議的支持。如同前面的那些示例一樣,我們使用了一組特定于協(xié)議的支持類:DatagramPacket 和 NioDatagramChannel。
第四部分:案例研究
第四部分介紹了由使用 Netty 實(shí)現(xiàn)了任務(wù)關(guān)鍵型系統(tǒng)的知名公司提交的 5 份案例研究。這些案例不僅說(shuō)明了我們?cè)谡緯?shū)中所討論過(guò)的框架各個(gè)組件在現(xiàn)實(shí)世界中的應(yīng)用,而且還演示了Netty 的設(shè)計(jì)以及架構(gòu)原則,在構(gòu)建高度可伸縮和可擴(kuò)展的應(yīng)用程序方面的應(yīng)用。
第 14 章有 Droplr、Firebase 以及 Urban Airship 提交的案例研究。
第 15 章有 Facebook 和 Twitter 提交的案例研究。
需要這六大JDK+Spring+mybatis+Dubbo+SpringMvc+Netty源碼解析技術(shù)文檔的小伙伴,可以轉(zhuǎn)發(fā)關(guān)注小編.

加油?。。。?/p>
posted on 2020-06-17 22:12 程序員高級(jí)工程師 閱讀(290) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)