额 电子书是买了 然后再买了本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}]。
书上的内容也就这么多了 关于如何查找 利用匹配删除什么的都没讲 有空做个示例吧 先写到这了。
相关推荐
The viability of implementing an in-memory database, Er- lang ETS, using a relatively-new data structure, called a Judy array, was studied by comparing the performance of ETS tables based on four data...
erlang 程序设计一书的笔记,帮你快速重温erlang的知识点。
扩展实现Erlang的全局ets, 来自互联网上一个尚未完成的开源项目。 本人开发完善了差不多所有功能。 欢迎下载使用。
或者自己创建 ETS 表并在 ui 上玩耍动机在一个地方聚合来自多个 erlang 节点的结果。 基于 HTTP 的 ETS 查询能力。 TODO: 客户端模式/集群模式 * 集群模式在它的子客户端模式机器上运行查询安装 make shellAPI 参考...
erlang入门电子书 erlang编程 Introducing Erlang,作者Simon.St.Laurent
erlang编程指南学习笔记,包含具体操作命令例子
erlang 安装包
主要介绍了Erlang程序设计(第2版)读书笔记:Erlang安装和基础语法,需要的朋友可以参考下
Erlang及其应用Erlang及其应用Erlang及其应用
erlang25.0 windows版本
erlang otp25 win安装包
ErlangB和ErlangC计算工具(exe可执行文件+excel两个) ErlangB和ErlangC计算工具(exe可执行文件+excel两个)
书中兼顾了顺序编程、并发编程和分布式编程,重点介绍如何编写并发和分布式的Erlang程序以及如何在多核CPU上自动加速程序,并深入地讨论了开发Erlang应用中至关重要的文件和网络编程、OTP、ETS和DETS等主题。...
erlang22最新下载包 erlang22.1.tar.gz erlang22最新下载包 erlang22最新下载包
个人学习Erlang对于Erlang处理数据的各种方式的总结,讲述编程语言Erlang的ets,dets,mnesia,mysql,dict,和进程字典的用法,希望能帮助读者在这个总结里学到一些东西.
Erlang并发编程,Erlang程序设计,Erlang中文手册。 学习erlang的好资料。 Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此...
erlang 中文基础教程erlang 中文基础教程
erlang安装包
erlang资源,非常值得下载,二郎学习
Programming Erlang