沙滩de流沙
不积跬步,无以至千里!
既然选择了远方,就要风雨兼程!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法设计(贪婪算法、漏桶算法、令牌桶算法、计数器)
一、贪心算法也叫贪婪算法,是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解,最终通过各环节局部最优解促成整体的最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性(即某个状态以后的过程不会影响以前的状态,只与当前状态有关。)所以,对所采用的贪心策略一定要仔细分析其是否满足无后效性。1.1贪心算法的基本思路..原创 2020-07-31 10:44:05 · 834 阅读 · 0 评论 -
面试官:你了解一致性Hash算法吗?
面试官问这个问题不奇怪,可以说一致性Hash算法是分布式系统中的一个基石一样的算法,没有这个算法可能很多问题不太好解决。一、解决什么问题?先看看一致性Hash算法到底解决的是什么场景中的问题。假设有三台缓存服务器,用于缓存图片,这三台缓存服务器编号为0号、1号、2号。现在,有3万张图片需要缓存,这些图片被均匀随机的缓存到这3台服务器上,每台服务器能够缓存1万张左右的图片,以便它们能够分摊缓存的压力。但是如果这样做,当我们需要访问某个缓存项时,则需要遍历3台缓存服务器,从3万个缓存项中找到我们需要原创 2021-10-02 11:45:15 · 518 阅读 · 1 评论 -
备战大厂—— Leetcode 刷题(二叉树、三数和、回文子串、公共祖先、TOP K、栈与对列的互相实现等大厂常考算法 【56】 题)
最近面了京东(已拿offer)、百度(等待二面)、字节(二面挂)、蚂蚁金服(等待三面中),大厂都考了算法,一般算法占面试的20%,但是算法挂了希望就不大了(面试字节,面试官让手写代码的地方有两个:一个是手写静态内部类型的单例模式,这个写出来了,另一个就是全排列算法,没写出来,挂了),这里梳理总结下已经考到的算法以及常考的算法,不打无准备之仗!(给自己梳理的,就不对大家可见了,如果想看那就私信我!)原创 2021-10-01 23:26:40 · 332 阅读 · 0 评论 -
查找算法专辑(二分查找)未完待续....
一、二分查找原理:首先,使用二分法查找的前提是:被查找的数组已排好序具体实现:假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量front,mid,end分别指向数据的上界,中间和下界,mid=(front+end)/2.1.开始令front=0(指向3),end=7(指向88),则mid=3(指向36)。因为a[mid]>x,故应在前半段中查找。2.令新的end=mid-1=2,而front=0不变,则新的mid=1。此时x>a[mid].原创 2020-07-24 15:59:43 · 185 阅读 · 1 评论 -
分布式限流方案
一、限流算法主要的限流算法包含:漏桶算法、令牌桶算法、计数器 。每种限流算法详细可以参考这里二、分布式限流方案一般也就分为三种:Gateway限流,redis+lua实现限流,nginx限流 。2.1 Gateway限流Spring Cloud Gateway 中提供了 RequestRateLimiterGatewayFilterFactory 类,这个是基于令牌桶实现的。它内置RedisReteLimiter,依赖于Redis存储限流配置和统计数据,也可以通过继承org.spri.原创 2021-09-24 18:09:03 · 959 阅读 · 0 评论 -
面试官:你知道 LRU算法 —— 缓存淘汰算法吗?
常用缓存提升数据查询速度,由于缓存容量有限,当缓存容量到达上限,就需要删除部分数据挪出空间,这样新数据才可以添加进来。缓存数据不能随机删除,一般情况下我们需要根据某种算法删除缓存数据。常用淘汰算法有 LRU,LFU,FIFO。这篇文章我们聊聊 LRU 算法。一、LRU 简介LRU 是 Least Recently Used 的缩写,这种算法认为最近使用的数据是热门数据,下一次很大概率将会再次被使用。而最近很少被使用的数据,很大概率下一次不再用到。当缓存容量的满时候,优先淘汰最近很少使用的数据。假设原创 2021-10-03 12:56:53 · 13356 阅读 · 1 评论 -
【一篇搞定】十一种排序算法
一、冒泡排序原理:比较两个相邻的元素,将值大的元素交换到右边。比如:要排序数组:[10,1,35,61,89,36,55]第一趟排序:第一次排序:10和1比较,10大于1,交换位置 [1,10,35,61,89,36,55]第二次排序:10和35比较,10小于35,不交换位置 [1,10,35,61,89,36,55]第三次排序:35和61比较,35小于61,不交换位置 [1,10,35,61,89,36,55]第四次排序:61和89比较,61小于89,不交换位置 ..原创 2021-07-12 20:31:47 · 556 阅读 · 1 评论 -
有了这篇,面试官问MySQL,再也不虚了!(二)
写在前面:最近学习了大佬的MySQL课程,很有深度,解开了我很多疑点,值得去研究学习,这里整理记录下。当然这里面需要一些前置知识储备,详见:二叉树、红黑树、B树、B+树合集MySQL相关知识点一、随机查询现象:英语学习App首页有一个随机显示单词的功能,也就是根据每个用户的级别有一个单词表,然后这个用户每次访问首页的时候,都会随机滚动显示三个单词。发现随着单词表变大,选单词这个逻辑变得越来越慢,甚至影响到了首页的打开速度。mysql>CREATETABLE.原创 2021-03-31 08:53:57 · 520 阅读 · 0 评论 -
有了这篇,面试官问MySQL,再也不虚了!(一)
一、一条SQL查询语句是如何执行的?select * from student where ID=1;上面是一条最简单的查询SQL语句,我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。看似简单的背后有着复杂的过程,实际对应着Mysql的逻辑架构:MySQL 的逻辑架构图总体上,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所..原创 2021-03-31 08:52:32 · 472 阅读 · 0 评论 -
为啥ElasticSearch搜索那么快?倒排索引又是啥?
一、倒排索引假如给你一个文本库,现在让你去找出所有包含“Hello”这个单词的文档,并按该单词出现的频率高低进行权重,即出现次数最多的文本优先展示。1.1正排索引倒排索引是相对于正排索引来说的,对于上面的场景,先看正排索引会怎么做:如果是正排索引,...原创 2021-01-10 20:12:00 · 811 阅读 · 0 评论 -
数据结构 与 算法
O一、基本概念和术语1.1 数据、数据结构数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。比如整型等数值类型、字符、声音、视频、图像等。数据结构:是互相之间存在一种或多种特定关系的数据元素的集合。1.2 算法算法:是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,且每条指令表示一个或多个操作。算法的特性:输入输出:算法有零个输入或多个输入,至少有一个或多个输出 有穷性:执行有限的步骤后就会有结果,不会出现无.原创 2020-09-07 17:12:25 · 323 阅读 · 1 评论 -
二叉树、红黑树、B树、B+树、图、Trie树合集-----妈妈再也不用担心我的“树”拉!
这里把各种树做个总结,分别介绍各个树是什么,什么原理,什么特点,什么情况下使用,另外很多时候它们很多地方是相似的,还要加以区别,之前我身边一个很多年开发的经验的老开发还以为B树、B-树、B+树是三种树,实际没有B-树,它实际就是B树,要是不区分清楚闹出这样的笑话就尴尬了。或者别人说“平衡树”、“满二叉树”、“3阶树”等概念时你一脸懵逼,想吹牛逼但是没词儿,那也挺尴尬,怎么办,一点一点学吧,下面一 一介绍。一、树的基本术语若一个结点有子树,那么该结点称为子树根的"双亲",子树的根是该结点的"孩子"原创 2020-06-13 21:30:46 · 825 阅读 · 0 评论 -
数据结构--队列Queue的实现原理
一、what is 队列?1.1 现实中的队列队列队列就是要排队啊,排队就是要等待啊,现实中有哪些需要等待的?你们有没有这样的经历,在用电脑的时候,鼠标点什么似乎都没用,双击任何快捷方式都不动弹,处于疑似死机的状态。但等一会后,电脑又似乎醒过来了,又把你刚才点击的所有操作全部按顺序执行一遍。这其实是因为操作系统中的多个程序因需要通过一个通道输出,而按先后次序排队等待造成的。......原创 2020-03-13 18:22:37 · 1163 阅读 · 2 评论