败犬日报 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
实战起来问题老多了,压缩解压都在疯狂拷贝内存。