std::uniform_real_distribution的一个bug引发的服务器崩溃 发表于 2022-08-06 | 更新于 2022-08-07 | 分类于 C/C++ | 热度 ℃ | 字数统计: 1,038(字) | 阅读时长: 5(分) 前言近日发生一次线上游戏服务器宕机问题,通过日志和core文件信息定位到崩溃的函数,但是崩溃的位置却是一段很长时间都没有改动过的代码,起初怀疑是配置数据的问题,但仔细查看之后均正常,然后又怀疑是玩家旧数据异常导致,但是分析代码逻辑后也没发现问题,最后是一个同事发现生成随机数的代码有bug,导致数组越界了,还真是个意想不到的原因。 阅读全文 »
SVN如何删除文件名包含空格的文件 发表于 2022-07-31 | 更新于 2022-07-31 | 分类于 SVN | 热度 ℃ | 字数统计: 913(字) | 阅读时长: 4(分) 前言SVN 和 Git 两个常用的版本管理工具都有 add 和 commit 命令,但是这两个命令的含义是不同的,git add 命令添加的是变化的文件,不管是增加的文件、删除的文件还是更新的文件,使用 git add 命令之后都可以放到暂存区,而 svn add 命令只能影响新增和变化的文件,对原在库中现已删除的文件没有影响,想要真正删除文件需要在执行 svn commit 命令之前先执行 svn delete 命令。 阅读全文 »
一个月黑风高的夜晚紧急完成gitlab服务器数据迁移 发表于 2022-07-30 | 更新于 2022-07-30 | 分类于 CI/CD | 热度 ℃ | 字数统计: 1,851(字) | 阅读时长: 8(分) 前言真是无巧不成书,白天刚刚讨论了一天SVN服务器迁移事情,晚上突然被告知 gitlab 服务无法访问了,赶紧连接到服务器上查看,好家伙,磁盘还剩下可怜的 98K,SVN 不管了,先把 gitlab 搞定吧,毕竟第二天的游戏更新包都打不出来了,确认是磁盘不足问题后已经是9点半了,月亮都升起老高了,赶紧开始修复吧。 阅读全文 »
推荐一个C++枚举转字符串的开源项目magic_enum 发表于 2022-07-23 | 更新于 2022-08-21 | 分类于 C/C++ | 热度 ℃ | 字数统计: 1,261(字) | 阅读时长: 5(分) 前言C++11引入了强类型的枚举类 enum class 用来代替旧风格枚举enum,新引入的 enum class 具有诸多优点:防止命名空间污染,不能隐式的转换为整型,防止不同类型的枚举相互赋值,支持前置声明。当然它也不是只有优点,因为类型不能隐式转换成int,所以在使用或者输出时需要使用 static_cast 进行转换,不过即便使用 static_cast 可以转换后输出,也不便于我们辨识枚举的值,如果想输出枚举定义时的名字就需要使用一些魔法了。 阅读全文 »
C++17使用std::optional表示一个可能存在的值 发表于 2022-07-17 | 更新于 2022-07-17 | 分类于 C/C++ | 热度 ℃ | 字数统计: 1,147(字) | 阅读时长: 5(分) 前言平时写代码会遇到一种传递参数特殊值标记特殊流程,或者函数返回值存在魔法数的情况,很需要一种标记参数或返回值状态的结构,那么在 C++17 标准下提供了 std::optional 这个模板类,可以表示一个值不存在的状态,一起来看看用法吧。 阅读全文 »
偶然在github开源项目中发现了.travis.yml这货 发表于 2022-07-02 | 更新于 2022-07-03 | 分类于 CI/CD | 热度 ℃ | 字数统计: 1,453(字) | 阅读时长: 6(分) 前言偶然在一个github开源项目中发现了.travis.yml这货,然后一发不可收拾,翻了翻之前看的几个开源库都有这个文件,并且最近经常看到它,这被称为“巴德尔-迈因霍夫现象”,是一种认知偏见,即在第一次注意到某一事物后,有一种更频繁地注意到它的倾向,导致某人相信它有很高的频率,既然这样索性就深入研究了一下这个文件,发现它原来是用于持续集成的。 阅读全文 »
C++11中的noexcept说明符和操作符 发表于 2022-06-26 | 更新于 2022-06-26 | 分类于 C/C++ | 热度 ℃ | 字数统计: 1,965(字) | 阅读时长: 8(分) 前言noexcept 这个说明符看起来很厉害的样子,给人一种函数加上它就可以不产生异常的感觉,但事实真的如此吗?它真的能消除一切异常吗?答案是不能!它只是函数的一种说明,作为开发者我们需要自己保证标记了 noexcept 的函数不产生异常。啥?这不是没事找事吗? 阅读全文 »
C++17新语法之if和switch语句中可以初始化变量啦 发表于 2022-06-18 | 更新于 2022-06-19 | 分类于 C/C++ | 热度 ℃ | 字数统计: 1,120(字) | 阅读时长: 5(分) 前言今天在看一些c++代码时偶然间发现一些示例,在if语句的小括号内居然出现了分号,难道这一段是伪代码吗?之前从来没见过这种写法,然后写了一个例子,用最新的编译器编译后发现真的是正常的代码,并且可以成功运行,然后脑袋有个声音一闪而过,是不是一直就支持这种写法,只是我不知道而已,后来几经周折,终于发现真相,原来这其实是C++17新的语法。 阅读全文 »
了解git裸仓库并利用post-receive自动化部署 发表于 2022-06-12 | 更新于 2022-06-12 | 分类于 Git | 热度 ℃ | 字数统计: 3,791(字) | 阅读时长: 18(分) 前言【裸仓库】指的是使用 git init --bare 命令得到的仓库,是对这种操作结果的一种直译,这个词对于刚接触 git 软件的小伙伴来说可能是第一次听说,而我也是最近实际操作了几次才渐渐理解,下面解释一下什么是裸仓库,以及为什么要使用它,有理解不对的地方还请大家指正。 阅读全文 »
linux环境下常用的查找命令find、which、grep 发表于 2022-06-05 | 更新于 2022-06-07 | 分类于 linux | 热度 ℃ | 字数统计: 1,458(字) | 阅读时长: 7(分) 前言查找是运维工作的很重要的一部分,不管是文件查找,还是内容查找,在日常开发维护过程中都常常用到,本文把一些日常用到的查找命令总结到一起,通过对比来学习异同点,进而达到 增强记忆的目的。 阅读全文 »