Go教程技术文章
-
这篇文章主要讲解了“go语言能不能做后端”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言能不能做后端”吧! go语460 收藏 -
JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,具有自我描述性且易于让人阅读。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言460 收藏 -
前言 在web应用中经常会遇到数据验证问题,普通的验证方法比较繁琐,这里介绍一个使用比较多的包validator。 原理 将验证规则写在struct对字段tag里,再通过反射(reflect)获取struct的tag,实现460 收藏 -
原子操作就是不可中断的操作,外界是看不到原子操作的中间状态,要么看到原子操作已经完成,要么看到原子操作已经结束。在某个值的原子操作执行的过程中,CPU绝对不会再去执行其他针对460 收藏 -
RocketMQ 是什么 Github 上关于 RocketMQ 的介绍:RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。具有以下特性: 支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型在一个队列中可靠460 收藏 -
Stream Grpc 在我们单次投递的数据量很大的时候,比如传输一个二进制文件的时候,数据包过大,会造成瞬时传输压力。或者接收方接收到数据后,需要对数据做一系列的处理工作, 比如:数据460 收藏 -
Golang · Go教程 | 1个月前 | channel · select · Context · Go教程 · 性能排查 · select channel context default time.Ticker Go教程 CPU飙高 for select
Go 里的 select default 适合做非阻塞试探,但放进无等待的 for 循环后,代码会在没有 channel 事件时持续空转,常见表现就是 CPU 飙高、日志刷屏和退出路径混乱。459 收藏 -
用批量处理任务场景讲清楚 Go worker pool 的实现方式:任务进入 jobs channel,固定数量 goroutine 消费任务,结果统一写入 results channel,并通过 close 和 WaitGroup 安全收尾。459 收藏 -
Go语言的text/template包通过{{}}语法将数据与模板结合,支持变量引用、条件判断、循环及自定义函数。使用.访问根对象字段,如{{.Name}};通过{{if}}{{else}}{{end}}实现条件渲染,{{range}}{{end}}遍历数据;可注册FuncMap添加函数扩展功能,如{{mail.Email}};完整示例展示结构体数据渲染为文本,最终输出动态内容。掌握这些即可高效生成HTML、配置文件等文本。459 收藏 -
Go需自定义Observer/Subject接口实现观察者模式,推荐泛型EventBus[T]确保类型安全,用切片存观察者并加读写锁,Notify时逐个goroutine调用并recover隔离panic。459 收藏 -
Go桌面应用无法真正热更新,只能通过go-selfupdate实现无缝重启:下载校验新二进制、替换并重启,需适配各平台签名与自启机制,插件机制不可行,核心难点在于更新时机判断与状态快照恢复。459 收藏 -
Dubbo-go启动后注册不到Nacos主因是协议不匹配:JavaDubbo默认用dubbo协议,而dubbo-go0.9+默认用tri协议,需显式配置protocol:dubbo或升级至v1.5.x兼容版本。459 收藏 -
os.WriteFile并发调用会覆盖数据,因不支持追加且非并发安全;正确做法是加锁、通道+单goroutine写或临时文件+rename原子替换。459 收藏 -
reflect.DeepEqual因逐字段递归比较且不支持func/map(含不可比key)、指针地址敏感、time.Time时区/纳秒差异、map遍历无序、nil与空切片区分、忽略自定义Equal方法等,常误判相等。459 收藏 -
errors.Is是跨平台判断系统级错误的推荐方式,支持os.ErrPermission、fs.ErrNotExist等标准错误,能正确处理包装错误和不同系统的错误码映射,但要求底层错误实现Is方法。459 收藏