• 欧美大香线蕉线伊人久久 镶嵌式算法之大數據變長存儲算法

    发布日期:2022-05-18 23:53    点击次数:134

     欧美大香线蕉线伊人久久1、應用場景

    對于高精度采樣結果,其數值最大可能需要3字節,最少1字節,遴荐標準C的基礎數據類型,U16太小無法滿足需求欧美大香线蕉线伊人久久,U32則浪費內存。當樣本量很大時,其占用的空間問題便突顯出來。能否遴荐變長數據類型存儲呢?對小數據遴荐U8,大數據遴荐U32,隨著數值大小動態分派存儲空間,即是本文的討論的重點。

    2、數據去冗余

    U32的空間其數值范圍最大接近2^32,該值格外大,實際數值范圍遠小于它,高位势必為0。举例U32示意1使用0x00000001,前边位都是0,其表達的數值和U8的0x01是一樣的,前边重復的一串0屬于冗余數據區,是不错剔除的。

    假設5個數據D0..4,底本每個數據固定為U32類型,將其高位冗余0去掉,再拼接到U8的一維數組,則占用的空間和大大縮小。头绪的中枢是把 U32 大要U64 數組剪辑后拼接成U8 數組,同時確保使用時可

    根據U8 數組中存儲的信息將對應的數值還原。

    假設有0x00000001、0x00000101、0x00000001三個數據,其灵验部分是0x01、0x0101、0x01,如果奏凯拼接在一路,則沒法區分0x01010101的含義。因此數據在去掉高位0之后,還需進行編碼標記,便于后續领路還原。

    3、數據編碼

    數據編碼的主要作用是標記當前數據占用些许連續字節欧美大香线蕉线伊人久久,有兩種决策:

    1、固定位來定義字節長度(2位不错示意4字節)

    一字節:00******

    在编程领域里,枚举是用来表示只包含有限数量的固定值的类型,在开发中一般用于标识错误码或者状态机。拿一个实体对象的状态机来说,它通常与这个对象在数据库里对应记录的标识状态的字段值相对应。

    大家平时都是在用 Go 语言,那以往已经有了 C、C++、Java、PHP。Google 的大佬们为什么还要再开发一门新的语言呢?

    并发和并行,Go 刚发布时,官方就不断强调这两点的不同。可能新手依然迷糊。这次给大家弄一个系列,详细讲解并发和并行。

    周末的时候欧美大香线蕉线伊人久久,有个读者跟我说,面试字节的时候被问到:「什么是伪共享?又该怎么避免伪共享的问题?」

    微前端借鉴了微服务的架构理念,将一个庞大的前端应用拆分为多个独立灵活的小型应用,每个应用都可以独立开发、独立运行、独立部署,再将这些小型应用联合为一个完整的应用。微前端既可以将多个项目融合为一, 国产成人精品无码一区二区又可以减少项目之间的耦合,提升项目扩展性,相比一整块的前端仓库,微前端架构下的前端仓库倾向于更小更灵活。

    Java 提供 javap 命令可以分析字节码文件,我们可以使用 javap -verbose 命令分析一个字节码文件时, 将会分析该字节码文件的魔数、版本号、常量池、类信息、类的构造方法、类中的方法信息、类变量与成员变量等信息。

    Podman是RedHat的一款产品,旨在使用类似于Kubernetes的方法来构建、管理和运行容器,作为一款主流容器的可靠替代产品,它吸引了开发人员的关注。

    今天准备谈下微服务架构和API网关中的限流熔断,当前可以看到对于Spring Cloud框架本身也提供了Hystrix,主流的开源API网关产品类似Kong网关本身也包括了限流熔断能力。

    二字節:01******欧美大香线蕉线伊人久久,00******

    三字節:10******欧美大香线蕉线伊人久久,01******,00******

    四字節:11******,10******,01******,00******

    五字節:使用2位不援救

    每個字節的最高2位示意屬于原始數據的第幾個(從0開始),前边舉例的3個字節不错示意為:

    0x01 編碼后二進制為 00-000001,最高2位為0,末成年女av片一区二区示意當前是編碼后的數據的临了一個字節;

    0x0101 編碼后二進制為 01-000001--00-000001 领路時取每個字節的2位判斷欧美大香线蕉线伊人久久,若為00則示意一個編碼數值結束。

    因為前边2位固定用于標記字節數,每個字節實際可用范圍只须6位,如果原數據位1000 0001,則最高兩位的10需要再占用一個字節示意,最終編碼為 01-000010--00-000001。

    這種編碼神志,所有这个词字節灵验位是固定的,編解碼實現容易。缺點是4字節只须24位灵验數據,假如原數據最大到25位,則每個字節分派3位來示意,不過這種大數據一般镶嵌式很少使用。

    2、字節最高位示意還有剩余數據,借鑒UTF8的編碼神志

    一字節:0*******

    兩字節:110*****,10******

    三字節:1110****,10******,10******

    四字節:11110***,10******,10******,10******

    五字節:111110**,10******,10******,10******,10******

    六字節:1111110*,10******,10******,10******,10******,10******

    七字節:不援救

    這種編碼神志,最高字節的灵验位是變化的,其它字節灵验位是6位。

    兩種編碼神志的選取,主若是依據原始數據散布概率,如果原數據范圍在24位內,則前边固定位的神志占優,超過32位內則動態的合適,如果數據范圍在16位內則沒必要如斯折騰。

    關于源碼大要更多换取,請關注微信公眾號 镶嵌式系統。

    4、數據訪問

    原數據每個值占用固定字節長度,不错便捷的使用數組下標遍歷,即地址偏移為(單個數字占用的字節數)*(第幾個),編碼為變長數據后,要想取到某個原數據編碼后的值,如果從數組頭開始遍歷戒指是相當低的,有沒有更好的辦法呢?

    將前边一維數組轉為二維數組,每行數組按前边的編碼實現,數據中預留4個字節,每行占滿時尾部標記當前行結束累計包括些许個原始數據,下個編碼值則存入下一溜,挨次類推。

    圖片如上圖,二維數組的一溜就退化為一維數組,每行在固定位置標記存儲的數量。如果需要查找C10,先按標記數有缠绵字節地址遍歷,則不错找到第2行(從0開始)為13,示意需要查找的數據在本行,只需要遍歷該行,從C9開始往后查詢。

    5、總結

    選擇合適的數據類型的減小存儲空間,對大范圍的數據使用變長的類型拼接存儲,犧牲了部分時間,但節約了ram或flash空間,對資源緊缺的镶嵌式設備具有一定的價值。

    本文轉載自微信公眾號「镶嵌式系統」,不错通過以下二維碼關注。轉載本文請聯系镶嵌式系統公眾號。

     




Powered by 国产av一区二区三区香蕉 @2013-2022 RSS地图 HTML地图