zoukankan      html  css  js  c++  java
  • ets

      :ets.new(table_name, pattern)

      第一个参数是表名,第二个参数是表的设置选项。

      :set  一个key,一个数据,无序

      :ordered_set  一个key,一个数据,有序; 1 == 1.0

      :bag  一个key,多个数据, 不可重复

      :duplicate_bag  一个key,多个数据,可重复

      :public  任何进程可读写

      :protect  拥有者进程可读写,其他进程可读

      :private  只有拥有者可读写

      :named_table  为ets表命名,替代它的id。有该参数时 :ets.new 返回 named_table 对应的表名,使用 insert 等函数时使用。注:在使用 named_table 的情况下同一项目中不能出现 :est.new 相同的表

      :ets.insert(table_name, object)  如果当前键已存在,则覆盖

        table_id = :ets.new(:test1, [:set, :public])
        :ets.insert(table_id, {1, ["2", "xx"]})
        :ets.insert(table_id, {[3, 4], [13, 98, 97]})

       

      :ets.insert(table_name, object)  如果当前键已存在,则返回false

      :ets.match(table_name, pattern)

      我们使用原子 :"$1":"$2":"$3" 等等来表示匹配中所使用的变量。其中的数字只用来表示其在返回值中的位置,而非匹配时的位置。不想要的部分我们可以用 :"_" 来忽略掉。

    :ets.match(table_id, {1, :'$1'})    ["2", "xxx"]
     :ets.match(table_id, {[3, :'$2'], :'$1'})    [[13, 98, 97, 4]]

      

      :ets.match_object(table_name, pattern)

       match_object/2,这个函数忽略那些变量而直接返回整个对象

      :ets.match(table_id, {[3, :'$2'], :'$1'})    [{[3, 4}, [13, 98, 97]}]

      

      :ets.tab2list(table_name)

      返回一个 ETS 表的所有对象数据的列表

      :ets.select(table_name, match_spec)  :ets.fun2ms(fun)

      这两个函数通常联用, :ets.fun2ms 返回一组用于 :ets.select 匹配的模式

      :ets.lookup(table_name,  key)

      返回key对应的对象

      :ets.first(table_name)

      返回第一个元素的键

      :ets.next(table_name, key)

      返回当前键的下一个键

       

      :ets.delete_match(table_name, pattern) 

      删除匹配成功的数据

      :ets.delete(table)

      删除整张表

      :ets.delete(table, key)

      删除key指向的一组数据

      :ets.safe_fixtable(table, true/false)

      锁定表使其可以安全遍历,锁定一个类型是 set,bag 或 duplicate_bag 的表,使其可以安全遍历表里的数据。在一个进程里调用 ets:safe_fixtable(Tab, true) 可以锁定一个表,直到在进程里调用 ets:safe_fixtable(Tab, false) 才会解锁,或进程崩溃。如果同时有几个进程锁定一个表,那么表会一直保持锁定状态,直到所有进程都释放它(或崩溃)。有一个引用计数器记录着每个进程的操作,有 N 个持续的锁定操作必须有 N 个释放操作,表才会真正被释放。当一个表被锁定,一序列的 ets:first/1 和 ets:next/2 的调用都会保证成功执行,并且表里的每一个对象数据只返回一次,即使在遍历的过程中,对象数据被删除或插入。在遍历过程中插入到表里的新数据可能由 ets:next/2 返回(这取决有键的内部顺序)。

      一个被锁定的表是不会有被删除的对象数据从表里被实际删除,直到它被释放。如果一个进程锁定一个表,并不释放它,那些已删除的对象数据所占用的内存将永远不会得到释放。对表操作的性能也会显著降低。

  • 相关阅读:
    App.js – 用于移动 Web App 开发的 JS 界面库
    【入门必备】最佳的 Node.js 学习教程和资料书籍
    Fort.js – 时尚、现代的表单填写进度提示效果
    单页网站不是梦,几款国外的单页网站创建工具
    Numeral.js – 格式化和操作数字的 JavaScript 库
    ShortcutMapper – 热门应用程序的可视化快捷键
    Origami – 用于 Quartz 的免费的交互设计框架
    20款时尚的 WordPress 简洁主题【免费下载】
    JSCapture – 基于 HTML5 实现的屏幕捕捉库
    推荐12款实用的 JavaScript 书页翻转效果插件
  • 原文地址:https://www.cnblogs.com/lr1402585172/p/11583651.html
Copyright © 2011-2022 走看看