改进的 p-fast Trie:高效前缀匹配算法

2025-08-10

本文介绍了一种改进的 p-fast Trie 数据结构,它是一种高效的用于查找字符串集合中与查询字符串最长匹配前缀或最近前驱/后继的算法。与之前的版本相比,该改进版本更简洁,更节省空间。它利用哈希表存储每个唯一前缀,并通过位图表示每个前缀可能的后续字符,从而实现 O(log k) 的时间复杂度(k 为键长)。虽然前驱搜索可能需要更多探测次数,但其性能仍然优于传统的 qp-trie。

阅读更多
开发 前缀匹配

编译器优化:改进Lemire算法的无除法随机数生成

2025-03-09

作者改进了一种近似无除法的有界随机数生成算法(Lemire算法)。之前的版本通过内联快速路径来减少代码膨胀,但编译器优化受限。作者发现,当限制为常量时,拒绝阈值可在编译时计算,且无需避免除法。新的实现只有一个对随机数生成器的调用,并且当限制为2的幂时,编译器会自动消除循环。这比去年的版本更有效率,并且作者探讨了如何在Rust中使用类似的编译时优化技术。

阅读更多
开发 Lemire算法

反对使用/tmp

2024-10-22

本文作者认为/tmp目录的设计存在安全隐患,因为它是一个跨越安全边界的共享全局可变状态。文章列举了/tmp目录导致的各种问题,例如粘滞位、临时文件创建函数的缺陷以及临时文件清理脚本的漏洞。作者主张使用每个用户独有的临时目录($TMPDIR)来解决这些问题,并解释了早期系统没有采用这种做法的原因。

阅读更多
33
未分类 /tmp

真正无除法的随机数生成

2024-06-05

本文介绍了一种生成真正无偏随机数的算法,不同于Lemire的近似无偏算法,该算法通过构建多分数,并正确处理进位,实现了真正的无偏性。作者通过代码实现并与Lemire算法进行基准测试比较,结果表明,该算法在代码复杂度和性能方面略逊于Lemire算法,但在需要大范围无偏随机数,且使用生成64位随机数的RNG时,该算法具有一定优势。

阅读更多
54

Unix 版本控制的传说:what 和 ident

2024-05-13

这篇文章介绍了 Unix 系统中两个鲜为人知的版本控制命令:SCCS what 和 RCS ident。这两个命令可以用来查找二进制文件构建自哪个源代码,这对库文件特别有用。文章以 FreeBSD libc 解析器中的 res_send.c 文件为例,展示了如何使用 SCCS 和 RCS 标记嵌入版本控制信息。作者还分享了如何在自己的项目中使用 git 嵌入版本信息,并表达了对这种传统方法的喜爱。

阅读更多
71
未分类 SCCS