CXX11 ABI 与 STL string Copy-on-Write 机制
GCC 在 5.1 之后的 libstdc++
中引入了支持 C++11 新标准的 ABI,用宏 _GLIBCXX_USE_CXX11_ABI
控制。 是否使用 CXX11 ABI 有两个主要区别,其一是 std::string
实现机制禁止 Copy-on-Write,其二是 std::list
获取大小的时间复杂度 [1]。
本文主要讨论 std::string
机制的变化和原因。
GCC 在 5.1 之后的 libstdc++
中引入了支持 C++11 新标准的 ABI,用宏 _GLIBCXX_USE_CXX11_ABI
控制。 是否使用 CXX11 ABI 有两个主要区别,其一是 std::string
实现机制禁止 Copy-on-Write,其二是 std::list
获取大小的时间复杂度 [1]。
本文主要讨论 std::string
机制的变化和原因。
讨论一个问题:一个 32 位的整数,如果逻辑右移 32 位,结果如何?
先说结论:对于 C++ 是未定义行为,不同架构有不同处理,某些处理从数学角度看可能有问题;对于 CUDA (PTX) 和 Python,行为定义得更好,这个 case 下结果为 0.
转眼已经 2024 年清明了。从 2021 年秋招开始,就没怎么得空更新博客,两年多忙忙碌碌,尝试且完成了太多事,只是都没有落笔记录。毕业前换了电脑,连 hexo 都没装,最近发现之前博客的访客记录和评论区都没了,才又翻教程回忆当初的配置,所幸关键信息都有记录,博客得以起死回生。
前一篇文章提到了L2 norm(weight decay)和以高斯分布为先验的最大后验估计(Maximum a Posteriori,MAP)的等价性,顺手整理一下和深度学习优化目标相关的几个概念。
简单串一下“花书”里的正则化相关内容。本篇主要关注范数正则化,之后有机会再整理bagging、dropout和BN。
总体而言,设关于参数\(w\in\mathbb{R}^n\)的正则化项为\(\Omega(w)\),设原始损失函数为\(J(w; X, y)\),则加入正则化项后的优化目标为 \[\arg\min_{w}J(w; X, y)+\alpha\Omega(w).\] 另外假设原始损失函数对应的最优解为\(w^\ast\).
继续这个系列。本篇的问题可能比上一篇稍复杂一些。
虽然大部分面试都是问项目,然后一道代码题,但还是有少量公司很喜欢问“基础的”技术问题,比如C++、体系结构之类。因此开个新系列,记录一下面试里遇到的一些技术类问题。有一些很简单,也有一些可能也没那么常见。
从小我就深受姥爷影响,什么东西坏了都喜欢试着自己修,也常常能修好。小学好像修过小饭桌的椅子,初中时修的最多的是改正带,当时技术娴熟到时不时帮同学修。修过的钢笔、中性笔等等更是数不胜数。高中之后生活逐渐粗糙,修东西的频率越来越低,但没想到在乐队里,还得时不时修修乐器。
恰好今天修了个奇怪的问题,就简单写写近一年来的修乐器经历,都挺奇怪的。
声明:本文只是本人笔试后对试题的复盘反思,从未由此牟利.如侵犯任何一方权利,请通过本站提供的联系方式联系本人,本人将立刻删除本文。