随笔分类 -  Golang

摘要:双向链表 阅读全文
posted @ 2022-03-18 10:33 wangzhilei 阅读(19) 评论(0) 推荐(0)
摘要:Go 语言扩展包中提供了另一种同步原语,它能够在一个服务中抑制对下游的多次重复请求。一个比较常见的使用场景是:我们在使用 Redis 对数据库中的数据进行缓存,发生缓存击穿时,大量的流量都会打到数据库上进而影响服务的尾延时 在资源的获取非常昂贵时(例如:访问缓存、数据库),就很适合使用 golang 阅读全文
posted @ 2022-03-16 15:12 wangzhilei 阅读(125) 评论(0) 推荐(0)
摘要:带权重的信号量 golang/sync/semaphore.Weighted,我们可以按照不同的权重对资源的访问进行管理,这个结构体对外也只暴露了四个方法: golang/sync/semaphore.NewWeighted 用于创建新的信号量; golang/sync/semaphore.Weig 阅读全文
posted @ 2022-03-16 15:02 wangzhilei 阅读(143) 评论(0) 推荐(0)
摘要:在一组 Goroutine 中提供了同步、错误传播以及上下文取消的功能,我们可以使用如下所示的方式并行获取网页的数据: package main import ( "fmt" "net/http" "golang.org/x/sync/errgroup" ) func main() { var g 阅读全文
posted @ 2022-03-16 14:47 wangzhilei 阅读(260) 评论(0) 推荐(0)
摘要:保证在 Go 程序运行期间的某段代码只会执行一次 func main() { o := &sync.Once{} for i := 0; i < 10; i++ { o.Do(func() { fmt.Println("only once") }) } } $ go run main.go only 阅读全文
posted @ 2022-03-16 13:56 wangzhilei 阅读(102) 评论(0) 推荐(0)
摘要:基本思想: Parametric Polymorphism(形式)参数多态 #基本语法 package main import "fmt" func printSlice[T any](s []T){ for _,v:=range s{ fmt.Printf("%v",v) } fmt.Print( 阅读全文
posted @ 2021-12-07 13:56 wangzhilei 阅读(134) 评论(0) 推荐(0)
摘要:#MAP 非thread-safe ##数据结构 ┌─────────────┐ │ hmap │ ├─────────────┴──────────────────┐ ┌───────────────┐ ┌─────────┐ ┌─────────┐ │ count int │ │ │ ┌──── 阅读全文
posted @ 2021-10-15 15:47 wangzhilei 阅读(98) 评论(0) 推荐(0)
摘要:#数据结构 // runtime/slice.go type slice struct { array unsafe.Pointer // 元素指针 len int // 长度 cap int // 容量 } **array:**指向底层数组的指针 **len:**是slice的长度,当前数据成员数 阅读全文
posted @ 2021-10-12 21:45 wangzhilei 阅读(533) 评论(0) 推荐(0)
摘要:#UTF-8编译 | 编号 | 编码模板 | | | | | [0,127] | 0??????? | | [128,2047] | 110????? 10?????? | | [2048,65535] | 1110???? 10?????? 10?????? | fmp.Printf("%c\n" 阅读全文
posted @ 2021-10-12 20:57 wangzhilei 阅读(22) 评论(0) 推荐(0)
摘要:客户端 GET POST form表单 json body二进制流 上传文件 PUT DELETE HEAD 重定向 Client Request Response Cookie CookieJar 文件下载与进度 客户端超时设置 http代理 header 服务端 #客户端 const ( Met 阅读全文
posted @ 2021-10-10 19:37 wangzhilei 阅读(221) 评论(0) 推荐(0)
摘要:并发模型 并发与并行 什么是CSP 什么是channel channel原理 数据结构 创建 接收 发送 关闭 channel进阶 发送和接收元素的本质 资源泄漏 [happened before](#happened before) [如何优雅地关闭 channel](#如何优雅地关闭 chann 阅读全文
posted @ 2021-10-05 10:14 wangzhilei 阅读(637) 评论(0) 推荐(0)
摘要:什么是context context底层原理 接口 Context canceler 结构体 emptyCtx cancelCtx timeCtx valueCtx 传递共享数据 [超时取消 goroutine](#超时取消 goroutine) 设置截止时间,超时触发 调用cancel,关闭gor 阅读全文
posted @ 2021-10-04 10:03 wangzhilei 阅读(1016) 评论(0) 推荐(0)
摘要:#WaitGropu使用注意 作groutine参数时传指针 type WaitGroup struct { noCopy noCopy // 64-bit value: high 32 bits are counter, low 32 bits are waiter count. // 64-bi 阅读全文
posted @ 2021-10-03 15:20 wangzhilei 阅读(148) 评论(0) 推荐(0)
摘要:####安全指针 ####unsafe包 ####unsafe原理 ####获取slice长度 获取map长度 #安全指针 Go 语言的函数传参都是值传递 package main import "fmt" func double(x *int) { *x += *x x = nil//x是值拷贝, 阅读全文
posted @ 2021-10-03 09:47 wangzhilei 阅读(467) 评论(0) 推荐(0)
摘要:https://github.com/samuel/go-zookeeper/ #注册 恢复内容开始 https://github.com/samuel/go-zookeeper/ https://www.jianshu.com/p/e520dea04af6 https://pkg.go.dev/g 阅读全文
posted @ 2021-09-29 09:15 wangzhilei 阅读(32) 评论(0) 推荐(0)
摘要:#gov1.3-标记清除 标记清除过程 暂停程序业务逻辑,找出不可达的对象,和可达对象 开始标记,程序找出它所有可达的对象,并做上标记 标记完之后,然后开始清除未标记的对象 停止暂停,让程序继续运行。然后循环重复这个过程,直到process程序生命周期结束。 缺点 STW,stop the worl 阅读全文
posted @ 2021-09-22 14:07 wangzhilei 阅读(86) 评论(0) 推荐(0)
摘要:Go的调度为什么说是轻量的? Go高度都发生了什么? Go的网络和锁会不会阻塞线程? 什么时候会阻塞线程? Go是怎样实现少量内核线程支撑大量Goroutine的并发运行? 为了最大限度利用计算资源,Go调度器是如何处理线程阻塞的场景? #GMP G:goroutine 协程 P:processor 阅读全文
posted @ 2021-09-18 14:17 wangzhilei 阅读(710) 评论(0) 推荐(0)
摘要:go get github.com/Shopify/sarama #消息队列通讯模式 1.点对点 2.发布订阅 #Broker 部署了kafka实例的服务器节点。 每个服务器上有一个或多个kafka的实例,broker对应一台服务器。每个kafka集群内的broker都有一个不重复的编号 #Topi 阅读全文
posted @ 2021-09-10 22:04 wangzhilei 阅读(359) 评论(0) 推荐(0)