.Net里的哈希表和串行化


.Net里的哈希表和串行化

介绍

本文介绍了,在.net里,使用哈希表和串行化的C#用法。这里使用的示例应用程序是一个电话簿。电话簿应用程序,是一个控制台的程序。它允许你添加,查看,列出和删除它里面的姓名和电话号码。

哈系表是“键-值”对的集合。在.net里,类Hashtable是哈希表的实现。通过调用Add方法,传递你想添加的键值对,可以完成添加。作为键来使用的这些对象,必须实现Object.Equals 和Object.GetHashCode方法。

private Hashtable table = new Hashtable();

public void AddEntry(BookEntry entry)

{

table.Add( entry.GetPerson(), entry );

}

哈系表建好后,你就可以通过调用Hashtable类的索引来检索这些成员。

public BookEntry GetEntry(Person key)

{

return (BookEntry) table[key];

}

可以通过调用Remove方法来移出条目。这里,使用键来区分要移出的条目。

public void DeleteEntry(Person key)

{

table.Remove( key );

}

通过串行化,我们可以把这个哈系表保存到文件中。串行化就是把对象转换成线性的字节序列,以便存储到存储设备中或者传送到其他地方,的过程。这个任务,可以由BinaryFormater 类来完成。它把哈系表对象串行化为一个文件流。

public void Save()

{

Stream s = File.Open("Phone.bin", FileMode.Create, FileAccess.ReadWrite);

BinaryFormatter b = new BinaryFormatter();

b.Serialize(s, table);

s.Close();

}

如下面所演示的那样,哈系表对象可以通过调用Deserialize 方法转换回来。

s = File.Open("Phone.bin", FileMode.Open, FileAccess.Read);

BinaryFormatter b = new BinaryFormatter();

table = (Hashtable) b.Deserialize(s);

我希望这个简短的对.net里面哈系表对象和序列化的简单介绍会对你有用。

.Net里的哈希表和串行化,布布扣,bubuko.com

时间: 2024-10-09 21:49:50

.Net里的哈希表和串行化的相关文章

21-理解Zend里的哈希表

21-理解Zend里的哈希表 在PHP的Zend引擎中,有一个数据结构非常重要,它无处不在,是PHP数据存储的核心,各种常量.变量.函数.类.对象等都用它来组织,这个数据结构就是HashTable. HashTable在通常的数据结构教材中也称作散列表,哈希表.其基本原理比较简单(如果你对其不熟悉,请查阅随便一本数据结构教材或在网上搜索),但PHP的实现有其独特的地方.理解了HashTable的数据存储结构,对我们分析PHP的源代码,特别是Zend Engine中的虚拟机的实现时,有很重要的帮助

可串行化隔离级别里的锁升级

在今天的文章里我会讨论下可串行化(SERIALIZABLE)隔离级别里会有的锁升级(Lock Escalations),还有你如何避免.在上个月的7月14日,我已经介绍了SQL Server里锁升级(Lock Escalations)的基本概念还有为什么需要它们.因此请你回到这个文章来理解下这个非常重要的概念. 可串行化(SERIALIZABLE)隔离级别 可串行化(SERIALIZABLE)隔离级别用来阻止所谓的幻影记录(Phantom Records).为了阻止它们,SQL Server使用

关于ORACLE的串行化隔离级别--来自ORACLE概念手册

为了描述同时执行的多个事务如何实现数据一致性,数据库研究人员定义了被 称为串行化处理(serializability)的事务隔离模型(transaction  isolation model).当所有事务都采取串行化的模式执行时,我们可以认为同一时间只有 一个事务在运行(串行的),而非并发的 以串行化模式对事务进行隔离的效果很好,但在此种模式下应用程序的效率将 大大降低.将并行执行的事务完全隔离意味着即便当前只存在一个对表进行查 询(query)的事务,其他事务 也不能再对此表进行插入(inse

对象的序列化(串行化)分析(一)

对象的序列化(串行化)序列化概念:(1)对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下 来,在需要时再将对象恢复.我们把对象的这种能记录自己的状态以便将来再生的能力.叫作对象的持续性(persistence).对象通过写出描述自己状 态的数值来记录自己 ,这个过程叫对象的串行化(Serialization-连续) .(2)一个对象随着创建而存在,随着程序结束而结束.那 如果我要保存一个对象的状态呢?Java序列化能够将对象的状态写入byte流存储起来,也从其他

Java对象的深复制----利用串行化进行深复制

把对象写到流里的过程是串行化(Serilization)过程,但是在Java程序圈里又非常形象地称为“冷冻”或者“腌咸菜”过程:而把对象从流中读出来的并行化(Deserialization)过程则叫做“解冻”或者“回鲜”过程.应当指出的是,写到流里的是对象的一个拷贝,而原来对象仍然存在于JVM里面,因此“腌成咸菜”的只是对象的一个拷贝. 在Java语言里深复制一个对象,常常可以先使对象实现Serializable接口,然后把对象(实际上只是对象的一个拷贝)写到一个流里(腌成咸菜),再从流里读回来

PHP中串行化的使用

1. [代码][PHP]代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <?     /*         作者 : shyhero         邮箱 : [email protected]         Q  Q : 1757424878      */     class Person{               //声明一个Person类        

php中对象的串行化

我们大家有知道PHP串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据.文章这里就PHP串行化为大家详细的介绍.你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行.为了这样的目的,PHP会自动寻找__sleep和__wakeup方法. 当一个对象被PHP串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用

JavaEE 对象的串行化(Serialization)

什么情况下需要序列化 a)当你想把的内存中的对象写入到硬盘的时候:b)当你想用套接字在网络上传送对象的时候:c)当你想通过RMI传输对象的时候:再稍微解释一下:a)比如说你的内存不够用了,那计算机就要将内存里面的一部分对象暂时的保存到硬盘中,等到要用的时候再读入到内存中,硬盘的那部分存储空间就是所谓的虚拟内存.在比如过你要将某个特定的对象保存到文件中,我隔几天在把它拿出来用,那么这时候就要实现Serializable接口:b)在进行java的Socket编程的时候,你有时候可能要传输某一类的对象

PostgreSQL串行化隔离级别(SSI)的能力与实现

https://zhuanlan.zhihu.com/p/37087894 PostgreSQL9.1是第一个采用Serializable Snapshot Isolation(SSI)实现串行化隔离级别的生产级数据库. 本文的目标是学习与分析SSI的设计思路,以及在PG中的实现与优化.首先介绍了隔离级别以及实现其的两个基本并发控制机制,给出了PG的SI未达到串行化的案例,分析原因并给出直观的解决思路,其次阐述了SSI的技术思路与关键环节,最后就PG内核中SSI的实现与优化思路进行了分析. 1.