摘要: 代码地址:https://gitee.com/mq-go/go-course/blob/master/Pool/NewPool.go 创建参数: New实现: Put实现: Get实现: 不再需要加入消息队列后超时 但会取到连接 在调用put方法 如果超时直接退出不再向channel请求连接 如果等 阅读全文
posted @ 2023-10-09 17:52 柒染丨 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 原因: 创建一个连接是很昂贵的: 1 要发起系统调用 2 TCP要完成三次握手 3 高并发的情况,可能耗尽文件描述符 连接池就是为了复用这些创建好的连接 开源实例:silenceper连接池 配置参数:InitialCap:初始化的时候直接创建好的连接数量 MaxIdle:最大空闲连接数 MaxCa 阅读全文
posted @ 2023-10-09 16:43 柒染丨 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 要点: 1 Channel带不带缓冲 2 谁在发 3 谁在收 4 谁来关 5 关了没 Channel有buffer和没有buffer的特点 不带缓冲:要求收发两端都必须要有goroutine否则就是阻塞 有buffer:缓冲没满或者没空之前都不会阻塞,缓冲满了或者空了就会阻塞 没有初始化的chann 阅读全文
posted @ 2023-10-08 14:53 柒染丨 阅读(36) 评论(0) 推荐(0) 编辑
摘要: sync.Pool会先查看自己是否有资源,有则直接返回,没有则创建一个新的,在GC的时候释放缓存的资源 使用sync.Pool是为了复用内存,减少内存分配,减轻GC压力,减少CPU资源 实现类似功能的Pool最简单的方案就是用队列,而且是并发安全的队列。 队头取,队尾放回去、在队列为空的时候创建一个 阅读全文
posted @ 2023-10-07 17:00 柒染丨 阅读(40) 评论(0) 推荐(0) 编辑
摘要: Mutex可以看做是锁,RWMutex则是读写锁 使用锁时优先使用RWMutex RWMutex:核心就是四个方法,RLock、RUnlock、Lock、UnlockMutex:Lock 和 Unlock double-check就是加读锁先检查一遍,释放读锁,加写锁,再检查一遍 锁的实现一般是依赖 阅读全文
posted @ 2023-10-07 16:37 柒染丨 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 初始化一个context如果确定是开头则用Background,如果不确定则用ToDo context包核心API有四个1.context.WithValue 设置键值对,并且返回一个新的context实例 2.context.WithCancel 3.context.WithDeadline 4. 阅读全文
posted @ 2023-10-07 16:13 柒染丨 阅读(15) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示