gpt4 book ai didi

Java序列化在任何语言之间传输数据

转载 作者:行者123 更新时间:2023-11-29 09:48:02 25 4
gpt4 key购买 nike

问题:

而不是自己写序列化算法;是否可以只使用内置的 Java 序列化,就像我在下面所做的那样,同时仍然可以跨多种语言工作?


解释:

我想象它的工作方式如下:我启动一个进程,这将是一个特定于语言的程序 - 用该语言编写。例如,我有一个 CppExecutor.exe 文件。我会将数据写入该程序的流中。然后程序会做它需要做的事情,然后返回结果。

为此,我需要以某种方式序列化数据。首先想到的是使用 ObjectInputStreamObjectOutputStream 的基本 Java Serialization。我读过的大部分内容只说明 Java 序列化是 Java 到 Java 的应用程序。

所有数据都不需要存储在文件中。传输这些数据包的方法是通过 java.lang.Process。 ,我已经设置好了。

数据将由以下内容组成:

  • String - 主要包含向用户显示的信息。
  • Integer - 很可能是 32 位。不需要处理时间。
  • Float - 仅用于处理所有浮点值。
  • 字符 - 确保使用正确的类型。
  • Array - 由此列表中的任何元素组成。

我找到的最佳方法如下:我将从一个 4 字节的魔数(Magic Number)开始 - 只是为了确保我们使用的是正确的数据。接下来,我将有一个整数指定有多少个元素。之后,对于我将拥有的每个元素:一个字节,表示(上述)数据类型,然后是任何关键信息,例如:length for the String数组。然后,后面的数据。


旁注:

我还想指出,将进行大量此类计算,每一毫秒都可能很重要。因此,基于文本的格式(例如 JSON)可能会产生更长的操作时间。考虑到没有任何数据包需要人工解释,因此仅使用字节不是问题。

最佳答案

我推荐谷歌 protobuf :它是二进制的、稳定的、经过验证的,并且具有您提到的所有语言的绑定(bind)。此外,它还可以很好地处理结构化数据。

关于Java序列化在任何语言之间传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com