go 的定时器暂停与恢复

前言 最近在工作中遇到游戏里经常有延时逻辑,需要延迟多少秒后给客户端发送消息让客户端进行动画与逻辑,在这个基础上,来了一个加需求,用户在这些过

google play 订阅接入

前言 由于 Google Play 的订阅有 13 种状态,在各种状态流转的复杂性超过我的想象,甚至有推送消息内的触发时间更早的消息更晚到的情况。 这里写一篇博文来记录各种

替换 time.Now 为自定义函数

前言

我这边业务里有大量的时间过期逻辑,也有不少定时触发的业务,这个时候这些业务完成后到了测试手里他们都有个疑问如何测试时间相关的功能,所以这里就做了各种方案去想办法替换 time.Now

有状态服务的滚动更新

前言

作为后端我们时常遇到服务的更新,而作为 http 服务的后端则一般是不用考虑这件事的,因为 http 服务的必须是无状态的,只需要在服务前加一个负载均衡就可以做到轻松的滚动更新,让用户无感知更新。但是我现在的工作的服务上包含的有状态的情况,但是更新又是必须的。

k3s 安装笔记

前言 最近因工作,需要有一个 k8s 环境,观察了不少单机部署方案都很差劲,最后看到 k3s 官方的文档里直接有各种安装方案,最终部署下来也是比较方便,完全没

设计模式笔记

前言

  • 前段时间面试发现各种设计模式并未正确使用,而且很多设计模式明明在用却不知道是什么设计模式。
  • 记录一下这些设计模式。

使用 Redis 做排行榜

前言 一、需求 用户打开排行榜及加入该排行榜。 排行榜以排行榜积分和加入排行榜时间来排序。 排行榜满一定数量就开始分榜,每个分榜单独进行排名。 排行榜

(翻译)size classes 的应用

原文地址 今天文章来自一个最近流行的测试,思考一下这个基准测试代码片段。1 1 2 3 4 5 6 7 func BenchmarkSortStrings(b *testing.B) { s := []string{"heart", "lungs", "brain", "kidneys", "pancreas"} b.ReportAllocs() for i := 0; i < b.N; i++ { sort.Strings(s) } } 我们经

Starlark使用

前言

最近需要在 Golang 里嵌入一个脚本语言,现在对于 Golang 来说比较成熟的有 python, javascript, lua 的第三方作为内嵌脚本执行引擎。

其中我使用了 starlark 主要是大部分兼容 python 语法,并且比起其他的脚本实现它实际上是没有 vm 的更加的轻量。