八大排序算法及其代码实现
选择排序
原理
每次选择数组中的最小元素,排在第一个位置
算法步骤
1 | [38,65,97,76,13,27,49] |
每次选择数组中的最小元素,排在第一个位置
1 | [38,65,97,76,13,27,49] |
假设我们有一个分布式系统,系统中需要维护全局 id
字段,我们可以把它认为是唯一的标识,不能够重复出现,那么问题来了,我们应该如何生成这样的 id
呢?
其实很容易想到的一种解决方式就是使用 Redis
的键值对了,每次更新的时候直接调用 incr
,生成的 id 也是唯一的,还有一种方式就是使用 MySQL
或者其他的数据库,因为我们知道 MySQL
中可以生成自增主键,使用这个主键作为一个分布式 id
也是可行的。
但是上面的这两种方式效率不会特别高,并且依赖于第三方,我们如果想要更高效的生成分布式 id
,那么最好的方式就是尽量本地生成,不需要和其他节点进行协商,但是有一个问题出现了,如何保证 id 不重复?,我们可以使用 Snowflake
算法来解决该问题。
常见的限流算法主要有两种:令牌桶和漏桶算法,也可以使用计数器进行粗暴限流实现。
维护一个请求数量,在一段时间里,如果请求总数超过了limit,那么我们可以把这个请求拒绝掉,也可以将其放入到缓冲队列中,等待下一个时间段再进行操作。