当前位置: 首页 > news >正文

17zwd一起做网站教学视频企业关键词排名优化哪家好

17zwd一起做网站教学视频,企业关键词排名优化哪家好,今天兰州最新消息,网页游戏网站排名Java 中的 FlatBuffers有助于高速数据序列化/反序列化,消除解析开销。它由 Google 开发,为跨平台数据交换提供无模式、内存高效的解决方案。 Java 开发人员可以利用其直接内存访问来实现最佳性能和最小内存占用,从而提高应用程序速度、可扩展…

Java 中的 FlatBuffers有助于高速数据序列化/反序列化,消除解析开销。它由 Google 开发,为跨平台数据交换提供无模式、内存高效的解决方案。 Java 开发人员可以利用其直接内存访问来实现最佳性能和最小内存占用,从而提高应用程序速度、可扩展性和互操作性。让我们深入了解 Java FlatBuffers 序列化。

什么是Java中的序列化和FlatBuffers?
在Java编程中,序列化是指将对象转换为字节流的过程。然后可以将该字节流存储在文件中、通过网络发送或保存在数据库中。序列化对于不同系统之间的数据持久性和通信至关重要。

Java 中的序列化
Java 通过 Serialized 接口提供了对序列化的内置支持。实现此接口的类可以使用 Java 的 ObjectOutputStream 和 ObjectInputStream 类进行序列化和反序列化。此外,Java 还提供了一个可外部化的接口,用于对序列化过程进行更细粒度的控制。

Java 中的 FlatBuffer
FlatBuffers是Google开发的一个高效的跨平台序列化库。与传统的序列化方法不同,FlatBuffers 不需要解析。相反,它们提供对序列化数据的直接访问,从而加快序列化和反序列化速度。在 Java 中,FlatBuffers 是通过代码生成器实现的,该代码生成器根据模式定义生成 Java 类。这些生成的类使开发人员能够轻松地序列化和反序列化数据,而无需手动解析或反射。这样可以以最小的开销实现高性能的数据处理。

使用 FlatBuffers 的好处

  • 高效的内存使用:与其他序列化格式相比,FlatBuffers 使用内存的效率更高。
  • 高速序列化和反序列化:直接访问序列化数据可以加快处理速度。
  • 支持架构演变:FlatBuffers 允许架构更改,而不会破坏向后兼容性。
  • 平台独立性:序列化数据可以在不同平台和编程语言之间共享。

代码演示:
依赖:

_ com.google.flatbuffers flatbuffers-java 24.3.25

FlatBuffers 结构schema文件 (.fbs)
在 FlatBuffers 中,数据结构是使用扩展名为.fbs.该文件指定数据结构的布局,包括其字段及其类型。让我们看一下定义人员对象的示例模式文件:

// Define schema in a .fbs file
table Person {
name: string;
age: int;
hobbies: [string];
}

在此schema中,我们定义一个名为“Person”的表,其中包含三个字段:字符串类型的“name”、int 类型的“age”和字符串数组的“hobbies”。该模式充当生成代码的蓝图,以便在序列化和反序列化过程中使用定义的数据结构。

使用 FlatBuffers
一旦定义了结构schema,我们就可以使用 FlatBuffers 代码生成器来生成与该结构schema相对应的 Java 类。

  • 这些生成的类提供了创建、访问和操作已定义数据结构实例的方法。

  • 该类Person将由 FlatBuffer 编译器 ( ) 根据提供的结构schema生成flatc,并将包含操作已定义数据结构所需的类和方法。

值得庆幸的是,所有这些都是由 IDE 自动完成的,因为我们已经在项目中包含了必要的依赖项。

// Java code to serialize and deserializepackage com.jcg.example;

import com.google.flatbuffers.FlatBufferBuilder;
import com.example.Person;

public class Main {
public static void main(String[] args) { // Create FlatBufferBuilder FlatBufferBuilder builder = new FlatBufferBuilder(); // Create hobbies strings int[] hobbies = {
builder.createString("Reading"),
builder.createString("Gaming")
}; // Serialize person object int personOffset = Person.createPerson(builder, builder.createString("John"), 30, Person.createHobbiesVector(builder, hobbies));
builder.finish(personOffset); // Deserialize person object byte[] buf = builder.sizedByteArray();
ByteBuffer bb = ByteBuffer.wrap(buf);
Person person = Person.getRootAsPerson(bb); // Access deserialized data System.out.println("Name: " + person.name());
System.out.println("Age: " + person.age());
for (int i = 0; i < person.hobbiesLength(); i++) {
System.out.println("Hobby " + (i+1) + ": " + person.hobbies(i));
}
}
}

在此代码中,我们使用 FlatBufferBuilder 创建一个 FlatBuffer 实例,表示一个名为““John”, age 30, 爱好hobby是 “Reading” 和“Gaming”的Person人员对象。然后,我们序列化该对象,将其反序列化回来,并访问反序列化的数据进行打印。

代码输出
代码输出显示了使用 FlatBuffers 在 Java 中对人对象进行序列化和反序列化后的反序列化数据。

Name: John
Age: 30
Hobby 1: Reading
Hobby 2: Gaming

使用 FlatBuffers 进行 JSON 转换
将 FlatBuffers 数据转换为 JSON 格式非常简单。 FlatBuffers 提供了直接将 FlatBuffers 对象序列化为 JSON 字符串的方法。这些方法根据模式定义自动生成数据的 JSON 表示形式,从而可以轻松地在 FlatBuffers 应用程序中使用 JSON 数据。

考虑一个简单的例子,我们有一个包含姓名、年龄和爱好等字段的人的模式。我们可以在文件中定义此模式.fbs并使用 FlatBuffers 代码生成工具生成 Java 类。然后,我们可以使用生成的代码将 JSON 数据解析为 FlatBuffers 对象,反之亦然。

import com.google.flatbuffers.FlatBufferBuilder;
import com.google.flatbuffers.FlexBuffers;

public class Main {
public static void main(String[] args) {
// Define schema for a person String schema = "table Person { name:string; age:int; hobbies:[string]; }"; // Create FlatBufferBuilder FlatBufferBuilder builder = new FlatBufferBuilder(); // Start building FlatBuffer int nameOffset = builder.createString("John");
int[] hobbiesOffsets = { builder.createString("Reading"), builder.createString("Gaming") };
int hobbiesVector = Person.createHobbiesVector(builder, hobbiesOffsets);
Person.startPerson(builder);
Person.addName(builder, nameOffset);
Person.addAge(builder, 30);
Person.addHobbies(builder, hobbiesVector);
int personOffset = Person.endPerson(builder);
Person.finishPersonBuffer(builder, personOffset); // Serialize FlatBuffer to JSON byte[] flatBufferBytes = builder.sizedByteArray();
FlexBuffers.TypedBuffer buffer = FlexBuffers.getRoot(new FlexBuffers.ByteBufferWrapper(flatBufferBytes));
String json = buffer.toJson(schema); // Print JSON representation System.out.println("JSON representation:");
System.out.println(json); // Deserialize JSON to FlatBuffer FlexBuffers.Builder flexBuilder = new FlexBuffers.Builder();
flexBuilder.fromJson(json, schema);
FlexBuffers.TypedBuffer typedBuffer = flexBuilder.finish();
byte[] flatBufferFromJson = typedBuffer.toByteArray(); // Access FlatBuffer data ByteBuffer byteBuffer = ByteBuffer.wrap(flatBufferFromJson);
Person person = Person.getRootAsPerson(byteBuffer);
System.out.println("\nDeserialized data:");
System.out.println("Name: " + person.name());
System.out.println("Age: " + person.age());
System.out.println("Hobbies:");
for (int i = 0; i < person.hobbiesLength(); i++) {
System.out.println("- " + person.hobbies(i));
}
}
}

在此示例中,我们为一个人定义一个schema结构,其中包含姓名、年龄和爱好等字段。然后,我们创建一个 FlatBuffer 来表示具有一些示例数据的人员对象。我们使用 FlexBuffers 将此 FlatBuffer 序列化为 JSON 格式。之后,我们将 JSON 反序列化回 FlatBuffer 并访问数据。

上述代码的输出将是:

JSON representation:
{
"name": "John", "age": 30, "hobbies": ["Reading", "Gaming"]
}

Deserialized data:
Name: John
Age: 30
Hobbies:
- Reading
- Gaming

结论
使用 FlatBuffers 就像拥有在计算机程序中存储和组织数据的超能力。首先描述数据在称为模式的特殊文件中的外观。然后,您使用工具根据该架构生成代码。此代码可帮助您轻松快速地管理数据,而不会牺牲速度。

FlatBuffers 很棒,因为它可以让您直接以紧凑的序列化形式访问数据,从而使其快速高效。另外,它很灵活——即使您稍后更改数据结构,FlatBuffers 也可以顺利处理。

FlatBuffers 的一个很酷的事情是它可以轻松地在自己的格式和 JSON 之间转换数据,JSON 是一种常见的数据表示方式。这意味着您可以使用 FlatBuffers 来处理 JSON 数据,而不会减慢程序速度。

总体而言,FlatBuffers 使程序中的数据处理变得简单。无论您是存储信息还是在不同系统之间共享信息,FlatBuffers 都能以其易于使用的工具和快速的性能满足您的需求。

https://www.jdon.com/73592.html ​​​​​​​

http://www.hengruixuexiao.com/news/40398.html

相关文章:

  • 做网站找那些公司简阳seo排名优化课程
  • 做搜狗网站排名软件seo推广优化的方法
  • 网站域名注册哪家好网络优化seo
  • 网站建设学校培训学校培训总结怎么写
  • 个人网站怎么做才能值钱百度贴吧怎么发广告
  • 中国交通建设官方网站google搜索
  • 利用模板做网站微博指数查询
  • 做web网站原型广州优化疫情防控举措
  • 国内设计精美的网站建网站需要哪些步骤
  • matlab代做网站深圳网站制作
  • 网络渠道宁波seo外包平台
  • 网站制作网站维护优化营商环境的金句
  • 天猫优惠券网站怎么做seo创业
  • 电商卖货平台有哪些优化疫情防控措施
  • 拼多多网站在那里做产品推广找哪家公司
  • 电子商务网站建设与管理实训总结免费源码下载网站
  • 国外比较好的资源网站长春百度seo排名
  • 武汉哪里做网站好seo网络推广是什么意思
  • 十堰新闻网站推广怎么优化
  • 做网站工作怀孕太原互联网推广公司
  • 同字形结构布局网站百度代理合作平台
  • 软件设计工作室网站国际站seo优化是什么意思
  • 做任务兼职赚钱的网站营销管理系统
  • 做真实3d效果图网站手机软文广告300字
  • 建设网点查询附近网站推广优化的原因
  • 程序员做项目的网站seo服务公司上海
  • 管理网站建设哪家公司好网页搜索优化
  • 专门做外贸网站有哪些代运营一家店铺多少钱
  • 垂直电商网站有哪些seo网站诊断流程
  • 做公司网站用什么系统最常用的网页制作软件