2.3k 2 分钟

今天在给 vscode 适配 clang-format 的过程中遇到了一个警告,平时用 vim 时没有被暴露出来,在 vscode 中每次调用到都会弹出:

/usr/lib64>  clang-format
clang-format: /lib64/libtinfo.so.5: no version information available (required by clang-format)

今天花了点时间解决,记录下过程~

3.1k 3 分钟

由于项目可能会需要 proto3 的某些特性,但是当前项目中使用的是 proto2,因此我这次开始了 proto2 升级 proto3 的历程。标题是一次尝试,那是十有八九我是失败了 (╥╯^╰╥),但通过这次失败还是总结出了一丢丢结论,故书此篇。

(文章中的 proto2 版本为 2.6.1,proto3 的版本为 3.15.6。)

4.9k 4 分钟

switch-case 是我们常用的一种语法,几乎所有的语言都有这种语法,可以根据变量的不同情况进行对应处理。但 switch-case 仅支持整型(int),字符(char)和枚举 (enum),而且 switch-case 实现应该是类似 multi-if,在情况较多时效率较低,并且代码可读性会降低,所以这次想思考下如何优化。

1.4k 1 分钟

具有学习能力的 AI,从刚开始的科幻电影中的幻想开始渐渐由于技术转变为现实,但如今应用场合还很有限。最近正好看到一个相关课程《机器学习驱动的游戏 AI 技术》,今天就来研究下在游戏场景下的应用。(不过我 unity 学的不多┭┮﹏┭┮,主要还是了解下其中的思想)

3.1k 3 分钟

前两天面试被问到 epoll, 虽然之前研究过但没有解释得很好,所以再来深入研究下 epoll.

epoll 是 linux 提供的 IO 多路复用的一种机制,之前没有弄得很懂。知乎上看到一片对 IO 的几种机制和 epoll 作用解释得很易懂的文章,这里转过来,之后具体研究 epoll 的原理.

4.1k 4 分钟

写 leetcode 时发现很多时候高效的答案会用到 unordered_map 和 unordered_set. 从使用角度看,unordered 的 stl 容器与正常的 map,set 相比,在插入和查询的效率上更高,《boost::unordered_map 和 std::map 的对比》中用 5000 万条数据放入两个容器中进行了对比。这是因为实现上,unordered 的 stl 容器使用的是 hashtable, 而 map,set 使用的是红黑树。当然 map,set 插入后天然有序,需要按 key 排序时会比较方便.

正好面试要求让我写 hashtable 的实现,今天就研究一下 c++ 中 unordered_map 的实现,主要参照的是 linux 下的源码:/usr/include/c++/4.8.2/profile/unordered_map 和 hashtable (hashtable 我在我的 c++ 源码里没找到,可能在编译好的库中了,所以找的网上的代码).

589 1 分钟

一直觉得 git 很神奇,他的分支切换很快,他的自动合并很智能,他在协作编码时有着不可替代的作用。所以这两天想研究下 git 的实现原理,参考的资料主要是 Git Internals,《Pro Git》的 Chapter 10, 还有中文版的 Git 内部原理.

1.8k 2 分钟

Lua 作为一个运行效率非常高的脚本语言,简单方便,如今很多游戏开发都会用到。今天研究下 c++ 和 lua 是如何交互的~