数据结构与算法
文章平均质量分 93
CrankZ
这个作者很懒,什么都没留下…
展开
-
限流算法总结:计数器、滑动窗口、漏桶算法、令牌桶算法
为什么需要限流?由于互联网公司的流量巨大,系统上线会做一个流量峰值的评估,尤其是像各种秒杀促销活动,为了保证系统不被巨大的流量压垮,会在系统流量到达一定阈值时,拒绝掉一部分流量。限流会导致用户在短时间内(这个时间段是毫秒级的)系统不可用,一般我们衡量系统处理能力的指标是每秒的QPS或者TPS,假设系统每秒的流量阈值是1000,理论上一秒内有第1001个请求进来时,那么这个请求就会被限流。比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮:用户增长过快因为某个热点事件(秒杀、微原创 2021-03-23 23:55:32 · 7711 阅读 · 6 评论 -
二叉树,二叉搜索树,AVL树,红黑树。学习笔记
树的基本概念维基百科对树的分类树的基本概念与术语在计算器科学中,树(英语:tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点; 没有父节...原创 2018-10-23 09:45:57 · 980 阅读 · 0 评论 -
8个排序算法
排序算法排序算法(Sorting algorithms)是什么? Wikipedia 如是说:In computer science, a sorting algorithm is an algorithm that puts elements of a list in a certain order.也就是说,排序算法,就是某种算法,将列表中的元素按照某种规则排序。常见的如数字大...原创 2018-11-22 18:30:44 · 523 阅读 · 0 评论 -
时间复杂度+常见复杂度解释
前言算法的效率虽然计算机能快速的完成运算处理,但实际上,它也需要根据输入数据的大小和算法效率来消耗一定的处理器资源。要想编写出能高效运行的程序,我们就需要考虑到算法的效率。算法的效率主要由以下两个复杂度来评估:时间复杂度:评估执行程序所需的时间。可以估算出程序对处理器的使用程度。空间复杂度:评估执行程序所需的存储空间。可以估算出程序对计算机内存的使用程度。设计算法时,一般是要先考虑系...原创 2018-12-02 19:07:15 · 20831 阅读 · 4 评论 -
布隆过滤器,原理+案例+代码实现
概述什么是布隆过滤器 布隆过滤器(Bloom Filter)是1970年由布隆提出的,它实际上是由一个很长的二进制向量和一系列随意映射函数组成。 它是一种基于概率的数据结构,主要用来判断某个元素是否在集合内,它具有运行速度快(时间效率),占用内存小的优点(空间效率),但是有一定的误识别率和删除困难的问题。它能够告诉你某个元素一定不在集合内或可能在集合内。...原创 2018-12-09 15:49:10 · 9911 阅读 · 5 评论 -
哈希 学习笔记
Tips:Hash=哈希=散列Tips:哈希经常与哈希函数指一个意思。本文中哈希与哈希函数不做特殊区分,默认就是一个意思。什么是哈希在记录的关键字与记录的存储地址之间建立的一种对应关系叫哈希函数。哈希函数就是一种映射,是从关键字到存储地址的映射。通常,包含哈希函数的算法的算法复杂度都假设为O(1),这就是为什么在哈希表中搜索数据的时间复杂度会被认为是”平均为O(1)的复杂度...原创 2018-12-09 18:30:13 · 2145 阅读 · 0 评论