Golang性能调优--工具篇

软件开发过程中,项目上线并不是终点。上线后,还要对程序的取样分析运行情况,并重构现有的功能,让程序执行更高效更稳写。 golang的工具包内自带pprof功能,使找出程序中占内存和CPU较多的部分功能方便了不少。加上uber的火焰图,可视化显示,让我们在分析程序时更简单明了。

Golang并发陷阱

在大多数的语言里,赋值操作是原子性(不可拆分)的,但是Golang中并不是,Golang里很多类型的赋值操作是分多走的,而多步走就会导致在不同协程里操作同一个变量会出现异常,那么哪些类型的变量是并发赋值安全的,哪些是不安全的呢?

起名录

迫于给软件、硬件起名字是一件头疼的事情,于是便把平时想到的好名字记录一下。

Redis Cluster

Redis Cluster是Redis官方的一个高可用分布式解决方案。Redis Cluster中共有2 ^ 14(16384)个槽,创建集群后,需要将这些槽均分给各个节点。

树莓派记录

我给我买的第一个树莓派命名为pioneer,意思是先锋,开拓者,拓荒者,这是我对硬件的第一次尝试,希望能通过它打开我的新世界大门。

很幸运地为它注册到了域名pioneers.top

Redis实现消息队列的方案

MQ应用有很多,比如ActiveMQ,RabbitMQ,Kafka等,但是也可以基于redis来实现,可以降低系统的维护成本和实现复杂度,本篇介绍redis中实现消息队列的几种方案。

  1. 基于List的 LPUSH+BRPOP 的实现
  2. PUB/SUB,订阅/发布模式
  3. 基于Sorted-Set的实现
  4. 基于Stream类型的实现