日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

面試官:說說Netty核心組件?

來源: 責(zé)編: 時間:2024-05-30 09:10:44 257觀看
導(dǎo)讀Netty 核心組件是指 Netty 在執(zhí)行過程中所涉及到的重要概念,這些核心組件共同組成了 Netty 框架,使 Netty 框架能夠正常的運行。Netty 核心組件包含以下內(nèi)容:啟動器 Bootstrap/ServerBootstrap事件循環(huán)器 EventLoopGroup

dsl28資訊網(wǎng)——每日最新資訊28at.com

Netty 核心組件是指 Netty 在執(zhí)行過程中所涉及到的重要概念,這些核心組件共同組成了 Netty 框架,使 Netty 框架能夠正常的運行。dsl28資訊網(wǎng)——每日最新資訊28at.com

Netty 核心組件包含以下內(nèi)容:dsl28資訊網(wǎng)——每日最新資訊28at.com

  • 啟動器 Bootstrap/ServerBootstrap
  • 事件循環(huán)器 EventLoopGroup/EventLoop
  • 通道 Channel
  • 通道處理器 ChannelHandler
  • 通道管道 ChannelPipeline

這些組件的交互流程如下:dsl28資訊網(wǎng)——每日最新資訊28at.com

dsl28資訊網(wǎng)——每日最新資訊28at.com

上圖是 Netty 邏輯處理架構(gòu),這個邏輯處理架構(gòu)為典型網(wǎng)絡(luò)分層架構(gòu)設(shè)計,共分為網(wǎng)絡(luò)通信層、事件調(diào)度層、服務(wù)編排層,每一層各司其職,共同成為了 Netty 的核心組件。dsl28資訊網(wǎng)——每日最新資訊28at.com

1.Bootstrap/ServerBootstrap【啟動器】

Bootstrap 是“引導(dǎo)”的意思,它主要負責(zé)整個 Netty 程序的啟動、初始化、服務(wù)器連接等過程,它相當(dāng)于一條主線,串聯(lián)了 Netty 的其他核心組件。dsl28資訊網(wǎng)——每日最新資訊28at.com

dsl28資訊網(wǎng)——每日最新資訊28at.com

PS:Netty 中的引導(dǎo)器共分為兩種類型:一個為用于客戶端引導(dǎo)的 Bootstrap,另一個為用于服務(wù)端引導(dǎo)的 ServerBootStrap。dsl28資訊網(wǎng)——每日最新資訊28at.com

2.Channel【通道】

Channel 是網(wǎng)絡(luò)數(shù)據(jù)的傳輸通道,它代表了到實體(如硬件設(shè)備、文件、網(wǎng)絡(luò)套接字或能夠執(zhí)行 I/O 操作的程序組件)的開放連接,如讀操作和寫操作。dsl28資訊網(wǎng)——每日最新資訊28at.com

Channel 提供了基本的 API 用于網(wǎng)絡(luò) I/O 操作,如 register、bind、connect、read、write、flush 等。Netty 自己實現(xiàn)的 Channel 是以 JDK NIO Channel 為基礎(chǔ)的,相比較于 JDK NIO,Netty 的 Channel 提供了更高層次的抽象,同時屏蔽了底層 Socket 的復(fù)雜性,賦予了 Channel 更加強大的功能,你在使用 Netty 時基本不需要再與 Java Socket 類直接打交道。dsl28資訊網(wǎng)——每日最新資訊28at.com

常見的 Channel 類型有以下幾個:dsl28資訊網(wǎng)——每日最新資訊28at.com

  • NioServerSocketChannel 異步 TCP 服務(wù)端。
  • NioSocketChannel 異步 TCP 客戶端。
  • OioServerSocketChannel 同步 TCP 服務(wù)端。
  • OioSocketChannel 同步 TCP 客戶端。
  • NioDatagramChannel 異步 UDP 連接。
  • OioDatagramChannel 同步 UDP 連接。

當(dāng)然 Channel 也會有多種狀態(tài),如連接建立、連接注冊、數(shù)據(jù)讀寫、連接銷毀等狀態(tài)。dsl28資訊網(wǎng)——每日最新資訊28at.com

3.EventLoopGroup/EventLoop【事件循環(huán)器】

EventLoopGroup 是一個處理 I/O 操作和任務(wù)的線程組。在 Netty 中,EventLoopGroup 負責(zé)接受客戶端的連接,以及處理網(wǎng)絡(luò)事件,如讀/寫事件。它包含多個 EventLoop,每個 EventLoop 包含一個 Selector 和一個重要的組件,用于處理注冊到其上的 Channel 的所有 I/O 事件dsl28資訊網(wǎng)——每日最新資訊28at.com

(1)EventLoopGroup、EventLoop和Channel

它們?nèi)叩年P(guān)系如下:dsl28資訊網(wǎng)——每日最新資訊28at.com

  1. 一個 EventLoopGroup 往往包含一個或者多個 EventLoop。EventLoop 用于處理 Channel 生命周期內(nèi)的所有 I/O 事件,如 accept、connect、read、write 等 I/O 事件。
  2. EventLoop 同一時間會與一個線程綁定,每個 EventLoop 負責(zé)處理多個 Channel。
  3. 每新建一個 Channel,EventLoopGroup 會選擇一個 EventLoop 與其綁定。該 Channel 在生命周期內(nèi)都可以對 EventLoop 進行多次綁定和解綁。

(2)線程模型

Netty 通過創(chuàng)建不同的 EventLoopGroup 參數(shù)配置,就可以支持 Reactor 的三種線程模型:dsl28資訊網(wǎng)——每日最新資訊28at.com

  1. 單線程模型:EventLoopGroup 只包含一個 EventLoop,Boss 和 Worker 使用同一個EventLoopGroup;
  2. 多線程模型:EventLoopGroup 包含多個 EventLoop,Boss 和 Worker 使用同一個EventLoopGroup;
  3. 主從多線程模型:EventLoopGroup 包含多個 EventLoop,Boss 是主 Reactor,Worker 是從 Reactor,它們分別使用不同的 EventLoopGroup,主 Reactor 負責(zé)新的網(wǎng)絡(luò)連接 Channel 創(chuàng)建,然后把 Channel 注冊到從 Reactor。

4.ChannelHandler【通道處理器】

ChannelHandler 是 Netty 處理 I/O 事件或攔截 I/O 操作的組件。當(dāng)發(fā)生某種 I/O 事件時(如數(shù)據(jù)接收、連接打開、連接關(guān)閉等),ChannelHandler 會被調(diào)用并處理這個事件。dsl28資訊網(wǎng)——每日最新資訊28at.com

例如,數(shù)據(jù)的編解碼工作以及其他轉(zhuǎn)換工作實際都是通過 ChannelHandler 處理的。站在開發(fā)者的角度,最需要關(guān)注的就是 ChannelHandler,我們很少會直接操作 Channel,都是通過 ChannelHandler 間接完成。dsl28資訊網(wǎng)——每日最新資訊28at.com

5.ChannelPipeline【通道管道】

ChannelPipeline 是 ChannelHandler 的容器,提供了一種方式,以鏈?zhǔn)降姆绞浇M織和處理跨多個 ChannelHandler 之間的交互邏輯。當(dāng)數(shù)據(jù)在管道中流動時,它會按照 ChannelHandler 的順序被處理。dsl28資訊網(wǎng)——每日最新資訊28at.com

6.Netty 簡單示例

下面是一個使用 Netty 構(gòu)建的最簡單服務(wù)器端和客戶端示例,這個例子中,服務(wù)器接收到客戶端的消息后,會直接將消息原樣回傳給客戶端。dsl28資訊網(wǎng)——每日最新資訊28at.com

(1)服務(wù)器端

import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.SocketChannel;import io.netty.channel.socket.nio.NioServerSocketChannel;import io.netty.handler.codec.string.StringDecoder;import io.netty.handler.codec.string.StringEncoder;public class NettyServer {    public static void main(String[] args) throws Exception {        // 創(chuàng)建BossGroup和WorkerGroup,它們都是EventLoopGroup的實現(xiàn)        // BossGroup負責(zé)接收進來的連接        EventLoopGroup bossGroup = new NioEventLoopGroup(1);        // WorkerGroup負責(zé)處理已經(jīng)被接收的連接        EventLoopGroup workerGroup = new NioEventLoopGroup();        try {            // 創(chuàng)建服務(wù)器端的啟動對象,配置參數(shù)            ServerBootstrap bootstrap = new ServerBootstrap();            // 設(shè)置兩個線程組            bootstrap.group(bossGroup, workerGroup)                    // 設(shè)置服務(wù)器通道實現(xiàn)類型                    .channel(NioServerSocketChannel.class)                    // 設(shè)置通道初始化器,主要用來配置管道中的處理器                    .childHandler(new ChannelInitializer<SocketChannel>() {                        @Override                        protected void initChannel(SocketChannel ch) throws Exception {                            // 向管道加入處理器                            // 解碼器:ByteBuf -> String                            ch.pipeline().addLast(new StringDecoder());                            // 編碼器:String -> ByteBuf                            ch.pipeline().addLast(new StringEncoder());                            // 自定義的處理器                            ch.pipeline().addLast(new ServerHandler());                        }                    });            System.out.println("服務(wù)器 is ready...");            // 綁定一個端口并且同步,生成了一個ChannelFuture對象            ChannelFuture cf = bootstrap.bind(6668).sync();            // 對關(guān)閉通道進行監(jiān)聽            cf.channel().closeFuture().sync();        } finally {            // 優(yōu)雅關(guān)閉線程組            bossGroup.shutdownGracefully();            workerGroup.shutdownGracefully();        }    }}

(2)客戶端代碼

import io.netty.bootstrap.Bootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.SocketChannel;import io.netty.channel.socket.nio.NioSocketChannel;import io.netty.handler.codec.string.StringDecoder;import io.netty.handler.codec.string.StringEncoder;public class NettyClient {    public static void main(String[] args) throws Exception {        // 創(chuàng)建EventLoopGroup,相當(dāng)于線程池        EventLoopGroup group = new NioEventLoopGroup();        try {            // 創(chuàng)建客戶端啟動對象            Bootstrap bootstrap = new Bootstrap();            // 設(shè)置相關(guān)參數(shù)            bootstrap.group(group) // 設(shè)置線程組                    .channel(NioSocketChannel.class) // 設(shè)置客戶端通道實現(xiàn)類型                    .handler(new ChannelInitializer<SocketChannel>() { // 設(shè)置處理器                        @Override                        protected void initChannel(SocketChannel ch) throws Exception {                            // 向管道加入處理器                            ch.pipeline().addLast(new StringDecoder());                            ch.pipeline().addLast(new StringEncoder());                            // 自定義的處理器                            ch.pipeline().addLast(new ClientHandler());                        }                    });            System.out.println("客戶端 is ready...");            // 發(fā)起異步連接操作            ChannelFuture future = bootstrap.connect("127.0.0.1", 6668).sync();            // 發(fā)送消息            future.channel().writeAndFlush("Hello Server!");            // 對關(guān)閉通道進行監(jiān)聽            future.channel().closeFuture().sync();        } finally {            group.shutdownGracefully(); // 優(yōu)雅關(guān)閉線程組        }    }}

參考&鳴謝

《Netty核心原理剖析與RPC實踐》dsl28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-91684-0.html面試官:說說Netty核心組件?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 聊聊什么是微服務(wù),你看明白了嗎?

下一篇: C#開源實用的工具類庫,集成超過1000多種擴展方法

標(biāo)簽:
  • 熱門焦點
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網(wǎng)課的原因激活了平板市場,如今網(wǎng)課的時代已經(jīng)過去,大家的生活都恢復(fù)到了正軌,這也就意味著,真正考驗平板電腦生存的環(huán)境來了。也就是面對著這種殘酷的
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學(xué)好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現(xiàn)百度,功能雖然實現(xiàn)了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產(chǎn)懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風(fēng)頭無兩。你可以說陳思誠的
  • 馮提莫簽約抖音公會 前“斗魚一姐”消失在直播間

    來源:直播觀察提起&ldquo;馮提莫&rdquo;這個名字,很多網(wǎng)友或許聽過,但應(yīng)該不記得她是哪位主播了。其實,作為曾經(jīng)的&ldquo;斗魚一姐&rdquo;,馮提莫在游戲直播的年代影響力不輸于現(xiàn)
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創(chuàng) 作者|程心 羅輯2023年之前,對于自己的&ldquo;今天&rdquo;,百度也很迷茫。&ldquo;新業(yè)務(wù)到 2022 年底還是 0,希望 2023 年出來一個 1。&rdquo;這是2022年底,李彥宏
  • 8月見!小米MIX Fold 3獲得3C認證:支持67W快充

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 7月4日見!iQOO 11S官宣:“雞血版”驍龍8 Gen2+200W快充加持

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數(shù)亮相,而下半年即將推出的頂級旗艦已經(jīng)成為了數(shù)碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • OPPO K11采用全方位護眼屏:三大護眼能力減輕視覺疲勞

    日前OPPO官方宣布,全新的OPPO K11將于7月25日正式發(fā)布,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼IMX890主攝,堪稱是2000檔位影像表
  • 最薄的14英寸游戲筆記本電腦 Alienware X14已可以購買

    2022年1月份在國際消費電子展(CES2022)上首次亮相的Alienware新品——Alienware X14現(xiàn)在已經(jīng)可以購買了,這款筆記本電腦被譽為世界上最薄的 14 英寸游戲筆
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美日韩中文字幕日韩欧美| 鲁鲁狠狠狠7777一区二区| 亚洲黄色一区| 日韩一级黄色片| 亚洲在线视频免费观看| 久久av资源网| 欧美护士18xxxxhd| 国产精品久久久久一区二区三区共 | 亚洲一区二区综合| 欧美在线啊v一区| 蜜桃av噜噜一区二区三区| 欧美日韩三级| 韩日在线一区| 一级成人国产| 久久亚洲国产精品一区二区| 欧美日韩一区二区免费在线观看 | 欧美不卡激情三级在线观看| 欧美三级电影网| 国产一区二区三区免费不卡 | 日韩视频在线观看免费| 欧美中文字幕不卡| 欧美精品成人一区二区在线观看 | 一区二区高清视频在线观看| 欧美专区第一页| 欧美日韩a区| 国模精品一区二区三区色天香| 亚洲美女中文字幕| 久久精品国产v日韩v亚洲| 欧美日韩xxxxx| 娇妻被交换粗又大又硬视频欧美| 在线视频日本亚洲性| 久久婷婷综合激情| 国产精品每日更新| 日韩视频在线观看国产| 久久久99久久精品女同性| 欧美日韩专区在线| 亚洲国产精品久久精品怡红院| 午夜精品视频在线观看一区二区| 欧美理论大片| 在线观看三级视频欧美| 午夜精品久久久久久久99热浪潮 | 欧美国产激情二区三区| 国产在线精品一区二区中文| 亚洲天堂久久| 欧美日本不卡| 亚洲高清视频在线观看| 久久黄色小说| 国产精品亚洲аv天堂网| 99国产一区| 欧美激情精品久久久| 伊人久久噜噜噜躁狠狠躁| 性做久久久久久久免费看| 欧美一区二区性| 国产精品入口日韩视频大尺度| 日韩亚洲欧美综合| 欧美成人一区二区三区| 黄色成人av在线| 性做久久久久久| 国产精品视频免费一区| 一区二区三区精密机械公司 | 亚洲精选一区二区| 噜噜噜噜噜久久久久久91| 国产一区二区三区高清| 欧美一级视频免费在线观看| 国产精品久久77777| 中文欧美日韩| 欧美日韩在线精品| 一本久久综合亚洲鲁鲁| 欧美日韩成人精品| 亚洲精品一区二区三| 欧美a级片一区| 亚洲国产欧美国产综合一区| 玖玖视频精品| 亚洲国产99| 欧美+亚洲+精品+三区| 亚洲国产另类久久精品| 每日更新成人在线视频| 亚洲大胆人体视频| 欧美96在线丨欧| 亚洲高清视频在线观看| 欧美风情在线观看| 亚洲国产精品一区二区三区| 欧美多人爱爱视频网站| 亚洲精品在线看| 欧美日韩色综合| 一区二区三区日韩精品| 欧美性色aⅴ视频一区日韩精品| 一区二区日韩精品| 国产精品国产三级国产aⅴ入口| 亚洲综合日本| 国产日韩欧美自拍| 久久久噜噜噜久久中文字幕色伊伊| 国内自拍亚洲| 久久综合九色综合网站| 亚洲日本va午夜在线影院| 欧美日韩国产页| 亚洲一区二区毛片| 国产毛片精品国产一区二区三区| 久久av老司机精品网站导航| 伊人男人综合视频网| 欧美大片在线影院| 一级成人国产| 国产乱码精品一区二区三| 欧美伊人久久久久久午夜久久久久 | 国产人成精品一区二区三| 久久爱91午夜羞羞| 尤物yw午夜国产精品视频明星| 男女精品视频| 一区二区三区高清视频在线观看| 国产精品卡一卡二卡三| 久久久久.com| 亚洲日韩第九十九页| 欧美日一区二区三区在线观看国产免| 午夜天堂精品久久久久| 在线看成人片| 欧美午夜精品久久久久久久| 欧美一区深夜视频| 亚洲高清一区二| 国产精品久久久久久久久久免费看 | 亚洲精华国产欧美| 欧美网站大全在线观看| 久久99伊人| 亚洲日韩成人| 国产模特精品视频久久久久| 久久亚洲欧美| av成人手机在线| 国产一区二区三区免费在线观看 | 国产精品区二区三区日本| 久久久蜜臀国产一区二区| 亚洲理论电影网| 国产伦精品一区二区三区| 久久一区二区三区四区五区| 一本大道久久a久久精品综合| 国产日韩欧美视频| 女同一区二区| 亚洲综合成人婷婷小说| 91久久久在线| 国产精品国产三级国产a| 久久久国产视频91| av不卡在线观看| 狠狠色噜噜狠狠狠狠色吗综合| 欧美日韩国产首页| 久久精品99国产精品酒店日本| 99这里只有精品| 国产专区欧美精品| 欧美日韩理论| 久久久久久久精| 一区二区三区 在线观看视| 韩国av一区二区三区| 欧美日韩另类国产亚洲欧美一级| 久久影院午夜论| 亚洲在线观看| 91久久久久久久久| 国产一区高清视频| 欧美日韩中文另类| 麻豆亚洲精品| 欧美伊人久久大香线蕉综合69| 一区二区欧美日韩| 亚洲第一天堂无码专区| 国产欧美日韩亚洲一区二区三区| 欧美国产日韩一区二区| 久久av一区二区三区| 中文日韩在线视频| 亚洲人成艺术| 激情成人综合| 国产精品亚洲а∨天堂免在线| 欧美激情精品久久久久久大尺度| 欧美综合国产| 亚洲一二三区视频在线观看| 国产精品美女xx| 欧美日韩精品免费观看视一区二区 | 亚洲一区二三| 亚洲理论在线| 亚洲国产网站| 在线播放中文字幕一区| 国产日产欧产精品推荐色 | 欧美成ee人免费视频| 久久久久久午夜| 欧美一级免费视频| 亚洲影院在线观看| 99精品视频免费全部在线| 91久久精品www人人做人人爽| 黄色欧美日韩| 国产一区二区三区高清播放| 国产一区二区久久久| 国产欧美日本| 国产精品久久毛片a| 欧美日在线观看| 欧美母乳在线| 欧美国产大片| 欧美激情视频在线播放| 欧美va亚洲va香蕉在线| 老司机精品视频一区二区三区| 欧美在线国产精品| 欧美亚洲网站| 午夜欧美大片免费观看| 亚洲一区二区三区久久| 亚洲中午字幕| 亚洲午夜精品视频| 亚洲一区二区三区成人在线视频精品 | 日韩一本二本av| 日韩系列在线| 一区二区三区四区国产| 一区二区三区久久精品|