败犬日报 2025-06-11
1. tcp 校验和会不会因为 hash 碰撞导致误判,git commit 呢
会,但是概率很小。
tcp 校验和主要防止比特翻转,需要至少翻转 2 位(翻转的位置也有要求)才能误判,这导致概率很小。
git commit 的哈希用的是 SHA-1,位数足够多,生成 1e24 个 sha1 才有可能碰撞,git 仓库顶天有 1e10 个 object,所以很难碰撞。
git 为了分布式就必须用 hash,所以只能是尽量减小碰撞概率。
2. 基类 Base 有 A B C D E 派生类,Base 有个纯虚函数 Foo 那么 ABCD 都 override 了,但是 E 的 Foo 用不到
Foo 不用纯虚,实现成 assert not implemented。
3. C++23 的效率与 C++20 相比,提升大不大
not even wrong,标准和效率几乎完全不相关。(高版本有些求值顺序定死了会影响效率,但是可以忽略)
真正影响效率的是编译器版本。