首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Go
jxwu
创建于2021-07-19
订阅专栏
Go相关内容
等 43 人订阅
共37篇文章
创建于2021-07-19
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
【Golang】如何实现实现带优先级的select
在 Golang 里面,我们经常使用 channel 进行协程之间的通信。在某些情况下,我们需要优先消费某个channel。然而,Golang在多个channel同时可用的情况下,是随机选择的。
如何使用Golang泛型提高编码效率
泛型让我们在使用Golang的时候能够抽取一些通用的代码,避免代码的重复拷贝,提高代码性能(避免类型转换),提高编码的效率和体验,提高代码可维护性。这篇文章主要是介绍我使用Golang泛型做过事情。
Go+Redis实现分布式互斥锁和红锁
在项目中我们经常有需要使用分布式锁的场景,而Redis是实现分布式锁最常见的一种方式,这篇文章主要是使用Go+Redis实现互斥锁和红锁。
Golang实现延迟队列(DelayQueue)
延迟队列是一种特殊的队列,元素入队时需要指定到期时间,出队的元素一定是已经到期的,而且早到期的元素最先出队,也就是队列里面的元素是按照到期时间排序的,添加元素和获取元素的时间复杂度是O(log(n))
如何实现一个支持O(log(n))随机删除元素的堆
堆是一种非常常用的数据结构,它能够支持在O(1)的时间复杂度获取到最大值(或最小值)。然而堆它有一个缺点,它没办法快速的定位一个元素,因此它也没办法快速删除一个堆中元素。因此需要一种能随机删除的堆。
近似LRU(NearlyLRU):一种基于随机采样的缓存淘汰策略
Redis里面有很多种缓存淘汰策略,其中有一种就是LRU,但是它需要额外的空间。而Redis的作者则使用了一种基于随机采样的近似LRU(NearlyLRU),它在Redis里面是不需要花费额外空间的。
W-TinyLFU缓存淘汰策略
W-TinyLFU是一种非常优秀的缓存淘汰策略,它综合的考虑了现实场景中可能会遇到的各种问题,具有能够提高缓存命中率的准入策略,带有LFU的基于频率的优点,还具备元素保鲜机制,同时还能保证低空间消耗。
CountMinSketch计数器:基于布隆过滤器思想的近似计数器
CountMinSketch是一种计数器,用来统计一个元素的计数,它能够以一个非常小的空间统计大量元素的计数,同时保证高的性能及准确性。
布隆过滤器:一种低空间成本的判断元素是否存在的方式
布隆过滤器(BloomFilter)是一种用于判断元素是否存在的方式,它的空间成本非常小,速度也很快。它一秒能够进行上百万次操作,并且1亿数据在误判率1%的情况下,只需要114MB内存。
数据库加密字段如何进行模糊查询
对于一些敏感字段,比如手机号码、身份证、地址、银行卡号等,我们在存放进数据库前,可能需要对其进行加密。大部分情况下,我们只需支持等值查询。但是如果需要支持模糊查询,那么整段内容整体加密就不具备这个能力
Golang如何实现一个环形缓冲器(ringbuffer)
环形缓冲器(ringr buffer)是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。
Golang3种数组拷贝方式性能分析
在Go语言中,我们可以使用for、append()和copy()进行数组拷贝,对于某些对性能比较敏感且数组拷贝比较多的场景,我们可以会对拷贝性能比较关注,这篇文件主要是对比一下这三种方式的性能。
Golang官方一致性哈希组件详解
一致性哈希算法经常被用于请求路由中,在处理节点不变的情况下,它能够把相同的请求路由到相同的处理节点上。同时还能在处理节点变动时,让相同请求尽可能的打到原先相同的处理节点上。
Go-如何优雅的使用字节池
在某些场景下,我们可能会大量的使用字节数组,比如IO操作、编解码,如果不进行优化,大量的申请和释放字节数组会造成一定的性能损耗,因此有必要复用字节数组。
【Go-Ginrest】一行代码实现一个RESTful接口
基于现在微服务或者服务化的思想,我们大部分的业务逻辑处理函数都是有统一的格式,有些服务我们需要把它包装为RESTful形式的接口,但是如果不进行封装则会产生很多模板代码,这个库就是为了消除模板代码。
Golang官方限流器库详解
在翻Golang官方库的过程中,发现一个有趣的库golang.org/x/time ,里面只有一个类rate,研究了一下发现它是一个限流器,实现了很多的功能,当然它的核心原理并不复杂,也就是令牌桶算法
Golang操作命令行的几种方式
在实际开发工作中,我们经常使用命令行进行日志分析、程序部署、debug程序等工作。在Linux下,|、grep、find、xagrs、awk等工具是非常强大的,可以很容易的完成各种数据处理。
使用通道实现一个公平锁
因为`Go`里面本来就有`Mutex`、`RWMutex`等锁,所以我们一般不会自己重新去实现一个锁,不过我们可以通过这个实现加深对锁和通道的理解。
Go+Redis实现消息队列的三种方式
消息队列是一种很常见的工具,常见的应用场景有:系统解耦、异步消费、削峰填谷。 说到消息队列可能会很快的想到Kafka、RocketMQ这些专业的消息队列,其实如果场景合适,Redis也可以当成消息队列
Go+Kafka实现延迟消息
延迟队列是一个非常有用的工具,我们经常遇到需要使用延迟队列的场景,比如延迟通知,订单关闭等等。 这篇文章主要是使用Go+Kafka实现延迟消息。
下一页