最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Netty通道的容器屬性Attribute詳解

 更新時(shí)間:2023年12月13日 09:35:05   作者:得過且過的勇者y  
這篇文章主要介紹了Netty通道的容器屬性Attribute詳解,Netty中的Channel通道類,有類似于Map的容器功能,可以通過鍵值對的形式來保存任何Java Object的值,一般來說可以存放一些與通道實(shí)例相關(guān)聯(lián)的屬性,比如說服務(wù)期端的ServerSession會話實(shí)例,需要的朋友可以參考下

Netty通道的容器屬性Attribute詳解

Netty中的Channel通道類,有類似于Map的容器功能,可以通過“key-value”鍵值對的形式來保存任何Java Object的值。一般來說可以存放一些與通道實(shí)例相關(guān)聯(lián)的屬性,比如說服務(wù)期端的ServerSession會話實(shí)例。

Netty對此的實(shí)現(xiàn)其實(shí)并沒有依賴Map接口,而是定義了一個類似的接口叫做AttributeMap。它有一個方法<T> Attribute<T>attr(AttributeKey<T> key),此方法接收一個AttributeKey類型的key,返回一個Attribute類型的值,即根據(jù)key獲取value。這里的AttributeKey不是原始的key,而是一個key的包裝類。AttributeKey確保了key的唯一性,在單個Netty應(yīng)用中,key值必須唯一。而Attribute也不是原始的value,而是value的包裝類。原始的value值就放置在Attribute包裝類中,可以通過Attribute包裝類實(shí)現(xiàn)value的讀取(get)和設(shè)置(set),取值和設(shè)置值。這個方法永遠(yuǎn)不會返回null,但可能會返回一個尚未設(shè)置值的Attribute。

AttributeMap只是一個接口,Netty提供了默認(rèn)的實(shí)現(xiàn)DefaultAttributeMap(Channel通道類就是繼承了這個類)。這個類維護(hù)了一個DefaultAttribute(繼承自AtomicReference類,用來保存value值,此外還維護(hù)了AttributeKey屬性和DefaultAttributeMap屬性)類型的數(shù)組變量attributes,提供了對attr方法的實(shí)現(xiàn)。對于傳入的AttributeKey會在attributes中二分查找是否存在,如果不存在則將有序插入(根據(jù)key的id值,默認(rèn)后插入的id要大)。

AttributeMap的實(shí)現(xiàn)要求是線程安全的,所以在DefaultAttributeMap中的實(shí)現(xiàn)都采用拷貝副本的方式??梢酝ㄟ^AttributeMap的attr方法,根據(jù)key取得Attribute類型的value,然后根據(jù)value實(shí)例完成最終的兩個重要操作:設(shè)置(set)和取值(get)。

使用方式:

// 定義key
public static final AttributeKey<ServerSession> SESSION_KEY = AttributeKey.valueOf("SESSION_KEY");
// ......
// 通過設(shè)置將會話綁定到通道
channel.attr(SESSION_KEY).set(session);
// 取值
ServerSession session = ctx.channel().attr(SESSION_KEY).get();

AttributeKey的創(chuàng)建需要用到靜態(tài)方法AttributeKey.valueOf(String)方法。該方法的返回值為一個AttributeKey實(shí)例,它的泛型類型為實(shí)際上的key-value鍵值對中value的鍵值對中value的實(shí)際類型。創(chuàng)建完AttributeKey之后就可以通過通道完成key-value的設(shè)值和取值了。

這里AttributeKey一般定義為一個常量,需要提前定義,它的泛型參數(shù)是Attribute最終的包裝值的value的數(shù)據(jù)類型。

到此這篇關(guān)于Netty通道的容器屬性Attribute詳解的文章就介紹到這了,更多相關(guān)Netty的Attribute屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java idea的External Libraries使用詳解(.idea 、.iml)

    java idea的External Libraries使用詳解(.idea 、.iml)

    這篇文章主要介紹了java idea的External Libraries使用詳解(.idea 、.iml),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-03-03
  • Java中的ArrayList容量及擴(kuò)容方式

    Java中的ArrayList容量及擴(kuò)容方式

    這篇文章主要介紹了Java中的ArrayList容量及擴(kuò)容方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 在idea中使用JaCoCo插件統(tǒng)計(jì)單元測試覆蓋率的實(shí)現(xiàn)

    在idea中使用JaCoCo插件統(tǒng)計(jì)單元測試覆蓋率的實(shí)現(xiàn)

    這篇文章主要介紹了在idea中使用JaCoCo插件統(tǒng)計(jì)單元測試覆蓋率的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • IDEA+JRebel實(shí)現(xiàn)全自動熱部署的方法步驟

    IDEA+JRebel實(shí)現(xiàn)全自動熱部署的方法步驟

    這篇文章主要介紹了IDEA+JRebel實(shí)現(xiàn)全自動熱部署的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • JavaAgent實(shí)現(xiàn)http接口發(fā)布方式淺析

    JavaAgent實(shí)現(xiàn)http接口發(fā)布方式淺析

    這篇文章主要介紹了JavaAgent實(shí)現(xiàn)http接口發(fā)布方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-03-03
  • spring boot 實(shí)現(xiàn)熱部署的幾種方式及配置方法

    spring boot 實(shí)現(xiàn)熱部署的幾種方式及配置方法

    這篇文章主要介紹了spring boot 實(shí)現(xiàn)熱部署的幾種方式及配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-05-05
  • Java 流的高級使用之收集數(shù)據(jù)解析

    Java 流的高級使用之收集數(shù)據(jù)解析

    這篇文章主要介紹了Java 流的高級使用之收集數(shù)據(jù)解析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 在Java中如何避免創(chuàng)建不必要的對象

    在Java中如何避免創(chuàng)建不必要的對象

    作為Java開發(fā)者,我們每天創(chuàng)建很多對象,但如何才能避免創(chuàng)建不必要的對象呢?這需要我們好好學(xué)習(xí),這篇文章主要給大家介紹了關(guān)于在Java中如何避免創(chuàng)建不必要對象的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Mybatis步驟分解實(shí)現(xiàn)一個增刪改查程序

    Mybatis步驟分解實(shí)現(xiàn)一個增刪改查程序

    MybatisPlus是國產(chǎn)的第三方插件, 它封裝了許多常用的CURDapi,免去了我們寫mapper.xml的重復(fù)勞動。本文將整合MybatisPlus實(shí)現(xiàn)增刪改查功能,感興趣的可以了解一下
    2022-05-05
  • Java設(shè)計(jì)模式初識之備忘錄模式詳解

    Java設(shè)計(jì)模式初識之備忘錄模式詳解

    備忘錄設(shè)計(jì)模式(Memento Design Pattern)也叫作快照(Snapshot)模式,主要用于實(shí)現(xiàn)防丟失、撤銷、恢復(fù)等功能。本文將通過示例為大家介紹一些備忘錄模式的定義與使用,需要的可以參考一下
    2022-11-11

最新評論

乌苏市| 辽宁省| 凌云县| 浮山县| 霍山县| 吉林市| 武夷山市| 临沧市| 武强县| 安阳县| 南乐县| 长汀县| 邓州市| 通州市| 甘谷县| 平原县| 郁南县| 天峻县| 富源县| 隆安县| 同仁县| 肥乡县| 内乡县| 绥阳县| 邛崃市| 来凤县| 乌审旗| 贵州省| 迁安市| 闽侯县| 宜君县| 北宁市| 弥渡县| 弋阳县| 介休市| 禄劝| 临澧县| 龙岩市| 扶绥县| 长垣县| 景德镇市|