算法.高级
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
漫画:什么是一致性哈希
转载自 玻璃猫 程序员小灰一年之前——未来两年内,系统预估的总订单数量可达一亿条左右。按Mysql单表存储500万条记录来算,暂时不必分库,单库30个分表是比较合适的水平分表方案。于是小灰设计了这样的分表逻辑:订单表创建单库30个分表对用户ID和30进行取模,取模结果决定了记录存于第几个分表查询时需要以用户ID作为条件,根据取模结果确定查询哪一个分表分表方式如下图(为了便于描述,简化为5个分表):...转载 2018-04-13 13:55:20 · 494 阅读 · 0 评论 -
漫画:什么是字典序算法
转载自 漫画:什么是字典序算法?————— 第二天 —————算法题目:给定一个正整数,实现一个方法来求出离该整数最近的大于自身的“换位数”。什么是换位数呢?就是把一个整数各个数位的数字进行全排列,从而得到新的整数。例如53241和23541。小灰也不知道这种经过换位的整数应该如何称呼,所以姑且称其为“换位数”。题目要求写一个方法来寻找最近的且大于自身的换位数。比如下面这样:输入12345,返回1...转载 2018-04-17 23:08:15 · 226 阅读 · 0 评论 -
5分钟带你理解一致性Hash算法
转载自 5分钟带你理解一致性Hash算法一致性Hash算法背景一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memc...转载 2018-04-26 09:29:52 · 241 阅读 · 0 评论 -
Streaming的算法Reservoir Sampling
转载自 这是一个惊艳了我的算法题Reservoir Sampling( Reservoir sampling ) 这是我在今年求职过程中面试的时候被问到的,因为之前很少接触Streaming的算法,在听到这个题目的时候被惊呆了,根本不能理解: 给一个Streaming的Data,未知长度,要求在Streaming结束后返回N个Data,且是等概率的。 在听到这个问题的时候简...转载 2018-08-03 19:14:09 · 738 阅读 · 0 评论 -
浅谈流处理算法 (1) – 蓄水池采样
转载自 浅谈流处理算法 (1) – 蓄水池采样前言 现如今,“大数据 ”已经不是什么新概念,“一千个人眼中有一千个大数据”。社交网络,智能穿戴设备,智能家居,传感器,机器人等每一个热门的词汇背后都是大量的数据。抛开各种噱头和概念,相信每个人都能看到数据的价值,且能感受到数据规模的爆炸式增长。大规模的数据本身并不产生什么价值,只有通过理解数据,发现知识,避免“Garbage In Garbag...转载 2018-08-20 19:11:44 · 933 阅读 · 0 评论 -
青蛙跳台阶的问题——Fibonacci
转载自 青蛙跳台阶的问题——Fibonacci这几天正在复习算法,今天在看一篇文章时偶然看到这个题目,想了一下居然没什么思路……(抱歉,实在太菜。),文章中提示了一个关键词:Fibonacci 数列。然后我又小百度了一下,找了一个具体分析实例,结合两处,这才理清了思路。(汗啊……基础全忘光了,这以后咋办啊……深感担忧……)问题描述一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级...转载 2018-10-12 19:28:02 · 160 阅读 · 0 评论 -
谈谈服务限流算法的几种实现
转载自 谈谈服务限流算法的几种实现保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。今天和大家谈谈限流算法的几种实现方式,本文所说的限流并非是Nginx层面的限流,而是业务代码中的逻辑限流。为什么需要限流按照服务的调用方,可以分为以下几种类型服务1、与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮: 用户增长过快(这是好事)...转载 2018-09-29 19:19:26 · 217 阅读 · 0 评论 -
分布式系统Paxos算法
转载自分布式系统Paxos算法 这是一个有关Paxos算法非常形象的讲解与示范。Paxos是能够基于一大堆完全不可靠的网络条件下却能可靠确定地实现共识一致性的算法。也就是说:它允许一组不一定可靠的处理器(服务器)在某些条件得到满足情况下就能达成确定的安全的共识,如果条件不能满足也确保这组处理器(服务器)保持一致。什么是共识? 具体来说是这样:分布式系统中由于网络之间通讯可能会中断...转载 2018-09-29 19:35:28 · 214 阅读 · 0 评论 -
分布式系统的Raft算法
转载自分布式系统的Raft算法过去, Paxos一直是分布式协议的标准,但是Paxos难于理解,更难以实现,Google的分布式锁系统Chubby作为Paxos实现曾经遭遇到很多坑。 来自Stanford的新的分布式协议研究称为Raft,它是一个为真实世界应用建立的协议,主要注重协议的落地性和可理解性。 在了解Raft之前,我们先了解Consensus一致性这个概念,它是指多个...转载 2018-09-29 19:53:17 · 204 阅读 · 0 评论 -
分布式一致性算法:可能比你想象得更复杂
转载自 分布式一致性算法:可能比你想象得更复杂分布式系统的难题张大胖遇到了一个难题。他们公司的有个服务器,上面保存着宝贵的数据,领导Bill 为了防止它挂掉, 要求张大胖想想办法把数据做备份。张大胖发挥了抽象的能力,在脑海里浮出了这么一个画面, 这个唯一的机器可以成为一个节点:为了提高可用性,可以增加几台机器,通过局域网连接起来,形成一个了分布式的系统:数据在每个节点上都存放一份不就可以高枕无忧了...转载 2018-04-18 20:37:07 · 3419 阅读 · 1 评论 -
浅析负载均衡的6种算法,Ngnix的5种算法
转载自 浅析负载均衡的6种算法,Ngnix的5种算法。常见的几种负载均衡算法 1、轮询法将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。2、随机法通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,其实际效果越来越接...转载 2018-04-25 10:01:51 · 222 阅读 · 0 评论 -
漫画:Bitmap算法 整合版
转载自 玻璃猫 程序员小灰两个月之前——为满足用户标签的统计需求,小灰利用Mysql设计了如下的表结构,每一个维度的标签都对应着Mysql表的一列:要想统计所有90后的程序员该怎么做呢?用一条求交集的SQL语句即可:Select count(distinct Name) as 用户数 from table whare age = '90后' and Occupation = '程序员' ;要想统...转载 2018-04-13 13:48:08 · 4696 阅读 · 2 评论 -
漫画:什么是布隆算法
转载自 玻璃猫 程序员小灰两周之前——爬虫的原理就不细说了,无非是通过种子URL来顺藤摸瓜,爬取出网站关联的所有的子网页,存入自己的网页库当中。但是,这其中涉及到一个小小的问题......URL去重方案第一版:HashSet创建一个HashSet集合,把每一个URL字符串作为HashSet的key插入到集合当中,利用HashSet的Key唯一性来对URL做去重。这个方案看似没毛病,但是经过几轮压测...转载 2018-04-13 13:45:58 · 582 阅读 · 1 评论 -
漫画:什么是A*寻路算法
转载自 玻璃猫 程序员小灰比如像这样子:第一步:把起点放入OpenList第二步:找出OpenList中F值最小的方格,即唯一的方格Node(1,2)作为当前方格,并把当前格移出OpenList,放入CloseList。代表这个格子已到达并检查过了。第三步:找出当前格上下左右所有可到达的格子,看它们是否在OpenList当中。如果不在,加入OpenList,计算出相应的G、H、F值,并把当前格子...转载 2018-04-13 13:42:59 · 611 阅读 · 0 评论 -
漫画:什么是拜占庭将军问题
转载自漫画:什么是拜占庭将军问题什么是拜占庭将军问题?在很久很久以前,拜占庭是东罗马帝国的首都。那个时候罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信使传递消息。在打仗的时候,拜占庭军队内所有将军必需达成一致的共识,才能更好地赢得胜利。但是,在军队内有可能存有叛徒,扰乱将军们的决定。这时候,在已知有成员不可靠的...转载 2019-10-20 14:59:34 · 1055 阅读 · 0 评论 -
漫画:什么是SnowFlake算法
转载自 漫画:什么是SnowFlake算法————— 第二天 —————方法一:UUIDUUID是通用唯一识别码 (Universally Unique Identifier),在其他语言中也叫GUID,可以生成一个长度32位的全局唯一识别码。String uuid = UUID.randomUUID().toString()结果示例:046b6c7f-0b8a-43b9-b35d-6489e...转载 2018-05-06 14:36:17 · 302 阅读 · 0 评论 -
漫画:什么是八皇后问题
转载自 漫画:什么是八皇后问题?题目是什么意思呢?国际象棋中的皇后,可以横向、纵向、斜向移动。如何在一个8X8的棋盘上放置8个皇后,使得任意两个皇后都不在同一条横线、竖线、斜线方向上?让我们来举个栗子,下图的绿色格子是一个皇后在棋盘上的“封锁范围”,其他皇后不得放置在这些格子:下图的绿色格子是两个皇后在棋盘上的“封锁范围”,其他皇后不得放置在这些格子:那么,如何遵循规则,同时放置这8个皇后呢?让我...转载 2018-05-06 14:36:11 · 235 阅读 · 0 评论 -
接口限流算法:漏桶算法&令牌桶算法
转载自 接口限流算法:漏桶算法&令牌桶算法背景每一个对外提供的API接口都是需要做流量控制的,不然会导致系统直接崩溃。很简单的例子,和保险丝的原理一样,如果用电符合超载就会烧断保险丝断掉电源以达到保护的作用。API限流的意义也是如此,如果API上的流量请求超过核定的数值我们就得对请求进行引流或者直接拒绝等操作。限流算法既然要限流,就得提到限流算法了,一般有漏桶算法和令牌桶算法两种限流算法。...转载 2018-04-27 14:11:48 · 645 阅读 · 2 评论 -
常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
转载自 常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去。常见类型包括LFU、LRU、ARC、FIFO、MRU。最不经常使用算法(LFU):这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓...转载 2018-04-25 10:47:20 · 6860 阅读 · 0 评论 -
Round Robin 算法
转载自 Round Robin 算法什么是Round Robin?先来看和他相近的名词,轮询调度算法(Round-Robin Scheduling)轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。轮询调度算法流 假设有一...转载 2018-10-11 19:37:18 · 1455 阅读 · 0 评论