V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  bv  ›  全部回复第 1 页 / 共 8 页
回复总数  142
1  2  3  4  5  6  7  8  
type Password string

func (p Password) MarshalText() ([]byte, error) {
return []byte("******"), nil
}

type User struct {
Name string `json:"name"`
Password Password `json:"password"`
}

u := &User{Name: "Alice", Password: "abc123456"}
json.NewEncoder(os.Stdout).Encode(u)
// output: {"name":"Alice","password":"******"}
@swananan 知乎同名,早已关注。此地偶遇,甚幸甚幸。
@owen800q buildinfo 留着是利大于弊,藏着掖着弄的好像有什么见不得人的地方一样(公开依赖项不利于宣称自主研发吗? https://i.imgur.com/agAJ0Rd.png )。

即便把 buildinfo 去掉,只需要简单的命令 strings ./xxx 就可以看到内部的依赖软件路径。
SBOM 清单,在安全与合规审计,软件溯源时还是很有用的,建议留着。
要说怎么去除,我也不知道 https://i.imgur.com/NIvxivj.png
@morebuff #2 你这一顿操作猛如虎,咋不用 https://gorm.io/gen/ 呢?
对此我一般都是将 for 内的函数拆分成单独的函数,例如:
for _, item := range list {
foo(item)
}

func foo(item T) {
src :=NoGCSource(item)
defer src.Close()
// TODO 业务逻辑
}
defer 是函数级的,每一个 defer 都会向函数栈上记录一个调用信息,在 for 循环里面用 defer 这会占用大量栈空间,可能导致内存压力甚至栈溢出。使用闭包函数算是将 defer 的作用域细分隔离至一个小的函数作用域内。闭包函数执行完,defer 就会立即执行。
60 天前
回复了 ultimate42 创建的主题 Go 编程语言 依赖注入 or 全局变量
1. 不要 x 场景用全局变量,y 场景用依赖注入,就养成个用依赖注入的习惯。
2. 依赖注入框架不一定要用什么框架。
站内大佬 @lesismal 曾向 go 官方提交过添加 Request.SetContext 方法的 issue ,被拒了。
https://github.com/golang/go/issues/48811
95 天前
回复了 bli22ard 创建的主题 Go 编程语言 你是否还记得有个 new 函数
OpenTelemetry 的官方 SDK 也是 r.WithContext(ctx) 后并没有考虑 MultipartForm.RemoveAll 。
至于这算是个 OpenTelemetry 的 BUG 还是待讨论的功能,我觉得 OP 可以给 OpenTelemetry 提一个 issue ,如何优雅的解决 MultipartForm Remove 问题。

https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/net/http/otelhttp/v0.62.0/instrumentation/net/http/otelhttp/handler.go#L179-L180
@zihuyishi #22 还确实这样,目前想到的是:在处理完业务程序后,1. 手动 RemoveAll 或者 2: req.MultipartForm = cloneReq.MultipartForm 交给 finishRequest 处理
@bv #19 替换 Request 容易给自己埋坑,你发现了 File 没删除你需要打补丁去删除 MultipartFile ,过几天又发现 req.Body 没有自动 Close ,是不是还要打补丁 https://i.imgur.com/MAyk5GN.png
@zihuyishi #16 我没用过 opentelemetry ,不太理解为什么加 opentelemetry 要替换原来的 Request ,看看有没有什么写法:再不替换原来的 Request 情况下加入 opentelemetry 。
@FrankAdler #13 你这个方向靠谱
1. 这一块是标准库实现的逻辑,当 HTTP 请求响应结束后,会自动删除临时文件,无需手动调用 RemoveAll 。
2. 虽然可以手动控制 req.ParseMultipartForm(maxMemory int64) 参数来缓解,但是无法根治该问题。
3. 上传的临时文件越来越多,竟然没有自动删除,我觉得你需要排查一下这个问题。

自动删除逻辑: https://github.com/golang/go/blob/0f8ab2db177baee7b04182f5641693df3b212aa9/src/net/http/server.go#L1718-L1720
121 天前
回复了 kuanat 创建的主题 Go 编程语言 Go 语言的错误处理语法,不改了!
@nativeBoy 作为一个 gopher 已经能够自动忽略 err 噪音。就像人眼会自动忽略自己的鼻子一样,当你可以关注自己的鼻子时,又能看得到它。
@yjd 爬虫倒是一方面,更重要的是人肉搜索。比如知道微信 ID/邮箱,直接 Google 一下,直接顺藤摸瓜就人肉出来了,如果稍微编码转型,不就搜索不出来了。
138 天前
回复了 hwdq0012 创建的主题 程序员 好没干劲,好没成就感
@dyexlzc 你觉得 隐藏和不隐藏都一样 没用,得让领导觉得才行。
138 天前
回复了 weiwenhao 创建的主题 程序员 我写了一个编程语言,受 golang 启发
看着像是受 rust 启发吧😅
1  2  3  4  5  6  7  8  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   674 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 20:51 · PVG 04:51 · LAX 13:51 · JFK 16:51
Developed with CodeLauncher
♥ Do have faith in what you're doing.