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

标签:运行时

共 2 篇相关文章

IT 累计浏览 5,638

Erlang match_spec引擎介绍和应用

这篇讲的是Erlang开发中一个实用但常被忽略的工具——match_spec引擎。作者从Erlang进程字典和ETS表查询的痛点出发,引出match_spec作为一种在虚拟机层面高效匹配数据结构的DSL。文章详细拆解了其核心语法,比如如何用`{element, N, Tuple}`这类嵌套结构来精准定位复杂元组中的特定元素,并对比了它与直接模式匹配在性能和灵活性上的差异。 最值得注意的是,文章通过具体案例展示了match_spec在调试(如`dbg:tracer`)和性能监控(如`recon`工具)中的“胶水”作用。它不仅能用于查询,还能作为过滤器在消息队列或ETS表扫描时减少不必要的数据拷贝。这种将声明式描述编译为虚拟机高效操作的思路,为处理大规模并发状态下的可观测性问题提供了新角度。

IT 累计浏览 2,522

细说 expando 的来源

这篇讲的是 JavaScript 中一个很少被正式提及、却又无处不在的术语——expando 的身世。作者从大家耳熟能详的“不要随意给 DOM 元素添加 expando 属性”这条忠告切入,试图追溯这个词的源头。 文章梳理了 expando 与早期 Internet Explorer 浏览器的渊源。它最初是 IE 提供的一种非标准方式,允许开发者通过简单的赋值为任何 JavaScript 对象(包括 DOM 元素)动态添加任意属性,这些属性会直接“扩展”该对象。在标准 DOM 属性方法普及前,这曾是实现某些交互效果的常见手段。 关键在于,这些“扩展”属性不会出现在标准的 `hasOwnProperty` 检查中,且可能在 DOM 序列化或垃圾回收时引发意料之外的副作用,这也是那条“忠告”的由来。随着 Web 标准演进,现代浏览器已能良好处理这类情况,但了解其历史能帮助我们更深刻地理解 JavaScript 对象模型的动态性以及早期浏览器兼容性问题的缩影。 对于前端开发者而言,明白 expando 的来龙去脉,不仅能解开许多历史代码的疑惑,也能更审慎地对待“动态添加属性”这一模式,知晓其背后的潜在影响。