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

.net?core中的System.Buffers命名空間

 更新時間:2022年07月01日 11:23:48   作者:天方  
這篇文章介紹了.net?core中的System.Buffers命名空間,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

最近研究了一下.net core 2.1的基礎(chǔ)類庫,發(fā)現(xiàn)它引入了一個System.Buffers名字空間,里面提供了一系列比較實用的對象,便簡單的管中窺豹瀏覽一下。

ArrayPool<T>

ArrayPool<T>是一個數(shù)組類型的對象池,本身ArrayPoo<T>是一個抽象類,但他有一個默認的實現(xiàn)ArrayPoo<T>. Shared,使用方法如下:

var pool   = ArrayPool<byte>.Shared;
var buffer = pool.Rent(2048);
try
{
    //使用buffer
}
finally
{
    pool.Return(buffer);
    //歸還buffer后不要再使用
}

方法比較簡單:

  • 通過Rent從對象池中申請buffer
  • 使用完后,通過Return將buffer歸還至對象池

微軟的文檔上并沒有詳細描述默認的ArrayPoo<T>的對象申請算法。

不過并不復(fù)雜,和傳統(tǒng)的對象池的維護方式也差不多:

  • 系統(tǒng)維持著一個對象池
  • 調(diào)用Rent的時候,首先會到對象池中查看是否有合適的對象(至少要滿足最小長度),如果有則直接返回對象池中的對象,并將其從對象池中移除
  • 調(diào)用Return時,將對象放置到對象池,從而可以作為下次Rent的候選對象

注:這里只記錄了主要相關(guān)功能,實際算法比這個復(fù)雜。另外,由于沒有很詳細看實現(xiàn)方式,如要描述不正確的地方歡迎指正

也就是說,return后的對象,很可能被別的地方rent走,因此可能導致讀寫沖突。(類似于c語言中的野指針,但仍然是安全的,不會造成內(nèi)存錯誤)

MemoryPool<T>

除了ArrayPool外,System.Buffers名字空間下還提供了一個MemoryPool,它的使用方式和ArraPool比較類似,基本示例如下:

var pool   = MemoryPool<byte>.Shared;
var buffer = pool.Rent(2048);
try
{
    var memory = buffer.Memory;
    //use Memory<byte>
}
finally
{
    buffer.Dispose();
}

整個過程還是非常類似的,不過釋放的時候是調(diào)用的Dispose方法,用起來實際要更加方便點。不過這里申請到的是Memory<T>對象,可能有的地方不像byte[]那樣適用 。

關(guān)于MemoryPool的實現(xiàn),我在github上找了一下,還沒有看到。不過由于它返回的是Memory<T>,理論上來講應(yīng)該是有更高的效率。(例如,可以把一個大段的buffer分成多個memory返回,從而減少申請新對象)

BinaryPrimitives

BinaryPrimitives位于System.Buffers.Binary名字空間下,它提供了一系列數(shù)字和字節(jié)互相轉(zhuǎn)換的函數(shù)。

它的主要好處是是提供了常用BigEndian類型的數(shù)字的支持,在網(wǎng)絡(luò)編程或者文件解析的方式的時候非常實用,免得造輪子了。

Utf8Parser、Utf8Formatter和Base64

這三個類位于System.Buffers.Text下,它主要用于utf8編碼和base64編碼下的常用類型的讀寫,如datetime,guid,bool等,并且支持常用的序列化方式。。

到此這篇關(guān)于System.Buffers命名空間的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • FileStreaReder和StreamReader兩個類介紹

    FileStreaReder和StreamReader兩個類介紹

    由于最近需要對文件進行處理,所以看了一下MSDN的System.IO讀取文件的兩個類。下面對兩個類簡單的整理一下
    2012-04-04
  • .Net創(chuàng)建型設(shè)計模式之工廠方法模式(Factory?Method)

    .Net創(chuàng)建型設(shè)計模式之工廠方法模式(Factory?Method)

    這篇文章介紹了.Net設(shè)計模式之工廠方法模式(Factory?Method),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 部署ASP.NET?Core程序到Windows系統(tǒng)

    部署ASP.NET?Core程序到Windows系統(tǒng)

    這篇文章介紹了部署ASP.NET?Core程序到Windows系統(tǒng)的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • 通過VS中的數(shù)據(jù)源選擇對話框簡單實現(xiàn)數(shù)據(jù)庫連接配置

    通過VS中的數(shù)據(jù)源選擇對話框簡單實現(xiàn)數(shù)據(jù)庫連接配置

    通過VS中的數(shù)據(jù)源選擇對話框簡單實現(xiàn)數(shù)據(jù)庫連接配置...
    2007-02-02
  • 給.net初學者的一些建議(共勉之)

    給.net初學者的一些建議(共勉之)

    給.net初學者的一些建議(共勉之)...
    2006-09-09
  • .NET?6更新使.NET生態(tài)系統(tǒng)蛻變

    .NET?6更新使.NET生態(tài)系統(tǒng)蛻變

    微軟正式發(fā)布.NET最新長期支持版本.NET?6,這個版本的更新重點,除了C#和F#都有許多語言功能改進之外,.NET?6終于集大成,成為跨瀏覽器、云計算、桌面、物聯(lián)網(wǎng)和移動應(yīng)用程序的統(tǒng)一平臺,性能也獲得大幅提升,并且更完整支持Arm64
    2022-01-01
  • ASP.Net?Core?MVC基礎(chǔ)系列之環(huán)境設(shè)置

    ASP.Net?Core?MVC基礎(chǔ)系列之環(huán)境設(shè)置

    這篇文章介紹了ASP.Net?Core?MVC環(huán)境設(shè)置的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • asp.net中的cookie使用介紹

    asp.net中的cookie使用介紹

    asp.net中的cookie使用介紹,這里腳本之家將一些asp.net中的cookie操作方法整理下,需要的朋友可以參考下
    2012-05-05
  • .Net結(jié)構(gòu)型設(shè)計模式之享元模式(Flyweight)

    .Net結(jié)構(gòu)型設(shè)計模式之享元模式(Flyweight)

    這篇文章介紹了.Net結(jié)構(gòu)型設(shè)計模式之享元模式(Flyweight),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 利用C#遠程存取Access數(shù)據(jù)庫

    利用C#遠程存取Access數(shù)據(jù)庫

    目前,基于數(shù)據(jù)庫服務(wù)器的桌面管理程序和Web程序已經(jīng)有太多的應(yīng)用了,尤其是網(wǎng)絡(luò)的大量普及,孤立地數(shù)據(jù)庫管理系統(tǒng)無法勝任分布式管理應(yīng)用,但是面對基于Access數(shù)據(jù)庫的現(xiàn)有的桌面應(yīng)用我們也無法完全的摒棄。我們利用.Net 遠程處理功能將連接和存取Access的行為封裝為一個遠程對象,供網(wǎng)絡(luò)中其它客戶端通過調(diào)用該遠程對象來存取實際的Access數(shù)據(jù)庫。我們以 C# 2005 為開發(fā)語言來實現(xiàn)上述功能。
    2008-04-04

最新評論

长白| 龙里县| 日土县| 高碑店市| 彝良县| 临泽县| 林州市| 泰来县| 彩票| 定结县| 丹凤县| 天柱县| 鄢陵县| 科尔| 东至县| 达尔| 黑龙江省| 康保县| 焦作市| 柳州市| 康马县| 基隆市| 武夷山市| 甘泉县| 蒲城县| SHOW| 桦南县| 海口市| 兴义市| 夏邑县| 上蔡县| 怀宁县| 邵阳市| 沭阳县| 安平县| 彰化县| 长沙市| 望江县| 桓仁| 竹山县| 克拉玛依市|