V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  matrix1010  ›  全部回复第 4 页 / 共 29 页
回复总数  562
1  2  3  4  5  6  7  8  9  10 ... 29  
@FrankFang128 这是想象还是实际经验?有没有实际开源项目或者 blog 可以参考。或者说 AI 是否能处理复杂依赖 mock ,复杂逻辑理解(大于 100 行代码的单个函数)
@mrjnamei 这个恰好也是我正在试图避免的问题,初始化 service 肯定是有个 NewXxxService 或者 ProvideXxxService 之类的方法,如果单元测试初始化 service 时也使用这些方法就可以覆盖到。但如果 test 里手动构建 struct: testService := &UserServiceImpl{db: db, ...} 这样就检测不到了
@lesismal 依赖注入其实是符合直觉的,因此专门尝试去理解反而比较困难。前面有人说的在 init 里初始化服务就属于非依赖注入的做法,但这么做的开源项目肯定是极少数,因为复杂的大型开源项目肯定是多人协同开发,那项目结构也要达成共识,而多人共识最有可能的就是使用认可度最高的依赖注入模式
@mrjnamei 其实这个 NewApplicationService ,完全可以把 struct 扔给任何 AI 来写. 这种极简单场景我估计任何 AI 都能达到几乎 100%准确率
@FarmerChillax 我问的恰恰正是[依赖注入],假设 FooService 和 BarService 都依赖 BaseService ,但 NewFooService(...)和 NewBarService(...)都各自调用 NewBaseService()一遍而不是先 NewBaseService 再分别传入,这个应当不能说用了依赖注入。当然这一步可以用依赖注入框架自动完成
@Jinnrry 建议你去 https://www.zhihu.com/question/425602814/answer/2930203878 讨论 new 是不是合适,不要武断的说依赖注入==java 味。或者找个 grafana 的 service 比如 https://github.com/grafana/grafana/blob/main/pkg/services/guardian/accesscontrol_guardian.go 看看如果不用依赖注该怎么写怎么测
@houshuu 其实只要你把依赖传入就是 DI ,不用 DI 的话就只能每次需要就 New 一个。在多人协作的情况下看似没用的单元测试有可能会在你意想不到的地方起作用
@kuanat 几十个可能不多,但 初始化十几个个依赖 还是很容易出现的,特别是复杂度很高,多人协作,质量管理不太严格的大型项目上。只能接受而没法改变的情况下依赖注入框架就很方便。interface 方便单元测试 mock 是肯定的,我做的第一轮重构就是这个
@bthulu 这就没意思了兄弟,来点干货不要输出情绪。不 Go 为啥 wire, fx, samber/do 会存在
@aloxaf no, 我不知道 "这种说法容易让人看错", 只是可能大部分人的常识是"依赖注入用的很少,所以提问肯定是问哪些项目使用了依赖注入",基于这种常识无论怎么写都很容易看错
注意我问的是 没有 使用依赖注入,因为使用依赖注入的太容易找。但调研肯定有和没有都包括才比较合适。另外应当是有一定复杂度的项目比如 grafana
277 天前
回复了 zhouhuab 创建的主题 业界八卦 有没有人在磕极狐(gitlab 中国)的瓜?
@matrix1010 顺带附上我的看法 & 小宣传一下:极狐是一个依托于 gitlab ,面向中国用户的平台。 依托 gitlab 注定了技术的话语权不高,大部分开发做的可能是用户定制化之类的事。面向中国用户则必须接受国内各种不太好的风气。 这就是为什么 OpenCSG ( https://github.com/OpenCSGs)在努力做一个全球化的,完全独立的开源平台
277 天前
回复了 zhouhuab 创建的主题 业界八卦 有没有人在磕极狐(gitlab 中国)的瓜?
光看这个知乎上下文不够,完整事件是这样的:

极狐 GitLab 停止远程办公: https://zhuanlan.zhihu.com/p/9184020724
举报极狐 GitLab CEO 为美国间谍的视频: https://www.bilibili.com/video/BV1uT6cYbEz2/
极狐 GitLab 回应: https://zhuanlan.zhihu.com/p/10088605857

另外 zhihu 的作者就是举报者
1.5 Flash 的定位就是适合处理已有数据而不是创造内容。像信息提取,文本润色或者简单代码重构之类的任务就非常合适
317 天前
回复了 lx0758 创建的主题 全球工单系统 Github 炸了吗?
activity feed 挂了的可以修改 filter 重新 save 一下试试
@lesismal 避免大 key ,不过 Ristretto 的第一版只用了 1 个 hash: https://github.com/dgraph-io/ristretto/issues/30 。在 Theine 里就用的类似 chan 做 trigger 的方法,当 write chan 收到数据时继续尝试额外获取 N 个数据,没有就直接返回。高写入并发下能批量处理,低并发下也能保持时效性:

for first := range s.writeChan {
s.writeBuffer = append(s.writeBuffer, first)
loop:
for i := 0; i < WriteBufferSize-1; i++ {
select {
case item, ok := <-s.writeChan:
s.writeBuffer = append(s.writeBuffer, item)
default:
break loop
}
}
}
再附加一个: Ristretto 不会在 cache 里保存你的 key ,而是计算两个 hash 用作 key, 虽然几率很低但理论上有可能发生碰撞。而且这种方法也导致 Ristretto 无法添加 Range 或者 Callback 之类的 API ,因为完全没有存真实的 key
342 天前
回复了 blackshh 创建的主题 职场话题 马上要毕业了,还没和媳妇说
早点说吧,现在程序员失业也不丢人。你不说老婆自己发现了更危险,信任一旦失去就很难找回来了
1  2  3  4  5  6  7  8  9  10 ... 29  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2683 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 02:37 · PVG 10:37 · LAX 19:37 · JFK 22:37
Developed with CodeLauncher
♥ Do have faith in what you're doing.