## Go性能改进:减少堆分配 最近的Go版本(1.25 & 1.26)专注于通过减少堆分配来提升性能,堆分配由于其开销和垃圾回收而代价高昂。目标是将分配转移到栈上,栈更快且不会给垃圾回收器带来负担。 最初,向切片追加元素常常会触发重复的堆分配,随着切片增长产生垃圾。预分配 `make([]task, 0, 10)` 有所帮助,Go 1.25 引入了对小型切片(小于32字节)的自动栈分配,当大小在编译时已知时。 Go 1.26 更进一步。它现在在 `append` 操作*期间*推测性地在栈上分配一个小的存储空间,即使没有预分配也能避免初始的堆分配。重要的是,这些优化现在扩展到*逃逸*的切片(例如,从函数返回的切片)。编译器可以仅在必要时自动将栈分配的数据复制到堆上,从而最小化分配。 虽然手动优化(如预分配)仍然有价值,但编译器越来越多地自动处理这些改进。开发者可以根据需要使用 `-gcflags` 禁用这些优化进行调试,并鼓励报告任何问题。
加州将于2027年1月1日起,根据新法案AB 1043,要求操作系统提供商为用户实施年龄验证。该法案规定操作系统提供商在账户设置期间收集年龄或出生日期,并在开发者*请求时*分享这些信息——按四个年龄段划分。
虽然该要求不强制使用侵入性方法,如面部扫描,但仍在引发争论,尤其是在Linux社区中,人们担心其可执行性和对小型发行版的实用性。 现有的系统,如Windows,已经收集这些数据,但合规性对其他系统提出了挑战。
此举反映了全球范围内强制在线年龄验证的趋势,类似于英国的努力,尽管这些举措经常因隐私和数据安全问题而受到批评。 尽管对有效实施存在疑问,加州的法律表明政府正在加强对在线年龄验证的推动。
我们似乎正处于一场“诈骗的黄金时代”,与历史上的欺诈时期相呼应,从大萧条时期的骗子到中世纪的江湖骗术。但这是一种新的常态,还是一种周期性的循环?作者认为后者,并通过一个晦涩的数学理论来解释:进化博弈论(EGT)。
与传统的博弈论不同,EGT关注的是成功的策略如何在一段时间内在一个群体中增加。作者提出了一种模型——诈骗者、怀疑者、受害者(GSM),其中诈骗者利用信任的受害者,怀疑者以某种代价避免被利用,而受害者则自由合作但容易受到伤害。该模型展示了循环行为:当诈骗者稀少时,受害者蓬勃发展;当受害者众多时,诈骗者蓬勃发展;当诈骗者普遍时,怀疑者蓬勃发展。
这与“鹰、鸽和报复者”等模型形成对比,后者会达到一个稳定的平衡。GSM缺乏稳定性表明,诈骗并非由外部因素驱动,而是自然而然地产生,因为人们忘记了吸取的教训,再次变得脆弱——就像最近的NFT崩盘。虽然这是一种简化,但该模型表明我们可能正接近“诈骗高峰”,并且怀疑主义可能会增加,但仍然需要保持警惕。