ruby way之高级数据存取

经常我们需要以一种更透明的方式来存储和得到数据.Marshal模块提供了简单的对象持久化,PStore 库建立在这项技术之上。dbm 库使用像hash一样并永久的存贮在磁盘上.

1简单的Marshaling

经常我们需要创建一个对象,然后为了以后的使用保存它.ruby对这种对象持久化(或者说是 Marshaling)提供了基本的支持.Marshal 模块能够使程序员序列化和反序列化一个ruby对象.

# array of elements [composer, work, minutes]
  works = [["Leonard Bernstein","Overture to Candide",11],
     ["Aaron Copland","Symphony No. 3",45],
     ["Jean Sibelius","Finlandia",20]]
# We want to keep this for later...
File.open("store","w") do |file|
 Marshal.dump(works,file)
end
 
# Much later...
File.open("store") do |file|
 works = Marshal.load(file)
end

这里要注意的是这种技术并不是所有的对象能被dump.如果一个对象包含一个低级别的类的对象,他就 不能被dump,比如IO、Proc和Binding,单例对象,匿名对象,模块也不能被序列化.

Marshal.dump 还有另外两种参数的形式,如果调用时传入一个参数的话,它将会返回返回一个由字符 串表示的数据,其中前两个字节为主版本号和次版本号:

这边的话1.9和1.8的结果是不同的:

s = Marshal.dump(works) 
p s[0] # 4 
p s[1] # 8

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索file
, 对象
, 模块
, dump
, #Marshal
, 一个
, Marshal
ios数据存取
ruby 类存取器、the ruby way 3rd pdf、the ruby way、the ruby way pdf、learn ruby hard way,以便于您获取更多的相关知识。

时间: 2024-11-14 20:37:32

ruby way之高级数据存取的相关文章

asp.net入门来一遍----数据存取

asp.net|数据 因为正在设在设计一个asp.net+xml+delphi的三层设计所以在对一简单的东西做了一下整理.下面是对xml,access,mssql数据存取protected DataSet LoadMyPBData() { string sourceXml = Server.MapPath("phone.xml"); DataSet dataSet = new DataSet(); try { dataSet.ReadXml(sourceXml); } catch (E

在Visual Studio 2005和ASP.NET 2.0中使用强类型数据存取

asp.net|visual|数据 "Never put off until run time what can be done at compile time."David Gries, Compiler Construction for Digital Computers Introduction 作为程序员,我们在学习一些新技术的时候,范例有时候会是我们最大的敌人.指南通常被设计成简单易懂,但同时里面的懒惰.无效率的甚至是危险的代码编写会增多.像这种情况最普遍存在的就是在ADO.

设计并实现用于ASP.NET一个通用的数据存取层应用程序

asp.net|程序|设计|数据 Designing and implementing a versatile data access tier for an ASP.NET applicationBy Paul Abarham In this article, we will drill down deeper in to the design of a n-tier architecture and our focus will be on the data access tier (DAT

利用RDA实现SQL CE与桌面SQL Server数据库间的数据存取

本文介绍如何利用RDA(RemoteDataAccess远程数据存取)实现掌上电脑Pocket PC(简称PPC)上的SQL Server CE 2.0与桌面SQL Server 2000数据库间的数据存取.我们将采用Visual Basic .Net 2003进行智能设备端的程序开发. 概述 PPC程序与桌面PC进行通信的编程方式目前有两种,1.利用Socket编程与桌面程序进行通信:2.利用RDA和Replication(复制)进行数据库编程来完成与桌面SQL Server数据库的存取.利用

RDA实现SQL CE与SQL Server间数据存取

本文介绍如何利用 RDA(RemoteDataAccess远程数据存取)实现掌上电脑Pocket PC(简称PPC)上的SQL Server CE 2.0与桌面SQL Server 2000数据库间的数据存取.我们将采用Visual Basic .Net 2003进行智能设备端的程序开发. 一. 概述 PPC程序与桌面PC进行通信的编程方式目前有两种,1.利用Socket编程与桌面程序进行通信:2.利用RDA和Replication(复制)进行数据库编程来完成与桌面SQL Server数据库的存

高级数据分析师

高级数据分析师+大型互联网公司+北京+25-45W; 岗位描述: 1.与业务部门一起建立用户数据体系,为管理层决策和用户策略提供有质量的数据支持: 2.通过数据监控能快速精准的发现问题,并通过深入分析与业务部门沟通解决: 3.针对应用场景,建立数据产出.评估.应用规则,并不断修正逻辑: 4.负责用户的数据采集,根据实际业务优化,并推动实现采集和ETL优化: 5.根据业务形态和分析,逐渐积累可供业务产品使用的数据模型逻辑,组织跨部门协调沟通,推进产品实施,确保产品不断完善: 6.处理业务相关的临时

高级数据结构中,线段树问题

问题描述 高级数据结构中,线段树问题 高级数据结构中,线段树可以处理很多区间问题,但是这些数据结构在现实项目中用 得多吗?还是这只是存在于竞赛中而已.如果现实项目中有用到,能不能举个例子? 解决方案 我曾级听过一个大牛说,线段树用得很少,基本没有用到... 解决方案二: 高级数据结构 - 线段树(1)数据结构--线段树--区间涂色问题高级数据结构 - 线段树(2)

控件-vc6 求教关于数据存取的问题

问题描述 vc6 求教关于数据存取的问题 我有一个树形控件,然后每一个节点都对应一个值,写入一个节点,就将节点的地址和值写入INI文件,读写都没问题,后来发现更改某个节点的父节点名称后,所有的子节点值都无法获取了,求教该用什么方式存地址和值更方便使用 例如:目录树是这样的a b c 节点a 存到ini里面的时候是 "a"=""1""节点b 存到ini里面的时候是 "ab"=""22""节

iOS本地数据存取,这里就够了

iOS本地数据存取,看这里就够了 应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 应用沙盒的文件系统目录 应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在该目录 tmp:保存应