Skip to main content

· 3 min read
Czasg

gitlab-runner实际运行时,会远程获取我们的代码仓,然后执行配置的.gitlab-ci.yaml文件,这个文件和jenkinsfile一个性质,里面定义了 CICD 的检测流程。

换句话说,gitlab-runner和我们的代码仓是完全解耦的。是可以部署在其他服务器上,并且可以部署多个的。

· 6 min read
Czasg

MySQL 是业界主流的关系型数据库,目前被 Oracle 收购,并提供包括免费、付费等多种社区版本。
PostgreSQL 则是一个开源的数据库。有句比较经典的话你可能听过,那就是:"PostgreSQL 能与 Oracle 媲美,并且没有那么昂贵的价格和傲慢的客服。"

两类数据库各有高低,本文主要学习总结下二者之间的特点,以及各自的优势。

· 2 min read
Czasg

计算机程序场景可分为计算密集型和IO密集型。计算密集型,即CPU占用较高的程序,一般类似AI算法等。IO密集型则包括磁盘IO和网络IO等。
Go 的协程,天然支持并发场景,对于计算密集型和IO密集型都比较友好。但是高磁盘IO场景会有点问题,使用不当还可能造成坑点。

· One min read
Czasg

如果你搭建过早期 Go 项目,应该会比较熟悉 GOPATH。
在以前,项目依赖三方包时,我们需要通过go get将三方依赖库下载到 GOPATH。这就涉及到一个版本维护的问题。

为了解决这个问题,引入了go mod

· One min read
Czasg

tcmalloc(Thread-Caching Malloc)是一个内存分配器,用于管理堆内存。
主要影响的是malloc和free,用于降低频繁分配、释放内存场景所造成的性能损耗,可以有效的控制内存碎片。

· 6 min read
Czasg

今天遇到一个诡异的事情,有一个基于 redis 提供高性能查询的服务,在非高峰期时居然大量报错。
为什么说诡异呢,因为报错内容为:redis: connection pool timeout。而这个服务的查询场景及其简单,只有 getmget 两种,报这个错就意味着 redis 查询性能不足?
本文记录一下排查问题的过程。

· 2 min read
Czasg

在 golang 开发过程中,可能会遇到这么一种问题:参数过多,当希望将参数配置成可选的模式。

在其他语言中有不同的解决方法,比如 python 就支持默认参数,可以很好的处理这个问题。
在 golang 中也有一种选项模式,可以比较友好的处理这类问题。