gitlab-runner
实际运行时,会远程获取我们的代码仓,然后执行配置的.gitlab-ci.yaml
文件,这个文件和jenkinsfile
一个性质,里面定义了 CICD 的检测流程。
换句话说,gitlab-runner
和我们的代码仓是完全解耦的。是可以部署在其他服务器上,并且可以部署多个的。
gitlab-runner
实际运行时,会远程获取我们的代码仓,然后执行配置的.gitlab-ci.yaml
文件,这个文件和jenkinsfile
一个性质,里面定义了 CICD 的检测流程。
换句话说,gitlab-runner
和我们的代码仓是完全解耦的。是可以部署在其他服务器上,并且可以部署多个的。
MySQL 是业界主流的关系型数据库,目前被 Oracle 收购,并提供包括免费、付费等多种社区版本。
PostgreSQL 则是一个开源的数据库。有句比较经典的话你可能听过,那就是:"PostgreSQL 能与 Oracle 媲美,并且没有那么昂贵的价格和傲慢的客服。"
两类数据库各有高低,本文主要学习总结下二者之间的特点,以及各自的优势。
记录原生库 net/http
中可能遇到的坑点。
计算机程序场景可分为计算密集型和IO密集型。计算密集型,即CPU占用较高的程序,一般类似AI算法等。IO密集型则包括磁盘IO和网络IO等。
Go 的协程,天然支持并发场景,对于计算密集型和IO密集型都比较友好。但是高磁盘IO场景会有点问题,使用不当还可能造成坑点。
如果你搭建过早期 Go 项目,应该会比较熟悉 GOPATH。
在以前,项目依赖三方包时,我们需要通过go get
将三方依赖库下载到 GOPATH。这就涉及到一个版本维护的问题。
为了解决这个问题,引入了go mod
。
tcmalloc(Thread-Caching Malloc)是一个内存分配器,用于管理堆内存。
主要影响的是malloc和free,用于降低频繁分配、释放内存场景所造成的性能损耗,可以有效的控制内存碎片。
本文学习总结下 redis 常用的观测指标,包括:性能指标、内存指标等。
今天遇到一个诡异的事情,有一个基于 redis 提供高性能查询的服务,在非高峰期时居然大量报错。
为什么说诡异呢,因为报错内容为:redis: connection pool timeout
。而这个服务的查询场景及其简单,只有 get
和 mget
两种,报这个错就意味着 redis 查询性能不足?
本文记录一下排查问题的过程。
在 golang 开发过程中,可能会遇到这么一种问题:参数过多,当希望将参数配置成可选的模式。
在其他语言中有不同的解决方法,比如 python 就支持默认参数,可以很好的处理这个问题。
在 golang 中也有一种选项模式,可以比较友好的处理这类问题。