
Elixir
文章平均质量分 69
Elixir编程分享以及那些天才想法。
cheniie
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Mix工程的运行方式
这篇文章总结了Elixir工程管理工具Mix的运行方式,主要包括: 创建方式:mix new创建库,mix new --sup创建带监督树的应用 运行方式: iex -S mix: 开发调试时在交互式Shell中运行 mix run: 运行应用,默认启动入口是Application行为中的start函数 自定义Mix任务:将代码放在lib/mix/tasks/目录下,通过mix命令调用 打包发布方式: Escript:打包为命令行程序,需要escript执行 Release:构建自包含的发布包,包含Erla原创 2025-06-27 12:06:34 · 1298 阅读 · 0 评论 -
Go和Elixir极简HTTP服务对比
摘要:本文对比了Go和Elixir两种语言实现原生HTTP服务的过程。在Go中,标准库提供了简洁的网络服务实现,只需几行代码即可完成;而Elixir则需要依赖Plug库,使用Mix工具创建项目并添加相关依赖。两者在处理HTTP请求的方式上有明显差异:Go使用接口实现处理器,Elixir通过Plug行为定义处理逻辑。最新Go 1.22版本增强了路由功能,支持方法匹配和路径参数,而Elixir则通过Plug.Router提供路由功能。两种语言在设计理念和实现方式上各有特色,体现出不同的编程范式。原创 2025-06-27 12:04:24 · 1075 阅读 · 0 评论 -
Elixir日志详解
Elixir 的日志功能由 Logger 模块提供,它基本上是 Erlang 的:logger的封装。:emergency:alert:critical:error:warning:notice:info:debug当然常用的还是:error到:info之间的几个。每个级别都有对应的函数用来记录日志,支持和,以及返回结构化或非结构化数据的。所谓结构化数据就是 keyword list 和 map,Elixir 也称之为“report”。非结构化数据就是字符串或字符串列表。原创 2024-12-17 15:56:02 · 1055 阅读 · 0 评论 -
Elixir中的切片
Learn X By Example · Elixir 篇 · Slices in Elixir翻译 2025-02-28 17:40:23 · 54 阅读 · 0 评论 -
Elixir中的数组
Learn X By Example · Elixir 篇 · Array in Elixir翻译 2025-02-28 17:02:28 · 60 阅读 · 0 评论 -
Elixir中的Switch
Learn X By Example · Elixir 篇 · Switch in Elixir翻译 2025-02-28 15:56:20 · 46 阅读 · 0 评论 -
Elixir中的If Else
Learn X By Example · Elixir 篇 · If Else in Elixir翻译 2025-02-28 15:40:03 · 60 阅读 · 0 评论 -
Elixir中的For循环
Learn X By Example · Elixir 篇 · For in Elixir翻译 2025-02-28 15:17:46 · 42 阅读 · 0 评论 -
Elixir中的常量
Learn X By Example · Elixir 篇 · Constants in Elixir翻译 2025-02-28 12:52:07 · 39 阅读 · 0 评论 -
Elixir的变量
Learn X By Example · Elixir 篇 · Variables in Elixir翻译 2025-02-28 12:46:17 · 42 阅读 · 0 评论 -
Elixir的值类型
Learn X By Example · Elixir 篇 · Values in Elixir翻译 2025-02-28 11:21:11 · 41 阅读 · 0 评论 -
Elixir的 Hello World
Learn X By Example · Elixir 篇 · Hello World in Elixir翻译 2025-02-28 11:11:10 · 62 阅读 · 0 评论 -
Elixir+MAVLink=玄学
首先是有很多警告,都是由于我的 elixir 版本过高,一些被弃用的语法和函数导致的,找到发出警告的代码,一一改过来就可以了,其实也不是很多。我用的是 elixir 1.17.3,导入这个库之后,不出意外的报错了。目前还没有回复,MAVLink已经不重要了,我现在比较好奇这个错误是怎么个事儿,希望有高人指点,等问题解决来再来写后续吧。不知道什么原因这里始终报错说找不到这个库,我试了导出 erlang 的其他库的头文件中的记录,比如。是 erlang 的 xml 库的头文件,它在 erlang 安装目录的。原创 2025-01-08 15:39:44 · 431 阅读 · 0 评论 -
Elixir Registry
关于 Elixir 的 Registry,官方文档写的不太容易理解,因此这里我们采取意会的方式来介绍它。Registry 这里还是翻译为“注册表”,也比较贴合它的实际功能。我们知道在 Elixir 中,可以为进程注册一个名称,这样就可以通过这个名称向进程发送消息了,而需要 PID。这就跟域名和 DNS 很像,同理,Elixir 也需要一个地方来记录名称和 PID 的对应关系。像 GenServer 等这些在start_link函数中可以直接指定进程名称,对于多个节点的分布式环境,Erlang 也提供了。原创 2024-12-13 11:38:02 · 927 阅读 · 0 评论 -
Mix.Project
定义和操作 Mix 项目。Mix 项目是通过在模块中调用 来定义的,通常放置在 文件中:配置为了配置 Mix,使用 的模块需要导出一个 函数,该函数返回一个关键字列表,代表项目的配置。这个配置可以通过 读取。注意,如果没有定义项目, 也不会失败;这使得许多 Mix 任务在没有项目的情况下也能工作。如果一个任务需要项目被定义,或者需要访问项目中的特定函数,可以调用 ,如果项目没有定义,它会抛出 异常。 返回的选项列表并不固定,因为许多 Mix 任务都会从这个配置列表中读取自定义的选项。以原创 2024-12-11 17:15:53 · 535 阅读 · 0 评论 -
Elixir修改Hex镜像源及相关配置
在 Elixir 项目中,我们通过运行获取依赖,如果使用默认的国外镜像源,下载依赖时可能会遇到网络问题。这里我已经配置成国内镜像源了。要修改 Hex 镜像源,既可以通过命令,也可以通过命令行配置。环境变量是HEX_MIRROR。其实在的“修改镜像源”一节我也介绍了如何配置 Elixir 的镜像源。除了mirror_url,Hex 还有许多其他配置,我们可以通过以上是 Hex 2.0.6 版本的配置。原创 2024-12-09 14:34:27 · 710 阅读 · 0 评论 -
Elixir GenServer
GenServer是一个用来实现客户端-服务器模式中服务器的行为模块。GenServer是一个普通的 Elixir 进程,同其他 Elixir 进程一样,它可以用来保存状态、异步执行代码等。使用这个模块来实现通用服务器进程(GenServer)的优势在于,它有一套标准的接口函数,并提供用于跟踪和错误报告的功能。同时它也可以用到一个监督树中。fill:#333;color:#333;color:#333;fill:none;原创 2024-12-07 19:03:34 · 718 阅读 · 0 评论 -
Elixir Task.Supervisor
是一个任务监督者。该模块定义了一个监督者,可以用来动态监督任务。子进程描述支持的选项参见的文档。更多示例请参见Task模块。原创 2024-12-06 10:38:42 · 318 阅读 · 0 评论 -
Elixir DynamicSupervisor
一个被优化为仅动态启动子进程的监督者。Supervisor模块被设计用来处理静态子进程,它们在监督者启动时按给定顺序启动。启动时没有子进程。相反,子进程是通过按需启动的,且子进程之间没有顺序。这使得能通过使用高效的数据结构管理数百万子进程以及并发执行某些操作(如关闭)。原创 2024-12-06 10:13:34 · 695 阅读 · 0 评论 -
Elixir PartitionSupervisor
一个负载均衡监督者。在大型系统中,某些进程可能会成为瓶颈。如果这些进程是无状态的,或者它的状态在不同实例之间没有yi’lai可以被轻易地分区,并且它们之间没有依赖关系,那么它们可以使用 PartitionSupervisor 来创建多个隔离且独立的分区。原创 2024-12-06 10:12:01 · 532 阅读 · 0 评论 -
Elixir Supervisor
Supervisor是一个用于实现监督者的模块。监督者是一个监督其他进程的进程,被监督的进程我们称为子进程。监督者用来构建一个进程层级结构,称为监督树。监督树提供了容错性,并封装了应用的启动和停止。有两种方式启动监督者,一是通过,二是定义一个监督者模块并实现所需的回调。以下大部分示例都是使用前者,但也有使用后者的。原创 2024-12-05 19:24:18 · 1504 阅读 · 0 评论 -
Elixir Application
是用于处理应用和定义应用回调的模块。应用是 Erlang/OTP 中打包软件的惯用方式。为了理解这个概念,它类似于其他编程语言中常见的“库”的概念,但又有一些额外的特性。应用是一个实现特定功能的组件,具有标准化的目录结构、配置和生命周期。应用程序可以被加载、启动和停止。每个应用程序还有自己的环境,它提供了一个统一的API来配置每个应用。开发人员通常与应用环境及其回调模块打交道。因此,我们首先讨论它们,然后再深入应用资源文件和生命周期的细节。原创 2024-12-05 00:01:43 · 1170 阅读 · 0 评论 -
Elixir Config
一个简单的基于关键字的配置API。原创 2024-12-04 16:33:52 · 297 阅读 · 0 评论 -
Elixir Agent
代理是一个围绕状态的简单抽象。在 Elixir 中,通常需要共享或存储状态,这些状态必须从不同的进程访问,或者由同一进程在不同时间点访问。Agent模块提供了一个简单的服务实现,允许通过简单的API访问和更新状态。原创 2024-12-04 16:39:42 · 455 阅读 · 0 评论 -
Elixir Task
用于方便的派生和等待异步任务。任务是一个执行一个特定动作的进程,期间几乎不与其他进程通信。任务的常用场景是通过异步计算将顺序代码转化成并发代码。通过async派生的任务可以(也只能)由调用进程等待结果,如上例所示。其原理是派生进程会在计算完成时向调用者发送一个消息。相比于通过spawn/1派生的进程,任务包含了监控和日志。除了async/1和await/2,任务也可以做为监控树的一部分启动,以及动态在远程节点派生。稍后我们会介绍。原创 2024-12-04 16:42:48 · 1167 阅读 · 0 评论 -
Programming Elixir笔记
💡 等号代表模式匹配,当匹配成功时,就会发生绑定。其中表达式的值会做为模式匹配的结果。绑定只会发生在等号左边的变量,等号两边都没有变量或者变量出现在等号右边都只会做匹配。等号左边的变量可以重复绑定,也就是说绑定其实是可变的,所以做为函数式语言,elixir并不纯粹,不像Erlang,变量只能绑定一次。要让等号左边的变量只做匹配,不做绑定,可以使用,如^a=1,此时如果a的值不是1,匹配就会失败,因为不做绑定,所以a要提前绑定一个值。操作符称为 pin。此外,在同一次模式匹配中,变量是不变的,不可重复绑定。原创 2024-10-28 16:49:25 · 799 阅读 · 0 评论 -
Elixir 工具篇
学习一门新的语言之前,有必要先了解下它提供的工具。通过这些工具我们才能编译和运行代码,这俗话说的好,纸上得来终觉浅,绝知此事,它要躬行呐!实践永远是学习的不二法门。相比于 erlang,elixir 提供的工具要更加现代化。安装完 elixir 之后,你会得到四个工具,它们都在 elixir 安装目录的bin目录下,分别是elixirelixirciex和mix。打开看一下你就会发现它们其实都是脚本。没错,都是脚本!这些文件中,不带扩展名的是 Linux 脚本,.batWindows 命令行脚本,原创 2024-10-18 10:07:31 · 1315 阅读 · 0 评论