欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Netty通道的容器屬性Attribute詳解

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

Netty通道的容器屬性Attribute詳解

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

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

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

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

使用方式:

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

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

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

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

相關文章

  • 詳解Java中static關鍵字和內部類的使用

    詳解Java中static關鍵字和內部類的使用

    這篇文章主要為大家詳細介紹了Java中static關鍵字和內部類的使用,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-08-08
  • java 二分法詳解幾種實現(xiàn)方法

    java 二分法詳解幾種實現(xiàn)方法

    這篇文章主要介紹了java 二分法詳解幾種方法的相關資料,需要的朋友可以參考下
    2017-02-02
  • java讀取枚舉類的值轉成list和map方式

    java讀取枚舉類的值轉成list和map方式

    這篇文章主要介紹了java讀取枚舉類的值轉成list和map方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • java中使用logger打印日志有哪些坑

    java中使用logger打印日志有哪些坑

    在Java中使用日志記錄器(Logger)打印日志時,確實存在一些常見的坑需要注意,本文就來介紹一下幾種方法,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • 詳細解讀Hibernate的緩存機制

    詳細解讀Hibernate的緩存機制

    這篇文章主要介紹了詳細解讀Hibernate的緩存機制,具有一定參考價值,這里分享給大家,供大家學習參閱。
    2017-10-10
  • Future與FutureTask接口實現(xiàn)示例詳解

    Future與FutureTask接口實現(xiàn)示例詳解

    這篇文章主要為大家介紹了Future與FutureTask接口實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 解決SpringBoot中LocalDateTime返回前端數(shù)據(jù)為數(shù)組結構的問題

    解決SpringBoot中LocalDateTime返回前端數(shù)據(jù)為數(shù)組結構的問題

    本文主要介紹了解決SpringBoot中LocalDateTime返回前端數(shù)據(jù)為數(shù)組結構的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-03-03
  • Java8特性使用Function代替分支語句

    Java8特性使用Function代替分支語句

    這篇文章主要介紹了Java8特性使用Function代替分支語句,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Java中數(shù)組的常見操作合集

    Java中數(shù)組的常見操作合集

    這篇文章主要為大家詳細介紹了Java中數(shù)組的一些常見操作,例如:數(shù)組遍歷、數(shù)組獲取最大值元素、數(shù)組反轉等,感興趣的小伙伴可以了解一下
    2022-10-10
  • java 接口回調實例詳解

    java 接口回調實例詳解

    這篇文章主要介紹了java 接口回調實例詳解的相關資料,所謂回調就是使用java中的多態(tài),需要的朋友可以參考下
    2017-07-07

最新評論