Buffer原始碼解析

2021-09-02 21:30:48 字數 1854 閱讀 1846

[size=large][align=center]buffer原始碼解析[/align][/size]

/**

* 乙個特定基元型別資料的容器。

* 緩衝器是乙個特定的線性、有限的元素序列的原始型別。除了內容之外,。

* 緩衝區的基本屬性是其容量(capacity)、限制(limit)和位置(position)。

** capacity:緩衝區的容量是它包含的元素的數量。緩衝區的容量從不為負,也從不改變。

* limit:緩衝區的limit是應該的第乙個元素的索引。也從不為負,小於其capacity。

* position:緩衝區的位置是下乙個元素的索引。從不為負,小於它的limit。

** 每個非布林基元型別都有這個類的乙個子類。

* 包括(bytebuffer,charbuffer,shortbuffer,intbuffer,longbuffer,floatbuffer,doublebuffer)

** 這個類的每個子類定義了兩個類別的get和put操作,

* * 緩衝區是執行緒不安全,可由多個併發執行緒使用。如果乙個緩衝區將被多個執行緒使用,然後訪問緩衝區。

* 應該通過適當的同步來控制。

* */

public abstract class buffer

}//返回該緩衝區的容量

public final int capacity()

//返回該緩衝區的位置

public final int position()

/*** 設定此緩衝區的位置。如果標記被定義並且大於新的位置然後被丟棄

* 新位置:必須是非負數且不大於當前的限制

*/public final buffer position(int newposition)

//返回該緩衝區的限制

public final int limit()

public final buffer limit(int newlimit)

//在其位置設定此緩衝區的標記

public final buffer mark()

//將此緩衝區的位置重置為先前標記的位置。呼叫此方法既不更改也不丟棄標記的值

public final buffer reset()

//清除快取區,恢復預設值,將limit值定為capacity的值

public final buffer clear()

//重置快取區,limit=position(上次寫到的位置),position=0(重置為0)

//也可以認為,是將buffer的寫模式,換成讀模式,從陣列起始處開始讀

public final buffer flip()

public final buffer rewind()

//返回當前位置和限制之間的元素個數。

//如果快取區中的資料已經被全部讀取完畢,limit-position=0

public final int remaining()

//說明當前位置和極限之間是否存在任何元素。若有,返回為true

public final boolean hasremaining()

public abstract boolean isreadonly();

//說明該緩衝區是否由可訪問陣列支援。

public abstract boolean hasarray();

public abstract object array();

public abstract int arrayoffset();

//快取區是否為直接值

public abstract boolean isdirect();

}

Fabric 原始碼解析 原始碼目錄解析

這裡對重要的一些目錄進行說明 bccsp 與密碼學 加密 簽名 證書等等 相關的加密服務 將fabric中用到的密碼學相關的函式抽象成了一組介面,便於拓展。bddtests 一種新型的軟體開發模式 行為驅動開 需求 開發 common 一些公共庫 錯誤處理 日誌處理 賬本儲存 策略以及各種工具等等 ...

Spring原始碼解析之 Aop原始碼解析(2)

spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...

muduo原始碼閱讀(四) Buffer的設計

muduo的圖示 muduo的io模型採用的是阻塞式的,因此執行緒只能阻塞在 seletc poll epoll wait 當中,而不能阻塞的write read函式中,這麼一來,應用層的緩衝是必須的。每乙個tcp socket都要配備乙個input buffer和乙個 output buffer。...