【问题标题】:Smallest Collection for Serialization序列化的最小集合
【发布时间】:2012-05-21 17:35:24
【问题描述】:

我有一个 Java 应用程序(胖客户端、服务器、数据库)。所有服务器方法调用都返回一个向量(服务器代码最初是在几年前构建的,为了保持一致而保持不变)。无论调用什么,Vector 总是返回 2 个位置。第一个位置是一个错误对象(或 null),用于提醒客户端服务器在处理方法调用时遇到的任何问题。第二个位置是我们想要的数据。它可以是对象的 ArrayList、String、int 等;无论胖客户在寻找什么。

我正在尝试减少占用空间并提高服务器调用的性能。我正在研究的一件事是删除返回的向量并用某些东西替换它们。我的问题是什么。如前所述,此集合将始终为 2 个位置,位置 0 作为错误对象(如果没有错误,则为 null),位置 1 作为“我的数据”。它永远不需要排序,它基本上用于返回 2 个参数的方法(并在从服务器到客户端时将它们序列化)。

除了将位置 0 和 1 传输给客户端之外,我不需要任何其他功能,因为一旦此集合到达客户端,就会检查位置 0 是否存在错误,然后将位置 1 拉出并作为任何对象移交给调用代码段存放在那里。

有什么建议吗?

【问题讨论】:

  • 如果你“试图减少占用空间并提高我的服务器调用的性能”,那么性能瓶颈是什么?肯定不是阵列车。在您了解端到端的前 5 个性能瓶颈之前,不要优化任何东西。

标签: java performance serialization collections vector


【解决方案1】:

创建一个类:

class MeaningfulNameForTheResult
{
  public Error error;
  public Object result;
}

并使用它作为结果。

根据您的需要,是否将属性设为私有,是否添加 setter/getter,...但总体思路是:创建一个具有两个您序列化的属性的类。

编辑:也许...根据您的需要,您甚至可以完全删除该对象。如果一切正常,只需返回您想要的结果对象,如果出现问题则返回错误对象。在客户端中,反序列化对象,然后检查类型。如果是instanceof Error,那么你就知道这是一个错误,否则就是你的结果。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    相关资源
    最近更新 更多