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类型

相关文章
|
测试技术
性能场景之压测策略设计
【2月更文挑战第19天】性能场景之压测策略设计
1303 4
性能场景之压测策略设计
|
机器学习/深度学习
信道编码译码及MATLAB仿真(三)
信道编码译码及MATLAB仿真
1125 3
|
3月前
|
设计模式 人工智能 自然语言处理
企业级智能客服系统建设方案:多轮对话+RAG+人机协同深度解析
本文剖析企业级智能客服三大瓶颈,提出“多轮对话+RAG+人机协同”三位一体建设方案,详解瓴羊Quick Service如何实现有状态对话、企业级知识管线与共生式协同,打造可观测、可干预、可迭代的智能客服系统。(239字)
|
5月前
|
人工智能 安全 API
OpenClaw(Clawdbot)喂饭级图文指南!阿里云/本地部署+API配置+集成1.5万Skills及避坑指南,打造全能AI助手
2026年,开源AI Agent领域迎来现象级产品——OpenClaw(原Clawdbot)。这款由奥地利独立开发者Peter于2025年11月推出的工具,仅用3个月就以史上最快速度登顶GitHub,Star数突破24万,超越React等经典开源项目,成为开发者与普通用户追捧的“数字世界分身”。其核心魅力在于“本地运行保障隐私+IM无缝接入+1.5万+Skills生态”,打破了传统AI助手“只对话不干活”的局限,真正实现从沟通到任务执行的闭环。
648 4
|
6月前
|
人工智能 安全 程序员
编程已shi?2026年AI技术趋势预测
Django联合创始人Willison在2026年初发布AI技术趋势预测:1年内LLM生成代码将达生产级;3年AI可协作开发浏览器;6年后手写代码或成历史,程序员转向架构设计与AI协同。安全沙箱、Jevons悖论与角色重塑是核心议题。
|
存储 关系型数据库 MySQL
MySql进阶使用之视图、索引(详解)
MySql进阶使用之视图、索引(详解)
1939 1
|
存储 算法 JavaScript
数据结构:字符串
数据结构:字符串
820 0
PR曲线、ROC曲线、AUC能干个啥
评判二分类分类器性能的指标有那么多,为什么PR曲线、ROC曲线、AUC值这几个用的比较多。本文从概念、代码实现方面着手进行分享。
PR曲线、ROC曲线、AUC能干个啥
|
API Android开发
|
Java 大数据 Scala
Scala快速入门--Scala环境搭建【Windows10】图解
Scala快速入门--Scala环境搭建【Windows10】图解
492 0

热门文章

最新文章