1.序列化

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 本文从源码角度解析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天】性能场景之压测策略设计
1254 4
性能场景之压测策略设计
|
29天前
|
设计模式 人工智能 自然语言处理
企业级智能客服系统建设方案:多轮对话+RAG+人机协同深度解析
本文剖析企业级智能客服三大瓶颈,提出“多轮对话+RAG+人机协同”三位一体建设方案,详解瓴羊Quick Service如何实现有状态对话、企业级知识管线与共生式协同,打造可观测、可干预、可迭代的智能客服系统。(239字)
|
2月前
|
人工智能 安全 Linux
OpenClaw(Clawdbot) Linux部署全教程:本地搭建、ZeroNews接入及阿里云部署指南
OpenClaw(前身为Clawdbot)凭借“私有化运行+全权限实操”的创新定位,迅速成为AI领域的现象级开源项目。这款被称为“真正能做实事的AI”的工具,打破了传统聊天机器人的功能局限,可在本地设备或服务器上独立运行,通过WhatsApp、Telegram等常用聊天软件接收指令,完成文件读写、邮件管理、系统运维等实操任务,所有数据本地存储,隐私安全性拉满。
507 0
|
5月前
|
存储 弹性计算 缓存
阿里云4核云服务器价格详解:最新收费标准与4核8G、4核16G等配置活动价格参考
阿里云4核云服务器(vCPU)凭借多样化实例规格(如经济型e、通用算力型u2a、计算型c9i等),覆盖从个人到企业的全场景需求。价格方面,提供包年包月、按量付费等灵活计费模式,具体价格随配置(内存、带宽、存储)差异显著,如经济型e实例4核8G配置年付约1595.11元起,计算型c9i实例4核8G年付约3147.56元。活动期间可享u2a实例2.5折、九代云服务器年付6.4折起及新客专属补贴,适配个人博客、企业官网、在线教育、电商、大数据分析等场景。
|
7月前
|
消息中间件 存储 Java
庖丁解牛:RocketMQ Broker/Consumer/Producer源码深度剖析与实战
本文深入剖析了RocketMQ的核心机制,从源码层面解析了Producer、Broker和Consumer三大组件。Producer部分详细分析了消息发送流程、队列选择策略和重试机制;Broker部分重点讲解了消息存储架构(CommitLog、ConsumeQueue)、请求处理和刷盘策略;Consumer部分则解析了推/拉模式、偏移量管理和重试机制。通过实战案例展示了分布式事务消息和消息过滤功能,并提供性能优化建议。
456 1
|
9月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
808 9
|
11月前
|
JSON 人工智能 API
API是电商的“秘密武器”,轻松搞定订单生成
在电商竞争激烈的今天,高效处理订单至关重要。API作为连接各系统的“桥梁”,通过自动化实现快速、准确的订单生成,大大提升运营效率。本文详解API如何简化下单流程,并提供Python示例展示其实际应用。
|
存储 关系型数据库 MySQL
MySql进阶使用之视图、索引(详解)
MySql进阶使用之视图、索引(详解)
1909 1
|
SQL 安全 PHP
PHP安全性深度探索:防范常见漏洞与最佳实践####
本文深入剖析了PHP开发中常见的安全漏洞,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并针对每种漏洞提供了详尽的防御策略与最佳实践。通过实例分析,引导读者理解如何构建更加安全的PHP应用,确保数据完整性与用户隐私保护。 ####

热门文章

最新文章