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

相关文章
|
6月前
|
设计模式 人工智能 自然语言处理
企业级智能客服系统建设方案:多轮对话+RAG+人机协同深度解析
本文剖析企业级智能客服三大瓶颈,提出“多轮对话+RAG+人机协同”三位一体建设方案,详解瓴羊Quick Service如何实现有状态对话、企业级知识管线与共生式协同,打造可观测、可干预、可迭代的智能客服系统。(239字)
|
6月前
|
存储 人工智能 数据可视化
满足CNAS/CMA认证,实验室信息管理系统必备功能汇总
本资料为优检云LIMS系统合规功能指南,严格对标CNAS(ISO/IEC 17025)与CMA(RB/T 214)评审要求,涵盖审计追踪、分级权限、电子签名、数据防篡改等一票否决项,以及样品全周期、仪器直连、报告智能生成、资源要素管控、质量体系运行等核心模块,助力实验室高效通过资质认定与飞行检查。
|
6月前
|
人工智能
阿里云盘企业版收费价格:小微企业和中小企业配置选择及收费价格表
阿里云盘企业版(CDE)主打AI智能检索与协作,适配小微企业及初创团队。5人200GB月付6.63元,5人500GB年付169.90元,20人2TB年付749元,性价比高,支持知识库问答与智能知识中枢构建。阿里云盘企业版官网:https://t.aliyun.com/U/wbANEa
|
7月前
|
机器学习/深度学习 编解码 机器人
HY-Embodied-0.5: Embodied Foundation Models for Real-World Agents
本文提出的HY-Embodied-0.5模型家族,通过创新的MoT架构、亿级具身专项数据、迭代自进化训练与在线策略蒸馏方案,有效解决了通用VLM在具身智能场景的感知与推理短板,实现了边缘高效版与大型高性能版的协同设计,在多项基准测试与真实机器人任务中验证了技术有效性,为现实世界具身智能体提供了强大的基础模型支撑。
371 0
|
人工智能 自然语言处理 数据可视化
通义灵码保姆级教程:从数据读取、清洗、结合大模型分析、可视化、生成报告全链路
本课程通过通义灵码实现零代码数据分析全流程,涵盖数据读取、清洗、可视化、报告生成及内容仿写,无需编程基础,轻松掌握从CSV导入到PDF报告输出的实战技能。
|
7月前
|
人工智能 安全 Linux
OpenClaw(Clawdbot) Linux部署全教程:本地搭建、ZeroNews接入及阿里云部署指南
OpenClaw(前身为Clawdbot)凭借“私有化运行+全权限实操”的创新定位,迅速成为AI领域的现象级开源项目。这款被称为“真正能做实事的AI”的工具,打破了传统聊天机器人的功能局限,可在本地设备或服务器上独立运行,通过WhatsApp、Telegram等常用聊天软件接收指令,完成文件读写、邮件管理、系统运维等实操任务,所有数据本地存储,隐私安全性拉满。
755 0
|
12月前
|
消息中间件 存储 Java
庖丁解牛:RocketMQ Broker/Consumer/Producer源码深度剖析与实战
本文深入剖析了RocketMQ的核心机制,从源码层面解析了Producer、Broker和Consumer三大组件。Producer部分详细分析了消息发送流程、队列选择策略和重试机制;Broker部分重点讲解了消息存储架构(CommitLog、ConsumeQueue)、请求处理和刷盘策略;Consumer部分则解析了推/拉模式、偏移量管理和重试机制。通过实战案例展示了分布式事务消息和消息过滤功能,并提供性能优化建议。
583 1
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
1122 9
|
SQL 安全 PHP
PHP安全性深度探索:防范常见漏洞与最佳实践####
本文深入剖析了PHP开发中常见的安全漏洞,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并针对每种漏洞提供了详尽的防御策略与最佳实践。通过实例分析,引导读者理解如何构建更加安全的PHP应用,确保数据完整性与用户隐私保护。 ####