![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
文章平均质量分 53
我一个搬砖人
小弟一个后端狗,大佬们带带我。
展开
-
go: 使用简单的计数器计算请求的qps
背景一个稳定的后端服务,需要具备相当的容灾能力。假设因为有事故出现,或者是由于活动等原因,导致有突发大量流量请求服务,此时要保证系统不会被打垮,依然能在力所能及的范围内提供服务。要应付以上场景,也就意味着系统具备限流能力。一些常用的限流方法有: 计数器算法,令牌桶算法,漏桶算法等。然而在工作中,我们可能希望做一些更加复杂的操作。 因此如果能够实时计算到当前系统的QPS,根据QPS判断进行不同操作,就能实现在不同的流量中的分级处理。 Qps计算Qps即每秒查询率,表示每一秒钟的请求量。明原创 2022-01-15 11:17:30 · 2028 阅读 · 2 评论 -
字节算法题:基于用户登录日志计算任一时间在线人数
在面试的时候遇到这样一道题。给定一些用户登录的日志,计算任意时间的在线人数。其中用户登录日志包括如下信息:type LoginLog struct { userId int loginTime int logoutTime int}根据题目,一天24小时,我们有一堆的用户登录日志。简单的做法是我们遍历获取日志,然后对于用户在线的这段时间,对每一个时间点对在线人数加一。则程序如下:func calOnlineUserCount(logList []*Lo原创 2021-07-16 11:18:48 · 2824 阅读 · 2 评论 -
各种排序算法(Golang版本)
1.快速排序快速排序是一种非稳定排序。func findPivot(nums []int, left int, right int) int { pivot := nums[left] // pivot的选择这里一直取第0个元素,可换成随机数 nums[left], nums[right] = nums[right], nums[left] var back = left - 1 var front = left for front < right原创 2021-07-02 22:32:18 · 469 阅读 · 2 评论 -
go语言实现set数据结构
1.Setset是一种十分常用的数据结构。一般代码种使用的set的主要性质如下:1.元素去重2.进行交集,合集等计算3.查看元素是否存在然而,go语言并没有内置的set数据结构想要实现set,我们可以通过map简单实现特定类型的set。2.代码实现下面通过代码讲解如何实现string类型的set:(手敲的,不知有没有问题)type StringSet struct { dataMap map[string]byte}// 创建setfunc NewSet(elements ..原创 2021-02-01 23:13:14 · 2097 阅读 · 0 评论 -
缓存更新策略(go)
文章目录前言一、配置的使用和更新二、具体实现1.监测缓存过期2.监测配置修改总结前言在开发系统时,配置管理是十分重要的一部分。由于配置不经常变动,并且大多数情况下实时性要求不是特别高,因此将配置存在缓存中是很常用的一种方法。存在缓存中能够提高查找效率,但是也带来了新的问题:配置何时更新?怎么更新?一、配置的使用和更新许多服务器使用配置时,会选择将配置存在内存中。并且为了避免被多次初始化,读取配置的对象采用单例模式生成。同时应该满足以下特点:1.配置缓存有过期时间,一定时间后缓存过期,再次拉取数原创 2021-01-11 23:31:54 · 564 阅读 · 0 评论 -
gorm RowsAffected() 返回0的问题
在项目中,经常需要更新数据,并且要获取到更新的条数从而做不同的操作。在gorm中提供了RowsAffected()的方法获取更新的条数。但是我们执行一下的代码会发现这个方法总是输出0,一点都不好使。db := DBagent.DB.Table("user_tab")err := db.Where( "id = ?", 1).Updates(updateInfo).Error()println(db.RowsAffected()) // 总是打印0这是因为gorm中,如Find,Crea.原创 2020-09-12 09:40:49 · 10342 阅读 · 0 评论 -
go语言Min,Max,Sum函数
在编写go程序时我们经常需要使用多变量的Min,Max函数。但是会发现官方代码中只提供了float类型的Min,Max函数,这是因为浮点型的数据判断会涉及到比较多的逻辑,而整数型的数据判断逻辑十分简单,可以十分轻松的实现。因此这里就分享一下Min,Max和Sum的代码实现。逻辑非常简单:const ( MININT64 = -922337203685477580 MAXINT64 = 9223372036854775807)func Max(nums... int64) i原创 2020-08-23 08:57:31 · 8806 阅读 · 0 评论