zoukankan      html  css  js  c++  java
  • 【原创】Kakfa serializer包源代码分析

    这个包很简单,只有两个scala文件: decoder和encoder,就是提供序列化/反序列化的服务。我们一个一个说。

    一、Decoder.scala
    首先定义了一个trait: Decoder[T]。在这个trait中定义了一个抽象方法fromBytes,用于将一个字节数组转换成一个类型T的对象。实现此trait的子类的构造函数中必须要接收一个VerifiableProperties。
     
    Kafka还定义了两个实现了
    Decoder的子类: DefaultDecoder和StringDecoder。DefaultDecoder的fromBytes方法其实什么都没做,只是原封不动地返回了字节数组;而StringDecoder的fromBytes会以UTF-8编码方式将字节数组封装到一个字符串中返回。
     
    二、Encoder.scala
    代码结构域Decoder非常相似。也是先提供了一个trait Encoder。其提供的抽象方法toBytes接收一个T类型的对象并将其转换成字节数组。Encoder也要求实现子类的构造函数必须接收一个VerifiableProperties参数。
     
    与Decoder不同的是,Encoder.scala提供了三个实现子类:DefaultEncoder、NullEncoder和StringEncoder。DefaultEncoder也是什么都不做,只是将接收到的字节数组原封不动地返回;NullEncoder无视接收到的对象直接返回null;而StringEncoder则会将接收到的字符串以UTF-8编码格式转换成字节数组。
  • 相关阅读:
    git 常用命令
    PHP打印日志类
    如何从总账获取分类账信息
    AP -> GL 数据流动
    JDeveloper 速度慢问题
    JDeveloper 滚轮不受控制
    MyBatis 环境搭建
    初识 MyBatis
    Linux 中设置 MySQL 字符集为 UTF-8
    Linux 安装 MySQL 详解(rpm 包)
  • 原文地址:https://www.cnblogs.com/huxi2b/p/4382963.html
Copyright © 2011-2022 走看看