Skip to content

败犬日报 2024-10-14

1. UDP 相对于 TCP 有什么优点

一个肯定的优点是不对传输算法限制,任由上层应用发挥。

传输层可能的各种功能,重排、拆包、阻塞控制、流量控制,UDP 通通都没做,只实现了个端口号。

其他的选择:KCP(可以基于 UDP),QUIC(基于 UDP)

原神使用 KCP + ProtoBuf

2. C++ 的 lambda 没有 const capture

C++ 的拷贝捕获(可能的写法是 [=] { ... })是不能修改捕获的变量,除非加了 mutable。

而引用捕获(可能的写法是 [&] { ... })可以修改捕获的变量。

想要达到 const 引用捕获的效果,有两种可行的方法:用局部变量 const auto &x_ = x; [&x_] { ... },或者 [&x = std::as_const(x)] { ... }

3. namespace std {} 里面加自定义类

是未定义行为,不要这么做。

4. 如何根据图像模糊程度选不同的压缩比例

可以根据不同模糊然后定相似度,然后调压缩比例,二分一个差不多的值。

5. 实现历史遗留的非 ProtoBuf 结构体和 ProtoBuf 结构体互相转换

也搞个预处理器生成代码,就像 ProtoBuf 一样。

ykiko: 使用 Clang 工具自由的支配 C++ 代码吧

6. 群友锐评 ProtoBuf

实战起来问题老多了,压缩解压都在疯狂拷贝内存。