日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ets

發(fā)布時間:2023/11/30 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ets 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  :ets.new(table_name, pattern)

  第一個參數(shù)是表名,第二個參數(shù)是表的設置選項。

  :set  一個key,一個數(shù)據(jù),無序

  :ordered_set  一個key,一個數(shù)據(jù),有序; 1 == 1.0

  :bag  一個key,多個數(shù)據(jù), 不可重復

  :duplicate_bag  一個key,多個數(shù)據(jù),可重復

?

  :public  任何進程可讀寫

  :protect  擁有者進程可讀寫,其他進程可讀

  :private  只有擁有者可讀寫

?

  :named_table  為ets表命名,替代它的id。有該參數(shù)時 :ets.new 返回 named_table 對應的表名,使用 insert 等函數(shù)時使用。注:在使用 named_table 的情況下同一項目中不能出現(xiàn) :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"?等等來表示匹配中所使用的變量。其中的數(shù)字只用來表示其在返回值中的位置,而非匹配時的位置。不想要的部分我們可以用?:"_"?來忽略掉。

: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,這個函數(shù)忽略那些變量而直接返回整個對象

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

  

  :ets.tab2list(table_name)

  返回一個 ETS 表的所有對象數(shù)據(jù)的列表

?

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

  這兩個函數(shù)通常聯(lián)用, :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) 

  刪除匹配成功的數(shù)據(jù)

?

  :ets.delete(table)

  刪除整張表

?

  :ets.delete(table, key)

  刪除key指向的一組數(shù)據(jù)

?

  :ets.safe_fixtable(table, true/false)

  鎖定表使其可以安全遍歷,鎖定一個類型是 set,bag 或 duplicate_bag 的表,使其可以安全遍歷表里的數(shù)據(jù)。在一個進程里調(diào)用 ets:safe_fixtable(Tab, true) 可以鎖定一個表,直到在進程里調(diào)用 ets:safe_fixtable(Tab, false) 才會解鎖,或進程崩潰。如果同時有幾個進程鎖定一個表,那么表會一直保持鎖定狀態(tài),直到所有進程都釋放它(或崩潰)。有一個引用計數(shù)器記錄著每個進程的操作,有 N 個持續(xù)的鎖定操作必須有 N 個釋放操作,表才會真正被釋放。當一個表被鎖定,一序列的?ets:first/1?和?ets:next/2?的調(diào)用都會保證成功執(zhí)行,并且表里的每一個對象數(shù)據(jù)只返回一次,即使在遍歷的過程中,對象數(shù)據(jù)被刪除或插入。在遍歷過程中插入到表里的新數(shù)據(jù)可能由?ets:next/2?返回(這取決有鍵的內(nèi)部順序)。

  一個被鎖定的表是不會有被刪除的對象數(shù)據(jù)從表里被實際刪除,直到它被釋放。如果一個進程鎖定一個表,并不釋放它,那些已刪除的對象數(shù)據(jù)所占用的內(nèi)存將永遠不會得到釋放。對表操作的性能也會顯著降低。

轉(zhuǎn)載于:https://www.cnblogs.com/lr1402585172/p/11583651.html

總結(jié)

以上是生活随笔為你收集整理的ets的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。