在 Git 中,git revert -m
命令中的 -m
选项(全称 --mainline
)用于指定撤销合并提交时要保留的主线分支。这个选项仅在撤销合并提交(merge commit)时需要用到。
我们在使用 Redis 时,对 List 数据结构的操作经常使用的是 LPUSH
、RPUSH
、LPOP
、RPOP
等命令,这些命令都是非阻塞的。
Redis 还提供了对 List 数据结构的阻塞操作 BLPOP
和 BRPOP
。
命令格式是:
BLPOP LIST1 LIST2 .. LISTN TIMEOUT
从 Go 1.11 开始,Go 引入了模块化管理,并于 Go 1.16 版本开始正式成为默认构建模式。现在,Go 模块已经成为 Go 语言通用的包管理方式。
在项目根目录下使用go mod init example/mymodule
就可以初始化一个 Go 模块,并生成一个名为 go.mod 的文件,其中第一行即为module example.com/mymodule
。
go.mod 文件用于描述模块的依赖关系和版本信息。一个可能的 go.mod 文件可以包含以下内容:
整理了一下我用过的 Go 开源第三方库,供大家参考。使用时请注意遵守各个库的开源协议。
golangci-lint是一个Go语言的代码静态检查工具集,官网是https://golangci-lint.run/,它集成了多个流行的linters,可以帮助我们快速发现代码中的潜在问题。
一切的一切,要源于《冒险岛Online》在2018年推出的一个小游戏——名侦探甘迪:
游戏开始时,一群玩家会被传送进一个房间。此时,系统会在1-9九个数字中随机选择三个数字按某个顺序排列,作为答案。
每一轮,玩家需要按顺序猜测3个数字,系统会给出反馈,告知玩家有几个数字猜对了并且位置正确(用○表示),有几个数字猜对了但位置不正确(用△表示)。
举个例子:玩家猜测1-2-3三个数字,系统给出反馈1○1△,表示有一个数字猜对了并且位置正确,有一个数字猜对了但位置不正确。可能是1猜对了且位置正确,2猜对了但位置不正确,答案中没有3,当然也有别的可能。
玩家可以根据反馈来继续推测答案。所有玩家独立完成游戏,不能看到其它玩家的选择及反馈。玩家之间互为竞争对手,目标就是用最少的次数猜出答案。
问题就来了,如何设计策略,让我们在尽可能少的次数内猜出答案呢?
这是一个十分经典的策略问题。
注意
此AI并非“人工智能”,而是我们早期意义上的传统AI,并无学习能力,纯粹用算法实现五子棋每一步棋的应对策略。
上一章我们用α-β剪枝和启发式搜索对博弈树搜索算法进行优化,大大提高了算法性能。这一章我们继续用更多的方法进行优化。
输出重定向
在Linux中,输出重定向是将命令的输出重定向到文件或其他设备的过程,用>
符号来实现。
- 为提交增加共同作者
- 获取提交的补丁文件
- 提交自定义信息
- 比较提交
有些时候不小心上传了一些敏感文件,或者有一些二进制文件(例如图片)不再需要,想要从仓库中删除。但别人clone你的代码仓库时,这些内容仍然存在于git历史记录中。
因此,我们有时候需要删除文件的所有历史记录。