Go 日常开发常备第三方库和工具 不知不觉写 Go 已经快一年了,上线了大大小小好几个项目;心态也经历了几轮变化。 因为我个人大概前五年时间写的是 Java ,中途写过一年多的 Python,所以刚接触到 Go 时的感觉如下图: 既没有 Java 的生态,也没有 Python 这么多语法糖。 2021-11-02 Go #gomonkey #zerolog
Go 里的超时控制 前言日常开发中我们大概率会遇到超时控制的场景,比如一个批量耗时任务、网络请求等;一个良好的超时控制可以有效的避免一些问题(比如 goroutine 泄露、资源不释放等)。 2021-10-28 Go #timer
观察者模式的实际应用 前言设计模式不管是在面试还是工作中都会遇到,但我经常碰到小伙伴抱怨实际工作中自己应用设计模式的机会非常小。 正好最近工作中遇到一个用观察者模式解决问题的场景,和大家一起分享。 2021-09-02 Go > 设计模式 #设计模式 #observer
切片 slice 原理分析 前言作为一个 Go 语言新手,看到一切”诡异“的代码都会感到好奇;比如我最近看到的几个方法;伪代码如下: 1234567891011func FindA() ([]*T,error) {}func FindB() ([]T,error) {}func SaveA(data *[]T) error {}func SaveB(data *[ 2021-07-28 Go #Go #切片 #数组 #slice
Go channel VS Java BlockingQueue 前言最近在实现两个需求,由于两者之间并没有依赖关系,所以想利用队列进行解耦;但在 Go 的标准库中并没有现成可用并且并发安全的数据结构;但 Go 提供了一个更加优雅的解决方案,那就是 channel。 channel 应用Go 与 Java 的一个很大的区别就是并发模型不同,Go 采用的是 CSP(Communicating sequential processes) 模型;用 Go 官方的说法 2021-07-02 Go #Java #Go #channel #BlockingQueue
Python 中的 os.popen 函数 与 Pipe 管道的坑 前言最近用 Python 写了几个简单的脚本来处理一些数据,因为只是简单功能所以我就直接使用 print 来打印日志。 任务运行时偶尔会出现一些异常: 2021-05-12 cs #Python #pipe #fd
Pulsar 入门及介绍 背景我们最近在做新业务的技术选型,其中涉及到了对消息中间件的选择;结合我们的实际情况希望它能满足以下几个要求: 友好的云原生支持:因为现在的主力语言是 Go,同时在运维上能够足够简单。 官方支持多种语言的 SDK:还有一些 Python、Java 相关的代码需要维护。 最好是有一些方便好用的特性,比如:延时消息、死信队列、多租户等。 2021-04-18 Pulsar #Go #Pulsar #消息队列
利用 GitHub Action 自动发布 Docker 前言最近公司内部项目的发布流程接入了 GitHub Actions,整个体验过程还是比较美好的;本文主要目的是对于没有还接触过 GitHub Actions的新手,能够利用它快速构建自动测试及打包推送 Docker 镜像等自动化流程。 2021-03-26 CICD #Go #Docker #GitHub Actions
写了一个 gorm 乐观锁插件 前言最近在用 Go 写业务的时碰到了并发更新数据的场景,由于该业务并发度不高,只是为了防止出现并发时数据异常。 所以自然就想到了乐观锁的解决方案。 2021-03-15 数据库 #Java #Go #OOP #乐观锁
可能是最晚的2020年终总结 前言首先还是祝大家新年快乐,虽然还有300来天。 哈哈,圆规正传。 近三年每年我都有写年终总结,每次看上一年的新年计划时心里就会骂一句:TMD 又白写了;当然今年也不例外。 2021-03-02 annual-summary