5分钟快3首页    注册   登录
5分钟快3 = way to explore
5分钟快3 是一个5分钟快3关于 分享和探索的地方
现在注册
已注册用户请  登录
JasonLaw
5分钟快3  ›  程序员

数据密集型应用系统设计 - 5分钟快3关于 Apache Avro 的疑问

  •  
  •   JasonLaw · 10 天前 · 536 次点击

    在“Designing Data-Intensive Applications - CHAPTER 4 Encoding and Evolution - Formats for Encoding Data - Avro”中,举例展示了 Avro 如何进行编码。

    示例记录如下:

    {
       "userName": "Martin",
       "favoriteNumber": 1337,
       "interests": ["daydreaming", "hacking"]
    }
    

    使用 Avro 编写的示例模式如下:

    record Person {
       string userName;
       union { null, long } favoriteNumber = null;
       array<string> interests;
    }
    

    示例记录被 Avro 编码之后为:

    5分钟快3我 的疑问

    1. 第一个字节0x0c的最后一位代表 sign,sign 是什么呢?
    2. 第八个字节0x02代表union branch 1 (long, not null),怎么理解union branch 1 (long, not null)

    P.S. 因为是第一次接触 Avro,不太清楚应该怎么5分钟快3搜索 相关信息,说实话,不太应该提这样的问题。

    3 条回复    2020-08-02 00:20:03 +08:00
    gfreezy
        1
    gfreezy   10 天前
    应该看下 avro 具体怎么序列化的,感觉是类似 varint 的编码方式
    JasonLaw
        2
    JasonLaw   10 天前 via iPhone
    @gfreezy 5分钟快3我 好像明白了。sign 代表是不是还要考虑接下来的字节。union branch 1 (long, not null)代表类型是 long,因为 branch 0 是 null,所以 long 是 branch 1 。但是5分钟快3我 不太确定自己的理解是否正确。明天再仔细看看。
    ky11223344
        3
    ky11223344   10 天前
    sign 就是这个数是正数还是负数,这里是 0 就是指这个数是正数,每个 byte 第一个 bit 是 1 表示还有后续 byte,即这个数还要5分钟快3更多 byte 才能表示完整,0 表示没有后续,是最后一个 byte 了,5分钟快3我 记得书上这个位置附近有相关解释是这样讲的,至于 union branch 5分钟快3我 也不知道。
    5分钟快3关于   ·   FAQ   ·   API   ·   5分钟快35分钟快3我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小5分钟快3工具   ·   2977 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:28 · PVG 19:28 · LAX 04:28 · JFK 07:28
    ♥ Do have faith in what you're doing.