- 博客(7)
- 收藏
- 关注
原创 基于redis开发一个时间复杂度为O(1)的优先级队列(续)
上一篇提到过,现在的获取前面排队次数的时间复杂度为O(M),M就是优先级的个数,如果优先级非常多,那么需要等待时间是比较久的。本次我将采用一个前缀和算法进行优化。这是上次提到的例子:获取普通用户的长度B的前方排队的数量=len(svip)+len(vip)+countMap[B]-countMap[A]如果存储了前缀和:获取普通用户的长度B的前方排队的数量=前缀和[B的优先级-1]+countMap[B]-countMap[A]。
2025-02-19 13:37:32
505
原创 go之Slice和Map
所谓等量扩容, 实际上并不是扩大容量, buckets数量不变, 重新做一遍类似增量扩容的搬迁动作, 把松散的键值对重新排列一次, 以使bucket的使用率更高, 进而保证更快的存取。当然这只是我瞎想的。新的键值对被插入新的bucket中。map中所有的key都有相同的类型,所有的value也有着相同的类型,但是key和value之间可以是不同的数据类型。它是一个无序的key/value对的集合,其中所有的key都是不同的,然后通过给定的key可以在常数时间复杂度内检索、更新或删除对应的value。
2025-02-12 17:16:07
1323
原创 go之Channels
一个基于无缓存Channels的发送操作将导致发送者goroutine阻塞,直到另一个goroutine在相同的Channels上执行接收操作,当发送的值通过Channels成功传输之后,两个goroutine可以继续执行后面的语句。为了表明这种意图并防止被滥用,Go语言的类型系统提供了单方向的channel类型,分别用于只发送或只接收的channel。)这种限制将在编译期检测。那么channel的缓存队列将不是满的也不是空的(图8.4),因此对该channel执行的发送或接收操作都不会发送阻塞。
2025-02-12 17:13:28
467
原创 基于redis开发一个时间复杂度为O(1)的优先级队列
优点:时间复杂度均为O(1)缺点:实现较为复杂,而且获取当前用户前面还有多少人排队也不精准。最后我在github上根据这些思路写了一个类库,因刚学go语言不久,所以代码写的比较粗糙,大佬们有时间可以帮我修改下,不胜感激。🔗github地址。
2025-02-10 09:02:26
1755
1
原创 编写predixy chart,实现helm快速搭建Redis集群(redis-cluster+predixy)
在上一篇文章中,我使用的是helm部署的redis-cluster,而predixy没有chart,导致我写了好几个yaml文件,感觉不太优雅,上周我正好学了一下helm,感觉我为什么不写一个predixy的chart,这样在结合我就可以写一个value.yaml,来实现一行命令就启动redis-cluster+predixy集群了。。
2025-02-10 09:00:21
499
1
原创 K8S快速搭建Redis集群(redis-cluster+predixy)
在本次部署过程中,我们将使用来简化 Redis 集群的部署,并利用 Kubernetes(K8s)直接部署作为代理层(后续我写了一个predxiy的chart,实现helm部署predixy了,感兴趣可以看下),以提高集群的可访问性和负载均衡能力。
2025-02-10 08:59:34
713
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人