V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  qloog  ›  全部回复第 3 页 / 共 20 页
回复总数  398
1  2  3  4  5  6  7  8  9  10 ... 20  
53 天前
回复了 way2me 创建的主题 酷工作 [成都] Golang 方向-不加班 不卷!
不在成都的只能飘过...
53 天前
回复了 bigoxEvan 创建的主题 程序员 后端 golang 开发,怎么继续深造呢?
@bigoxEvan 也是个方向(对于以后做独立开发有好处),客户端或者 web, 那就需要学学大前端了
53 天前
回复了 bigoxEvan 创建的主题 程序员 后端 golang 开发,怎么继续深造呢?
方向很多,比如:
go 的 errgroup, singlefilght 是否了解;
微服务方向(服务发现、负载均衡、监控、指标、链路追踪等等);
关注高并发、高可用、高扩展
k8s 的使用如何合理利用机器资源,具体每个服务的 pod 资源(内存、CPU)如何分配
...
golangweekly.com 周更,可邮件订阅
个人可以开通企业微信么?
55 天前
回复了 iicoder 创建的主题 推广 极客返利|专做网课返利、返现
有个问题呀,你把你得到的返利都返给了购买者,你赚取的是什么? 难道平台给双方都会返么? @iicoder
好厉害,必须去看看,另外技术栈也是我喜欢的 😝
补充:如果想简单操作,也可以在 dao 里(一个 dao 操作多个 model 也还好)统一操作, 利用 gorm 的 Transaction 函数:

```go
// dao/example.go
// 开始事务
tx := db.Begin()
if tx.Error != nil {
log.Fatalf("failed to begin transaction: %v", tx.Error)
}

// 事务中执行业务逻辑
err = tx.Transaction(func(tx *gorm.DB) error {
// 插入一条数据
err := tx.Create(&Model{Name: "test"}).Error
if err != nil {
return err
}

// 查询数据
var model Model
err = tx.First(&model, "name = ?", "test").Error
if err != nil {
return err
}

fmt.Printf("Found: %v\n", model)

// 更新数据
err = tx.Model(&model).Update("name", "updated").Error
if err != nil {
return err
}

fmt.Printf("Updated: %v\n", model)

return nil
})

// 根据事务结果提交或回滚
if err != nil {
tx.Rollback()
log.Fatalf("transaction failed: %v", err)
} else {
tx.Commit()
fmt.Println("transaction committed successfully")
}
```

类似于 @thevita 提到的
57 天前
回复了 hankli 创建的主题 程序员 纪念一下首个开源项目破 1k star 啦~
好项目,值得推荐,我在 HelloGithub 提交的项目,老板还没给我审核,还在审核中 😭
我的分层是这样的:
handler -> service -> dao/repository -> model

事务的开启是在 service , 操作数据的是在 dao 或 repo 层,model 仅仅定义数据字段和表名(无任何 db 操作)。

PS:也像楼主一样考虑过,将这些事务放在一起,且放置于 dao 里,也就不用传递 tx 了,但会带来一个问题: 一个 dao 要操作多个 model (或者说表), 我目前是倾向于一个 dao 操作一个 model ,这样 dao 的职责就很清晰, 也方便 cli 工具自动生成 dao 。

@gitrebase 提到的 redis 操作,我把他们都放在了 cache 目录里(和 dao 、service 在同一级), 然后供 dao/repo 调用,也就是 dao/repo 扮演了数据操作的角色,不关是 接口、db 、redis 、MongoDB 、ES 等都在这里操作,供上层的 service 调用,一个 service 可以调用多个 dao, 只依赖 dao 定义的接口,方便使用 wire 做依赖注入。

代码可参考: https://github.com/go-microservice/moment-service/blob/main/internal/service/post_svc.go#L88
60 天前
回复了 LeviMarvin 创建的主题 程序员 求推荐 Go 程序的 web 库
我用 https://github.com/go-eagle/eagle 写 API 、微服务
72 天前
回复了 Corybyte 创建的主题 程序员 2024 有推荐的 go 开源项目吗 想深入学习
@skylee6900 数据库 ORM 工具
72 天前
回复了 Corybyte 创建的主题 程序员 2024 有推荐的 go 开源项目吗 想深入学习
开发 API 接口、微服务或者 web 服务的: https://github.com/go-eagle/eagle
73 天前
回复了 ItemStr 创建的主题 职场话题 新年开工第一天,通知被裁了
回家继续过正月十五
帮忙解决工签?
你有的这个都有: https://github.com/go-eagle/eagle ,咋办?😁😊
78 天前
回复了 kaiki 创建的主题 程序员 因为代码水平垃圾所以不敢开源项目
能用就能开源,或多或少会对一些人有用。
将开源进行到底: https://github.com/go-eagle/eagle
或许社区的力量也会推动你前进
开源框架: https://github.com/go-eagle/eagle
微服务: https://github.com/go-microservice
或者任意你喜欢的框架之一,整个完整的项目出来
singleflight 和 errgroup 的使用
1  2  3  4  5  6  7  8  9  10 ... 20  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2122 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 10:49 · PVG 18:49 · LAX 03:49 · JFK 06:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.