IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:OTP

共 9 篇相关文章

IT 累计浏览 34

Typecho 多用户二次认证插件

该插件为Typecho 1.2.0+版本提供基于OTP的多用户二次认证功能。作者因现有扩展不支持多用户而开发此方案,插件具有界面简洁、支持多用户的特点。核心功能是在登录页面集成动态码输入框,实现账户密码与OTP验证码的双重校验。 用户需在个人设置页面扫描二维码或手动绑定OTP密钥,绑定后密钥固定,未绑定时页面会随机生成密钥。插件允许用户验证并解绑已有OTP认证。登录时,已绑定用户必须输入正确动态码,未绑定用户则可直接登录。安装时需将文件夹上传至插件目录并启用。 配置选项包括时间窗口期设置(用于处理时间戳差异)和防呆设计(需确认卸载以防止误操作导致密钥丢失)。更新记录显示插件已修复PHP 8.2语法不兼容及表单错误挂载问题。

IT 累计浏览 1,509

ERLANG OTP源码分析 – code_server

这篇讲的是Erlang OTP中code_server模块的源码分析,重点探讨代码升级的基本原理。作者从sys模块升级的话题出发,深入到code和code_server模块的工作机制。code_server是Erl

IT 累计浏览 2,103

ERLANG OTP源码分析 – sys

这篇讲的是 Erlang OTP 中负责进程管理的基石模块——`sys` 的内部运作。作者直接从源码切入,剖析了它支撑两大核心功能(统计跟踪与热升级)的底层机制。 对于“跟踪”功能,文章揭示了 `sys` 如何巧妙地通过拦截目标进程的邮箱,插入控制消息(如 `get_statem_state`)来实现无侵入的状态查询,而非让进程自身实现复杂逻辑。而对更关键的“热升级”,则详细拆解了 `sys` 如何利用 `:sys.replace_code` 等回调,在进程执行间隙替换模块代码,并通过发送特殊字符消息来触发重载,保障了服务不中断。 文章的价值在于,它不止于说明“做什么”,更聚焦于“如何做到”。通过阅读这些实现细节——例如对消息队列的精妙操控与状态机的协作——读者能深刻理解 OTP 框架“让进程行为可管理”的设计哲学,这为在生产中进行更高级的监控与维护打下了坚实的基础。

IT 累计浏览 2,650

ERLANG OTP源码分析 – gen_fsm

这篇文章从一个有趣的视角切入,对比分析了Erlang/OTP中`gen_fsm`与更为人熟知的`gen_server`模块。作者没有停留在概念表面,而是直接深入源码,揭示了两者在实现层面的核心差异。 关键的突破口在于进程状态的管理。`gen_server`中,进程主要通过一个统一的状态数据(`StateData`)来记住上下文。而`gen_fsm`则在递归循环中引入了一个额外的原子型状态名称(`StateName`)。正是这个`StateName`,像一个路由开关,决定了下一次循环时具体调用哪个处理函数,从而实现了状态的流转与切换。 另一个精妙的对比在于消息驱动模式。`gen_server`通常遵循经典的“请求-响应”客户端/服务器模型,由外部调用者发送请求消息。然而`gen_fsm`的许多转换中,发送关键消息的往往是状态机自身——例如,在完成某个处理后主动通知另一个进程。这体现了它作为自主状态机的设计哲学。 归根结底,这篇文章拆解了`gen_fsm`作为“带名称的递归”这一核心实现思路。理解这一点,也就明白了为何它天生适合建模那些具有明确离散状态、并需要根据状态自主执行不同逻辑的流程。

IT 累计浏览 3,615

ERLANG OTP源码分析 – gen_server

这篇讲的是深入Erlang OTP框架最核心的组件之一——gen_server。作者没有停留在API用法,而是直接扎进了lib/stdlib/src下的官方源码,试图从Erlang语言本身的级别,把gen_server循环、消息处理、状态机等核心模块的实现逻辑摊开来讲。 对于想写出更健壮Erlang程序的开发者来说,理解这些底层机制至关重要。文章不仅分析gen_server,还计划对比gen_fsm和supervisor的实现,这意味着能一次性理清OTP中几个关键行为模式的设计哲学与共同基础。作者还贴心地准备了完整的流程图,帮助读者将抽象的源码执行路径可视化,这种从代码到图形再到原理的拆解方式,对理解框架的巧妙封装和错误处理设计特别有帮助。 如果你在使用gen_server时曾有过“它到底是怎么做到的”这样的疑问,或者希望自己的并发设计能更贴近OTP的设计思想,那么从源码层面看透它的骨架与血肉,会是一个非常扎实的进阶路径。

IT 累计浏览 2,016

ERLANG OTP源码分析 – supervisor

这篇讲的是 Erlang OTP 框架中核心的 supervisor 进程。作者深入其源码,剖析了这个“监督者”的本质:它其实就是一个基于 gen_server 实现的系统进程,专门负责监控子进程的退出状态,并按照预设策略进行重启管理。 文章从 supervisor 的初始化过程切入,揭示了它如何解析监督规范(Supervisor Specification),构建起一颗监督树。重点分析了它的重启策略——“one_for_one”、“one_for_all”和“rest_for_one”在源码层面是如何区分和实现的,让抽象的策略概念变得具体可感。 最巧妙的部分在于,作者拆解了 supervisor 处理子进程退出的内部逻辑。它并非简单粗暴地重启,而是通过状态机管理子进程的运行状态,并在子进程异常退出时,根据“强度”(intensity)和“周期”(period)两个参数来判断是否触发重启上限,从而决定自身是该重启子进程还是优雅退出,避免了系统陷入无限重启的死循环。 通过阅读这篇源码分析,能理解 OTP 框架构建高可靠性应用的一个基石:它把进程管理的复杂逻辑封装在一个优雅、可配置的监督者角色中,让开发者能专注于业务进程本身。

IT 累计浏览 2,653

Riak Core说明

这篇讲的是Riak Core这个分布式系统编程库的核心设计思路。作者从构建一个高可用、可扩展的分布式应用(如类似亚马逊购物车的场景)所面临的挑战出发,引出了Riak Core所解决的关键问题:如何在部分节点故障时保证服务可用,以及如何高效地管理数据分片与负载均衡。 文章的重点剖析了Riak Core的两大核心机制。其一是“一致性哈希”与“虚拟节点”的结合,它允许将数据范围划分为大量小分片,并动态地将它们分配到物理节点上,当节点增减时只需少量数据迁移,实现了灵活的弹性伸缩。其二是基于“有限状态机”的协调框架,这使得开发者能以相对简单的方式,在不可靠的网络环境中实现复杂的分布式协调逻辑。 将它与Cassandra或DynamoDB等系统对比,Riak Core的独特之处在于它提供的是一个底层库而非完整的数据库。它把分布式系统的通用挑战(如数据复制、故障检测、成员管理)封装成可复用的组件,留给开发者充分的定制自由度。这使得它特别适合需要深度定制存储逻辑或网络层行为的项目,比如构建专属的分布式数据库或消息系统。 总而言之,这篇文章清晰地展示了如何通过精巧的抽象来分解分布式系统的复杂性。对于希望深入理解分布式计算模式,或者打算自己动手构建高可靠性服务的开发者来说,Riak Core的设计哲学提供了非常有价值的工程化视角。

IT 累计浏览 3,654

erlang学习手记

这篇手记记录了作者在Ubuntu 10.04系统下为Eclipse安装Erlang插件erlide的完整过程。对于想要搭建Erlang开发环境的同学来说,这是一个非常具体的实践参考。 文章从环境准备讲起,详细说明了需要先安装的Java运行时和Eclipse版本等基础依赖。接着,重点拆解了erlide插件的两种安装方式——通过Eclipse更新站点在线安装,以及手动下载插件包进行离线安装。作者不仅给出了清晰的步骤,还分享了在安装过程中可能遇到的典型问题,比如插件安装后无法识别已配置的Erlang/OTP运行时路径,并指出了解决这一配置问题的具体操作。 整个记录语言朴实,没有泛泛而谈,而是紧扣实际操作中的细节。对于初涉Erlang或受困于开发工具配置的读者,这篇手记能帮助避开一些常见的“坑”,顺利迈出编写第一行Erlang代码的第一步。

IT 累计浏览 2,265

QQ安全我做主―手机令牌2.0设计分享

这篇分享来自QQ安全团队,讲述了手机令牌2.0从构思到落地的设计全过程。作者从提升账户安全体验的实际需求出发,揭秘了这款小巧的工具软件如何在iPhone App Store和Android电子市场分别收获4星及4.5星高评价。文章不仅展示了令牌在安全性与易用性之间的平衡考量,更详细拆解了产品从交互设计到技术实现的关键思路,例如如何让动态密码的生成与验证更直观可靠。通过具体的设计案例与用户反馈数据,为安全类工具产品的开发提供了清晰的实践参考。