会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
apocelipes
博客园
首页
新随笔
联系
订阅
管理
2025年12月1日
Linux的binfmt_misc机制
摘要: 在类UNIX系统上,可执行文件和shell脚本一般都是不带后缀名的,操作系统内置的程序加载器会自动检测文件的权限和内容是否是一个可执行的程序。这么做的好处是可以在输入命令的时候少打很多字。坏处自然是不对文件做彻底的检查就无法确定其是否是可执行文件,这会带来一些安全问题。 Linux则更进一步,提供了
阅读全文
posted @ 2025-12-01 11:23 apocelipes
阅读(161)
评论(0)
推荐(0)
2025年11月29日
利用泛型编写更安全的Golang代码
摘要: 从Go 1.18正式引入泛型,再到Go 1.21大量泛型函数/类型进入标准库开始已经过去了三年。尽管有着不支持类型特化、不支持泛型方法、实现方式有少量运行时开销、使用指针类型时不够直观等限制,泛型编程还是在golang社区和各种项目中遍地开花甚至硕果累累了。 不过也因为泛型功能上的种种限制,大多数代
阅读全文
posted @ 2025-11-29 07:45 apocelipes
阅读(196)
评论(0)
推荐(0)
2025年11月10日
C++ Two Phase Lookup导致的模板代码编译错误
摘要: 猜猜下面这段代码的输出是什么: 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
阅读(173)
评论(0)
推荐(4)
2025年11月9日
POSIX兼容系统上read和write系统调用的行为总结
摘要: 关于UNIX和Linux的宣传语中,一切皆文件应该是最广为人知的一句。 不管是普通文件,还是硬件设备、管道、网络套接字,在Linux甚至还有信号和定时器都共享一套相似的api,大家可以用类似的代码完成各种不同的任务,大大简化了代码复杂度和学习成本。 当然这只是理想中的情况,现实是普通文件和硬件设备是
阅读全文
posted @ 2025-11-09 19:44 apocelipes
阅读(191)
评论(0)
推荐(1)
2025年11月5日
C++23的out_ptr和inout_ptr
摘要: c++23新增了一些智能指针适配器,用来扩展和简化智能指针的使用。 这次主要介绍的是std::out_ptr和std::inout_ptr。这两个适配器用法和实现都很简单,但网上的文档都比较抱歉,还缺少一些比较重要的部分,因此单开一篇文章记录一下。 out_ptr 首先从功能最简单的out_ptr讲
阅读全文
posted @ 2025-11-05 09:30 apocelipes
阅读(198)
评论(0)
推荐(3)
2025年10月20日
golang unique包和字符串内部化
摘要: 最近在做老系统优化,正好遇到了需要使用字符串内部化的场景,所以今天就来说说字符串内部化这种优化技巧。 什么是字符串内部化 熟悉Java或者python的开发者应该对“内部化”这种技术不陌生。内部化指的是对于内容完全相同的字符串变量,内存中只保留一份数据,所有的变量都引用同一份数据,从而节约内存。 举
阅读全文
posted @ 2025-10-20 01:28 apocelipes
阅读(161)
评论(0)
推荐(2)
2025年9月26日
Go 1.26 内置函数 new 新特性
摘要: 目前golang 1.26的各种新特性还在开发中,不过其中一个在开发完成之前就已经被官方拿到台面上进行宣传了——内置函数new功能扩展。 每个新特性其实都有它的背景故事,没有需求的驱动也就不会有新特性的诞生。所以在介绍这个新特性之前我们先来了解下是什么样的场景催生了这个功能。 如果你经常浏览一些大型
阅读全文
posted @ 2025-09-26 12:04 apocelipes
阅读(823)
评论(0)
推荐(4)
2025年9月8日
C++20新增属性[[no_unique_address]]详解
摘要: 有一个古老的c++问题:struct Empty{}; sizeof(Empty); 请问Empty的大小是多少。 很多新手会回答0,但稍有经验的开发者会说出正确答案,大小至少是1字节。 这看起来很奇怪,但这是语言规范决定的:c++要求同一类型的不同实例对象必须拥有完全不同的地址,如果Empty的大
阅读全文
posted @ 2025-09-08 09:00 apocelipes
阅读(1349)
评论(3)
推荐(4)
2025年8月17日
下划线字段在golang结构体中的应用
摘要: 最近公司里的新人问了我一个问题:这段代码是啥意思。这个问题很普通也很常见,我还是个新人的时候也经常问,当然,现在我不是新人了但我也经常发出类似的提问。 代码是长这样的: type BussinessObject struct { _ [0]func() ID uint64 FieldA string
阅读全文
posted @ 2025-08-17 22:11 apocelipes
阅读(840)
评论(2)
推荐(8)
2025年8月3日
atomic不是免费午餐
摘要: 很多初级甚至中级开发会滥用atomic,因为在他们的世界观里atomic比mutex轻量,性能总是优于锁的。 这话不能算错,但有个很重要的前提,那就是原子操作竞争不激烈的时候。 “竞争激烈”是指什么呢,指的是有很多线程在同一个资源上大量执行原子操作的情况。 落在这种情况下原子操作反而会成为性能拖油瓶
阅读全文
posted @ 2025-08-03 21:50 apocelipes
阅读(562)
评论(9)
推荐(3)
下一页
公告