摘要:> golang errgroup 的作用. errgroup 的超时检测通常是一种事后得到结果的方式。 errgroup本身并不直接支持超时控制,而是依赖于与之关联的context.Context来实现超时和取消功能。 当context超时时,它会关闭Done通道,这将通知errgroup中的协程
阅读全文
摘要:errgroup 是 Go 中用于并发控制和错误处理的一个工具,提供了一种方便的方式来协调多个goroutine。 它允许你在一个组中运行多个goroutine,并等待它们全部完成,同时收集和返回第一个发生的错误。 它的主要作用包括: 同步: errgroup.Group 提供了一个 Wait 方法
阅读全文
摘要:在学习和了解Golang(Go语言)的系统包时,可以遵循以下步骤来逐步熟悉并掌握它们: 1. 官方文档阅读: 首先从官方文档入手,Go的标准库文档非常详尽且易于理解。你可以访问 Go标准库 来查看各个包的详细说明、API使用方法以及示例代码。这将帮助你快速掌握每个包的核心功能和用法。 2. 分类学习
阅读全文
摘要:1. 初始化项目包,go mod init [module-path] 比如:go mod init github.com/abc/efg 2. 新建一个目录放置我们编写的规则 go 文件。 3. main.go 用下划线的方式引入规则文件,用于触发 init 函数内的注册。 4. 启动:go ru
阅读全文
摘要:「代码结构」 结构体:蜘蛛种类列表(即:蜘蛛规则列表) 变量:全局蜘蛛种类实例 方法:向蜘蛛种类清单添加新种类 方法:获取全部蜘蛛种类 方法:通过名字获取蜘蛛 「总体功能」 添加新种类:通过 Spider.name 作为键,Spider 作为值,添加到 SpiderSpecies.hash 中。 获
阅读全文
摘要:flag 是 Golang 的官方包。 支持用法有三种,不同之处是二三两种用法是 Var() 函数可以绑定 flag 到一个变量上。 直接调用指定类型的函数有多种,如 flag.String(), Bool(), Int() 等等。 import "flag" var nFlag = flag.In
阅读全文
摘要:运行Golang编译后二进制运行时,此时运行二进制时所在目录就是Golang源码程序认为的根目录了。 所以只需要把字典文件拷贝到与二进制所在同一目录内,然后使用 seg.LoadDict('dictionary.txt') 加载即可。 注意:如果是类似 ./dist/xxx 来运行二进制,那么文件需
阅读全文
摘要:优点:用法简单,支持各种语言,基本满足需求。 缺点:默认分词字典文件有 8M 需测试使用速度。 我们可以直接封装一个简单的辅助方法来实现分词功能: // @author cnblogs.com/farwish package service import ( "github.com/go-ego/g
阅读全文
摘要:gormV2 中不再有v1的 db.Close() 方法。 取而代之的 close 方式是如下: sqlDB, err := DB.DB() sqlDB.Close() https://github.com/go-gorm/gorm/issues/3145 另外,gormV2 内部维护了连接池,设置
阅读全文
摘要:使用 gorm 在调用 Finisher 方法之后,建议都进行错误检查。 Finishers 是会立即执行注册回调的方法,然后生成并执行 SQL,比如这些方法: Create, First, Find, Take, Save, Update, Delete, Scan, Row, Rows…完整方法
阅读全文
摘要:当我们使用 migrate create 创建了迁移文件。 没有及时填写内容,此时运行 migrate 的后续命令比如 up、down 会抛出错误: error: migration failed in line 0: (details: Error 1065: Query was empty) R
阅读全文
摘要:按照项目github文档上所示,在使用 mysql 时你可能会这样写: $ migrate -path db/migrations -database mysql://root:123456@127.0.0.1:3306/mydb version -database 用于指定数据库 DSN 格式的连
阅读全文
摘要:1. CLI 用途的安装 [文档] [确保] CLI 工具使用 go 命令安装时,不应该在 go.mod 所在的目录中执行命令,也就是先进入到其它非项目目录内。 $ go get -tags 'postgre' github.com/golang-migrate/migrate/v4/cmd/mig
阅读全文
摘要:2020.02 安装包下载 Link:https://www.cnblogs.com/farwish/p/14186441.html
阅读全文
摘要:Colly 提供了 Post 和 PostRaw 方法,它们的参数类型不一样,需要注意。 目标地址接受指定的 Content-Type,可以通过设置 request Header。 局部代码: // @author <cnblogs.com/farwish> c := colly.NewCollec
阅读全文
摘要:首先你需要有一个 nsq 的服务端,nsq 由三部分构成:nsqd、nsqlookupd、nsqadmin。 快速启动 nsq 一个节点看这里:https://github.com/farwish/nsq-launcher go-nsq 是众多客户端中的一个,使用 golang 编写,我们在逻辑代码
阅读全文
摘要:在 golang 中,参数和返回值之间往往涉及 int、string、[]、map 等之间的转换。 如果是手动去处理,一容易出错,二不能兼容多数类型,比较麻烦。 使用 cast,能够让代码更健壮、可维护性也更高。 Refer: Golang的类型转换 Refer:https://github.com
阅读全文
摘要:你需要对 freecache 有一个大致了解,freecache 的内存空间是预分配的。 假设你的程序占用了 50M 内存,那么开启 freecache 预分配 200M 空间,总共下来就是 250M 空间被占用。 SetGCPercent 的作用是设置垃圾回收比例,简单来说,新插入数据比例占旧数据
阅读全文
摘要:重新 var 声明一个变量,类型为包含指定字段的结构体。 查询的时候,还是使用原始模型类型的变量。 example: // For return data var retMember struct { Hash string `json:"hash"` Name string `json:"name
阅读全文
摘要:第一种就是直接在操作 model 的逻辑中,执行 db.AutoMigrate,模型没有更新时不会有 schema 相关的 sql 被执行。 第二种就是单独定义一个属于 main 包的 go 文件,专门用于处理 Migrate。 有其它想法可留言讨论。 Refer:GORM奇技淫巧 Refer:ht
阅读全文