0%

不知不觉年终总结就像每个人的 KPI 一样,年底不总结一下感觉今年就白过了似的。

今年时间真的感觉过的特别快,经常感觉工资刚发不久结果没几天又到了发薪日;再也没有小时候一个暑假都能过一年的感觉。

Read more »

前言

最近实现某个业务时,需要读取数据然后再异步处理;在 Go 中实现起来自然就比较简单,伪代码如下:

1
2
3
4
5
6
7
8
9
10
list := []*Demo{{"a"}, {"b"}}
for _, v := range list {
go func() {
fmt.Println("name="+v.Name)
}()
}

type Demo struct {
Name string
}
Read more »

前言

早在几年前写过关于 LRU cache 的文章:
https://crossoverjie.top/2018/04/07/algorithm/LRU-cache/

当时是用 Java 实现的,最近我在完善 ptg 时正好需要一个最近最少使用的数据结构来存储历史记录。

ptg: Performance testing tool (Go), 用 Go 实现的 gRPC 客户端调试工具。

Go 官方库中并没有相关的实现,考虑到程序的简洁就不打算依赖第三方库,自己写一个;本身复杂度也不高,没有几行代码。

Read more »

go-grpc-client-gui.md---008i3skNly1gwuz3q9a2nj30rs0rs3z1.jpg

前言

平时大家写完 gRPC 接口后是如何测试的?往往有以下几个方法:

  1. 写单测代码,自己模拟客户端测试。
    go-grpc-client-gui.md---008i3skNly1gwv0138u2ij31eq0lwn07.jpg

  2. 可以搭一个 gRPC-Gateway 服务,这样就可以在 postman 中进行模拟。

Read more »

go-benchmark-test.md---008i3skNly1gwer3yhu0dj30vn0u00v3.jpg

前言

前段时间有个项目即将上线,需要对其中的核心接口进行压测;由于我们的接口是 gRPC 协议,找了一圈发现压测工具并不像 HTTP 那么多。

最终发现了 ghz 这个工具,功能也非常齐全。

事后我在想为啥做 gRPC 压测的工具这么少,是有什么难点嘛?为了验证这个问题于是我准备自己写一个工具。

Read more »

不知不觉写 Go 已经快一年了,上线了大大小小好几个项目;心态也经历了几轮变化。

因为我个人大概前五年时间写的是 Java ,中途写过一年多的 Python,所以刚接触到 Go 时的感觉如下图:

既没有 Java 的生态,也没有 Python 这么多语法糖。

Read more »

前言

日常开发中我们大概率会遇到超时控制的场景,比如一个批量耗时任务、网络请求等;一个良好的超时控制可以有效的避免一些问题(比如 goroutine 泄露、资源不释放等)。

Read more »

前言

设计模式不管是在面试还是工作中都会遇到,但我经常碰到小伙伴抱怨实际工作中自己应用设计模式的机会非常小。

正好最近工作中遇到一个用观察者模式解决问题的场景,和大家一起分享。

Read more »

前言

作为一个 Go 语言新手,看到一切”诡异“的代码都会感到好奇;比如我最近看到的几个方法;伪代码如下:

1
2
3
4
5
6
7
8
9
10
11
func FindA() ([]*T,error) {
}

func FindB() ([]T,error) {
}

func SaveA(data *[]T) error {
}

func SaveB(data *[]*T) error {
}
Read more »