git log 命令是查看 Git 提交历史的强大工具,最常见的是根据提交信息(commit message)的关键词来查找提交,这主要通过 --grep 选项实现。
除了 --grep,git log 还提供了其他几种实用的筛选方式,可以灵活组合,精准定位历史记录。
git log 命令是查看 Git 提交历史的强大工具,最常见的是根据提交信息(commit message)的关键词来查找提交,这主要通过 --grep 选项实现。
除了 --grep,git log 还提供了其他几种实用的筛选方式,可以灵活组合,精准定位历史记录。
Go 语言对 JSON 中int类型的处理非常方便,基本涵盖了大多数特殊情况。
go fix ./...
这是 Go1.26 引入的一个新命令,用于进行一系列代码优化。它包含以下的一些功能:
proto.actor是一个跨语言的分布式Actor框架,支持多种编程语言,包括Go,也就是protoactor-go。虽然它提供了强大的功能,但在使用过程中也存在一些已知问题,这里列出来供参考。
某游戏中有一个升级系统,每次尝试升级时,会有一定的概率成功或失败,成功后则等级+1,失败则等级不变。升级时会消耗一定的资源,升级成功的概率和资源的消耗量都仅与当前等级有关。具体规则如下:
| 当前等级 | 成功率 | 升级消耗 |
|---|---|---|
| 0 ~ 2 | 35% | 10 |
| 3 ~ 6 | 20% | 20 |
| 7 | 15% | 30 |
| 8 | 10% | 30 |
| ≥ 9 | 5% | 50 |
一开始等级为0,玩家有且仅有20次升级尝试的机会,无论成功或失败都算作一次尝试。
问题:计算玩家用完20次升级尝试后,总消耗的资源的概率分布。
查询 systemctl 相关的日志,主要使用 journalctl 命令,因为 systemd 的日志是由 journald 来管理的。
sudo journalctl
使用git时,我们有时候并不需要整个代码库的所有内容,只需要其中的一部分内容。尤其当目标仓库很大时,这个功能就更为常用了。这时,我们可以使用git的稀疏检出功能(sparse checkout)来实现。
我们知道,在redis-cli中使用如SET、GET等命令可以读写数据。但如果过大(例如一个几百K的字符串),这种方法就有些不方便了。
.vcf 文件,也称为 VCard 文件,是一种用于存储联系人信息的标准文件格式。它通常用于电子邮件客户端、手机通讯录和其他应用程序中,以便于导入和导出联系人数据。大部分手机和邮箱的通讯录都支持导入和导出 .vcf 文件。
一个简单的 .vcf 文件大致是这样的:
BEGIN:VCARD
VERSION:2.1
N:;example;;;
FN:example
TEL;CELL:123456789
EMAIL;WORK:example@example.com
END:VCARD
BEGIN:VCARD
VERSION:2.1
N:;test;;;
FN:test
TEL;CELL:123456789
EMAIL;WORK:test@test.com
END:VCARD
在Go语言中,尽管许多panic可以通过recover()函数来捕获并处理,但依然存在一些特定情况下引发的异常是无法被捕获的。本文将探讨几种常见的无法通过常规手段恢复的错误情形及其原因。
map当尝试同时从多个协程读取和修改同一个map时,如果没有适当的同步机制(如使用互斥锁),则会触发运行时错误。
m := make(map[int]int)
go func() { for { m[1] = 1 } }()
go func() { for { _ = m[1] } }()
awk是Linux中处理文本文件的语言,功能非常强大。
awk options 'pattern { action }' file
其中,options是一系列可选参数,我们最常用的是-F参数,用于指定分隔符,例如-F ','表示以,为分隔符,如果不指定则默认是空格。'pattern { action }'是脚本的内容,其中pattern是个布尔表达式,满足这个表达式的行才会被输出,默认是遍历所有行。file是要处理的文件。
在 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,可以帮助我们快速发现代码中的潜在问题。
在Linux中,输出重定向是将命令的输出重定向到文件或其他设备的过程,用>符号来实现。
有些时候不小心上传了一些敏感文件,或者有一些二进制文件(例如图片)不再需要,想要从仓库中删除。但别人clone你的代码仓库时,这些内容仍然存在于git历史记录中。
因此,我们有时候需要删除文件的所有历史记录。