日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)據(jù)結(jié)構(gòu)LSM tree核心實(shí)現(xiàn)講解

數(shù)據(jù)分析與開(kāi)發(fā) ? 來(lái)源:sowhat1412 ? 作者:sowhat1412 ? 2021-09-30 14:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

LSM tree (log-structured merge-tree) 是一種對(duì)頻繁寫(xiě)操作非常友好的數(shù)據(jù)結(jié)構(gòu),同時(shí)兼顧了查詢效率。LSM tree 是許多 key-value 型或日志型數(shù)據(jù)庫(kù)所依賴的核心數(shù)據(jù)結(jié)構(gòu),例如 BigTable、HBase、Cassandra、LevelDB、SQLite、Scylla、RocksDB 等。

LSM tree 之所以有效是基于以下事實(shí):磁盤(pán)或內(nèi)存的連續(xù)讀寫(xiě)性能遠(yuǎn)高于隨機(jī)讀寫(xiě)性能,有時(shí)候這種差距可以達(dá)到三個(gè)數(shù)量級(jí)之高。這種現(xiàn)象不僅對(duì)傳統(tǒng)的機(jī)械硬盤(pán)成立,對(duì) SSD 硬盤(pán)也同樣成立。如下圖:

LSM tree 在工作過(guò)程中盡可能避免隨機(jī)讀寫(xiě),充分發(fā)揮了磁盤(pán)連續(xù)讀寫(xiě)的性能優(yōu)勢(shì)。

SSTable

LSM tree 持久化到硬盤(pán)上之后的結(jié)構(gòu)稱為 Sorted Strings Table (SSTable)。顧名思義,SSTable 保存了排序后的數(shù)據(jù)(實(shí)際上是按照 key 排序的 key-value 對(duì))。每個(gè) SSTable 可以包含多個(gè)存儲(chǔ)數(shù)據(jù)的文件,稱為 segment,每個(gè) segment 內(nèi)部都是有序的,但不同 segment 之間沒(méi)有順序關(guān)系。一個(gè) segment 一旦生成便不再修改(immutable)。一個(gè) SSTable 的示例如下:

可以看到,每個(gè) segment 內(nèi)部的數(shù)據(jù)都是按照 key 排序的。下面我們來(lái)介紹每個(gè) segment 是如何生成的。

寫(xiě)入數(shù)據(jù)

LSM tree 的所有寫(xiě)操作均為連續(xù)寫(xiě),因此效率非常高。但由于外部數(shù)據(jù)是無(wú)序到來(lái)的,如果無(wú)腦連續(xù)寫(xiě)入到 segment,顯然是不能保證順序的。對(duì)此,LSM tree 會(huì)在內(nèi)存中構(gòu)造一個(gè)有序數(shù)據(jù)結(jié)構(gòu)(稱為 memtable),例如紅黑樹(shù)。每條新到達(dá)的數(shù)據(jù)都插入到該紅黑樹(shù)中,從而始終保持?jǐn)?shù)據(jù)有序。當(dāng)寫(xiě)入的數(shù)據(jù)量達(dá)到一定閾值時(shí),將觸發(fā)紅黑樹(shù)的 flush 操作,把所有排好序的數(shù)據(jù)一次性寫(xiě)入到硬盤(pán)中(該過(guò)程為連續(xù)寫(xiě)),生成一個(gè)新的 segment。而之后紅黑樹(shù)便從零開(kāi)始下一輪積攢數(shù)據(jù)的過(guò)程。

讀取/查詢數(shù)據(jù)

如何從 SSTable 中查詢一條特定的數(shù)據(jù)呢?一個(gè)最簡(jiǎn)單直接的辦法是掃描所有的 segment,直到找到所查詢的 key 為止。通常應(yīng)該從最新的 segment 掃描,依次到最老的 segment,這是因?yàn)樵绞亲罱臄?shù)據(jù)越可能被用戶查詢,把最近的數(shù)據(jù)優(yōu)先掃描能夠提高平均查詢速度。

當(dāng)掃描某個(gè)特定的 segment 時(shí),由于該 segment 內(nèi)部的數(shù)據(jù)是有序的,因此可以使用二分查找的方式,在

O(logn) 的時(shí)間內(nèi)得到查詢結(jié)果。但對(duì)于二分查找來(lái)說(shuō),要么一次性把數(shù)據(jù)全部讀入內(nèi)存,要么在每次二分時(shí)都消耗一次磁盤(pán) IO,當(dāng) segment 非常大時(shí)(這種情況在大數(shù)據(jù)場(chǎng)景下司空見(jiàn)慣),這兩種情況的代價(jià)都非常高。一個(gè)簡(jiǎn)單的優(yōu)化策略是,在內(nèi)存中維護(hù)一個(gè)稀疏索引(sparse index),其結(jié)構(gòu)如下圖:

稀疏索引是指將有序數(shù)據(jù)切分成(固定大小的)塊,僅對(duì)各個(gè)塊開(kāi)頭的一條數(shù)據(jù)做索引。與之相對(duì)的是全量索引(dense index),即對(duì)全部數(shù)據(jù)編制索引,其中的任意一條數(shù)據(jù)發(fā)生增刪均需要更新索引。兩者相比,全量索引的查詢效率更高,達(dá)到了理論極限值

O(logn),但寫(xiě)入和刪除效率更低,因?yàn)槊看螖?shù)據(jù)增刪時(shí)均需要因?yàn)楦滤饕囊淮?IO 操作。通常的關(guān)系型數(shù)據(jù)庫(kù),例如 MySQL 等,其內(nèi)部采用 B tree 作為索引結(jié)構(gòu),這便是一種全量索引。

有了稀疏索引之后,可以先在索引表中使用二分查找快速定位某個(gè) key 位于哪一小塊數(shù)據(jù)中,然后僅從磁盤(pán)中讀取這一塊數(shù)據(jù)即可獲得最終查詢結(jié)果,此時(shí)加載的數(shù)據(jù)量?jī)H僅是整個(gè) segment 的一小部分,因此 IO 代價(jià)較小。以上圖為例,假設(shè)我們要查詢 dollar 所對(duì)應(yīng)的 value。首先在稀疏索引表中進(jìn)行二分查找,定位到 dollar 應(yīng)該位于 dog 和 downgrade 之間,對(duì)應(yīng)的 offset 為 17208~19504。之后去磁盤(pán)中讀取該范圍內(nèi)的全部數(shù)據(jù),然后再次進(jìn)行二分查找即可找到結(jié)果,或確定結(jié)果不存在。

稀疏索引極大地提高了查詢性能,然而有一種極端情況卻會(huì)造成查詢性能驟降:當(dāng)要查詢的結(jié)果在 SSTable 中不存在時(shí),我們將不得不依次掃描完所有的 segment,這是最差的一種情況。有一種稱為**布隆過(guò)濾器(bloom filter)**的數(shù)據(jù)結(jié)構(gòu)天然適合解決該問(wèn)題。布隆過(guò)濾器是一種空間效率極高的算法,能夠快速地檢測(cè)一條數(shù)據(jù)是否在數(shù)據(jù)集中存在。我們只需要在寫(xiě)入每條數(shù)據(jù)之前先在布隆過(guò)濾器中登記一下,在查詢時(shí)即可斷定某條數(shù)據(jù)是否缺失。

布隆過(guò)濾器的內(nèi)部依賴于哈希算法,當(dāng)檢測(cè)某一條數(shù)據(jù)是否見(jiàn)過(guò)時(shí),有一定概率出現(xiàn)假陽(yáng)性(False Positive),但一定不會(huì)出現(xiàn)假陰性(False Negative)。也就是說(shuō),當(dāng)布隆過(guò)濾器認(rèn)為一條數(shù)據(jù)出現(xiàn)過(guò),那么該條數(shù)據(jù)很可能出現(xiàn)過(guò);但如果布隆過(guò)濾器認(rèn)為一條數(shù)據(jù)沒(méi)出現(xiàn)過(guò),那么該條數(shù)據(jù)一定沒(méi)出現(xiàn)過(guò)。這種特性剛好與此處的需求相契合,即檢驗(yàn)?zāi)硹l數(shù)據(jù)是否缺失。

文件合并(Compaction)

隨著數(shù)據(jù)的不斷積累,SSTable 將會(huì)產(chǎn)生越來(lái)越多的 segment,導(dǎo)致查詢時(shí)掃描文件的 IO 次數(shù)增多,效率降低,因此需要有一種機(jī)制來(lái)控制 segment 的數(shù)量。對(duì)此,LSM tree 會(huì)定期執(zhí)行文件合并(compaction)操作,將多個(gè) segment 合并成一個(gè)較大的 segment,隨后將舊的 segment 清理掉。由于每個(gè) segment 內(nèi)部的數(shù)據(jù)都是有序的,合并過(guò)程類(lèi)似于歸并排序,效率很高,只需要

O(n)O(n)的時(shí)間復(fù)雜度。

在上圖的示例中,segment 1 和 2 中都存在 key 為 dog 的數(shù)據(jù),這時(shí)應(yīng)該以最新的 segment 為準(zhǔn),因此合并后的值取 84 而不是 52,這實(shí)現(xiàn)了類(lèi)似于字典/HashMap 中“覆蓋寫(xiě)”的語(yǔ)義。

刪除數(shù)據(jù)

現(xiàn)在你已經(jīng)了解了 LSM tree 讀寫(xiě)數(shù)據(jù)的方式,那么如何刪除數(shù)據(jù)呢?如果是在內(nèi)存中,刪除某塊數(shù)據(jù)通常是將它的引用指向 NULL,那么這塊內(nèi)存就會(huì)被回收。但現(xiàn)在的情況是,數(shù)據(jù)已經(jīng)存儲(chǔ)在硬盤(pán)中,要從一個(gè) segment 文件中間抹除一段數(shù)據(jù)必須要覆寫(xiě)其之后的所有內(nèi)容,這個(gè)成本非常高。LSM tree 所采用的做法是設(shè)計(jì)一個(gè)特殊的標(biāo)志位,稱為 tombstone(墓碑),刪除一條數(shù)據(jù)就是把它的 value 置為墓碑,如下圖所示:

這個(gè)例子展示了刪除 segment 2 中的 dog 之后的效果。注意,此時(shí) segment 1 中仍然保留著 dog 的舊數(shù)據(jù),如果我們查詢 dog,那么應(yīng)該返回空,而不是 52。因此,刪除操作的本質(zhì)是覆蓋寫(xiě),而不是清除一條數(shù)據(jù),這一點(diǎn)初看起來(lái)不太符合常識(shí)。墓碑會(huì)在 compact 操作中被清理掉,于是置為墓碑的數(shù)據(jù)在新的 segment 中將不復(fù)存在。

LSM tree 與 B tree 的對(duì)比

主流的關(guān)系型數(shù)據(jù)庫(kù)均以 B/B+ tree 作為其構(gòu)建索引的數(shù)據(jù)結(jié)構(gòu),這是因?yàn)?B tree 提供了理論上最高的查詢效率 O(log n)

O(logn)。但對(duì)查詢性能的追求也造成了 B tree 的相應(yīng)缺點(diǎn),即每次插入或刪除一條數(shù)據(jù)時(shí),均需要更新索引,從而造成一次磁盤(pán) IO。這種特性決定了 B tree 只適用于頻繁讀、較少寫(xiě)的場(chǎng)景。如果在頻繁寫(xiě)的場(chǎng)景下,將造成大量的磁盤(pán) IO,從而導(dǎo)致性能驟降。這種應(yīng)用場(chǎng)景在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)中比較常見(jiàn)。

而 LSM tree 則避免了頻繁寫(xiě)場(chǎng)景下的磁盤(pán) IO 開(kāi)銷(xiāo),盡管其查詢效率無(wú)法達(dá)到理想的 O(log n)

O(logn),但依然非???,可以接受。所以從本質(zhì)上來(lái)說(shuō),LSM tree 相當(dāng)于犧牲了一部分查詢性能,換取了可觀的寫(xiě)入性能。這對(duì)于 key-value 型或日志型數(shù)據(jù)庫(kù)是非常重要的。

總結(jié)

LSM tree 存儲(chǔ)引擎的工作原理包含以下幾個(gè)要點(diǎn):

寫(xiě)數(shù)據(jù)時(shí),首先將數(shù)據(jù)緩存到內(nèi)存中的一個(gè)有序樹(shù)結(jié)構(gòu)中(稱為 memtable)。同時(shí)觸發(fā)相關(guān)結(jié)構(gòu)的更新,例如布隆過(guò)濾器、稀疏索引。

當(dāng) memtable 積累到足夠大時(shí),會(huì)一次性寫(xiě)入磁盤(pán)中,生成一個(gè)內(nèi)部有序的 segment 文件。該過(guò)程為連續(xù)寫(xiě),因此效率極高。

進(jìn)行查詢時(shí),首先檢查布隆過(guò)濾器。如果布隆過(guò)濾器報(bào)告數(shù)據(jù)不存在,則直接返回不存在。否則,按照從新到老的順序依次查詢每個(gè) segment。

在查詢每個(gè) segment 時(shí),首先使用二分搜索檢索對(duì)應(yīng)的稀疏索引,找到數(shù)據(jù)所在的 offset 范圍。然后讀取磁盤(pán)上該范圍內(nèi)的數(shù)據(jù),再次進(jìn)行二分查找并獲得結(jié)果。

對(duì)于大量的 segment 文件,定期在后臺(tái)執(zhí)行 compaction 操作,將多個(gè)文件合并為更大的文件,以保證查詢效率不衰減。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7349

    瀏覽量

    95056
  • SSD
    SSD
    +關(guān)注

    關(guān)注

    21

    文章

    3152

    瀏覽量

    122633
  • 過(guò)濾器
    +關(guān)注

    關(guān)注

    1

    文章

    444

    瀏覽量

    21048

原文標(biāo)題:一種對(duì)頻繁寫(xiě)操作非常友好的數(shù)據(jù)結(jié)構(gòu)(核心實(shí)現(xiàn)講解)

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    深入解析 onsemi RFD16N05LSM N 溝道邏輯電平功率 MOSFET

    深入解析 onsemi RFD16N05LSM N 溝道邏輯電平功率 MOSFET 在電子設(shè)計(jì)領(lǐng)域,功率 MOSFET 是至關(guān)重要的元件,廣泛應(yīng)用于各種電路中。今天我們來(lái)詳細(xì)了解 onsemi 公司
    的頭像 發(fā)表于 04-07 10:20 ?215次閱讀

    STM32H5開(kāi)發(fā)陀螺儀LSM6DSV16X(1)----輪詢獲取陀螺儀數(shù)據(jù)

    本文將介紹如何通過(guò)輪詢(Polling)方式從LSM6DSV16X六軸慣性傳感器中獲取陀螺儀數(shù)據(jù)。輪詢模式是一種常用的傳感器讀取方式,主控MCU定期查詢陀螺儀輸出寄存器,無(wú)需依賴中斷機(jī)制即可實(shí)現(xiàn)
    的頭像 發(fā)表于 12-22 17:28 ?5952次閱讀
    STM32H5開(kāi)發(fā)陀螺儀<b class='flag-5'>LSM</b>6DSV16X(1)----輪詢獲取陀螺儀<b class='flag-5'>數(shù)據(jù)</b>

    意法半導(dǎo)體LSM6DSV320X IMU傳感器在Linux平臺(tái)的驅(qū)動(dòng)移植與姿態(tài)感知應(yīng)用實(shí)現(xiàn)

    本期我們聚焦論壇網(wǎng)友短笛君的實(shí)測(cè)體驗(yàn)。他首先分享了MEMS上位機(jī)體驗(yàn)并進(jìn)行MLC數(shù)據(jù)預(yù)采集,隨后實(shí)現(xiàn)LSM6DSV320X IMU傳感器在Linux平臺(tái)的驅(qū)動(dòng)移植,并開(kāi)發(fā)具備四元數(shù)和歐拉角解算的完整姿態(tài)感知應(yīng)用,最后
    的頭像 發(fā)表于 12-11 14:31 ?7450次閱讀
    意法半導(dǎo)體<b class='flag-5'>LSM</b>6DSV320X IMU傳感器在Linux平臺(tái)的驅(qū)動(dòng)移植與姿態(tài)感知應(yīng)用<b class='flag-5'>實(shí)現(xiàn)</b>

    typedef結(jié)構(gòu)體使用

    雖然結(jié)構(gòu)體的出現(xiàn)能夠讓我們有一個(gè)更科學(xué)的數(shù)據(jù)結(jié)構(gòu)來(lái)管理數(shù)據(jù),但是每次使用結(jié)構(gòu)體都需要struct...,未免顯得有些冗長(zhǎng)和麻煩。有了typedef的助攻,我們就可以很輕松地給
    發(fā)表于 12-08 07:04

    `lv_obj_tree.h` 在 **LVGL v9** 中的位置和作用

    )已經(jīng)封裝了這些邏輯,無(wú)需直接包含 lv_obj_tree.h。 總結(jié) lv_obj_tree.h 是 LVGL 內(nèi)部管理對(duì)象樹(shù)結(jié)構(gòu)核心頭文件,位于 src/core/ 目錄,主要供
    發(fā)表于 11-13 15:49

    LSM6DSV16BX:集成機(jī)器學(xué)習(xí)核心與Qvar感應(yīng)的先進(jìn)慣性測(cè)量單元

    加速度、角速度和Qvar檢測(cè)數(shù)據(jù)。它具有專(zhuān)用配置、處理和濾波功能。LSM6DSV16BX在緊湊型封裝 (2.5mm x 3.0mm x 0.71mm) 中集成了UI傳感器、音頻加速度計(jì)和Qvar傳感器。
    的頭像 發(fā)表于 10-28 13:45 ?887次閱讀
    <b class='flag-5'>LSM</b>6DSV16BX:集成機(jī)器學(xué)習(xí)<b class='flag-5'>核心</b>與Qvar感應(yīng)的先進(jìn)慣性測(cè)量單元

    LSM6DSV16X:集成機(jī)器學(xué)習(xí)與靜電感應(yīng)的高性能慣性測(cè)量單元

    STMicroelectronics LSM6DSV16X iNEMO慣性模塊是一款三軸數(shù)字加速度計(jì)和三軸數(shù)字陀螺儀。 LSM6DSV16X具有三個(gè)內(nèi)核,用于處理三個(gè)獨(dú)立通道上的加速度和角速率數(shù)據(jù)
    的頭像 發(fā)表于 10-28 11:52 ?1107次閱讀
    <b class='flag-5'>LSM</b>6DSV16X:集成機(jī)器學(xué)習(xí)與靜電感應(yīng)的高性能慣性測(cè)量單元

    LSM6DSV iNEMO?慣性模塊:為下一代智能設(shè)備提供高性能運(yùn)動(dòng)感知

    的配置、濾波和處理功能。LSM6DSV在高性能模式下提升性能(0.65mA時(shí)),具有不間斷低功耗特性,實(shí)現(xiàn)最佳的消費(fèi)者運(yùn)動(dòng)體驗(yàn)。該器件嵌入了高級(jí)專(zhuān)用功能,例如有限狀態(tài)機(jī)和數(shù)據(jù)濾波,用于OIS、EIS和運(yùn)動(dòng)處理。
    的頭像 發(fā)表于 10-28 11:25 ?988次閱讀
    <b class='flag-5'>LSM</b>6DSV iNEMO?慣性模塊:為下一代智能設(shè)備提供高性能運(yùn)動(dòng)感知

    基于LSM6DSO16IS適配板數(shù)據(jù)手冊(cè)的技術(shù)解析與應(yīng)用指南

    STMicroelectronics STEVAL-MKI229A適配器板用于評(píng)估LSM6DSO16IS MEMS器件。該板提供了有效、快速的系統(tǒng)原型設(shè)計(jì)解決方案,可直接在用戶的’應(yīng)用程序內(nèi)評(píng)估。
    的頭像 發(fā)表于 10-27 11:03 ?938次閱讀
    基于<b class='flag-5'>LSM</b>6DSO16IS適配板<b class='flag-5'>數(shù)據(jù)</b>手冊(cè)的技術(shù)解析與應(yīng)用指南

    LSM6DSV16B:面向TWS與可穿戴設(shè)備的6軸IMU,融合傳感與低功耗智能

    于提供精確的加速度和角速度感測(cè)數(shù)據(jù)處理。 LSM6DSV16B具有專(zhuān)用于運(yùn)動(dòng)跟蹤、設(shè)備電源管理、游戲3D頭部跟蹤和增強(qiáng)音頻體驗(yàn)的雙通道,提供無(wú)與倫比的多用性和功能。該器件還具有單獨(dú)通道,用于通過(guò)專(zhuān)用配置、處理和濾波實(shí)現(xiàn)振動(dòng)檢測(cè)
    的頭像 發(fā)表于 10-25 14:28 ?1367次閱讀
    <b class='flag-5'>LSM</b>6DSV16B:面向TWS與可穿戴設(shè)備的6軸IMU,融合傳感與低功耗智能

    LSM6DSV320X:面向高端應(yīng)用的智能6軸慣性測(cè)量單元

    。STMicroelectronics IMU設(shè)計(jì)用于提供精確的運(yùn)動(dòng)檢測(cè)和傳感器融合功能,因此非常適合用于汽車(chē)碰撞檢測(cè)、運(yùn)動(dòng)監(jiān)控和物聯(lián)網(wǎng) (IoT) 設(shè)備。LSM6DSV320X采用四通道架構(gòu),可在四個(gè)獨(dú)立通道上處理加速度和角速度數(shù)據(jù)
    的頭像 發(fā)表于 10-21 14:34 ?1020次閱讀
    <b class='flag-5'>LSM</b>6DSV320X:面向高端應(yīng)用的智能6軸慣性測(cè)量單元

    LSM6DSV80X 6軸慣性測(cè)量單元技術(shù)解析

    STMicroelectronics LSM6DSV80X 6軸慣性測(cè)量單元 (IMU) 在單個(gè)元件中集成了兩個(gè)加速度計(jì)結(jié)構(gòu),可實(shí)現(xiàn)16g和80g的全量程傳感、嵌入式智能以及高達(dá)4000dps
    的頭像 發(fā)表于 10-15 17:42 ?1281次閱讀
    <b class='flag-5'>LSM</b>6DSV80X 6軸慣性測(cè)量單元技術(shù)解析

    分享一個(gè)嵌入式學(xué)習(xí)階段規(guī)劃

    給大家分享一個(gè)嵌入式學(xué)習(xí)階段規(guī)劃: (一)基礎(chǔ)筑牢階段(約 23 天) 核心目標(biāo):打牢 C 語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)、電路基礎(chǔ)C 語(yǔ)言開(kāi)發(fā):學(xué)變量 / 指針 / 結(jié)構(gòu)體等核心語(yǔ)法,用 Dev-
    發(fā)表于 09-12 15:11

    【HZ-T536開(kāi)發(fā)板免費(fèi)體驗(yàn)】6、使用protoc-gen-gorm生成標(biāo)準(zhǔn)化的數(shù)據(jù)結(jié)構(gòu)

    在設(shè)計(jì)espnow協(xié)議的時(shí)候,考慮到我需要在esp32,Linux設(shè)備,web上使用相同的數(shù)據(jù)結(jié)構(gòu),那就需要考慮一下,是否使用一個(gè)通用的跨平臺(tái)序列化數(shù)據(jù)結(jié)構(gòu)。這時(shí)候我想起了protobuf,這個(gè)就是
    發(fā)表于 08-26 00:32

    程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開(kāi)發(fā)中遇到的難點(diǎn)。 2. 從方法論的高度對(duì)C語(yǔ)言在數(shù)據(jù)結(jié)構(gòu)和算法方面的應(yīng)用進(jìn)行了深入講解和闡述。 3. 講解了絕大多數(shù)C程序員開(kāi)發(fā)
    發(fā)表于 05-13 16:45
    太白县| 吴堡县| 富源县| 商水县| 麟游县| 观塘区| 卢氏县| 如皋市| 沙田区| 宁远县| 六枝特区| 汕尾市| 东源县| 睢宁县| 桃园县| 棋牌| 天镇县| 北流市| 临西县| 治县。| 兴海县| 贵州省| 武平县| 中阳县| 玉溪市| 手游| 大石桥市| 涡阳县| 民县| 阆中市| 永善县| 隆子县| 鸡西市| 乌拉特后旗| 寿光市| 天长市| 溧阳市| 永仁县| 金华市| 双城市| 乌兰浩特市|