问题标签 [serializable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
13828 浏览

java - HttpServlet为什么要实现Serializable?

在我对 Servlet 的理解中,Servlet 会被 Container 实例化,它的init()方法会被调用一次,并且 Servlet 会像单例一样存活,直到 JVM 关闭。

我不希望我的 servlet 被序列化,因为它会在应用服务器恢复或正常启动时重新构建。servlet 不应包含特定于会话的成员,因此将其写入磁盘并重新实例化是没有意义的。这有实际用途吗?

我担心的是,我在其中放置了一些不可序列化的字段,然后我的应用程序将在将发生不同类型的会话复制的生产环境中神秘地失败。

0 投票
1 回答
169 浏览

locking - 在表格行上调用 Dibs

我遇到的问题是:

我有一个包含以下字段的表(只是一个示例):

我有一个名为IncreaseByFive() 的方法,它执行以下操作:

我要避免的是以下情况:

  1. 用户 A 调用方法并获取值(当前为 5)
  2. 用户 B 调用方法并获取值(当前为 5)
  3. 用户 A 将值增加 5(现在为 10)
  4. 用户 B 将值增加 5(现在为 10)
  5. 用户 A 保存价值 (10)
  6. 用户 B 保存价值 (10)

现在记录的值是 10,而应该是 15。

我要强制执行以下操作:

  1. 用户 A 调用方法并获取值(当前为 5)
  2. 用户 B 调用方法但必须等待,因为 A 已经调用它。(迪布斯!)
  3. 用户 A 增加值(现在是 10)
  4. 用户 B 仍在等待
  5. 用户 A 保存值(记录值为 10)
  6. 用户 B 现在可以读取值 (10)
  7. 用户 B 增加值 (15)
  8. 用户 B 保存值

现在记录的值为 15,这是我正在寻找的结果。

我过去使用静态类解决了这个问题,并在该类的构造函数中创建的静态对象上加了锁,从而通过一个静态方法集中所有工作,这迫使其他调用排队等待。然而,我担心这是不可扩展的。

我还认为事务的最高隔离级别(可序列化)也不会起作用,因为它将允许在上面不需要的示例的步骤 2 中读取。

我想另一种解决方案是创建我自己的锁表并在那里记录锁,但这似乎不是必需的。

我正在使用 C# (3.5) 和 SQL server 2008 开发这个项目。

蜂巢的头脑在想什么?

0 投票
3 回答
3802 浏览

c# - 将 ISerializable 与 DataContractSerializer 一起使用时,如何阻止序列化程序输出类型信息?

为了更好地控制序列化,我将一个类从 转换[DataContract][Serializable],同时实现GetObjectData了特殊的反序列化构造函数。当我这样做时,发出的 XML 现在具有应用于所有元素的类型信息。我不想要这些多余的信息,我想知道如何通知序列化程序不要输出它。

这是使用的示例代码[DataContract]

这将输出以下 XML(注意 Nullable Number 和 Number 上没有类型信息——这是所需的输出):

如果我将上面的代码修改如下(添加[Serializable],:ISerializable,以及两个序列化方法):

它现在发出以下 XML。注意添加到每个元素的类型信息 (i:type="x:int")。

为什么要这样做?我该如何阻止它这样做?

谢谢!

0 投票
1 回答
232 浏览

return-value - 异常,返回,可序列化,

( throw Exception) 和 ( return value) 如何在 Java 或 C# 等语言中实现?我想知道它的支持如何包含在语言中的机制,而不仅仅是try { .... } catch (Exception) {}.

我们知道什么时候调用一个函数,即

然后 on 调用被放入堆栈,当方法返回时调用doSomethingon stack 弹出。

在 return 语句返回一个值的情况下会发生什么,比如说return 4;doSomething()堆栈上的调用弹出,并且 Prog 计数器上的下一条语句得到处理?返回值发生了什么?它在哪里保存以及如何使用?


类似地,在抛出异常的情况下,throw ex;语句在堆栈上找到适当的catch语句,直到找到它,它才会不断从堆栈中弹出东西……这个机制是如何工作的?

0 投票
4 回答
68709 浏览

c# - 序列化私有成员数据

我正在尝试将一个对象序列化为具有许多属性的 XML,其中一些属性是只读的。

我已经标记了类 [Serializable] 并且我已经实现了 ISerializable 接口。

下面是我用来序列化对象的代码。

不幸的是,它在这条消息的第一行发生了变化。

InvalidOperationException 未处理:无法生成临时类 (result=1)。错误 CS0200:无法将属性或索引器“MyObject.Id”分配给 -- 它是只读的

如果我将 Id 属性设置为 public 它工作正常。有人可以告诉我我是否正在做某事,或者至少是否有可能?

0 投票
4 回答
42423 浏览

c# - ISerializable 接口的意义何在?

似乎我可以序列化没有该接口的类,所以我不清楚它的目的。

0 投票
11 回答
128497 浏览

java - What is the difference between Serializable and Externalizable in Java?

What is the difference between Serializable and Externalizable in Java?

0 投票
5 回答
14528 浏览

c# - 如何添加类型约束以在泛型方法中包含任何可序列化的内容?

我的通用方法需要序列化传递给它的对象,但是仅仅坚持它实现 ISerializable 似乎不起作用。例如,我有一个从 Web 服务(标有 SerializableAttribute)返回的结构,它可以很好地序列化为 xml,但是,正如预期的那样,C# 编译器会抱怨。

有没有一种方法可以在尝试序列化之前检查对象是否可序列化,或者更好的是,使用where关键字检查对象的方法是否合适?

这是我的完整方法:

和序列化消息:

如果这不可能,那么在运行时检查对象是否可序列化的最佳方法是什么?

0 投票
6 回答
14491 浏览

java - 谁真正实现了可序列化的方法?

我一直在学习如何使用Serializable.

我知道如果我创建一个具有不同变量的类“A”Serializable并添加Serializable到我的类中,它也是Serializable.

但是,实际上是谁在实现这两种序列化方法?是否Object会在必要时处理所有事情或不同的类重载它们?

0 投票
3 回答
2393 浏览

java - 添加一个方法会改变我的类上的 java 计算的 serialVersionUid 吗?

如果我有这样的课程:

如果我添加另一种方法(并且没有其他字段),其计算的 serialVersionUID 会改变吗?

例如,添加方法:

或者,是否有一个很好的工具来解决这个问题?