数据结构
文章平均质量分 62
我一个搬砖人
小弟一个后端狗,大佬们带带我。
展开
-
go: 使用简单的计数器计算请求的qps
背景一个稳定的后端服务,需要具备相当的容灾能力。假设因为有事故出现,或者是由于活动等原因,导致有突发大量流量请求服务,此时要保证系统不会被打垮,依然能在力所能及的范围内提供服务。要应付以上场景,也就意味着系统具备限流能力。一些常用的限流方法有: 计数器算法,令牌桶算法,漏桶算法等。然而在工作中,我们可能希望做一些更加复杂的操作。 因此如果能够实时计算到当前系统的QPS,根据QPS判断进行不同操作,就能实现在不同的流量中的分级处理。 Qps计算Qps即每秒查询率,表示每一秒钟的请求量。明原创 2022-01-15 11:17:30 · 2140 阅读 · 2 评论 -
字节算法题:基于用户登录日志计算任一时间在线人数
在面试的时候遇到这样一道题。给定一些用户登录的日志,计算任意时间的在线人数。其中用户登录日志包括如下信息:type LoginLog struct { userId int loginTime int logoutTime int}根据题目,一天24小时,我们有一堆的用户登录日志。简单的做法是我们遍历获取日志,然后对于用户在线的这段时间,对每一个时间点对在线人数加一。则程序如下:func calOnlineUserCount(logList []*Lo原创 2021-07-16 11:18:48 · 3049 阅读 · 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 · 576 阅读 · 2 评论 -
三维装箱决策问题
目录1.三维装箱决策问题2.三维装箱决策问题分析3.算法描述(1) 原理描述(3) 时间复杂度分析1.三维装箱决策问题三维装箱问题即研究如何用最少数量的箱子将物品装起来。其描述如下:假设有n个物品,其长宽高信息分别为(l1,w1,h1)(l_1,w_1,h_1)(l1,w1,h1),(l2,w2,h2)(l_2,w_2,h_2)(l2,w2,h2)…(ln,wn,hn)(l_n,w_n,h_n)(ln,wn,hn)。有容器,其容积分别为VVV。用最少的箱子,将全部物体都装起来。原创 2021-01-23 11:59:39 · 13515 阅读 · 7 评论 -
无向图寻找两点间的最短路径
1.简介 无向图是图结构的一种。本次程序利用邻接表实现无向图,并且通过广度优先遍历找到两点之间的最短路径。2.广度优先遍历 广度优先遍历(BFS)和深度优先遍历(DFS)是图结构中最常用的遍历方式。其中广度优先遍历配合上队列能够找到两点之间的最短路径,同时也能解决一些其他的问题(比如寻找迷宫的最短逃离路线)。广度优先遍历寻找两点之间最短路径的操作分为以下几步:...原创 2018-10-17 08:10:02 · 11403 阅读 · 3 评论 -
无向图计算vertex cover
1.vertex cover的定义 一个无向图G(V ,E)的vertex cover VC是顶点集V的一个子集,如果边uv∈ E,则顶点u,v至少有一个点属于VC。 可以看出其实寻找vertex cover并不难,因为顶点集V本身就是一个vertex cover。而难的是寻找最小的vertex cover。vertex cover的寻找可以用于街道安装摄像头等情况的计...原创 2019-01-28 09:57:33 · 6283 阅读 · 0 评论 -
硬币找零问题(贪婪算法和动态规划)
1.硬币找零问题 在学习算法分析时候的一个经典问题就是硬币找零问题。该问题是给一些不同面值的硬币,其中=1,以及数值M。要计算出找M所需要的最少硬币数。 比如我们有硬币<1,5,10,20>,那么如果要找33块钱的话,最少的零钱数是20+10+1+1+1,一共5个硬币。这就是硬币找零问题的简介。 2.贪婪算法(Greedy algorithm) 从上...原创 2019-02-09 01:33:17 · 11810 阅读 · 0 评论