Golang 采坑记之 byte[] 的坑
MySQL 同步,将一张表的二进制字段(图片)同步到另外一张表,结果有的图片好使有的不行。
从数据库中出来是 []byte,转存到 kafka 中 JSON 序列化了,变成了 Base64,从 Kafka 中取出来的时候再 Base64 解码,再更新到目标表中,就这么几个步骤,刚开始怀疑是不是Base64编解码有问题,查了没发现毛病,然后继续往后查,猛然想起,我为了减少日志打印量,对 []byte 进行了缩略处理,很有可能是这里出了问题,一查,果然如此,修复实现,问题修复。
我单知道,slice 皆有这个问题,但是在实现的时候,还是遗漏了,教训不够深刻。
POC 代码如下
package main import ( "fmt" ) func main() { b := []byte("Hello, playground") c := append(b[:3], []byte("...")...) fmt.Printf("c:%s\n", c) fmt.Printf("b:%s\n", b) // c:Hel... // b:Hel... playground }
我真傻,我单知道 golang 里的切片会有这种问题,也看了别人的分享,也做过试验,但是轮到我写时,却没想到却踩了坑。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论