您所在的位置:下載吧  >  軟件下載  >  其他軟件  >  程序源碼 > FlatBuffers(序列化庫)

FlatBuffers(序列化庫) v2.0.0 官方版

  • 軟件大小:1.95 MB
  • 軟件語言:簡體中文
  • 更新時間:2021-05-12
  • 授   權:免費軟件
  • 適用平臺:WinAll
  • 推薦度: 6
無病毒官方版
點擊查看大圖
軟件介紹

  FlatBuffers是一款非常專業且優秀的跨平臺序列化庫,旨在最大程度地提高內存效率,適用于多種不同的編程語言,包括C++,C#,C,Java,Python,PHP等,FlatBuffers是一個二進制緩沖區,與大多數內存數據結構不同,FlatBuffers使用嚴格的對齊和字節順序規則來確保這些緩沖區是跨平臺的,您可以在模式中定義對象類型,也可以將其編譯為C++或Java以實現低至零的讀寫開銷,FlatBuffers應用范圍非常廣,可使用它來序列化游戲數據,也可將其用于客戶端與服務器之間的通信,需要的話就趕快下載吧!

FlatBuffers(序列化庫)

軟件功能

  編寫一個架構文件,該文件可讓您定義可能要序列化的數據結構

  使用flatc(FlatBuffer編譯器)生成帶有幫助程序類的C ++頭文件(或Java / Kotlin / C#/ Go / Python ..類),以訪問和構造序列化數據。

  使用FlatBufferBuilder該類構造一個平面二進制緩沖區。生成的函數使您可以遞歸地將對象添加到此緩沖區中,通常就像進行單個函數調用一樣簡單。

  回讀時,您可以從二進制緩沖區中獲取指向根對象的指針

  可將緩沖區存儲或發送到某個地方

  對于表對象,FlatBuffers提供了向前/向后兼容性以及字段的一般可選性,以支持大多數形式的格式演變。

  FlatBuffers還提供“裸”結構,該結構不提供向前/向后兼容性,但可以更小(對于不太可能更改的非常小的對象(例如坐標對或RGBA顏色)很有用)。

  可以將有關格式的大多數信息納入生成的代碼中,從而減少存儲數據所需的內存以及訪問數據的時間。

軟件特色

  在不解析/解包的情況下訪問序列化數據

  FlatBuffers與眾不同之處在于,它在平坦的二進制緩沖區中表示層次結構數據,使得即使不進行解析/解包也可以直接訪問分層數據,同時還支持數據結構的演進(forward /向后兼容)。

  內存效率和速度

  訪問數據所需的唯一內存是緩沖區的內存。它需要0個額外的分配(在C ++中,其他語言可能會有所不同)。FlatBuffers也非常適合與mmap(或流)一起使用,僅要求將部分緩沖區存儲在內存中。訪問僅通過一個額外的間接調用(一種vtable)即可接近原始結構訪問的速度,以允許格式演變和可選字段。它針對那些不希望花費時間和空間(許多內存分配)來訪問或構造序列化數據的項目,例如在游戲或任何其他對性能敏感的應用程序中。有關詳細信息,請參見基準。

  靈活

  可選字段不僅意味著您具有很好的前后兼容性(對于長壽命游戲也越來越重要:不必使用每個新版本更新所有數據!)。這也意味著您在寫入哪些數據,不寫入哪些數據以及如何設計數據結構方面有很多選擇。

  微小的代碼占用空間

  生成的代碼很少,只有一個小的標頭作為最小的依賴關系,非常易于集成。同樣,請參閱基準測試部分以了解詳細信息。

  強類型

  錯誤發生在編譯時,而不是手動編寫重復且容易出錯的運行時檢查。可以為您生成有用的代碼。

  使用方便

  生成的C ++代碼允許簡潔的訪問和構造代碼。然后是可選功能,可以在需要時在運行時高效地解析模式和類似JSON的文本表示形式(比其他JSON解析器更快,更高效地使用內存)。Java,Kotlin和Go代碼支持對象重用。C#具有高效的基于結構的訪問器。

  無需依賴項的跨平臺代碼

  C ++代碼可與任何最新的gcc / clang和VS2010一起使用。隨附用于測試和示例的構建文件(Android .mk文件,以及用于所有其他平臺的cmake)。

官方教程

  編寫FlatBuffer模式

  要開始使用FlatBuffers,首先需要創建一個schema文件,該文件定義要序列化的每個數據結構的格式。這是schema為我們的定義模板的模板:

FlatBuffers(序列化庫)

  如您所見,schema 接口定義語言(IDL)的語法與C系列語言和其他IDL語言的語法相似。讓我們檢查其中的每個部分schema以確定其作用。

  該schema帶開始namespace申報。這將為生成的代碼確定相應的包/名稱空間。在我們的示例中,我們在Sample名稱空間內部具有MyGame名稱空間。

  接下來,我們有一個enum定義。在此示例中,我們有一個enum類型為byte,名為Color。我們在這三個值enum:Red,Green,和Blue。我們指定Red = 0和Blue = 2,但未指定的顯式值Green。由于an的行為enum是在未指定的情況下遞增,因此Green將收到的隱式值1。

  緊隨其后的enum是一個union。在union這個例子不是非常有用,因為它僅包含一個table(命名Weapon)。如果我們創建了多個表,希望union它們能夠被引用,則可以向中添加更多元素union Equipment。

  之后union是struct Vec3,它表示具有3尺寸的浮點向量。我們使用了struct這里,過了table,因為structs為理想的,不會改變,因為它們使用更少的內存,并具有更快的查找數據結構。

  該Monster表是FlatBuffer中的主要對象。這將用作存儲我們的orc怪物的模板。我們為字段指定了一些默認值,例如mana:short = 150。如果未指定,則標量字段(如int,uint或float)將默認設置為,0而字符串和表格將默認設置為null。需要注意的另一件事是線路friendly:bool = false (deprecated);。由于您不能從中刪除字段table(以支持向后兼容性),因此可以將字段設置為deprecated,這將防止在生成的代碼中為此字段生成訪問器。deprecated但是,使用時要小心,因為它可能會破壞使用此訪問器的舊代碼。

  該Weapon表是在FlatBuffer中使用的子表。它被使用兩次:一次在Monster表中,一次在Equipment聯合中。對于我們來說Monster,它用于在我們vector of tables的weapons字段中填充一個via字段Monster。它也是Equipment工會引用的唯一表。

  的最后一部分schema是root_type。根類型聲明將是序列化數據的根表。在我們的例子中,根類型是我們的Monster表。

  標量類型還可以使用別名類型名稱,例如int16代替short和float32代替float。因此,我們也可以將該Weapon表編寫為:

FlatBuffers(序列化庫)

  編譯怪物的模式

  編寫FlatBuffers模式后,下一步就是對其進行編譯。

  如果您尚未這樣做,請按照以下說明來構建flatcFlatBuffer編譯器。

  一旦flatc構建成功,請為您的語言編譯架構:

FlatBuffers(序列化庫)

  讀寫Monster FlatBuffers

  現在,我們已經為編程語言編譯了架構,我們可以開始創建一些怪物,然后從FlatBuffers對其進行序列化/反序列化。

  創建和編寫Orc FlatBuffers

  第一步是導入/包括庫,生成的文件等。

FlatBuffers(序列化庫)

  現在我們準備開始構建一些緩沖區。為了開始,我們需要創建一個實例,該實例FlatBufferBuilder將包含緩沖區的增長。您可以傳遞緩沖區的初始大小(此處為1024字節),如果需要,該大小將自動增長:

FlatBuffers(序列化庫)

  創建完之后builder,我們就可以開始序列化數據了。在制作orc怪物之前,讓我們創建一些Weapon:aSword和an Axe。

FlatBuffers(序列化庫)

  現在,讓我們創建我們的怪物orc。為此orc,讓他red發怒,定位于(1.0, 2.0, 3.0),并給他大量的生命值300。我們可以給他一個向量的武器(我們Sword和Axe以前)。在這種情況下,我們將為他配備Axe,因為它是兩者中功能最強大的。最后,讓我們用一些潛在的寶藏來填補他的庫存,一旦他被擊敗,這些寶藏就可以被拿走。

  在序列化怪物之前,我們需要首先序列化包含在其中的所有對象,即,我們使用深度優先的預遍歷序列化數據樹。通常在任何樹形結構上都很容易做到這一點。

FlatBuffers(序列化庫)

  我們序列化了兩個內置數據類型(string和vector),并捕獲了它們的返回值。這些值是序列化數據中的偏移量,指示它們的存儲位置,以便在向怪物添加字段時可以在下面引用它們。

  注意:要創建一個vector嵌套對象(例如tables,strings或other vector),請將其偏移量收集到一個臨時數據結構中,然后創建一個vector包含其偏移量的附加對象。

  如果不是從一個現有的數組創建向量,而是逐個序列化元素,請注意,這是相反的順序,因為緩沖區是從頭開始構建的。

  例如,看一下Weapon我們先前創建的兩個(Sword和Axe)。它們都是FlatBuffer table,它們的偏移量現在存儲在內存中。因此,我們可以創建一個FlatBuffervector來包含這些偏移量。

FlatBuffers(序列化庫)

  請注意,還有其他的便利重載CreateVector,它允許您處理不在a中的數據,std::vector或者允許您通過調用lambda來生成元素。對于的常見情況,std::vector也有CreateVectorOfStrings。

  請注意,結構的向量與表的序列化方式不同,因為結構以內聯方式存儲在向量中。例如,為path上面的字段創建一個向量:

FlatBuffers(序列化庫)

  現在我們已經序列化了獸人的非標量組件,因此我們可以序列化怪物本身:

FlatBuffers(序列化庫)

  如果您不想在a中設置每個字段table,則可以更方便地手動設置怪物的每個字段,而不是調用CreateMonster()。以下代碼段在功能上等同于上面的代碼,但提供了更多的靈活性。

FlatBuffers(序列化庫)

  在完成序列化之前,讓我們快速看一下FlatBuffer union Equipped。每個FlatBuffer都有兩部分union。第一個_type是生成的隱藏字段,用于保存所table引用的類型union。這使您可以在運行時知道要轉換為哪種類型。其次是union的數據。

  在我們的示例中,我們添加到的最后兩件事Monster是Equipped Type和Equipped本身。

  這是這些行的重復,以幫助更清楚地突出顯示它們:

FlatBuffers(序列化庫)

  創建緩沖區后,orc變量中的數據根將具有偏移量,因此可以通過調用適當的finish方法來完成緩沖區。

FlatBuffers(序列化庫)

  現在可以準備將緩沖區存儲在某個位置,通過網絡發送,進行壓縮或進行任何其他操作。您可以這樣訪問緩沖區:

FlatBuffers(序列化庫)

FlatBuffers(序列化庫)下載地址

本類最新
  • Guns后臺管理系統

    12.5 MB/2020-08-17

    Guns后臺管理系統是一款項目快速開發管理系統網站搭建模板,基于SpringBoot2開發,內置主控面板、組織架構、用戶管理、機構管理、職位管理、權限管理、基礎數據、系統功能

  • 狂雨小說cms

    7.8 MB/2020-08-17

    狂雨小說是一款體積輕量、簡單易用的輕量級小說網站搭建模板,基于ThinkPHP5.1+MySQL的技術開發,網站搭建和部署便捷簡單,通過該模板用戶可以快速搭建一個屬于自己的小說內

  • Slidev(開發幻燈片展示)

    8.52 MB/2020-08-17

    Slidev是一款非常專業且優秀的開發幻燈片展示軟件,作為基于Web的幻燈片制作和演示軟件,非常適合開發人員使用,可幫助他們專注于在Markdown中編寫內容,軟件功能強大,擁有HTML

  • 魔眾短鏈接系統

    27.5 MB/2020-08-17

    魔眾短鏈接系統是一款綠色安全、免費開源的短鏈接生成網站搭建模板,基于PHP+Mysql開發,可幫助用戶快速搭建屬于自己的短鏈接生成網站,該網站界面簡潔美觀、對SEO非常友好,功

  • 易語言資源網源碼下載工具

    1.51 MB/2020-08-17

    易語言資源網源碼下載工具是一款對開發者極為有用的易語言源碼查找工具,用戶可以通過這款工具在易語言資源網中查找各種項目的源碼;很多開發者在開發項目時會在網上查找一

  • W5 SOAR(自動化響應平臺)

    6.8 MB/2020-08-17

    W5SOAR是一款功能強大、簡單專業的智能流程編排軟件,基于Python開發,專為企業安全編排而傾力研發的自動化響應平臺,使用該軟件用戶無需進行編碼也可實現自動化響應流程,該

  • 魔眾文檔管理系統

    28.8 MB/2020-08-17

    魔眾文檔管理系統是一款綠色安全、免費開源的文檔管理網站搭建模板,可幫助用戶快速搭建功能全面、安全穩定的網站系統,完成網站文檔管理系統搭建后可以對多格式文檔進行管

  • Milvus(矢量數據庫)

    6.0 MB/2020-08-17

    Milvus是一個綠色安全、免費開源的矢量數據庫,支持針對TB級向量的增刪改操作和近實時查詢,可讓用戶對數據庫內的所有數據進行搜索和瀏覽編輯,該軟件擁有類似于智能的向量搜

每日更新軟件推薦
  • 一周最熱
  • 總排行榜

您可能感興趣的專題

  • 男生必備

    男生必備

    男生們看過來!

  • 安卓裝機必備

    安卓裝機必備

  • 女生必備

    女生必備

      女生必備app是擁有眾多女性用戶的手機軟件,作為一個女生,生活中像淘寶、京東這類線上購物軟件可以說是少不了的,小紅書這種穿搭、化妝分享平臺也很受歡迎,類似于西柚大姨媽、美柚這種專為女生打造的生理期app更是手機必備,還有大家用的最多拍照美顏app是絕對不能忘記的,除此之外對于一些追星女孩來說,微博也是一個必不可少的軟件。超多女生必備軟件盡在下載吧!

  • 迅雷看看使用教程

    迅雷看看使用教程

    迅雷看看播放器是一款多功能在線高清多媒體視頻播放器,支持本地播放與在線視頻點播,采用P2P點對點傳輸技術,可以在線流暢觀看高清晰電影。不僅如此,迅雷看看不斷完善用戶交互和在線產品體驗,讓您的工作與生活充滿樂趣。

  • 驅動精靈

    驅動精靈

    驅動精靈是一款集驅動管理和硬件檢測于一體的、專業級的驅動管理和維護工具。驅動精靈為用戶提供驅動備份、恢復、安裝、刪除、在線更新等實用功能,也是大家日常生活中經常用到的實用型軟件之一了。

  • 拼音輸入法

    拼音輸入法

    對于電腦文字輸入,拼音輸入法是一種非常受歡迎的輸入法,搜狗拼音輸入法、百度拼音輸入法、QQ拼音輸入法、谷歌拼音輸入法、紫光拼音輸入法、智能拼音輸入法等,你在用哪款呢?一款好用適合自己的拼音輸入法一定對您平時幫助很大!下載吧收集了最熱門國人最喜歡用的拼音輸入法給大家。

  • b站嗶哩嗶哩怎么使用

    b站嗶哩嗶哩怎么使用

    很多人都喜歡在b站嗶哩嗶哩上觀看視頻,不單是因為可以提前看到一些視頻資源,B站的一些彈幕、評論的玩法也是被網友們玩壞了!下面下載吧小編帶來了b站嗶哩嗶哩怎么使用的教程合集!希望能幫到你啦!

  • 抖音短視頻app

    抖音短視頻app

    抖音短視頻app,這里匯聚全球潮流音樂,搭配舞蹈、表演等內容形式,還有超多原創特效、濾鏡、場景切換幫你一秒變大片,為你打造刷爆朋友圈的魔性短視頻。腦洞有多大,舞臺就有多大!好玩的人都在這兒!

国产精品亚洲五月天高清,国产精品一区第二页,国产精品每日更新在线