天道酬勤,学无止境

serialization

是什么让 Smalltalk 能够进行图像持久化,为什么像 Ruby/Python 这样的语言不能序列化自己?(What gives Smalltalk the ability to do image persistence, and why can't languages like Ruby/Python serialize themselves?)

问题 在 smalltalk 中,您可以将世界状态保存到图像文件中。 我认为这与 Smalltalk 自身“序列化”的能力有关——也就是说,对象可以生成它们自己的源代码。 1)这是一个准确的理解吗? 2)将这种能力添加到现代语言(非 lisp,显然)中的挑战是什么? 3)“序列化”是正确的词吗? 什么是正确的行话? 回答1 它比“序列化”简单得多。 Smalltalk 映像只是对象内存的快照。 它获取整个 RAM 内容(在垃圾收集之后)并将其转储到一个文件中。 启动时,它会将该快照从磁盘加载到 RAM 中,并从中断处继续处理。 有一些钩子可以在快照和恢复时执行特殊操作,但基本上这就是它的工作原理。 (补充:请参阅下面 Lukas Renggli 的评论,了解一个关键的设计选择,与其他环境相比,它变得如此简单) 回答2 扩展 Bert Freudenberg 的出色回答。 1)这是(即对象序列化自己的源代码的能力)是否准确理解? 不。 正如 Bert 指出的,Smalltalk 镜像只是一个内存快照。 Smalltalk 对象和 Smalltalk 程序的单一事实来源是它们的内存表示。 这与其他语言有很大的不同,在其他语言中,程序被表示为文本文件。 2)将这种能力添加到现代语言(非 lisp,显然)中的挑战是什么? 从技术上讲,对于大多数语言来说,从内存快照引导应用程序应该是可能的。

2021-12-09 05:57:46    分类:技术分享    serialization   persistence   smalltalk   interpreted-language

WebApi 中的条件 DataContract 序列化(Conditional DataContract Serialization in WebApi)

问题 我试图找到有条件地在我的 .net WebApi 项目中的数据合同序列化中包含和删除属性的最佳方法。 在我的 Api 中,我希望允许用户指定他们想要返回的字段。 例如,假设我希望我的 API 返回以下类的实例。 public class Car { public int Id { get; set; } public string Year { get; set; } public string Make { get; set; } public string Model { get; set; } public string Color { get; set; } } 但不是请求整个对象,API 调用只需要 Id 和 Make 字段。 所以返回的 JSON 将是 { "Id": 12345, "Make": "Ford"} 而不是整个对象。 是否可以使用 DataContract Serializer 有条件地从返回对象中添加和删除属性? **编辑我已经查看了 IgnoreDefault 属性,我不相信它会完全满足我的需要。 问题是我想根据 api 请求包含和排除属性,不一定取决于它们是否有数据。 有没有办法挂钩反序列化过程并跳过某些属性? 我可以做某种定制合同吗? 回答1 如果您使用的是DataContractSerializer (或者

2021-12-09 02:41:58    分类:技术分享    .net   rest   serialization   datacontractserializer   asp.net-web-api

从我的应用程序加载网络浏览器时出现可序列化的崩溃错误(Serializable crash error when loading web broser from my application)

问题 我正在开发一个应用程序。 此应用程序包含 2 个类 实现可序列化的发现类扩展 Activity 的主类 在 Main 类中,我通过单击应用程序界面中的按钮调用 android 网络浏览器。 这种行为会导致崩溃。 下面是代码: 主测试程序 package com.heeere.androiddnssd.discovery; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainTest extends Activity { android.net.wifi.WifiManager.MulticastLock lock; private Discovery discovery; private TextView textView; /**

2021-12-09 02:32:32    分类:技术分享    android   serialization

无法序列化泛型类型“System.Windows.FreezableCollection”(Cannot serialize a generic type 'System.Windows.FreezableCollection`)

问题 希望是一个简单的问题。 我有一个带有依赖属性的自定义控件,其中包含另一个自定义控件的列表。 public static readonly DependencyProperty BlockObjectsProperty = DependencyProperty.Register("BlockObjects", typeof(FreezableCollection<BlockObject>), typeof(Block), new FrameworkPropertyMetadata(new FreezableCollection<BlockObject>(), null)); public FreezableCollection<BlockObject> BlockObjects { get { return (FreezableCollection<BlockObject>)base.GetValue(BlockObjectsProperty); } set { base.SetValue(BlockObjectsProperty, value); } } 然后在 xaml 中使用它来填充控件 <Viewbox Grid.Row="2" Stretch="Uniform"> <ItemsControl x:Name="tStack" ItemsSource="

2021-12-08 21:09:30    分类:技术分享    wpf   xaml   serialization

对于类实现 Serializable 的对象的 notserializable 异常(notserializableexception for an object whose class implements Serializable)

问题 我有这堂课 public class wordObject implements java.io.Serializable { String wordName; int occCount; int count; HashMap<Integer, Double> lineDict; int[] mat; public wordObject(String name,int num) { wordName = name; occCount=1; count = num; lineDict=new HashMap<Integer,Double>(lineC); mat = new int[lineC]; } } 但是当我尝试使用下面给出的一段代码将类的实例写入磁盘时 public static writeObj(WordObject obj) FileOutputStream f_out = new FileOutputStream(loc); // Write object with ObjectOutputStream ObjectOutputStream obj_out = new ObjectOutputStream (f_out); // Write object out to disk,obj is instance of wordObject obj_out

2021-12-08 20:29:28    分类:技术分享    java   serialization

即使没有更改,也停止 ActiveRecord 保存序列化列(Stop ActiveRecord saving a serialized column even if not changed)

问题 这与带有 hashes 的 Rails 部分更新问题非常相似,但恕我直言,这个问题还没有真正得到解答。 问题是这样的:我有一个带有序列化列的模型: class Import < AR::Base serialize :data 就我而言,在第一次保存/创建模型后,此数据将且不应更改。 所以我想禁用始终保存序列化列的 AR 功能(这通常是个好主意,因为它无法检测到这些更改)。 我想禁用保存,因为数据可能非常大,并且模型会经常更新。 我已经尝试过将猴子修补到 ActiceRecord::AttributeMethods::Dirty 中,如下所示: class Import def update(*) if partial_updates? super(changed | (attributes.keys & (self.class.serialized_attributes.keys - ["data"]))) else super end end 但这似乎没有效果。 有人有更好的主意吗? 这是在 Rails 3.0.12 下 回答1 我最终做了什么,即使它不是对原始问题的真正答案,如下: class Import < AR::Base belongs_to :storage class Storage < AR::Base serialize :data

2021-12-08 20:23:21    分类:技术分享    ruby-on-rails   activerecord   serialization   partial   updates

将对象序列化为 XML:IList 属性导致异常(Serialize an Object to XML: IList<CustomObject> Property Causes Exception)

问题 我正在使用以下函数尝试将对象序列化为 XML.. public static string SerializeObject<T>(T obj) { try { string xmlString = null; MemoryStream memoryStream = new MemoryStream(); XmlSerializer xs = new XmlSerializer(typeof(T)); XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); xs.Serialize(xmlTextWriter, obj); memoryStream = (MemoryStream)xmlTextWriter.BaseStream; xmlString = UTF8ByteArrayToString(memoryStream.ToArray()); return xmlString; } catch (Exception ex) { return string.Empty; } } 当尝试序列化一个包含 IList 属性的对象时,我得到以下异常.. Cannot serialize member 'ObjectModel.Order.LineItems' of type

2021-12-08 19:42:40    分类:技术分享    c#   serialization

如何序列化邮件消息?(How do I serialize a mail message?)

问题 在使用 los foratter 绑定序列化 mial 消息时,我得到以下信息。 错误:Sys.WebForms.PageRequestManagerServerErrorException:序列化“System.Net.Mail.MailMessage”类型的值“System.Net.Mail.MailMessage”时出错。 有没有一种简单的方法来序列化这个对象,还是我必须单独序列化每个属性? 回答1 我知道这是一篇较旧的帖子,但我也遇到了需要序列化 ​​MailAddress 类的问题,因此我创建了一个可序列化的版本。 如果您可以使用自定义 MailAddress 类而不是 System.Net.Mail.MailAddress 类,这可能对您有用。 /// <summary> /// Serializable implementation of <see cref="System.Net.Mail.MailAddress"/>. /// </summary> [Serializable] public class MailAddress : System.Net.Mail.MailAddress, ISerializable { // Keep reference to the display name encoding so we can serialize

2021-12-08 18:18:17    分类:技术分享    .net   asp.net   email   serialization

如何将表单作为 JSON 对象提交(how to submit form as JSON object)

问题 我正在做的是使用 JSON 创建一个表单,然后可以编辑该表单并生成新的 JSON 对象。 我遇到的问题似乎是获取表单 ID。 我用来返回 JSON 对象的代码是: form = document.forms[0]; $.fn.serializeObject = function() { alert("start serializeObject"); var o = {}; var a = this.seralizeArray(); $.each(a, function(){ if (o[this.name] !== undefined) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; alert(o); }; $(function() { alert("here"); form.submit(function(){ result.append(JSON.stringify(form.serializeObject())); return false; }); }); 这只是刷新页面我不知道为什么。 该程序不在服务器上

2021-12-08 17:57:14    分类:技术分享    javascript   jquery   json   serialization

如何指示杰克逊序列化对象内的字段而不是对象本身?(How to instruct Jackson to serialize a field inside an Object instead of the Object it self?)

问题 我有一个Item类。 该类中有一个itemType字段,它的类型为 ItemType。 大致,类似这样的。 class Item { int id; ItemType itemType; } class ItemType { String name; int somethingElse; } 当我使用 Jackson ObjectMapper序列化Item类型的对象时,它将对象ItemType序列化为子对象。 这是预期的,但不是我想要的。 { "id": 4, "itemType": { "name": "Coupon", "somethingElse": 1 } } 我想做的是在序列化时显示itemType的name字段。 像下面这样的东西。 { "id": 4, "itemType": "Coupon" } 反正有没有指示杰克逊这样做? 回答1 查看@JsonValue注释。 编辑:像这样: class ItemType { @JsonValue public String name; public int somethingElse; } 回答2 您需要创建和使用自定义序列化程序。 public class ItemTypeSerializer extends JsonSerializer<ItemType> { @Override public void

2021-12-08 17:46:55    分类:技术分享    java   serialization   jackson