Go Web App, how to play?

优雅重启HTTP服务

  • 目的 1、不关闭现有连接(正在运行中的程序) 2、新的进程启动并替代旧进程 3、新的进程接管新的连接 4、连接要随时响应用户的请求,当用户仍在请求旧进程时要保持连接,新用户应请求新进程,不可以出现拒绝请求的情况

Go concurrent, how to play?

Introduction

首先,让我们来理解一下 goroutine。Goroutine 是一种轻量级的线程,由 Go 运行时环境管理。在 Go 语言中,你可以通过关键字 go 来启动一个新的 goroutine,而不需要手动创建线程。这意味着你可以很容易地并发地执行多个任务,而不必担心线程管理的复杂性。

Go function interface, how to play?

接口型函数

在 Go 语言中,函数也可以作为接口的一部分,这种称为函数接口(Function Interface)的概念让我们可以更加灵活地定义接口和实现。

通过函数接口,我们可以将函数作为接口的方法,这样就可以将不同的函数赋值给接口变量,并通过接口变量来调用这些函数。这种方式类似于将函数当作一种行为或特性来对待,使得我们可以更加方便地实现多态性和组合性。

Go function option vs builder, how to play?

Go 构建对象模式

Function Option 是一种通过函数选项来配置函数参数的方式。通过在函数中定义多个接受选项参数的函数,可以根据需要选择性地传递这些选项,而不是像传统方式那样传递一长串参数。这样可以使函数调用更清晰易读,避免参数传递顺序混乱的问题。

Go Runtime深度解析:GPM调度模型

GPM调度模型

理解Go的并发调度器如何管理Goroutine(G)、线程(M)和处理器(P),阅读源码中的 src/runtime/proc.go 和 src/runtime/proc1.go

引言

Go语言以其简洁高效的并发编程模型而闻名,其核心就是GPM调度器。GPM调度器是Go runtime的核心组件,负责管理成千上万个Goroutine的并发执行。与传统的操作系统线程调度不同,Go采用了用户态调度器,通过G、P、M三个核心组件的协同工作,实现了轻量级、高效率的并发调度。