Golang 采坑记之 byte[] 的坑

发布于 2022-09-30 13:04:24 字数 1135 浏览 123 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

誰認得朕

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文