Golang map底层结构

笔记  Go 

Golang map底层数据结构https://golang.design/go-questions/map/principal/Golang map 实现原理概述map是一种常用的数据结构,核心特征包括下面三点:存储基于key-value对映射的模式基于key维度实现存储数据的去重读,写,删操作控

go并发-采用最快回应

笔记  Go 

package mainimport ("fmt""math/rand""time")func fetchData(server string, ch chan<- string) {time.Sleep(time.Duration(

基于worker pool实现计算num的平方

笔记  Go 

package mainimport ("fmt""sync")func worker(ch <-chan int, result chan<- int) {defer wg.Done()for v := range ch {result <

基于worker pool实现并发下载图片

笔记  Go 

package mainimport ("fmt""io""log""net/http""os""path/filepath""strings""sy

go race detector

笔记  Go 

package mainimport ("fmt""sync")var mutex sync.Mutexfunc main() {var count = 0var wg sync.WaitGroupwg.Add(10)for i := 0; i < 10

go切片扩容机制

笔记  Go 

go切片扩容机制:当len > cap的时候,就会触发扩容如果预期的新容量超过原来老容量的两倍,就直接采用预期的新容量。如果老容量小于256, 如果预期的新容量小于原来老容量的两倍,就用老容量的两倍作为新容量如果老容量已经大于等于256,那么新容量就是5/4 * 老容量 + 192,持续这样处

Go 泛型

笔记  Go 

求切片长度package mainimport "fmt"func Length[T any](s []T) int {return len(s)}func main() {s := []int{1, 2, 3, 4, 5}fmt.Println(Length[int](s))s

Go slices库

笔记  Go 

Go 1.21新增的 slices 包提供了很多和切片相关的函数slices.BinarySearchpackage mainimport ("fmt""slices")func main() {nums := []int{1, 3, 5, 7, 9}// 查

Golang 设置P 逻辑单元的数量

笔记  Go 

Go语言的并发模型是基于GMP模型(Goroutine、Machnie、Processor)的,其中:Goroutine(G):Go中的轻量级线程,由Go运行时调度。Machine(M):操作系统线程,与硬件CPU核心相关联。Processor(P):调度器中的一个逻辑单元,负责调度Goroutin

Protobuf 的基本数据类型

笔记  Go 

proto(Protocol Buffers,简称 Protobuf)是 Google 开发的一种轻量级、高效的数据序列化格式,用于结构化数据的存储和传输。在 Protobuf 中,数据通过 .proto 文件定义,文件中包含消息类型(message types)和字段类型(field types)