logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Golang-jaccard相似度

本文比较了两种计算集合相似度的方法:1)暴力法通过哈希表存储元素查找交集;2)先排序后使用双指针遍历查找重复元素。两种方法各有优劣,暴力法实现简单但空间复杂度较高,排序法节省空间但需要预处理。文章通过示意图直观展示了这两种算法的实现思路。

文章图片
#golang
Golang-堆

本文介绍了Go语言中实现最小堆(小顶堆)的方法。通过定义IntMinHeap类型并实现heap.Interface接口的五个方法:Len()获取长度、Less()定义比较规则、Swap()交换元素、Push()添加元素和Pop()删除元素。代码示例展示了如何构建一个基于整型数组的最小堆数据结构,其中Less()方法通过h[i]<h[j]的比较确保堆顶元素始终最小。这种实现方式可用于需要高效获

文章图片
#golang
Golang-快速排序

快速排序原理与实现 快速排序采用分治策略:1)选基准值;2)将数组分为小于基准(左)和大于基准(右)两部分;3)递归处理左右子数组。Go实现通过双指针交换元素,最终将基准放到正确位置。优点:平均O(n log n)时间复杂度,原地排序;缺点:最坏情况O(n²),递归可能栈溢出。核心口诀:选基准→分左右→递归排→合并好。代码使用泛型支持多类型排序,通过左右指针移动和交换完成分区。

文章图片
#golang#排序算法#算法
Golang-partition操作找topK

摘要: 利用快速排序的partition操作可以在O(n)平均时间复杂度内高效求解Top K问题。通过选取基准值pivot将数组分为两部分,并根据pivot位置与K的关系决定继续处理左半或右半部分,无需完全排序数组。该方法比先排序再取前K个元素更高效,适用于查找最大或最小的K个数。

#算法#数据结构#golang
Golang-redis发布-订阅模式

文章摘要:本文介绍了Redis的发布/订阅模式实现,通过Go语言示例演示了频道订阅和消息发布机制。订阅者需先监听频道才能接收发布者的消息,多个订阅者可同时监听同一频道。代码中使用context.Context传递上下文信息,包含发布者/订阅者标识。测试结果显示消息传递成功,日志打印顺序受goroutine调度影响,体现了并发执行特性。文章还探讨了协程调度对日志顺序的影响机制,说明发布者协程可能被订

文章图片
#golang#redis#开发语言
Golang-分布式锁

Redis分布式锁实现摘要 使用SETNX命令实现互斥锁:key不存在时设置成功(返回1),已存在则失败(返回0)。通过TTL设置过期时间避免死锁,若客户端崩溃,Redis自动释放锁。Go代码示例展示了tryLock(SETNX+TTL)和releaseLock(DEL)的实现,测试模拟100协程抢锁场景,仅一个成功获取锁。这种方案简单高效,适用于秒杀等高并发场景。

文章图片
#golang#分布式#开发语言
Golang-内存淘汰策略

本文介绍了两种常见的内存淘汰策略:LRU(最近最少使用)和LFU(最不经常使用)。LRU优先淘汰最久未被访问的数据,而LFU则淘汰访问频率最低的数据。文章还提及Redis在实际应用中的典型使用场景,并通过图片形式展示了相关实例。这些内容为理解缓存机制和Redis应用提供了基础知识。

文章图片
#golang#redis
Golang-RabbitMQ入门指南

RabbitMQ入门指南:解耦与异步通信的利器 RabbitMQ是一个强大的消息队列系统,解决了传统同步调用模式中的性能瓶颈、脆弱性和扩展性问题。通过将RabbitMQ作为"智能邮局"置于系统中间,实现了服务间的解耦、异步通信、削峰填谷和可靠性保障。RabbitMQ包含生产者、消费者、交换机、队列和绑定等核心组件,支持Fanout(广播)、Direct(精确匹配)和Topic(

文章图片
#golang#rabbitmq#ruby
Golang-web中间件入门指南

文章摘要:Go语言中的中间件是处理HTTP请求和响应的关键组件。标准库中的中间件是接收并返回http.Handler的函数,通常用于记录请求、权限检查等任务。文章演示了如何创建日志中间件,记录请求方法和耗时,并对比了Gin框架的中间件实现(使用gin.Context和c.Next())。中间件能在核心逻辑前后执行操作,如示例中的请求时间统计。Gin框架通过router.Use()全局应用中间件,并

文章图片
#golang#中间件
到底了