1.序列化

简介: 本文从源码角度解析Zookeeper的序列化机制,重点分析jute包中的InputArchive、OutputArchive等核心接口。详解BinaryInputArchive、CsvInputArchive等实现类及基本数据类型的反序列化过程,揭示其在网络通信与数据存储中的应用原理。

一、前言
  在完成了前面的理论学习后,现在可以从源码角度来解析Zookeeper的细节,首先笔者想从序列化入手,因为在网络通信、数据存储中都用到了序列化,下面开始分析。
二、序列化
  序列化主要在zookeeper.jute包中,其中涉及的主要接口如下
    · InputArchive
    · OutputArchive
    · Index
    · Record
2.1 InputArchive
  其是所有反序列化器都需要实现的接口,其方法如下 
InputArchive的类结构如下   

  1. BinaryInputArchive 
  2. CsvInputArchive 
  3. XmlInputArchive
    Java
    运行代码
    复制代码
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    /**
    public boolean readBool(String tag) throws IOException {

     Value v = next();
     if (!"boolean".equals(v.getType())) {
         throw new IOException("Error deserializing "+tag+".");
     }
     return "1".equals(v.getValue());
    

    }

    // 读取int类型
    public int readInt(String tag) throws IOException {

     Value v = next();
     if (!"i4".equals(v.getType()) &&
             !"int".equals(v.getType())) {
         throw new IOException("Error deserializing "+tag+".");
     }
     return Integer.parseInt(v.getValue());
    

    }

    // 读取long类型
    public long readLong(String tag) throws IOException {

     Value v = next();
     if (!"ex:i8".equals(v.getType())) {
         throw new IOException("Error deserializing "+tag+".");
     }
     return Long.parseLong(v.getValue());
    

    }

    // 读取float类型
    public float readFloat(String tag) throws IOException {

     Value v = next();
     if (!"ex:float".equals(v.getType())) {
         throw new IOException("Error deserializing "+tag+".");
     }
     return Float.parseFloat(v.getValue());
    

    }

    // 读取double类型
    public double readDouble(String tag) throws IOException {

     Value v = next();
     if (!"double".equals(v.getType())) {
         throw new IOException("Error deserializing "+tag+".");
     }
     return Double.parseDouble(v.getValue());
    

    }

    // 读取String类型

相关文章
|
芯片
stm32引脚默认状态
stm32引脚默认状态
2808 0
|
6天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
4343 17
|
17天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
15430 138
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
5天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
3585 8
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
7天前
|
人工智能 自然语言处理 数据挖掘
零基础30分钟搞定 Claude Code,这一步90%的人直接跳过了
本文直击Claude Code使用痛点,提供零基础30分钟上手指南:强调必须配置“工作上下文”(about-me.md+anti-ai-style.md)、采用Cowork/Code模式、建立标准文件结构、用提问式提示词驱动AI理解→规划→执行。附可复制模板与真实项目启动法,助你将Claude从聊天工具升级为高效执行系统。
|
6天前
|
人工智能 定位技术
Claude Code源码泄露:8大隐藏功能曝光
2026年3月,Anthropic因配置失误致Claude Code超51万行源码泄露,意外促成“被动开源”。代码中藏有8大未发布功能,揭示其向“超级智能体”演进的完整蓝图,引发AI编程领域震动。(239字)
2458 9