Skip to content

败犬日报 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,标准和效率几乎完全不相关。(高版本有些求值顺序定死了会影响效率,但是可以忽略)

真正影响效率的是编译器版本。