Skip to content

败犬日报 2024-12-17

1. C++11 的下一个里程碑是哪个版本

可能是 C++20,module, concepts, ranges, coroutines 都能带来更好的编程体验。

C++23 补充了 ranges 的一些特性,可以合一起看。

2. 密码算法 aes-256-cbc 安全吗

CBC 模式有一些问题,比如 padding oracle attack 可以破解明文(需要一定条件)。不过使用得当是足够安全的。

GCM 模式是首选。但是 GCM 使用不当也有风险,比如 https://github.com/tl2cents/AEAD-Nonce-Reuse-Attacks

3. 定时攻击

定时攻击是一种侧信道攻击,通过观察目标的响应时间来推断信息。

Python hmac.compare_digest 直接做了防止这种攻击的接口。

4. unused 变量编译警告怎么去除

C 语言可以用 (void)var; 来消除 unused 警告:

c
void foo(int var) {
    (void)var;
}

C++ 可以用 [[maybe_unused]] 修饰变量:

cpp
void foo([[maybe_unused]] int var) {
}

5. 构建时生成的特定常量,导致表达式恒为真

有个常量 a 是构建时生成的,这个值恰巧是 0,然后代码里面用了一个 unsigned i; i >= a,表达式总是成立,编译器啪的给我打个警告出来。

编译器不知道常量 a 是构建时动态生成的。这个应该没什么办法,只能手动不让它警告。

6. yaml 其实是一种很友好的格式,只是你们没用对

有没有人觉得 yaml 格式很不友好、很难理解? - vdisk的回答 - 知乎

在这个基础上还可以把 key 的双引号去掉。

7. 拧魔方还原完前两层直接就全还原了,这什么概率

可能是 6 万分之一。https://www.zhihu.com/question/652958093/answer/3466624719

8. sql 真的很万能

一个比赛,要你写 sql 完成铁路售票功能,还得有先来后到,还有不同座席的偏好。