摘要:
双向链表 阅读全文
摘要:
Go 语言扩展包中提供了另一种同步原语,它能够在一个服务中抑制对下游的多次重复请求。一个比较常见的使用场景是:我们在使用 Redis 对数据库中的数据进行缓存,发生缓存击穿时,大量的流量都会打到数据库上进而影响服务的尾延时 在资源的获取非常昂贵时(例如:访问缓存、数据库),就很适合使用 golang 阅读全文
摘要:
带权重的信号量 golang/sync/semaphore.Weighted,我们可以按照不同的权重对资源的访问进行管理,这个结构体对外也只暴露了四个方法: golang/sync/semaphore.NewWeighted 用于创建新的信号量; golang/sync/semaphore.Weig 阅读全文
摘要:
在一组 Goroutine 中提供了同步、错误传播以及上下文取消的功能,我们可以使用如下所示的方式并行获取网页的数据: package main import ( "fmt" "net/http" "golang.org/x/sync/errgroup" ) func main() { var g 阅读全文
摘要:
保证在 Go 程序运行期间的某段代码只会执行一次 func main() { o := &sync.Once{} for i := 0; i < 10; i++ { o.Do(func() { fmt.Println("only once") }) } } $ go run main.go only 阅读全文
摘要:
#环境配置 #内核配置 #基本组件安装 #高可用组件安装 #kubeadm集群初始化 阅读全文
摘要:
基本思想: Parametric Polymorphism(形式)参数多态 #基本语法 package main import "fmt" func printSlice[T any](s []T){ for _,v:=range s{ fmt.Printf("%v",v) } fmt.Print( 阅读全文
摘要:
轻量级"线程" 非抢占式多任务处理,由协程主动交出控制权 func main() { for i := 0; i < 1000; i++ { go func(i int) { //没有主动交出控制权 for { fmt.Printf("Hello from "+ "goroutine %d\n", 阅读全文
摘要:
#MAP 非thread-safe ##数据结构 ┌─────────────┐ │ hmap │ ├─────────────┴──────────────────┐ ┌───────────────┐ ┌─────────┐ ┌─────────┐ │ count int │ │ │ ┌──── 阅读全文