前言
日常开发中我们大概率会遇到超时控制的场景,比如一个批量耗时任务、网络请求等;一个良好的超时控制可以有效的避免一些问题(比如 goroutine
泄露、资源不释放等)。
baller
作为一个 Go 语言新手,看到一切”诡异“的代码都会感到好奇;比如我最近看到的几个方法;伪代码如下:
|
|
最近在实现两个需求,由于两者之间并没有依赖关系,所以想利用队列进行解耦;但在 Go
的标准库中并没有现成可用并且并发安全的数据结构;但 Go
提供了一个更加优雅的解决方案,那就是 channel
。
Go
与 Java
的一个很大的区别就是并发模型不同,Go 采用的是 CSP(Communicating sequential processes)
模型;用 Go 官方的说法:
Do not communicate by sharing memory; instead, share memory by communicating.
我们最近在做新业务的技术选型,其中涉及到了对消息中间件的选择;结合我们的实际情况希望它能满足以下几个要求:
Go
,同时在运维上能够足够简单。SDK
:还有一些 Python
、Java
相关的代码需要维护。最近公司内部项目的发布流程接入了 GitHub Actions
,整个体验过程还是比较美好的;本文主要目的是对于没有还接触过 GitHub Actions
的新手,能够利用它快速构建自动测试及打包推送 Docker
镜像等自动化流程。
我的读者中应该大部分都是 Java
从业者,不知道写 Java
这些年是否真的有找到对象?
没找到也没关系,总不能在一棵树上吊死,我们也可以来 Go
这边看看,说不定会有新发现。
开个玩笑,本文会以一个 Javaer
的角度来聊聊 Go
语言中的面向对象。