会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
apocelipes
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
6
7
8
···
13
下一页
2024年7月3日
随机数漫谈
摘要: 随机数对程序设计来说很重要,今天就从几方面探讨下一些常见的随机数相关的问题。 本文只讨论整数相关的随机数,另外需要你对概率论有最基本的了解(至少知道古典概型是什么)。 本文索引 如何从rand7生成rand5 go标准库的做法 从rand5生成rand7 充分利用每一个bit 带有权重的随机数 随机
阅读全文
posted @ 2024-07-03 12:05 apocelipes
阅读(4291)
评论(3)
推荐(13)
2024年5月27日
性能优化陷阱之hash真的比strcmp快吗
摘要: 最近网上冲浪的时候看到有人分享了自己最近一次性能优化的经验。我向来对性能是比较敏感的,所以就点进去看了。 然而我越看越觉得蹊跷,但本着“性能问题和性能优化要靠性能测试做依据”,我不能凭空怀疑别人吧,所以我做了完整的测试并写下了这篇文章。 可疑的优化方案 分享者遇到的问题很简单:他发现程序中超过一半的
阅读全文
posted @ 2024-05-27 11:06 apocelipes
阅读(2893)
评论(15)
推荐(10)
2024年5月16日
因为我的一次疏忽而带来的golang1.23新特性
摘要: 距离golang 1.23发布还有两个月不到,按照惯例很快要进入1.23的功能冻结期了。在冻结期间不会再添加新功能,已经添加的功能不出大的意外一般也不会被移除。这正好可以让我们提前尝鲜这些即将到来的新特性。 今天要说的就是1.23中对//go:linkname指令的变更。这个新特性可以说和我的一次失
阅读全文
posted @ 2024-05-16 10:55 apocelipes
阅读(4481)
评论(2)
推荐(7)
2024年5月14日
Linux上执行内存中的脚本和程序
摘要: 在Linux中可以不需要有脚本或者二进制程序的文件在文件系统上实际存在,只需要有对应的数据在内存中,就有办法执行这些脚本和程序。 原理其实很简单,Linux里有办法把某块内存映射成文件描述符,对于每一个文件描述符,Linux会在/proc/self/fd/<文件描述符>这个路径上创建一个对应描述符的
阅读全文
posted @ 2024-05-14 10:00 apocelipes
阅读(755)
评论(0)
推荐(2)
2024年5月5日
C++ lambda的重载
摘要: 先说结论,lambda是不能重载的(至少到c++23依旧如此,以后会怎么样没人知道)。而且即使代码完全一样的两个lambda也会有完全不同的类型。 但虽然不能直接实现lambda重载,我们有办法去模拟。 在介绍怎么模拟之前,我们先看看c++里的functor是怎么重载的。 首先类的函数调用运算符是可
阅读全文
posted @ 2024-05-05 11:00 apocelipes
阅读(532)
评论(0)
推荐(0)
2024年4月29日
C++里也有菱形运算符?
摘要: 最近在翻《c++函数式编程》的时候看到有一小节在说c++14新增了“菱形运算符”。我寻思c++里好像没什么运算符叫这名字啊,而且c++14新增的功能很少,我也不记得有添加这种语法特性。一瞬间我有些怀疑我的记忆了,所以为了查漏补缺,我写了这篇文章。 什么是菱形运算符 这个概念在Java里比较多见: L
阅读全文
posted @ 2024-04-29 16:25 apocelipes
阅读(1541)
评论(0)
推荐(5)
2024年3月25日
golang gc的内部优化
摘要: 今天讲一个常见的gc compiler(也就是官方版本的go编译器和runtime)在垃圾回收的扫描标记阶段做的优化。 我对这个优化的描述印象最深的是在bigcache的注释里,大致内容是如果map的键值都不包含指针,那么gc扫描的时候不管这个map多大都不会深入扫描map内部存储的数据,只检查ma
阅读全文
posted @ 2024-03-25 14:46 apocelipes
阅读(2362)
评论(0)
推荐(3)
2024年1月29日
errgroup的常见误用
摘要: errgroup想必稍有经验的golang程序员都应该听说过,实际项目中用过的也应该不在少数。它和sync.WaitGroup类似,都可以发起执行并等待一组协程直到所有协程运行结束。除此之外errgroup还可以在协程出错时取消当前的context,以及它还能控制可运行的协程的数量。 但在日常的代码
阅读全文
posted @ 2024-01-29 11:00 apocelipes
阅读(1668)
评论(0)
推荐(1)
2024年1月17日
golang chan传递数据的性能开销
摘要: 这篇文章并不讨论chan因为加锁解锁以及为了维持内存模型定义的行为而付出的运行时开销。 这篇文章要探讨的是chan在接收和发送数据时因为“复制”而产生的开销。 在做性能测试前先复习点基础知识。 本文索引 数据是如何在chan里流动的 情况1:发送的数据有读者在读取 情况2:发送的数据没有读者在读取
阅读全文
posted @ 2024-01-17 10:31 apocelipes
阅读(1528)
评论(0)
推荐(2)
2023年9月5日
我们能从PEP 703中学到什么
摘要: PEP703是未来去除GIL的计划,当然现在提案还在继续修改,但大致方向确定了。 对于实现细节我没啥兴趣多说,挑几个我比较在意的点讲讲。 ## 尽量少依赖原子操作的引用计数 没了GIL之后会出现两个以上的线程同时操作同一个Python对象的情况,首先要解决的是引用计数的计算不能出岔子,否则整个内存管
阅读全文
posted @ 2023-09-05 15:21 apocelipes
阅读(985)
评论(0)
推荐(1)
上一页
1
2
3
4
5
6
7
8
···
13
下一页
公告