程序员小灰_社区达人页
产品
解决方案
文档与社区
权益中心
定价
云市场
合作伙伴
支持与服务
了解阿里云
备案
控制台
开发者社区
首页
探索云世界
探索云世界
云上快速入门,热门云上应用快速查找
了解更多
问产品
动手实践
考认证
TIANCHI大赛
活动广场
活动广场
丰富的线上&线下活动,深入探索云世界
任务中心
做任务,得社区积分和周边
高校计划
让每位学生受益于普惠算力
训练营
资深技术专家手把手带教
话题
畅聊无限,分享你的技术见解
开发者评测
最真实的开发者用云体验
乘风者计划
让创作激发创新
阿里云MVP
遇见技术追梦人
直播
技术交流,直击现场
下载
下载
海量开发者使用工具、手册,免费下载
镜像站
极速、全面、稳定、安全的开源镜像
技术资料
开发手册、白皮书、案例集等实战精华
插件
为开发者定制的Chrome浏览器插件
探索云世界
新手上云
云上应用构建
云上数据管理
云上探索人工智能
云计算
弹性计算
无影
存储
网络
倚天
云原生
容器
serverless
中间件
微服务
可观测
消息队列
数据库
关系型数据库
NoSQL数据库
数据仓库
数据管理工具
PolarDB开源
向量数据库
热门
Modelscope模型即服务
弹性计算
云原生
数据库
物联网
云效DevOps
龙蜥操作系统
平头哥
钉钉开放平台
大数据
大数据计算
实时数仓Hologres
实时计算Flink
E-MapReduce
DataWorks
Elasticsearch
机器学习平台PAI
智能搜索推荐
人工智能
机器学习平台PAI
视觉智能开放平台
智能语音交互
自然语言处理
多模态模型
pythonsdk
通用模型
开发与运维
云效DevOps
钉钉宜搭
支持服务
镜像站
码上公益
程序员小灰
已加入开发者社区
1806
天
勋章
更多
专家博主
专家博主
星级博主
星级博主
技术博主
技术博主
初入江湖
初入江湖
成就
已发布141篇文章
3条评论
已回答0个问题
0条评论
已发布0个视频
github地址
我关注的人
更多
QQ_Now
QQ_Now
chenqz
chenqz
knitysteross
knitysteross
humphrey86
humphrey86
libinjingshan
libinjingshan
黯灭_邓彬
黯灭_邓彬
萧元
萧元
junbao
junbao
了哥-duff
了哥-duff
天心
天心
黎山
黎山
出羽
出羽
粉丝
更多
游客t6dxzfefe3xs6
游客t6dxzfefe3xs6
游客or6ejhsfdf34e
游客or6ejhsfdf34e
hsouaqojeosws
hsouaqojeosws
mfdeejiog3neg
mfdeejiog3neg
t2f5zfpshgrci
t2f5zfpshgrci
yfcigkkssdkfm
yfcigkkssdkfm
游客kqx2ggzh3j3a4
游客kqx2ggzh3j3a4
游客2fobgrsei2fbo
游客2fobgrsei2fbo
游客dxakq2seppvne
游客dxakq2seppvne
1262022424973984
1262022424973984
游客33mz4o2znbzfe
游客33mz4o2znbzfe
技术能力
兴趣领域
擅长领域
技术认证
暂时未有相关云产品技术能力~
10年Java开发经验,图书《漫画算法》作者,微信公众号【程序员小灰】运营者,全网粉丝超过100万,擅长Java语言和数据结构
精选
高分内容
最新动态
文章
问答
视频
暂无精选文章
暂无更多信息
2022年04月
04.29
13:15:22
发表了文章
2022-04-29 13:15:22
漫画:什么是 “哈夫曼树” ?
哈夫曼树是由麻省理工学院的哈夫曼博士于1952年发明,这到底是一颗什么样的树呢? 刚才我们学习了树的带权路径长度(WPL),而哈夫曼树(Huffman Tree)是在叶子结点和权重确定的情况下,带权路径长度最小的二叉树,也被称为最优二叉树。 举个例子,给定权重分别为1,3,4,6,8的叶子结点,我们应当构建怎样的二叉树,才能保证其带权路径长度最小? 原则上,我们应该让权重小的叶子结点远离树根,权重大的叶子结点靠近树根。
04.29
13:06:57
发表了文章
2022-04-29 13:06:57
漫画:什么是KMP算法?
KMP算法和BF算法的“开局”是一样的,同样是把主串和模式串的首位对齐,从左到右对逐个字符进行比较。
04.29
12:58:02
发表了文章
2022-04-29 12:58:02
漫画:如何优化 “字符串匹配算法”?
BF算法是如何工作的? 正如同它的全称BruteForce一样,BF算法使用简单粗暴的方式,对主串和模式串进行逐个字符的比较。
04.29
12:50:37
发表了文章
2022-04-29 12:50:37
漫画:什么是字符串匹配算法?
比较哈希值是什么意思呢? 用过哈希表的朋友们都知道,每一个字符串都可以通过某种哈希算法,转换成一个整型数,这个整型数就是hashcode: hashcode = hash(string) 显然,相对于逐个字符比较两个字符串,仅比较两个字符串的hashcode要容易得多。
04.26
22:07:56
发表了文章
2022-04-26 22:07:56
漫画:什么是 HTTPS 协议?
HTTP协议全称Hyper Text Transfer Protocol,翻译过来就是超文本传输协议,位于TCP/IP四层模型当中的应用层。 HTTP协议通过请求/响应的方式,在客户端和服务端之间进行通信。
04.26
21:59:30
发表了文章
2022-04-26 21:59:30
漫画:“排序算法” 大总结
冒泡排序: 漫画:什么是冒泡排序? 选择排序: 漫画:什么是选择排序? 插入排序: 漫画:什么是插入排序? 此外还有冒泡排序的变种,鸡尾酒排序: 漫画:什么是鸡尾酒排序?
04.26
21:26:18
发表了文章
2022-04-26 21:26:18
漫画:三种 “奇葩” 的排序算法
介绍三种“异想天开”的排序算法。
04.26
21:20:28
发表了文章
2022-04-26 21:20:28
漫画:什么是基数排序?
数组每一个下标位置的值,代表了数列中对应整数出现的次数。 有了这个“统计结果”,排序就很简单了。直接遍历数组,输出数组元素的下标值,元素的值是几,就输出几次: 0,1,1,2,3,3,3,4,4,5,5,6,7,7,8,9,9,9,9,10 显然,这个输出的数列已经是有序的了。 这就是计数排序的朴素版本。
04.26
21:14:36
发表了文章
2022-04-26 21:14:36
漫画:去掉一个数,如何让剩余的数乘积最大?
举个例子,给定如下数组:要删除哪个元素,才能使得剩余元素的乘积最大呢?
04.26
21:08:44
发表了文章
2022-04-26 21:08:44
漫画:什么是归并排序?
举个例子,有A、B、C、D、E、F、G、H一共8个武术家参考参加比武大会。 第一轮,两两一组,有4名选手胜出(四分之一决赛) 第二轮,两两一组,有两名选手胜出(半决赛) 第三轮,仅剩的两人一组,冠军胜出(总决赛)
04.26
21:03:07
发表了文章
2022-04-26 21:03:07
漫画:什么是希尔排序?
像这样逐步分组进行粗调,再进行直接插入排序的思想,就是希尔排序,根据该算法的发明者,计算机科学家Donald Shell的名字所命名。 上面示例中所使用的分组跨度(4,2,1),被称为希尔排序的增量,增量的选择可以有很多种,我们在示例中所用的逐步折半的增量方法,是Donald Shell在发明希尔排序时提出的一种朴素方法,被称为希尔增量。
04.26
20:55:07
发表了文章
2022-04-26 20:55:07
漫画:什么是旅行商问题?
和小灰所遇到的问题类似,旅行商问题所描述的是这样一个场景: 有一个商品推销员,要去若干个城市推销商品。该推销员从一个城市出发,需要经过所有城市后,回到出发地。每个城市之间都有道路连通,且距离各不相同,推销员应该如何选择路线,使得总行程最短呢?
04.26
20:51:06
发表了文章
2022-04-26 20:51:06
漫画:如何找到两个数组的中位数?(修订版)
对于偶数长度的数组,可以根据中位数分成长度相等的两部分,左半部分最大元素(6),永远小于等于右半部分的最小元素(7)。 对于奇数长度的数组,同样可以根据中位数分成两部分:
04.26
20:44:04
发表了文章
2022-04-26 20:44:04
漫画:什么是插入排序?
人们如何进行扑克牌的排序呢? 举个例子,比如我手中有红桃6,7,9,10这四张牌,已经处于升序排列:这时候,我又抓到了一张红桃8,如何让手中的五张牌重新变成升序呢?用冒泡排序,选择排序,亦或是快速排序?
04.26
20:37:48
发表了文章
2022-04-26 20:37:48
漫画:什么是选择排序?
我们假定要获得升序数列,冒泡排序的原理是什么呢? 顾名思义,就是把每一元素和下一个元素进行比较和交换,使得较大的元素像气泡一样向右侧移动:
04.26
20:31:26
发表了文章
2022-04-26 20:31:26
漫画:什么是最小生成树?
它的最小生成树是什么样子呢?下图绿色加粗的边可以把所有顶点连接起来,又保证了边的权值之和最小,去掉那些多余的边,该图的最小生成树如下。
04.26
20:25:59
发表了文章
2022-04-26 20:25:59
漫画:“旋转数组”中的二分查找
旋转点是什么呢?我们这里规定,假设旋转有序数组恢复为普通有序数组,位于普通有序数组第一个位置的元素,就是旋转数组的旋转点。 直白地说,旋转点就是旋转数组中最小的元素:
04.26
20:19:14
发表了文章
2022-04-26 20:19:14
漫画:什么是二分查找?(修订版)
如果我们把场景转换成最初的面试问题:在包含1000个整型元素的有序数组中查找某个特定整数,又该如何去做呢?
04.26
20:13:06
发表了文章
2022-04-26 20:13:06
漫画:有趣的 “切蛋糕“ 问题
给定蛋糕大小的集合cakes,给定顾客饭量的集合mouths,如何计算出这些蛋糕可以满足的最大顾客数量?
04.26
20:04:20
发表了文章
2022-04-26 20:04:20
漫画:图的 “多源” 最短路径
下面我们来看一看Floyd算法的详细步骤。
04.26
19:57:07
发表了文章
2022-04-26 19:57:07
漫画:Dijkstra 算法的优化
如何求得最短路径的详细节点,而不仅仅是距离?
04.26
19:51:48
发表了文章
2022-04-26 19:51:48
漫画:图的 “最短路径” 问题
究竟什么是迪杰斯特拉算法?它是如何寻找图中顶点的最短路径呢? 这个算法的本质,是不断刷新起点与其他各个顶点之间的 “距离表”。 让我们来演示一下迪杰斯特拉的详细过程。
04.26
19:45:22
发表了文章
2022-04-26 19:45:22
漫画:深度优先遍历 和 广度优先遍历
深度优先遍历简称DFS(Depth First Search),广度优先遍历简称BFS(Breadth First Search),它们是遍历图当中所有顶点的两种方式。
04.26
19:38:18
发表了文章
2022-04-26 19:38:18
漫画:什么是 “图”?(修订版)
微信中,许许多多的用户组成了一个多对多的朋友关系网,这个关系网就是数据结构当中的图(Graph)。
04.26
19:32:55
发表了文章
2022-04-26 19:32:55
漫画:什么是加密算法?
如何进行加密呢?古人想出了一种非常朴素的加密方法,被称为凯撒密码。加密的原理就像下图这样。
04.26
19:27:51
发表了文章
2022-04-26 19:27:51
漫画:如何将一个链表“逆序”?
让我们从链表头部开始,建立三个临时节点的引用,分别为p1,p2,p3。它们分别指向头节点、第二个节点、第三个节点。
04.26
19:21:12
发表了文章
2022-04-26 19:21:12
漫画:寻找无序数组的第k大元素(修订版)
题目是什么意思呢?比如给定的无序数组如下: 如果 k=6,也就是要寻找第6大的元素,这个元素是哪一个呢? 显然,数组中第一大的元素是24,第二大的元素是20,第三大的元素是17 ...... 第6大的元素是9。
04.25
22:45:54
发表了文章
2022-04-25 22:45:54
漫画:如何用Zookeeper实现分布式锁?
1.持久节点 (PERSISTENT) 默认的节点类型。创建节点的客户端与zookeeper断开连接后,该节点依旧存在 。 2.持久节点顺序节点(PERSISTENT_SEQUENTIAL) 所谓顺序节点,就是在创建节点时,Zookeeper根据创建的时间顺序给该节点名称进行编号:
04.25
22:37:26
发表了文章
2022-04-25 22:37:26
漫画:什么是分布式锁?
分布式锁的实现有哪些? 1.Memcached分布式锁 利用Memcached的add命令。此命令是原子性操作,只有在key不存在的情况下,才能add成功,也就意味着线程得到了锁。 2.Redis分布式锁 和Memcached的方式类似,利用Redis的setnx命令。此命令同样是原子性操作,只有在key不存在的情况下,才能set成功。(setnx命令并不完善,后续会介绍替代方案)
04.25
22:27:16
发表了文章
2022-04-25 22:27:16
漫画:什么是ZooKeeper?
Zookeeper的数据模型,Zookeeper的数据模型是什么样子呢?它很像数据结构当中的树,也很像文件系统的目录。 树是由节点所组成,Zookeeper的数据存储也同样是基于节点,这种节点叫做Znode。 但是,不同于树的节点,Znode的引用方式是路径引用,类似于文件路径。
04.25
22:16:34
发表了文章
2022-04-25 22:16:34
漫画:什么是蓝绿部署?
什么是蓝绿部署? 蓝绿部署,英文名Blue Green Deployment,是一种可以保证系统在不间断提供服务的情况下上线的部署方式。 如何保证系统不间断提供服务呢? 蓝绿部署的模型中包含两个集群,就好比海豚的左脑和右脑。
04.25
22:07:39
发表了文章
2022-04-25 22:07:39
漫画:什么是分布式事务?
什么是分布式事务?分布式事务用于在分布式系统中保证不同节点之间的数据一致性。分布式事务的实现有很多种,最具有代表性的是由Oracle Tuxedo系统提出的XA分布式事务协议。
04.25
21:55:56
发表了文章
2022-04-25 21:55:56
漫画:什么是服务熔断?
熔断这一概念来源于电子工程中的断路器(Circuit Breaker)。在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。
04.25
21:47:32
发表了文章
2022-04-25 21:47:32
漫画:什么是数据仓库?
数据库和数据仓库之间的关系。如果说,那个世界的每一个生命个体都是一条数据记录,那么普通的魔戒的地位就好比是数据库,而至尊魔戒的地位就好比是数据仓库。
04.25
21:31:48
发表了文章
2022-04-25 21:31:48
漫画:什么是微服务?
缺点一:项目过于臃肿,当大大小小的功能模块都集中在同一项目的时候,整个项目必然会变得臃肿,让开发者难以维护。 缺点二:资源无法隔离,就像刚刚小灰的经历一样,整个单体系统的各个功能模块都依赖于同样的数据库、内存等资源,一旦某个功能模块对资源使用不当,整个系统都会被拖垮。
04.25
21:23:07
发表了文章
2022-04-25 21:23:07
漫画:什么是协程?
什么是进程和线程有一定基础的小伙伴们肯定都知道进程和线程。 进程是什么呢?直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。 进程拥有代码和打开的文件资源、数据资源、独立的内存空间。
04.25
21:13:10
发表了文章
2022-04-25 21:13:10
漫画:什么是CAS机制?(进阶篇)
这一期我们来深入介绍之前遗留的两个问题:1. Java当中CAS的底层实现2. CAS的ABA问题和解决方法.
04.25
16:51:51
发表了文章
2022-04-25 16:51:51
漫画:什么是 CAS 机制?
加了同步锁之后,count自增的操作变成了原子性操作,所以最终的输出一定是count=200,代码实现了线程安全。
04.25
16:39:51
发表了文章
2022-04-25 16:39:51
漫画:如何实现大整数相乘?(整合版)
大整数相乘又是如何实现的呢? 起初,小灰认为只要按照大整数相加的思路稍微做一下变形,就可以轻松实现大整数相乘。但是随着深入的学习,小灰才发现事情并没有那么简单......
04.25
16:22:16
发表了文章
2022-04-25 16:22:16
漫画:如何实现大整数相加?(修订版)
本周一发布的漫画,存在一些细节上的问题,在这里做出如下修改:1.修改了代码中进位判断条件的bug,优化了部分代码的可读性。2.增加了JDK工具类BigInteger和BigDecimal的说明。3.补充了一个优化方法,即把大整数拆分成数组时,按十进制每9位拆分,而非每1位拆分。把整数倒序存储,整数的个位存于数组0下标位置,最高位存于数组长度-1下标位置。之所以倒序存储,更加符合我们从左到右访问数组的习惯。
04.25
16:03:09
发表了文章
2022-04-25 16:03:09
漫画:删去k个数字后的最小值
举例:给定整数1593212,删去3个数字,新整数的最小情况是1212给定整数30200,删去1个数字,新整数的最小情况是200,给定整数10,删去2个数字,新整数的最小情况是0,需要注意的是,给定的整数大小可以超过long类型的范围,所以需要用字符串来表示。
04.25
15:47:58
发表了文章
2022-04-25 15:47:58
漫画:什么是LRU算法?
用户信息当然是存在数据库里。但是由于我们对用户系统的性能要求比较高,显然不能每一次请求都去查询数据库。 所以,小灰在内存中创建了一个哈希表作为缓存,每次查找一个用户的时候先在哈希表中查询,以此提高访问性能。
04.25
15:09:17
发表了文章
2022-04-25 15:09:17
漫画:如何用栈实现队列?
既然我们拥有两个栈,那么我们可以让其中一个栈作为队列的入口,负责插入新元素;另一个栈作为队列的出口,负责移除老元素。队列的主要操作无非有两个:入队和出队。在模拟入队操作时,每一个新元素都被压入到栈A当中。
04.25
14:55:35
发表了文章
2022-04-25 14:55:35
漫画:什么是桶排序?
让我们先来回顾一下计数排序: 计数排序需要根据原始数列的取值范围,创建一个统计数组,用来统计原始数列中每一个可能的整数值所出现的次数。
04.25
14:46:40
发表了文章
2022-04-25 14:46:40
漫画:什么是计数排序?
如何给无序的随机整数排序呢? 非常简单,让我们遍历这个无序的随机数列,每一个整数按照其值对号入座,对应数组下标的元素进行加1操作。 比如第一个整数是9,那么数组下标为9的元素加1
04.25
14:32:35
发表了文章
2022-04-25 14:32:35
漫画:什么是优先队列?
队列的特点是什么?聪明的小伙伴们都知道,是先进先出(FIFO)。那么,优先队列又是什么样子呢? 优先队列不再遵循先入先出的原则,而是分为两种情况: 最大优先队列,无论入队顺序,当前最大的元素优先出队。 最小优先队列,无论入队顺序,当前最小的元素优先出队。
04.25
14:23:27
发表了文章
2022-04-25 14:23:27
漫画:什么是堆排序?
在上一篇漫画中,小灰介绍了 二叉堆 这样一种强大的数据结构: 漫画:什么是二叉堆?(修正版) 那么,这个二叉堆怎样来使用呢?我们这一期将会详细讲述。
04.25
14:13:09
发表了文章
2022-04-25 14:13:09
漫画:什么是二叉堆?(修正版)
什么是二叉堆?二叉堆本质上是一种完全二叉树,它分为两个类型:1.最大堆2.最小堆 什么是最大堆呢?最大堆任何一个父节点的值,都大于等于它左右孩子节点的值。
04.24
23:21:10
发表了文章
2022-04-24 23:21:10
漫画:什么是时间复杂度?
时间复杂度的意义,究竟什么是时间复杂度呢?让我们来想象一个场景:某一天,小灰和大黄同时加入了一个公司......一天过后,小灰和大黄各自交付了代码,两端代码实现的功能都差不多。大黄的代码运行一次要花100毫秒,内存占用5MB。小灰的代码运行一次要花100秒,内存占用500MB。
04.24
23:09:11
发表了文章
2022-04-24 23:09:11
漫画:什么是快速排序?(完整版)
同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮只把一个元素冒泡到数列的一端,而快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成了两个部分。
1
2
3
跳转至:
发表了文章
2022-07-13
实操教学|如何用Serveless3分钟做好邀请函?
发表了文章
2022-05-07
漫画:有趣的“分苹果”问题
发表了文章
2022-05-07
漫画:什么是IaaS、PaaS、SaaS?
发表了文章
2022-05-07
Java底层知识:什么是 “桥接方法” ?
发表了文章
2022-05-07
谷歌面试题:男孩多还是女孩多?
发表了文章
2022-05-07
花了整整两周,小灰肝出一份算法路线图!
发表了文章
2022-05-07
如何让数据结构可视化?
发表了文章
2022-05-07
女朋友问小灰:什么是数据仓库?什么是数据湖?什么是智能湖仓?
发表了文章
2022-05-07
Java的“泛型”特性,你以为自己会了?(万字长文)
发表了文章
2022-04-30
什么是数据库的 “缓存池” ?(万字干货)
发表了文章
2022-04-30
天天当键盘侠,你知道从按键到响应的底层原理吗?
发表了文章
2022-04-29
一文讲透计算机的“中断”
发表了文章
2022-04-29
Java的泛型
发表了文章
2022-04-29
什么是Spring的AOP特性?
发表了文章
2022-04-29
漫画:Object类很大,你忍一下(完结篇)
发表了文章
2022-04-29
漫画:Object类很大,你忍一下
发表了文章
2022-04-29
漫画:什么是JVM的垃圾回收?
发表了文章
2022-04-29
什么是设计模式?程序员如何学好设计模式?
发表了文章
2022-04-29
漫画设计模式:什么是 “装饰器模式” ?
发表了文章
2022-04-29
漫画:什么是 “原型模式” ?
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息
勋章
关注
粉丝