序列化

简介: 1

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

  1. BinaryInputArchive 
  2. CsvInputArchive 
  3. XmlInputArchive
    Java
    运行代码
    复制代码
    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
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    /**

     }
     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类型
    public String readString(String tag) throws IOException {

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

    }

    // 读取Buffer类型
    public byte[] readBuffer(String tag) throws IOException {

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

    }

    // 读取Record类型
    public void readRecord(Record r, String tag) throws IOException {

     r.deserialize(this, tag);
    

    }

    // 开始读取Record
    public void startRecord(String tag) throws IOException {

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

    }

    // 结束读取Record
    public void endRecord(String tag) throws IOException {

     Value v = next();
     if (!"/struct".equals(v.getType())) {
         throw new IOException("Error deserializing "+tag+".");
     }
    

    }

    // 开始读取vector
    public Index startVector(String tag) throws IOException {

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

    }

    // 结束读取vector
    public void endVector(String tag) throws IOException {}

    // 开始读取Map
    public Index startMap(String tag) throws IOException {

     return startVector(tag);
    

    }

    // 停止读取Map
    public void endMap(String tag) throws IOException { endVector(tag); }

}

相关文章
|
机器学习/深度学习 数据采集 人工智能
机器学习实战 | SKLearn入门与简单应用案例
本篇内容介绍了SKLearn的核心板块,并通过SKLearn自带的数据集,讲解一个典型应用案例。
1833 0
机器学习实战 | SKLearn入门与简单应用案例
|
11月前
|
Java 测试技术 调度
小结
本文介绍XXL-JOB任务调度框架的使用,包括其核心组成、任务编写与配置方法。通过@XxlJob注解定义任务,结合Cron表达式实现定时调度,并支持BEAN和GLUE两种模式。重点讲解分片广播任务,利用分片参数实现分布式环境下任务的高效并行处理,提升系统性能与扩展性。
|
10月前
|
存储 测试技术 调度
阿里云服务器2核8G、4核16G、8核32G怎么选实例?经济型、通用算力型和通用型对比与选购策略
2026年截止目前,阿里云的活动中2核8G、4核16G、8核32G配置主要有经济型e、通用算力型u2a、通用型g9i实例可选。2核8G配置最低701.40元1年,4核16G配置最低1291.80元1年,8核32G配置最低7551.94元1年。本文介绍经济型e、通用算力型u2a及通用型g9i实例的活动价格与实例规格差异及选购策略。
|
9月前
|
JSON 文字识别 API
百度文心开源0.9B参数 PaddleOCR-VL-1.5,全球首个支持异形框定位的文档解析模型!
百度文心开源新一代文档解析模型PaddleOCR-VL-1.5:仅0.9B参数,在OmniDocBench v1.5达94.5%精度,全球首个支持异形框定位,精准识别倾斜、弯折、反光等“歪文档”,集成印章识别、多语种(含藏语/孟加拉语)及古籍解析能力,推理速度超MinerU2.5达43%。(239字)
1507 2
|
11月前
|
SQL 人工智能 数据库
你的数据库不是性能差,是你的SQL在“烧钱”:用这条指令让AI化身资深DBA
硬件升配解决不了烂SQL!本文提供一套经过验证的AI指令,将大模型转化为资深DBA,通过深度诊断、索引优化和执行计划分析,帮助开发者从根源解决慢查询问题,实现数据库性能的降本增效。
671 19
|
11月前
|
人工智能 物联网 测试技术
ModelScope魔搭社区发布月报 -- 25年12月
魔搭社区12月重磅更新DeepSeek 3.2、Mistral-3等模型,Z-Image-Turbo引领文生图生态,平台全面升级加速开源模型落地。
1092 8
|
12月前
|
人工智能 安全 搜索推荐
杭州AI开源生态大会·魔搭社区开发者嘉年华全回顾
11月22日,杭州AI开源生态大会暨“魔搭社区”开发者中心启用仪式在云谷中心举行。大会汇聚超3000名开发者,发布“两张清单”与AI开源政策包,启用首个线下开发者空间,推动开放、共建、共创的AI生态发展。
1664 10
|
12月前
刚刚参加了一个MCP赛事,奖金还可以,搭友们可以去试试看
社区8月比赛未获奖有点失落,但发现通义灵码×蚂蚁百宝箱MCP赛事正火热进行!参赛即有机会赢取丰厚奖金,激励满满,令人眼前一亮。已跃跃欲试,搭友们快来一起冲榜夺奖吧!https://tianchi.aliyun.com/competition/entrance/532442
|
10月前
|
人工智能 开发框架 安全
LLM驱使智能体:从概念、原理到落地实践的完整技术科普指南
随着大语言模型发展,AI正从被动响应迈向主动执行。LLM驱使智能体以大模型为核心决策引擎,通过“推理—行动—反馈”闭环,实现目标导向的自主任务执行,具备动态决策、持续运行与复杂环境适应能力。其在办公自动化、软件开发、知识工作等场景广泛应用,正成为连接大模型能力与现实任务的关键桥梁,推动智能系统向更高阶形态演进。
600 5
|
人工智能 安全 API
一年输送旅客数千万次,浦东国际机场的效率秘密藏在这个智能体里
秋冬旅游高峰,浦东机场迎百万客流挑战。蚂蚁百宝箱推出“浦东国际机场”智能体,集成航班查询、停车导航、交通路线、餐饮酒店等一站式服务,实现“出发—到港”全链路智慧出行,提升旅客体验与机场运营效率。
620 0
一年输送旅客数千万次,浦东国际机场的效率秘密藏在这个智能体里

热门文章

最新文章