会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
apocelipes
博客园
首页
新随笔
联系
订阅
管理
2025年10月20日
golang unique包和字符串内部化
摘要: 最近在做老系统优化,正好遇到了需要使用字符串内部化的场景,所以今天就来说说字符串内部化这种优化技巧。 什么是字符串内部化 熟悉Java或者python的开发者应该对“内部化”这种技术不陌生。内部化指的是对于内容完全相同的字符串变量,内存中只保留一份数据,所有的变量都引用同一份数据,从而节约内存。 举
阅读全文
posted @ 2025-10-20 01:28 apocelipes
阅读(126)
评论(0)
推荐(1)
2025年9月26日
Go 1.26 内置函数 new 新特性
摘要: 目前golang 1.26的各种新特性还在开发中,不过其中一个在开发完成之前就已经被官方拿到台面上进行宣传了——内置函数new功能扩展。 每个新特性其实都有它的背景故事,没有需求的驱动也就不会有新特性的诞生。所以在介绍这个新特性之前我们先来了解下是什么样的场景催生了这个功能。 如果你经常浏览一些大型
阅读全文
posted @ 2025-09-26 12:04 apocelipes
阅读(582)
评论(0)
推荐(3)
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
阅读(1292)
评论(3)
推荐(4)
2025年8月17日
下划线字段在golang结构体中的应用
摘要: 最近公司里的新人问了我一个问题:这段代码是啥意思。这个问题很普通也很常见,我还是个新人的时候也经常问,当然,现在我不是新人了但我也经常发出类似的提问。 代码是长这样的: type BussinessObject struct { _ [0]func() ID uint64 FieldA string
阅读全文
posted @ 2025-08-17 22:11 apocelipes
阅读(797)
评论(2)
推荐(8)
2025年8月3日
atomic不是免费午餐
摘要: 很多初级甚至中级开发会滥用atomic,因为在他们的世界观里atomic比mutex轻量,性能总是优于锁的。 这话不能算错,但有个很重要的前提,那就是原子操作竞争不激烈的时候。 “竞争激烈”是指什么呢,指的是有很多线程在同一个资源上大量执行原子操作的情况。 落在这种情况下原子操作反而会成为性能拖油瓶
阅读全文
posted @ 2025-08-03 21:50 apocelipes
阅读(537)
评论(9)
推荐(3)
2025年7月21日
使用uint64_t批量比较短字符串
摘要: 记录一下从开源代码里学来的短字符串比较优化。 这个优化只适用于长度在八字节以下的字符串,且只适用于优化相等比较。 原理 想要判断字符串相等,常见的有利用strcmp、利用字符串的hash或者利用正则表达式等。 就速度而言strcmp > hash > 正则,而灵活性上正则 > hash ≈ strc
阅读全文
posted @ 2025-07-21 21:42 apocelipes
阅读(374)
评论(1)
推荐(0)
2025年7月14日
C23和C++26的#embed嵌入资源指南
摘要: c++26最近刚敲定标准,新增了许多重量级特性。 不过目前能实际上手测试的特性不多,毕竟标准刚刚确定,比较大的变更里只有“资源嵌入”或者用标准文档里英文名“resource inclusion”这个新特性可以尝鲜。 虽然这篇文章标题叫指南,但实际上更像实验记录,而且现在属于早期阶段编译器对资源嵌入的
阅读全文
posted @ 2025-07-14 10:09 apocelipes
阅读(1734)
评论(3)
推荐(5)
2025年7月6日
记一次ADL导致的C++代码编译错误
摘要: 这篇文章主要讲讲c++的ADL,顺便说说为什么很多c++的IDE都会让你尽量不要include用不上的头文件。 和其他c++文章一样,这篇也会有基础回顾环节,所以不用担心看不懂,但读者最好还是得有c++的基础知识并且对c++11之后的内容有所了解。 好了,下面我们进入正题吧。 偶遇报错 最近工作收尾
阅读全文
posted @ 2025-07-06 06:20 apocelipes
阅读(874)
评论(1)
推荐(4)
2025年6月9日
Linux c 运行时获取动态库所在路径
摘要: 记录一下如何在Linux环境下运行时获取动态库路径。 只讨论Linux amd64和arm64环境,因为使用的办法都是平台相关的不具备可移植性。 准备 一般来说动态库并不需要关心自己所在的文件系统上的路径,但业务有那么多总有一两个会有特殊需求。 现在给定一个动态库里的函数A,需求是要知道这个函数A是
阅读全文
posted @ 2025-06-09 00:17 apocelipes
阅读(506)
评论(0)
推荐(1)
2025年5月30日
golang遍历处理map时的常见性能陷阱
摘要: 最近一直在重构优化老系统,所以性能优化相关的文章会比较多。 这次的是有关循环处理map时的性能优化。预分配内存之类的大家都知道的就不多说了,今天来讲点大伙不知道的。 要讲的一共有三点,而且都和循环处理map有关。 不要用for-range循环清空map 这里要讨论的“清空”是指删除map中所有键值对
阅读全文
posted @ 2025-05-30 10:00 apocelipes
阅读(769)
评论(0)
推荐(3)
下一页
公告