如果我的状态没有改变,还需要 OTP 吗?

2024-01-04

我有一个 erlang 项目,其状态完全是只读的,由 ets 表和编译模块 https://stackoverflow.com/questions/5130382/erlang-gen-server-with-a-large-state。代码启动时需要几秒钟来构建表。

打包它以供其他应用程序使用的最佳方法是什么?

其他一些需要考虑的事情:

  • 不存在数据争用问题或状态变化,因此似乎不需要 gen_server。
  • 我喜欢能够打电话application:start/1并让事情“正常工作”。
  • 某些进程应该拥有 ets 表。看来我不应该把它留给客户端代码。

上面的内容让我认为我应该创建一个应用程序,并从主管的调用设置代码init/1函数,但我不确定这是否是一种愚蠢的方法。


如果模块完全静态,则在此类应用程序中将不需要任何进程。如果您实施applicationOTP 中的行为您应该能够将 ETS 表直接连接到主应用程序进程(启动应用程序中的表)start/2打回来)。这样您将拥有一个最小的流程模型,允许您跳过supervisor和任何gen_server.

您当然应该使用 OTP,但这并不意味着您绝对必须拥有supervisor or a gen_server.

Use appmon http://www.erlang.org/doc/apps/appmon/appmon_chapter.html查看应用程序的进程层次结构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我的状态没有改变,还需要 OTP 吗? 的相关文章

  • Erlang停止gen_server

    我有 gen server start UserName gt case gen server start global UserName player of ok gt io format Player UserName started
  • 如何返回元素的个数?

    我必须编写一个函数 它接受一个整数列表作为参数并返回列表中小于 1 的整数的数量 到目前为止 我所拥有的是一个仅返回列表中的整数个数的函数 我不确定应该在哪里 是否放置 if 语句和计数器以仅返回有多少个整数小于 1 export num
  • RabbitMQ 失败,错误:无法连接到节点rabbit@TPAJ05421843:nodedown

    在 Windows 7 Enterprise 计算机上 我全新安装了 Erlang 17 4 和 RabbitMQ 3 4 3 x64 安装成功且顺利 我还没有尝试创建我的第一个队列或交换器 但我已经看到了麻烦 这个问题类似于另一个SO帖子
  • 使用字符串将 Erlang 映射编码为 JSON 以便通过 Javascript 进行解析?

    我正在尝试使用 Erlang 地图 例如 breakfast gt leftovers 并编码为 JSON 映射 例如 我尝试使用 jiffy 转换列表 email protected cdn cgi l email protection
  • Node.js 或 Erlang

    当谈到它们可以处理的并发级别时 我真的很喜欢这些工具 Erlang OTP 看起来是更稳定的解决方案 但需要更多的学习和深入研究函数式语言范例 看起来 Erlang OTP 在多核 CPU 方面做得更好 如果我错了 请纠正我 但我应该选择哪
  • 我们如何有效地处理 mnesia 记录的时间相关约束?

    我正在将记录写入mnesia 该记录应该保存在那里 仅在允许的时间 24 小时 内 24小时后 在用户修改其中的一部分之前 系统应该自动删除它们 例如 用户获得免费通话时间 用于语音通话 他们应该在给定时间内使用它们 如果他们不使用它 24
  • Erlang:如何将小数转换为填充零的十六进制字符串

    我想在 Erlang 中将 42 基数 10 转换为 000002A 基数 16 我在网上找到了一些提示 io format 8 0B n 42 gt 00000042 And io format 16B n 42 gt 2A 但我似乎无法
  • 拦截登录/注销ejabberd

    我想知道用户何时在自定义模块中的 ejabberd 会话中登录和注销 而不更改 ejabberd 代码 我需要它 因为我必须在用户登录时执行一些操作 并清理用户注销时执行的操作 另外 在某些情况下我需要能够注销用户 那么 有没有办法扩展某些
  • 除了 Erlang 之外,还有哪些系统是基于“绿色流程”的?

    我正在阅读这个信息页面绿线 维基百科 http en wikipedia org wiki Green thread我想知道 除了 Erlang 之外 还有哪些编程系统依赖于 绿色进程 Edit 绿线 绿色流程 基于绿色流程 Erlang
  • 如何确定ETS表的确切内存大小?

    给定一个包含数据的 ETS 表 info 1 函数返回该表的各种属性 包括size该值特定于行数而不是物理大小 有没有办法计算 ETS 表占用的内存量 以字节为单位 ets new mytable bag named table compr
  • 如何在erlang中读取mnesia数据库的所有记录?

    我是 erlang 新手 我需要对从 mnesia 数据库获取的所有记录进行一些操作 Result mnesia dirty read mydatabase key1 key2 case Result of gt DEBUG No such
  • 为什么 epmd 进程不退出?

    在我退出 erlang shell 后 epmd 进程仍然存在 这是一个错误还是一个功能 这是很正常的 EPMD 是一个主机守护进程 当人们打算使用分布式节点时 就需要它的存在 当仅在同一台机器上使用多个节点时 它也很有用
  • Erlang:binary_to_atom 填充atom 表空间安全问题

    我听说 Erlang 中的原子表可能会被填满 从而使系统对 DDoS 开放 除非您增加可以创建的原子数量 看起来 binary to existing atom 2 就是这个问题的解决方案 谁能准确解释一下如何是否存在安全隐患以及如何解决这
  • Erlang 进程如何(如果有的话)映射到内核线程?

    Erlang 因能够支持许多轻量级进程而闻名 它之所以能做到这一点 是因为它们不是传统意义上的进程 甚至不是 P 线程中的线程 而是完全在用户空间中的线程 这很好 实际上很棒 那么 Erlang 线程如何在多核 多处理器环境中并行执行呢 当
  • Erlang Supervisor 重新启动与已关闭主机的连接的策略

    我使用 erlang 作为服务之间的桥梁 我想知道人们对处理断开的连接有什么建议 我正在从本地文件获取输入并将它们通过管道传输到 AMQP 可以想象 AMQP 代理可能会崩溃 对于这种情况 我想继续重试连接到 AMQP 服务器 但我不想将
  • 使用 Erlang 进行 https post 的简单示例

    我发现引用了一些使用 erlang 与 ssl 通过 rpc 和 http get 等的示例 但是我很难找到通过 erlang 将数据发布到 ssl 端点的示例 有人知道我缺少的一个简单例子吗 我想我明白了 我的论点是错误的 这就是我最终得
  • 调用函数时Erlang“未绑定变量”

    我正在尝试将整数参数 N 传递给cake并返回一个大小为 N 的 2 的平方列表 为了示例 例如面包店 蛋糕 3 gt 4 4 4 这是我到目前为止所做的尝试 module bakery export cake 1 Foo fun X gt
  • Erlang:查找我的 IP 地址

    我正在尝试使用 Redis 完成负载均衡器 登录服务器 游戏服务器的某些部分设置 负载均衡就是其中之一 在我的 Redis 负载平衡实例中 我使用有序集 关键是应用程序名称 成员是游戏服务器的 IP 地址 这就是我的问题 我想在 erlan
  • 创建现有 ram 表的 mnesia disk_copies

    我有一个完整的 mnesia ram copies only 数据库 但在将 disk copy 表添加到节点时遇到问题 目前我这样做 创建我所有的 ram copy 表 节点 在disk copy to be节点上启动mnesia 使用以
  • 将数百万条记录写入 mnesia 表会占用大量内存(RAM),并且即使删除这些记录也不会回收

    我正在运行一个 Erlang 应用程序 它经常将数百万条记录写入 mnesia 表以创建调度程序 当时间到期时 记录将被执行并从表中删除 该表配置为 type disk copies type ordered set 我使用事务操作来写入

随机推荐

  • 哪个目录是 `brew cask install` 使用的真实位置?

    哪个目录是真实位置brew cask install uses 我想找到应用程序的真实位置 而不是符号链接 Application 您可以在可用的应用程序中找到每个应用程序的自定义命令Casks https github com caskr
  • 嵌入允许添加和删除的 Symfony2 表单集合

    在 Symfony2 中 如果我嵌入表单集合 http symfony com doc current cookbook form form collections html指向Doctrine中的多对一关系并允许添加和删除 如果我从头删除
  • 将系统属性从 Gradle 传递到 Spring Boot

    我想将某些安全敏感属性传递到我的 Spring Boot 应用程序中 我在开发过程中通过命令行和 或外部设置的系统属性通过 Gradle 启动该应用程序 我无法将这些写入 build gradle 脚本或属性文件之类的内容 因为它们将被提交
  • 快速写出png

    Summary 我想尽快编写一个 png 文件 而不用担心压缩 也就是说 我不太关心文件大小 但我确实关心写入尽可能快地发生 动机 我正在客户端使用 OpenLayers 并在后端使用 python C 制作一个基于 Web 的地图应用程序
  • 运算符重载?

    我让自己成为了一个 RSS 阅读器 它可以让我了解最新情况并通知我新节目 或者至少这就是背后的想法 我创建了一个结构体 SeasonEpisode 其中包含两个整数 季节 剧集 和一个覆盖 ToString 函数 我将最新观看的内容存储在本
  • 从文本文件中删除行的有效方法

    我需要从文本文件中删除特定行 做到这一点最有效的方法是什么 文件可能很大 超过百万条记录 更新 下面是我当前正在使用的代码 但我不确定它是否好 internal void DeleteMarkedEntries string tempPat
  • 无法在 Django 中创建自定义 __str__ 调用父级的 __str__

    尽管我知道如何制作它 并且已经搜索了比较我的代码的示例 但我不明白为什么我不能调用具有其自身的模型 str 在其父级内部调用 str 我得到一个RuntimeError maximum recursion depth exceeded in
  • 如何将列值转换为列?

    我已经浏览了 Stackoverflow 在线图书和 google 上的大量 SQL Pivot 示例 但我仍然无法弄清楚如何执行 我称之为 简单的 Pivot 操作 实施例1 https stackoverflow com questio
  • 如何轻松检查 .NET 中的文件访问是否被拒绝?

    基本上 我想在实际尝试打开文件之前检查我是否有权打开该文件 除非必须 否则我不想使用 try catch 进行此检查 是否有我可以事先检查的文件访问属性 过去我已经做过无数次这样的事了 但几乎每次我的尝试都是错误的 文件权限 甚至文件存在
  • 重复播放后媒体播放器错误 (-19,0)

    我有一款游戏 当关卡完成时会播放声音 一开始一切正常 但在重复 10 或 20 次级别后 logcat 突然报告 MediaPlayer 错误 19 0 和 或 MediaPlayer 在状态 0 下启动 并且不再发出声音 我最初有 mp3
  • 如何使用 PIL 优化调色板图像大小?

    我的目标是在黑色图像上绘制一些多边形 以使所得图像的总尺寸尽可能小 所以我在维基上读了一篇关于索引颜色的文章 link https en wikipedia org wiki Indexed color 并且这对我来说似乎是一个不错的选择
  • MSSQL/dblib 的 PDO 日期时间格式

    MSSQL 2005 数据库具有排序规则 German Phonebook BIN 但这并不重要 与数据库的连接是通过 PDO 和 FreeTDS 完成的 在 Debian Squeeze 下使用 PHP 当我尝试从表中选择日期时间值时 我
  • 如何注释掉 XML 元素(使用 minidom DOM 实现)

    我想注释掉 xml 文件中的特定 XML 元素 我可以删除该元素 但我更愿意将其注释掉 以备以后需要 我目前使用的删除元素的代码如下所示 from xml dom import minidom doc minidom parse myXml
  • Django 编辑用户配置文件

    我正在尝试在前面创建一个 编辑个人资料 表单 发生的情况是我的表单 我不是 100 确定 尝试创建一个用户 而不是查找当前用户并更新他的个人资料 所以我认为这就是问题所在 在这里检查了很多问题 但没有一个足够清楚 我尝试编辑的字段是电子邮件
  • 此处不允许使用列 Oracle SQL 处理多个列

    我正在尝试将记录插入表中 但当我插入此记录时 我的 项目评级列 下例中的 PG 上出现 此处不允许列 错误 INSERT INTO ITEM VALUES item s1 NEXTVAL 786936161878 SELECT common
  • Rails 反跳延迟作业后台任务?删除重复项

    去抖是推迟函数 作业执行直到经过一定时间之后的常用方法 用例 来自多个用户的活跃聊天对话 他们不应该收到每条键入消息的电子邮件通知 但很可能在几分钟的静默后 如果消息未读 用户应该会看到一条通知 延迟作业 没有解决方案 有相关问题 http
  • 互斥查询

    Question 您如何将产生互斥结果的 IF ELSE 分配到产生相同结果的查询中 Use Case 作为主体 当前登录的用户 我可以获得组织中的用户列表 如果我被分配到任何部门 那么用户列表是分配到相同部门的较小的集合 Example
  • OpenCV C++ 转换为 Java 以解决形状检测问题

    我们对 openCV Java 开发有点陌生 遇到了一个问题 我们正在努力转型这段代码 https github com bsdnoobz opencv code blob master shape detect cpp到 Android
  • Python3 - Sympy:展开三角函数的乘积

    我找不到让 SymPy 扩展产品的方法 例如cos a cos b 转化为角度和的三角函数之和 from sympy import init printing wrf wlo t symbols omega RF omega LO t c
  • 如果我的状态没有改变,还需要 OTP 吗?

    我有一个 erlang 项目 其状态完全是只读的 由 ets 表和编译模块 https stackoverflow com questions 5130382 erlang gen server with a large state 代码启