额 电子书是买了 然后再买了本erlang程序设计
再看ets和dets那部分 就权当做个笔记啦....
erlang程序设计 写道
ETS和DETS基本上是在做同一件事:它们提供大型的“键—值”搜索表。所不同的是,ETS驻留在内存,而DETS驻留在磁盘。
表的类型有四个 分别是:set、ordered set、bag和duplicate bag
set系列两个 set是保证主键唯一 ordered set会根据主键排序(set就是插入顺序啦) 这里需要注意的是 insert操作如果遇到主键重复了 并不会报错 而是覆盖
bag系列 bag是主键可以重复但是元组要不同 duplicate bag就是可以多个重复的元组了。
基本操作1:
-module(ets_test). -export([start/0]). start() -> lists:foreach(fun create/1,[set,ordered_set,bag,duplicate_bag]) . create(Mode) -> TableId=ets:new(test,[Mode]), ets:insert(TableId, {a,1}), ets:insert(TableId, {b,2}), ets:insert(TableId, {a,1}), ets:insert(TableId, {a,3}), List = ets:tab2list(TableId), io:format("~-13w => ~p~n" , [Mode, List]), ets:delete(TableId).
结果如下: 70> c(ets_test). {ok,ets_test} 71> ets_test:start(). set => [{b,2},{a,3}] ordered_set => [{a,3},{b,2}] bag => [{b,2},{a,1},{a,3}] duplicate_bag => [{b,2},{a,1},{a,1},{a,3}] ok
set如果主键重复是覆盖很容易就可以看出来。(以上set中{a,1}已经被{a,3}覆盖了)
创建参数:
erlang程序设计 写道
调用ets:new可以创建ETS表。创建表的这个进程就是表的所有者。表创建之后,它的一系列属性设置不能再更改。如果所有者进程死掉,或者调用ets:delete时,就会自动释放表的内存空间。
ets:new的参数是下面这样的。
@spec ets:new(Name, [Opt]) -> TableId
Name是一个原子,[Opt]是一个选项列表,取值范围如下。
set | ordered_set | bag | duplicate_bag。
private。创建私有表,只有所有者进程可以读写这个表。
public。创建公开表,所有知道这个表标识的进程都可以对这个表进行读写操作。
protected。创建受保护的表,所有知道这个表标识的进程都可以对这个表进行读操作,但只有这个表的所有者进程可以对这个表进行写操作。
named_table。命名表,如果存在这个选项,则可以在后续操作中使用Name来操作表。
{keypos, K}。使用K作为键的位置,通常情况下使用的是第一个位置。可能只有一种情况才需要用到这个选项,那就是当我们需要存储Erlang的记录时(记录实际上是变相的元组),它的第一元素包含的是这个记录的名字(对每个记录来说,它的值都是一样的)。
说明 打开一个ETS表时不带任何选项,等同于使用了这样的默认选项[set,protected, {keypos,1}]。
ets:new的参数是下面这样的。
@spec ets:new(Name, [Opt]) -> TableId
Name是一个原子,[Opt]是一个选项列表,取值范围如下。
set | ordered_set | bag | duplicate_bag。
private。创建私有表,只有所有者进程可以读写这个表。
public。创建公开表,所有知道这个表标识的进程都可以对这个表进行读写操作。
protected。创建受保护的表,所有知道这个表标识的进程都可以对这个表进行读操作,但只有这个表的所有者进程可以对这个表进行写操作。
named_table。命名表,如果存在这个选项,则可以在后续操作中使用Name来操作表。
{keypos, K}。使用K作为键的位置,通常情况下使用的是第一个位置。可能只有一种情况才需要用到这个选项,那就是当我们需要存储Erlang的记录时(记录实际上是变相的元组),它的第一元素包含的是这个记录的名字(对每个记录来说,它的值都是一样的)。
说明 打开一个ETS表时不带任何选项,等同于使用了这样的默认选项[set,protected, {keypos,1}]。
书上的内容也就这么多了 关于如何查找 利用匹配删除什么的都没讲 有空做个示例吧 先写到这了。
相关推荐
### Erlang ETS表的研究 #### 摘要与研究背景 本文研究了在Erlang环境下使用一种相对较新的数据结构——Judy数组来实现内存数据库(Erlang ETS)的可能性。研究通过对比基于四种不同数据结构的ETS表性能来进行:...
在Erlang中,ETS(Erlang Term Storage)是内置的一种高效、内存中的数据库,用于存储和检索Erlang术语。然而,ETS的一个限制是它不支持全局的、跨进程的数据访问。为了解决这个问题,`gproc`库应运而生。 `gproc`...
读书笔记:ErlangOTP设计原则中文文档
### Erlang程序设计知识点概述 #### 1. Erlang基础语法与函数定义 - **模块定义**: 在Erlang中,所有的代码都包含在模块之中。例如:`-module(tut).` 定义了一个名为`tut`的模块。 - **函数定义与导出**: 函数定义...
或者自己创建 ETS 表并在 ui 上玩耍动机在一个地方聚合来自多个 erlang 节点的结果。 基于 HTTP 的 ETS 查询能力。 TODO: 客户端模式/集群模式 * 集群模式在它的子客户端模式机器上运行查询安装 make shellAPI 参考...
【标题】"Erlang 学习笔记1" 在深入探讨Erlang这一强大的并发编程语言之前,我们先来理解一下Erlang的基本概念。Erlang是由瑞典电信设备制造商Ericsson开发的一种函数式编程语言,它最初设计的目的是为了处理分布式...
2. ETS表操作:使用Erlang的`ets:new/2`函数创建ETS表,`ets:insert/2`插入Record实例,`ets:lookup/2`或`ets:match_object/2`查询记录,`ets:update_element/3`更新Record字段,`ets:delete/1`删除表或`ets:delete_...
在Erlang中,处理大数据存储有多种方式,其中包括ETS(Erlang Term Storage)、DETS(Distributed Erlang Term Storage)、Mnesia以及MySQL等。下面将对这些存储方式进行详细解析。 1. ETS(Erlang Term Storage) ...
* 数据库层:使用Erlang的ETS、Mnesia、MySQL、MongoDB等数据库来存储游戏数据。 游戏服务器实现 在实现游戏服务器时,我们需要考虑以下几个方面: * 玩家和NPC的进程模型:使用Erlang的轻量级进程来模拟玩家和...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
这涉及到监控ERTS的运行时参数,例如ETS(Erlang Term Storage)使用的内存、进程的数量和状态,以及SMP(对称多处理)支持程度等。 #### 3. 编码最佳实践 在Erlang开发中,最佳实践包括使用模式匹配、递归、消息...
### Erlang学习笔记:深入解析Erlang编程与系统管理 #### 1. Erlang编程基础与资源 在深入探讨Erlang编程之前,我们首先需要了解一些基础资源和学习资料。Erlang官方网站([www.erlang.org](http://www.erlang.org...
Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...
ETS(Erlang Term Storage)和DETS(Distributed Erlang Term Storage)是Erlang中的两个内置数据库系统,用于存储和检索Erlang术语。ETS是内存中的数据库,适用于高速访问和低延迟需求,而DETS则提供了持久化存储。...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...
Port Driver 可能与其他 Erlang 外部接口技术,如 NIF(Native Implemented Function)或 ETS(Erlang Term Storage)进行了对比。 标签 "erlang post driver test" 强调了测试的焦点是关于 Erlang 的 Port Driver...
Erlang/OTP 26.2.1,Erlang,OTP,26.2.1
这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入理解和学习Erlang语言的关键资料。 《Erlang并发编程》这本书可能涵盖了以下知识点: 1. **并发模型**:Erlang的并发...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson为了实现分布式实时、高可靠性系统而开发。Erlang以其强大的并行处理能力、容错性和易于构建大规模分布式系统的特点,在电信、金融和互联网等...