不忘痴心 砥砺前行


  • 首页

  • 标签

  • 分类

  • 归档

Golang Mock 四大宗师 gomock、monkey、httptest、sqlmock

发表于 2023-06-05 | 分类于 Coder

简单总结下 Golang Mock 测试中的四大宗师:gomock、monkey、httptest、sqlmock

阅读全文 »

Go 使用 MySQL 连接池的正确姿势

发表于 2023-05-24 | 分类于 Coder

sql.DB 是数据库的抽象,它提供了一些跟数据库交互的函数,同时管理维护一个数据库连接池,因此不需要频繁的创建和销毁数据库连接,并且在多个 goroutines 间也是安全的。

在 Go 项目中用 sql.Open 函数创建连接池,可是此时只是初始化了连接池的数据结构,并没有创建任何连接。

连接创建都是 惰性 的,只有当你真正使用到连接的时候,连接池才会创建连接。

连接池很重要,它直接影响着你的程序行为和性能。

阅读全文 »

【译】Go 中 httptest 包的强大之处

发表于 2023-04-12 | 分类于 Coder

注:本文译自 The awesomeness of the httptest package in Go

Go 有一个很好的 http 包。我之所以能这么说,是因为除了标准库提供的实现之外,我不知道 Go 中有任何其他实现。这对我来说是一个好兆头。

1
2
3
4
5
6
resp, err := http.Get("http://example.com/")
if err != nil {
// handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)

这个例子来自 go 文档 。

我们来这里是为了阅读有关测试的内容,所以谁关心 http 包本身!重要的是 httptest 包!酷多了。

阅读全文 »

【译】Golang 模拟 HTTP 请求

发表于 2023-04-08 | 分类于 Coder

注:本文翻译自 mocking-http-requests-in-golang

让我们看一下如何使用接口来构建一个 mock 的 HTTP 客户端,我们可以在 Golang 应用程序的测试套件中使用该客户端。

阅读全文 »

2022 书单

发表于 2022-12-31 | 分类于 心旷神怡

也来掉下书袋吧~

阅读全文 »

我很喜欢的一道 Golang 编程题 | 简单,但很有效

发表于 2022-01-10 | 分类于 Coder

要求:

  1. 只能编辑 foo 函数
  2. foo 函数必须调用 slow 函数
  3. foo 函数在 ctx 超时后必须立刻返回

【加分项】如果 slow 结束的比 ctx 快,也立刻返回

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main

import (
"context"
"fmt"
"math/rand"
"time"
)

func main() {
rand.Seed(time.Now().UnixNano())

ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, time.Second)
defer cancel()

foo(ctx)
}

func foo(ctx context.Context) {
// TODO
slow()
}

func slow() {
n := rand.Intn(3)
fmt.Printf("sleep %d\n", n)
time.Sleep(time.Duration(n) * time.Second)
}
阅读全文 »

2021 书单

发表于 2021-12-31 | 分类于 心旷神怡

也来掉下书袋吧~

阅读全文 »

第一个容器化应用

发表于 2021-10-14 | 分类于 云原生

作为一个应用开发者,你需要了解Kubernetes 里面与开发者关系最密切的几个概念:

首先,是制作容器的镜像;

其次,你需要按照 Kubernetes 项目的规范和要求,将你的镜像组织为它能够“认识”的方式,然后提交上去。

这就是使用 Kubernetes 的必备技能:编写配置文件。

在这篇文章中,我们来扮演一个应用开发者的角色,使用 Kubernetes 集群发布第一个容器化应用。

阅读全文 »

为什么我们需要Pod?

发表于 2021-10-05 | 分类于 云原生

“Namespace 做隔离,Cgroups 做限制,rootfs 做文件系统”,为什么 Kubernetes 项目又突然搞出一个 Pod 来呢?

先回顾下:容器的本质到底是什么?

容器实际上是一个视图被隔离,资源受限的进程。

PID =1 的进程就是应用本身。

阅读全文 »

K8S 核心概念

发表于 2021-10-02 | 分类于 云原生

Kubernetes 是一个自动化的容器编排平台,它负责容器应用的 部署、弹性以及管理。

阅读全文 »
12…15

彦祖老师

143 日志
15 分类
233 标签
GitHub E-Mail
© 2015 — 2023 彦祖老师
浙ICP备20005040号-1