问题标签 [ets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2155 浏览

concurrency - Erlang ETS 插入/2 错误

我正在尝试创建一个可以访问 ETS 模块的简单 Erlang 进程。

我的源代码包括:

  1. 进程创建:

    /li>
  2. 流程逻辑:

    /li>
  3. 与进程的通信

    /li>

在 Erlang 终端中执行函数调用时,出现错误:

谁能告诉我,问题可能出在哪里?

0 投票
1 回答
681 浏览

erlang - erlang ets 选择错误的参数

erlang 版本18.3

Erlang ets:select/1出现一个奇怪的错误

以下代码将从表中选择元素并获取它们

如果我做

有用

如果我做

arg 也很糟糕ets:select(Cont) ,它不是在第一个或第二个循环中,而是一直存在。

有什么建议吗?

堆栈跟踪

0 投票
1 回答
1002 浏览

elixir - 如何在 elixir 中调用 :ets.fun2ms?

可能吗?如果是这样,如何?

以下代码在 IEX 中执行。

但是,编译后的代码会产生运行时错误。

错误是这样出现的:我想知道如何正确调用。

0 投票
1 回答
261 浏览

erlang - Erlang ETS 匹配

使用 Erlang ets,如何匹配部分键?

例如,ets:insert(time_tb,{ {un_known,{<<"knonw_1">>,<<"knonw_2">>} },[data]}).

关键是{un_known,{<<"knonw_1">>,<<"knonw_2">>}

{<<"knonw_1">>,<<"knonw_2">>}如果我只知道这可能,我怎么能从表中匹配?

0 投票
2 回答
348 浏览

concurrency - 在 Erlang 中将消息路由到 PID

我正在用 erlang 编写一个处理大量消息(记录)的服务器。每条消息都有一个标签(原子),如用户 ID。

如果该进程不存在,“路由器”将为该用户生成一个专用的永久进程(在保存和传递消息之前累积几分钟的消息)。否则它将作为消息传递给现有的进程邮箱。

问题是路由表的簿记。

我可以考虑序列化路由器,每条消息都会导致 ETS 查找通过 userId 查找 PID,如果它没有退出,则最终 Spawn 和 ETS 插入。但这在几秒钟内就变得拥挤了。

另一种方法是直接生成一个进程来路由每条消息,但是如果发送给单个用户的几条消息接踵而至,并且在 ETS 中找不到它们对应的 PID 并生成了永久进程,这可能会导致竞争状况。消息将丢失,只有最后生成的进程有效(覆盖 ETS 中的其他进程),而其他进程将处于空闲状态且未被跟踪。

我也可能想错了。有没有更好的方法来处理这种情况?

0 投票
1 回答
1312 浏览

erlang - 元组作为 ets 表的键?

我想在 ETS 表中存储有关其他网络参与者信息的元组。我想使用{ip_address(), port_number()}(return ofinet:peername(Socket)作为条目的键的元组。也就是我想使用地址/端口的组合作为 ETS 表中其他节点/条目的标识符。

用ets可以吗?还是我必须使用其他类型作为键?

0 投票
1 回答
2365 浏览

r - ets: ets(timeseries, model = "MAM") 中的错误:非季节性数据

我正在尝试使用指数平滑方法创建预测,但得到错误“非季节性数据”。这显然不是真的 - 请参阅下面的代码。为什么我会收到此错误?我应该使用不同的函数(它应该能够执行简单、双重、阻尼趋势、季节性、温特斯方法)?

谢谢&亲切的问候

0 投票
2 回答
855 浏览

erlang - 限制 ETS 存储的增长

我正在考虑使用 Erlang 的 ETS 作为新 Elixir 项目中用户搜索的缓存。根据用户输入,系统将使用昂贵的第三方 API 进行查找。

为了避免对相同的用户输入进行重复调用,我打算在外部 API 前面放置一个缓存层,ETS 似乎是一个不错的选择。但是,由于用户输入的变化没有限制,我担心 ETS 表所需的存储空间会无限增长。

在我阅读 ETS 时,我还没有看到其他人讨论过对 ETS 中表格大小的担忧。那是因为这对于 ETS 来说是一个不正常的用例吗?

乍一看,我的偏好是限制 ETS 表中的条目数量,并在达到限制后拒绝(即删除)最旧的条目......</p>

是否有处理 ETS 中无限数量的条目的通用策略?

0 投票
3 回答
1364 浏览

erlang - 有没有办法浏览 erlang 术语存储 (ETS)

我有一个使用 erlang 术语存储的小型 Elixir 应用程序,我想浏览它并查看存储的内容。有没有办法用 Elixir 或 Erlang 做到这一点?

我想看看它有多大,里面有什么。

编辑:我知道我可以使用 来查看进程:observer.start,但没有列出为 的进程或应用程序ets。有Elixir.Hex.Registry.ETS,但状态或其他进程信息看起来不正确。

我也可以把东西打印出来,iex但这不是一个很好的体验。

0 投票
1 回答
620 浏览

erlang - Erlang ETS 原子和隔离

ets doc中,保证对单个对象的所有更新都是原子的和孤立的。这意味着对单个对象的更新操作要么成功,要么完全失败,没有任何影响(原子性),并且其他进程看不到更新的中间结果(隔离)。

对于以下代码,我将两个表合二为一

我的问题:

  1. 这是 Erlang 中的常见模式吗?

  2. 对于插入和更新,它是原子的和孤立的吗?

    -模块(example_store)。-导出([初始化/0,插入/1,更新/1])。

    init() -> ets:new(store, [public, named_table, {read_concurrency, true}, {write_concurrency, true}]),

    数据 = ets:new(store_data, [public, named_table, {read_concurrency, true}, {write_concurrency, true}]),

    /li>

来自@Derek Brown 的Update_1,被包裹的表不能保证insert/1update/1被隔离。

Q3:可以隔离吗?(除了 Gen_server)