Fork me on GitHub
摘要: 对比一下我常用语言和库的正则匹配性能。 主要对比 C++ 标准库、PCRE2、Golang 标准库和 Python 标准库。此外还有一个 Golang 的代码生成方案,它可以把给定的正则表达式编译成 Go 代码:regexp2go 测试环境 测试用的编程语言和库版本: Python: 3.14.6 阅读全文
posted @ 2026-07-02 19:52 apocelipes 阅读(356) 评论(1) 推荐(2)
摘要: GNU GCC 为编写跨平台代码提供了多种支持,今天要讲的就是其中一种叫“多版本函数”的技术。 什么是多版本函数 多版本函数指的是可以为同一个函数在不同的处理器平台或者指令集下编写不同的实现,程序在运行时会自动选择一个最合适的实现作为这个函数真正运行的实体。 文字解释可能比较抽象,我们拿具体的cpp 阅读全文
posted @ 2026-06-07 17:39 apocelipes 阅读(172) 评论(1) 推荐(1)
摘要: 高版本kafka已经不再需要ZooKeeper当保姆才能启动了,现在部署一个单机单节点测试环境比原来方便不少。 不过最常用的bitnami/kafka不再提供免费镜像,导致我们只能用apache/kafka,新镜像的配置会稍微麻烦一些,所以记录一下。 部署内容: 单节点kafka服务,版本4.0+ 阅读全文
posted @ 2025-12-29 20:34 apocelipes 阅读(1465) 评论(0) 推荐(1)
摘要: C++20中增加了很多重量级新特性,它不仅带来了ranges、concept和协程,也为多线程编程带来了jthread和stop_source这些强力辅助。利用这些新特性,我们可以更高效地编写并发程序。 今天要说的就是利用jthread和stop_source来简化线程超时控制的实现,最终我们可以实 阅读全文
posted @ 2025-12-22 21:15 apocelipes 阅读(1170) 评论(2) 推荐(6)
摘要: 在类UNIX系统上,可执行文件和shell脚本一般都是不带后缀名的,操作系统内置的程序加载器会自动检测文件的权限和内容是否是一个可执行的程序。这么做的好处是可以在输入命令的时候少打很多字。坏处自然是不对文件做彻底的检查就无法确定其是否是可执行文件,这会带来一些安全问题。 Linux则更进一步,提供了 阅读全文
posted @ 2025-12-01 11:23 apocelipes 阅读(1033) 评论(0) 推荐(1)
摘要: 从Go 1.18正式引入泛型,再到Go 1.21大量泛型函数/类型进入标准库开始已经过去了三年。尽管有着不支持类型特化、不支持泛型方法、实现方式有少量运行时开销、使用指针类型时不够直观等限制,泛型编程还是在golang社区和各种项目中遍地开花甚至硕果累累了。 不过也因为泛型功能上的种种限制,大多数代 阅读全文
posted @ 2025-11-29 07:45 apocelipes 阅读(1300) 评论(0) 推荐(0)
摘要: 猜猜下面这段代码的输出是什么: template <typename T> struct Base { void DoThings() { std::cout << "A\n"; } }; template <typename T> struct Derived: Base<T> { void Do 阅读全文
posted @ 2025-11-10 10:07 apocelipes 阅读(236) 评论(1) 推荐(5)
摘要: 关于UNIX和Linux的宣传语中,一切皆文件应该是最广为人知的一句。 不管是普通文件,还是硬件设备、管道、网络套接字,在Linux甚至还有信号和定时器都共享一套相似的api,大家可以用类似的代码完成各种不同的任务,大大简化了代码复杂度和学习成本。 当然这只是理想中的情况,现实是普通文件和硬件设备是 阅读全文
posted @ 2025-11-09 19:44 apocelipes 阅读(378) 评论(0) 推荐(1)
摘要: c++23新增了一些智能指针适配器,用来扩展和简化智能指针的使用。 这次主要介绍的是std::out_ptr和std::inout_ptr。这两个适配器用法和实现都很简单,但网上的文档都比较抱歉,还缺少一些比较重要的部分,因此单开一篇文章记录一下。 out_ptr 首先从功能最简单的out_ptr讲 阅读全文
posted @ 2025-11-05 09:30 apocelipes 阅读(305) 评论(0) 推荐(3)
摘要: 最近在做老系统优化,正好遇到了需要使用字符串内部化的场景,所以今天就来说说字符串内部化这种优化技巧。 什么是字符串内部化 熟悉Java或者python的开发者应该对“内部化”这种技术不陌生。内部化指的是对于内容完全相同的字符串变量,内存中只保留一份数据,所有的变量都引用同一份数据,从而节约内存。 举 阅读全文
posted @ 2025-10-20 01:28 apocelipes 阅读(261) 评论(0) 推荐(2)