摘要: 来源 十分钟学习awk命令 常用 将Linux命令输出结果的第 n 列的所有内容过滤出来: ps | awk '{print $1}' 这个列的分隔符默认是会把空格给排除掉。 如果是类似于 path 变量这种,使用冒号作为分割,可以使用 -F 选项: awk -F ':' '{print $1}' 阅读全文
posted @ 2023-12-05 21:48 潜行1 阅读(69) 评论(0) 推荐(0)
摘要: gin使用默认Logger跳过某些api path 一般初始化一个gin.Engine会使用 gin.Default 将你需要过滤的api path添加到Logger的config中: r := gin.New() r.Use(gin.LoggerWithConfig(gin.LoggerConfi 阅读全文
posted @ 2023-12-04 20:16 潜行1 阅读(189) 评论(0) 推荐(0)
摘要: 蠢新从大二开始用起mysql,直到工作了还需要去网上找博客查怎么装。 Windows不管,因为我自己的工位电脑已经有了。 以下的操作为假设你有一台腾讯云的服务器,或者版本至少在20以上的Ubuntu。root用户登录。 使用包管理器安装mysql8.0 apt-get update apt-get 阅读全文
posted @ 2023-12-02 20:55 潜行1 阅读(34) 评论(0) 推荐(0)
摘要: viper基本使用 导入包: go get -u github.com/spf13/viper 以读取 yaml配置文件为例: func loadConfig() { v := viper.New() v.SetConfigName("config") // 配置文件的文件名(不需要扩展名) v.S 阅读全文
posted @ 2023-11-28 15:48 潜行1 阅读(98) 评论(0) 推荐(0)
摘要: range时不能动态的增加map的range范围 golang的map是hash表实现的,hash表的遍历就是遍历所有的桶,所以新添加的元素可能出现在之前遍历过的桶中,这样就会有些新添加的元素可能遍历不到。 实际生成环境中,不建议遍历一个正在写入的map,这并不是一种好的设计,如果确实有这样的需求, 阅读全文
posted @ 2023-11-26 23:28 潜行1 阅读(40) 评论(0) 推荐(0)
摘要: NewPoolWithFunc -> func(data interface{}) -> data.(Task) -> Task.Do 上面的这些函数都是同步的,添加到 NewPoolWithFunc中后,执行 invoke会变成异步 NewPool和NewPoolWithFunc本质是一样的,都是 阅读全文
posted @ 2023-11-21 22:44 潜行1 阅读(207) 评论(0) 推荐(0)
摘要: 草稿 errgroup就是在waitgroup基础上封装了一层。 我还是不喜欢 go的这个控制goroutine的方式。 只贴一下代码: func main() { eg, ctx := errgroup.WithContext(context.Background()) for i := 0; i 阅读全文
posted @ 2023-11-21 21:00 潜行1 阅读(43) 评论(0) 推荐(0)
摘要: 原理 简单来说,main中可以捕获系统的中断信号,并将其传入到 chan中; 原来的main goroutine因为要捕获系统的 interrupt信号,所以需要将原来的代码放入到另外一个goroutine中。 这样做之后,如果不主动处理interrupt信号,程序默认是无法结束的 示例代码: fu 阅读全文
posted @ 2023-11-20 21:32 潜行1 阅读(35) 评论(0) 推荐(0)
摘要: 尝试时间 2023年11月18日11:11:38 就是动态令牌。 github本身并没有直接提供两步验证的app(应该),而是要你使用三方的,专门用于两步验证的app程序。 国内可以直接安装微软的 Authenticator的app,我可以直接在oppo的应用商店中下载。 我不确认是否需要魔法上网, 阅读全文
posted @ 2023-11-18 11:13 潜行1 阅读(301) 评论(0) 推荐(0)
摘要: 个人感觉比bash强。 有脚本需要执行就用 bash -c好了。 阅读全文
posted @ 2023-11-17 23:23 潜行1 阅读(51) 评论(0) 推荐(0)