
golang
golang相关技术知识
erternalKing
弱者寄希望于环境,强者寄希望于自身!
展开
-
Golang Gorm实现自定义多态模型关联查询
使用Gin+Gorm实现自定义接口形式多态模型关联查询原创 2024-11-01 16:39:03 · 651 阅读 · 0 评论 -
redis实现基于令牌桶算法(控制速率)以及固定时间的固定请求次数的请求限流器(golang版)
具体地,我们可以使用Redis中的有序集合(sorted set)来实现令牌桶算法。首先,我们需要在Redis中设置一个有序集合,将时间戳作为成员(member),将令牌数作为分值(score)。然后,每次收到一个请求时,就从有序集合中获取当前的令牌数,并将其减1。同时,我们也需要根据一定的规则,定期向有序集合中添加令牌,确保令牌桶中的令牌数不会永久耗尽。Redis可以通过实现一个基于令牌桶算法的限流器来限制HTTP请求的访问速率。令牌桶算法是一种常见的限流算法,它基于一个令牌桶来控制请求的速率。原创 2023-03-22 15:50:41 · 1693 阅读 · 0 评论 -
golang kafka Shopify/sarama 消费者重置新增分区偏移量并进行重新消费
在重平衡回调方法中使用redis的无序集合储存当前主题、当前消费者组下的全部分区信息,然后在根据当前消费者会话去和上一代的全部分区信息进行差集对比,对比的结果就是新增的分区。得到新增的分区后将这些分区的偏移量重置为0即重头开始消费,当前存在重复消费的情况,需要你的业务逻辑上做好幂等性。最后再将这些差集新增分区ID更新至redis存储的当前主题、当前消费者组下的全部分区信息内形成了一个闭环,即使一个消费者组下有多个消费者进程也不会出现数据覆盖更新等问题,因为如果存在差集新增分区只会将更新差集分区ID。原创 2023-03-14 11:37:39 · 2263 阅读 · 0 评论 -
分阶段构建golang运行环境Dockerfile镜像
分阶段构建镜像就会用到scratch这个空镜像,这样的好处是可以大大节约服务器资源,比如用普通的镜像(golang:1.18-alpine)来说,它在构建完之后大约占300MB左右,那么我们通过分阶段构建的话可能只需要20MB左右(与你的程序文件以及系统安装的文件内容有关,总之会比原镜像小很多),这里我在想scratch既然是个空镜像干净的环境那么它系统加载的内容也会非常少,在一定程度上是不是也存在提升了程序的性能,这里懂的原理的同学可以交流。为什么出现了这么多none的镜像呢?原创 2023-02-24 11:15:00 · 1821 阅读 · 0 评论 -
golang rabbitMQ 生产者复用channel以及生产者组分发策略
项目初始化构建时可以自定义选择生产者开启多个connection,每个connection可以启动多少个channel【都是全局复用的】,因为rabbitMQ所有的命令都是基本都是通过channel去操作完成的,所以这个channel很重要,也是我们想要复用的重点。在网络编程中我们知道tcp连接的创建、交互、销毁等相关操作的"代价"都是很高的,所以就要去实现如何复用这些连接,并要做到高效并可靠。引用的是rabbitMQ官方示例的库。原创 2023-02-10 18:44:14 · 3199 阅读 · 1 评论 -
golang优雅退出守护进程、信号处理
golang优雅退出守护进程、信号处理转载 2023-02-09 18:48:59 · 764 阅读 · 0 评论 -
golang 切片结构体多条件排序
日常工作中我们经常会有将数据排序的需求,在golang中无法直接将map数据类型进行排序,所以我们会通过切片+结构体数据类型的方式进行数据字段的排序,从而实现二维数组的排序效果。原创 2022-11-07 11:56:16 · 475 阅读 · 0 评论 -
golang 切片元素去重
golang 切片元素去重原创 2022-11-04 18:34:37 · 702 阅读 · 0 评论 -
golang 切片分割份数
本篇主要演示日常工作中可能会遇到一个较大切片,此时需要将该切片分割成若干份数,每份数中可以控制有多少个元素。原创 2022-11-03 17:47:09 · 968 阅读 · 0 评论 -
golang 多协程控制请求API频次/频率 X秒内请求X次
本篇文章简单演示了一个golang在多协程的情况下如何控制执行频次频率,经典场景就是在我们请求第三方API时,对方的API有接口请求频次限制,X秒内请求X次。原创 2022-11-03 14:22:57 · 745 阅读 · 0 评论 -
Golang获取过去或将来某周某月的开始时间戳和结束时间戳
开发过程中我们经常需要拿到相对于当前时间过去或将来的某周某月的开始和结束时间戳,下面为大家准备了对应的方法。转载 2022-10-19 11:30:09 · 1258 阅读 · 0 评论 -
golang 利用channel收集多协程返回值
golang 利用channel收集多协程返回值原创 2022-10-03 22:49:01 · 1773 阅读 · 0 评论 -
golang 模拟用户分数名次超过总数的百分比算法
golang 模拟用户分数名次超过总数的百分比算法原创 2022-10-01 23:35:41 · 628 阅读 · 0 评论 -
golang 自动填充字符串,补齐位数
【代码】golang 自动填充字符串,补齐位数,把字符串填充为新的长度原创 2022-09-30 16:01:52 · 3337 阅读 · 0 评论 -
golang操作mongodb
本文简单介绍以及演示了golang如何操作mongodb以及如何设置连接池等相关方法原创 2022-09-21 16:02:59 · 825 阅读 · 0 评论 -
golang gorm show tables
golang使用gorm组件进行原生sql查询show tables原创 2022-09-20 15:28:38 · 1590 阅读 · 1 评论