Fork me on GitHub
上一页 1 2 3 4 5 6 7 8 ··· 13 下一页
摘要: 最近在书里看到的,让c语言去模拟其他语言里有的命名函数参数。觉得比较有意思所以记录一下。 目标 众所周知c语言里是没有命名函数参数这种东西的,形式参数虽然有自己的名字,但传递的时候并不能通过这个名字来指定参数的值。 而支持命名参数的语言,比如python里,我们能让代码达到这种效果: def k_f 阅读全文
posted @ 2024-07-28 08:08 apocelipes 阅读(303) 评论(0) 推荐(0)
摘要: 对象的生命周期是c++中非常重要的概念,它直接决定了你的程序是否正确以及是否存在安全问题。 今天要说的临时变量导致的生命周期问题是非常常见的,很多时候没有一定经验甚至没法识别出来。光是我自己写、review、回答别人的问题就犯了或者看到了许许多多这类问题,所以我想有必要做个简单的总结,自己备忘的同时 阅读全文
posted @ 2024-07-09 14:02 apocelipes 阅读(2903) 评论(20) 推荐(5)
摘要: 随机数对程序设计来说很重要,今天就从几方面探讨下一些常见的随机数相关的问题。 本文只讨论整数相关的随机数,另外需要你对概率论有最基本的了解(至少知道古典概型是什么)。 本文索引 如何从rand7生成rand5 go标准库的做法 从rand5生成rand7 充分利用每一个bit 带有权重的随机数 随机 阅读全文
posted @ 2024-07-03 12:05 apocelipes 阅读(4547) 评论(3) 推荐(13)
摘要: 最近网上冲浪的时候看到有人分享了自己最近一次性能优化的经验。我向来对性能是比较敏感的,所以就点进去看了。 然而我越看越觉得蹊跷,但本着“性能问题和性能优化要靠性能测试做依据”,我不能凭空怀疑别人吧,所以我做了完整的测试并写下了这篇文章。 可疑的优化方案 分享者遇到的问题很简单:他发现程序中超过一半的 阅读全文
posted @ 2024-05-27 11:06 apocelipes 阅读(3032) 评论(15) 推荐(10)
摘要: 距离golang 1.23发布还有两个月不到,按照惯例很快要进入1.23的功能冻结期了。在冻结期间不会再添加新功能,已经添加的功能不出大的意外一般也不会被移除。这正好可以让我们提前尝鲜这些即将到来的新特性。 今天要说的就是1.23中对//go:linkname指令的变更。这个新特性可以说和我的一次失 阅读全文
posted @ 2024-05-16 10:55 apocelipes 阅读(4568) 评论(2) 推荐(7)
摘要: 在Linux中可以不需要有脚本或者二进制程序的文件在文件系统上实际存在,只需要有对应的数据在内存中,就有办法执行这些脚本和程序。 原理其实很简单,Linux里有办法把某块内存映射成文件描述符,对于每一个文件描述符,Linux会在/proc/self/fd/<文件描述符>这个路径上创建一个对应描述符的 阅读全文
posted @ 2024-05-14 10:00 apocelipes 阅读(820) 评论(0) 推荐(2)
摘要: 先说结论,lambda是不能重载的(至少到c++23依旧如此,以后会怎么样没人知道)。而且即使代码完全一样的两个lambda也会有完全不同的类型。 但虽然不能直接实现lambda重载,我们有办法去模拟。 在介绍怎么模拟之前,我们先看看c++里的functor是怎么重载的。 首先类的函数调用运算符是可 阅读全文
posted @ 2024-05-05 11:00 apocelipes 阅读(570) 评论(0) 推荐(0)
摘要: 最近在翻《c++函数式编程》的时候看到有一小节在说c++14新增了“菱形运算符”。我寻思c++里好像没什么运算符叫这名字啊,而且c++14新增的功能很少,我也不记得有添加这种语法特性。一瞬间我有些怀疑我的记忆了,所以为了查漏补缺,我写了这篇文章。 什么是菱形运算符 这个概念在Java里比较多见: L 阅读全文
posted @ 2024-04-29 16:25 apocelipes 阅读(1589) 评论(0) 推荐(5)
摘要: 今天讲一个常见的gc compiler(也就是官方版本的go编译器和runtime)在垃圾回收的扫描标记阶段做的优化。 我对这个优化的描述印象最深的是在bigcache的注释里,大致内容是如果map的键值都不包含指针,那么gc扫描的时候不管这个map多大都不会深入扫描map内部存储的数据,只检查ma 阅读全文
posted @ 2024-03-25 14:46 apocelipes 阅读(2536) 评论(0) 推荐(3)
摘要: errgroup想必稍有经验的golang程序员都应该听说过,实际项目中用过的也应该不在少数。它和sync.WaitGroup类似,都可以发起执行并等待一组协程直到所有协程运行结束。除此之外errgroup还可以在协程出错时取消当前的context,以及它还能控制可运行的协程的数量。 但在日常的代码 阅读全文
posted @ 2024-01-29 11:00 apocelipes 阅读(1737) 评论(0) 推荐(1)
上一页 1 2 3 4 5 6 7 8 ··· 13 下一页