自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

被基金支配的打工人

被基金支配的打工人

  • 博客(80)
  • 收藏
  • 关注

原创 不小心删表删库了,还能救

前言常在河边走,哪能不湿鞋?今天有客户联系说误更新数据表,导致数据错乱了,希望将这张表恢复到一周前的指定时间点。 数据库版本为11.2.0.1 操作系统是Windows64 数据已经被更改超过1周时间 数据库已开启归档模式 没有DG容灾 有RMAN备份 下面模拟一下问题的详细解决过程!一、分析以下只列出常规恢复手段: 数据已经误操作超过一周,所以排除使用UNDO快照来找回; 没有DG容灾环境,排除使用DG闪回...

2021-11-11 14:00:59 517

原创 面试官问:什么是布隆过滤器?

布隆过滤器布隆过滤器是一种由位数组和多个哈希函数组成概率数据结构,返回两种结果可能存在和一定不存在。布隆过滤器里的一个元素由多个状态值共同确定。位数组存储状态值,哈希函数计算状态值的位置。根据它的算法结构,有如下特征:使用有限位数组表示大于它长度的元素数量,因为一个位的状态值可以同时标识多个元素。 不能删除元素。因为一个位的状态值可能同时标识着多个元素。 添加元素永远不会失败。只是随着添加元素增多,误判率会上升。 如果判断元素不存在,那么它一定不存在。比如下面,X,Y,Z 分别...

2021-11-03 13:03:26 386

原创 面试官问我JVM内存结构,我真的是

面试官:今天来聊聊JVM的内存结构吧?候选者:嗯,好的候选者:前几次面试的时候也提到了:class文件会被类加载器装载至JVM中,并且JVM会负责程序「运行时」的「内存管理」候选者:而JVM的内存结构,往往指的就是JVM定义的「运行时数据区域」候选者:简单来说就分为了5大块:方法区、堆、程序计数器、虚拟机栈、本地方法栈候选者:要值得注意的是:这是JVM「规范」的分区概念,到具体的实现落地,不同的厂商实现可能是有所区别的。面试官:嗯,顺便讲下你这图上每个区域的内容吧。候选者:好

2021-11-02 13:21:04 3668 7

原创 深入了解Mybatis架构设计

架构设计我们可以把Mybatis的功能架构分为三层:API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。Mybatis和数据库的交互有两种方式:使用传统的Mybatis提供API 使用Mapper代理的方式数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。他主要的目的是根据调用的请求完成一次数据库操作。 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置

2021-11-02 13:20:10 276

原创 TCP 拥塞窗口原理

学过网络相关课程的,都知道TCP中,有两个窗口:滑动窗口(在我们的上一篇文章中有讲),接收方通过通告发送方自己的可以接受缓冲区大小(这个字段越大说明网络吞吐量越高),从而控制发送方的发送速度。 拥塞窗口,也就是本文要讲的。概念一个连接的TCP双端只是网络最边缘的两台主机,他们不知道整个网络是如何工作的,因此他们不知道彼此之间的有效吞吐量。因此,他们必须找到一种方法来确定它。我们称之为拥塞窗口 (CWND)。这是在我们必须停止并等待确认之前可以发送的字节数。❝拥塞窗口是决定任何时候可以发出的

2021-10-29 13:15:33 3332

原创 Spring Boot 中使用 Hikari,给我整不会了

前言最近自己使用 Spring boot 搭建了一个非常简单的项目,可是不知道为啥控制台总是出现Thread starvation or clock leap detected (housekeeper delta=3h24s779ms457µs999ns).气的我直接找到源码,GitHub 一顿查询。最终解决了问题,开心。我是使用 Spring Boot 2.5.4 我们都知道 Spring boot 默认就依赖了 Hikari ,而我的 JDK 版本是 11 ,这里就有问题了 Spri

2021-10-27 13:49:19 2725 1

原创 功能、资源权限管理的设计

一、目的管理系统用户的功能菜单权限,物理资源(文件、数据)权限。二、RBAC模型设计RBAC简介BAC模型(Role-Based Access Control:基于角色的访问控制)模型是一种权限实现模型,是系统权限设计中的一套方法论。RBAC认为权限授权的过程可以抽象地概括为:Who是否可以对What进行How的访问操作,并对这个逻辑表达式进行判断是否为True的求解过程,也即是将权限问题转换为Who、What、How的问题,Who、What、How构成了访问权限三元组。RBAC模型

2021-10-27 13:37:00 522

原创 Java程序员必须知道的Java10特性

在上一篇我们对Java 9的特性进行了一些回顾,今天接着来看看Java 10带来了什么特性。之所以需要把Java 8 到Java 17的特性归纳一遍,因为Java社区对Java 17的重视程度前所未有。话不多说,让我们走进Java 10。Java 10从Java 10 开始,Java的迭代周期缩短为半年,半年发布一个版本。局部变量类型推断在Java 6时初始化一个Map需要我们这样来声明:Map<String, String> map = new HashMap<S.

2021-10-25 13:47:47 126

原创 最大公约数和最小公倍数

/***********************************************************************目的:求输入两个数的最大公约数分析:确定较大值或较小值,并把较小值拷贝。 最大公约数不会超过两个数的较小值,所以从较小值开始往下找,直到能同时被两个数整除24 1824 17...25 6平台:Visual studio 2017 && windows *****************************************.

2021-10-25 13:46:00 202

原创 产品说,我只需要一个有亿点复杂的查询界面

有的时候,你需要动态构建一个比较复杂的查询条件,传入数据库中进行查询。而条件本身可能来自前端请求或者配置文件。那么这个时候,表达式树,就可以帮助到你。本文我们将通过几个简短的示例来了解如何完成这些操作。你也可能接到过这些需求从模型进行查询基于配置查询今天我们看看表达式树如何实现这些需求。一切都还要从盘古开天开始说起以下是一个简单的单元测试用例。接下来,我们将这个测试用例改的面目全非。[Test]publicvoidNormal(){varre=E...

2021-10-25 13:25:26 115

原创 WPF实现雷达图(仿英雄联盟)

前言 有小伙伴提出需要实现雷达图。由于在WPF中没有现成的雷达图控件,所以我们自己实现一个。PS:有更好的方式欢迎推荐。代码如下一、创建RadarChart.cs菜单继承Control代码如下。RadarChart.cs实现思路如下1、RadarArray:存放展示集合。2、重写OnRender。3、根据三角函数和圆的半径计算出圆上的N个点绘制成多边形GetPolygonPoint()。4、在绘制多边形的时候因为需要多个大小不一的多...

2021-10-25 13:23:30 349 1

原创 MongoDB中如何优雅地删除大量数据

删除大量数据,无论是在哪种数据库中,都是一个普遍性的需求。除了正常的业务需求,我们需要通过这种方式来为数据库“瘦身”。为什么要“瘦身”呢? 表的数据量到达一定量级后,数据量越大,表的查询性能会越差。 毕竟数据量越大,B+树的层级会越高,需要的IO也会越多。 表的数据有冷热之分,将很多无用或很少用到的数据存储在数据库中会消耗数据库的资源。 譬如会占用缓存;会增加备份集的大小,进而影响备份的恢复时间等。 所以,对于那些无用的数据,我们会定期删除。对于那些很少用到的数据,则会定

2021-10-25 13:21:37 2499

原创 JVM、GC看这一篇就够了!

Class类加载- 加载Loading通过全限定类名,把一个类从二进制的Class文件加载到内存当中- 类加载器Bootstrap:启动类加载器。加载lib/rt.jar charset.jar核心类 C++实现 Extension:扩展类加载器。加载扩展jar包 jre/lib/ext/*.jar Application/System:系统类加载器。加载classpath指定内容,他是我们java中默认的类加载器,我们写的class都是用他加载的 Custom ClassLo

2021-10-23 13:37:27 371

原创 Nginx 301跳转踩坑总结

有一天,公司的服务切换域名,禁用了http协议,只允许通过https协议访问。这时出现了一个奇奇怪怪的问题,在浏览器地址栏敲入url访问静态资源目录时,发现默认跳转到了http协议的地址。网络拓扑结构如下:如上图所示,客户端https请求先到达API网关,然后网关将请求通过http协议转发到静态资源服务器。调出浏览器发现客户端发送的https请求收到了一个301状态码的响应,并且响应头中的Location字段便是跳转到的http协议的地址。1.原因分析为啥服务端会返回301呢?首先需要弄

2021-10-23 13:35:46 4400

原创 Spring选择哪种注入方式

1. Spring常见的注入方式1.1 Field注入field即在变量上直接使用注解进行注入,内部使用反射的方式实现注入到field中。优点:代码简洁有效,最为开发人员喜欢使用 缺点:依赖对象可能为null而报空指针异常,容易出现循环依赖问题 @Autowired private GoodsCategoryService goodsCategoryService;1.2 setter注入spring 3.x版本中推荐使用的注入方式,通过在set方法上使用注解完成对象注入。优

2021-10-23 13:34:54 2714

原创 可口的JAVA-并发控制之CountDownLatch

前言本文带大家系统的学习一下CountDownLatch知识,从介绍、方法、场景、原理四个角度方面开展学习,话不多说,马上开始。一:介绍CountDownLatch是一种同步辅助工具,允许一个或多个线程等待*其他线程中正在执行的一组操作完成。CountDownLatch 使用给定的 count 进行初始化。* {await} 方法阻塞,直到当前计数达到零,因为调用了 {countDown} 方法,之后*所有等待线程被释放,并且任何后续调用* {await } 立即返回。这是一种一次性现象,计

2021-10-23 13:34:04 1328

原创 阿里为什么建议给MVC三层架构多加一层Manager层?

MVC三层架构我们在刚刚成为程序员的时候,就会被前辈们 “教育” 说系统的设计要遵循MVC(Model-View-Controller)架构。它将整体的系统分成了 Model(模型),View(视图)和 Controller(控制器)三个层次,也就是将用户视图和业务处理隔离开,并且通过控制器连接起来,很好地实现了表现和逻辑的解耦,是一种标准的软件分层架构。MVC三层架构MVC分层架构是架构上最简单的一种分层方式。为了遵循这种分层架构我们在构建项目时往往会建立这样三个目录:controlle.

2021-10-22 13:37:46 1510 1

原创 扯一把 Spring 的三种注入方式,到底哪种注入方式最佳?

循环依赖这个问题,按理说我们在日常的程序设计中应该避免,其实这个本来也是能够避免的。不过由于总总原因,我们可能还是会遇到一些循环依赖的问题,特别是在面试的过程中,面试考察循环依赖,主要是想考察候选人对 Spring 源码的熟悉程度,因为要把循环依赖这个问题解释清楚,涉及到不少 Spring 源码。今天松哥抽空和大家简单聊聊这个话题,问题比较庞大,我可能花几篇文章来和大家分享下,今天先来聊聊实例的注入方式。1. 实例的注入方式首先来看看 Spring 中的实例该如何注入,总结起来,无非三种:

2021-10-22 13:24:54 4057 4

原创 新人问一般都用哪些 Linux 命令,我把这个扔了过去

虽然平时大部分工作都是和Java相关的开发, 但是每天都会接触Linux系统, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行环境中. 自己记忆力不好, 很多有用的Linux命令不能很好的记忆, 现在逐渐总结一下, 以便后续查看.基本操作Linux关机,重启#关机shutdown-hnow#重启shutdown-rnow查看系统,CPU信息#查看系统内核信息uname-a#查看系统内核版本cat/proc/version#...

2021-10-22 13:23:29 772

原创 耗时一个月,整理出这份Hadoop吐血宝典

本文档参考了关于 Hadoop 的官网及其他众多资料整理而成,为了整洁的排版及舒适的阅读,对于模糊不清晰的图片及黑白图片进行重新绘制成了高清彩图。目前企业应用较多的是Hadoop2.x,所以本文是以Hadoop2.x为主,对于Hadoop3.x新增的内容会进行说明!一、HDFS1. HDFS概述Hadoop 分布式系统框架中,首要的基础功能就是文件系统,在 Hadoop 中使用 FileSystem 这个抽象类来表示我们的文件系统,这个抽象类下面有很多子实现类,究竟使用哪一种,需要...

2021-10-22 13:21:30 175

原创 小心陷入MySQL索引的坑

索引可以说是数据库中的一个大心脏了,如果说一个数据库少了索引,那么数据库本身存在的意义就不大了,和普通的文件没什么两样。所以说一个好的索引对数据库系统尤其重要,今天来说说MySQL索引,从细节和实际业务的角度看看在MySQL中B+树索引好处,以及我们在使用索引时需要注意的知识点。合理利用索引在工作中,我们可能判断数据表中的一个字段是不是需要加索引的最直接办法就是:这个字段会不会经常出现在我们的where条件中。从宏观的角度来说,这样思考没有问题,但是从长远的角度来看,有时可能需要更细致的思考,比如我

2021-10-20 16:24:36 391

原创 最佳适应算法模拟内存分配

最佳适应算法从全部空闲区中找出能满足作业要求的,且大小最小的空闲分区,这种方法能使碎片尽量小。问题描述Given five memory partitions of 100 KB, 500 KB, 200 KB, 300 KB, and 600 KB (in order), how would each of the first-fit, best-fit, and worst-fit algorithms place processes of 212 KB, 417 KB, 112 KB, a

2021-10-20 13:32:15 632

原创 hadoop学习笔记:运行wordcount对文件字符串进行统计案例

我最近使用四台Centos虚拟机搭建了一套分布式hadoop环境,简单模拟了线上上的hadoop真实分布式集群,主要用于业余学习大数据相关体系。其中,一台服务器作为NameNode,一台作为Secondary NameNode,剩下两台当做DataNodes节点服务器,类似下面这样一个架构—— NameNode Secondary NameNode DataNodes master1(192.168.200.111) √ master2(192.1

2021-10-20 13:20:09 1018

原创 好奇!仅 13kB 大小的游戏,源码长啥样?

这个马赛克风格的表情正好 13Kb,有人竟然能用一个表情大小的空间,制作个游戏出来。我就不信这么点的地儿,能写出个花来?游戏能好玩吗?因为这些游戏点开就能玩,我抱着试一试的心态把玩了一会。事实证明是我的无知限制了我的想象力,这些 13kB 的游戏并没有我想的那么简陋和无聊。它们不仅有丰富的图像,还有音乐、物理、重力系统,包含射击、益智、技巧等不同的类别玩法多样,令我眼前一亮!下面我就整理出了 3 个我觉得好玩的游戏,并附上了在线体验的地址以及 GitHub 上的源码。大家...

2021-10-20 13:05:59 2045

原创 redis在微服务领域的贡献

前言说到redis,可能大家的脑海中蹦出的关键词是:NoSQL、KV、高性能、缓存等。但今天的文章从另一个角度——微服务来展开。这篇文章的起因也是源自一次面试经历,在面试一位来自陌陌的候选人(就是那个交友的陌陌)时,他提到一点让我觉得很有意思,他说redis在陌陌被使用的非常广泛,除了常规的缓存外,某些场景下也当NoSQL数据库来使用,还用redis作为微服务的注册中心,甚至连RPC的调用协议都用了redis协议。注册中心最早了解到redis可以作为注册中心是从dubbo的源码中看到,但一直

2021-10-15 13:10:58 82

原创 一次OutOfMemoryError: GC overhead limit exceeded

现象:由于需要将mysql表中的过期数据在凌晨定时读取出过滤后转入到MongoDB,一个转换SQL达到百行,而且有几十个,集中运行后程序反馈异常:Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceededHeap内存:1.5G,程序在Docker容器限制使用内存2G。监控到内存GC变化:Heap内存占用骤升至1.2G,然后不停的进行FullGC,

2021-10-15 13:10:02 609

原创 使用Golang搭建gRPC服务提供给.NetCore客户端调用

gRPC概述RPC说到gRPC就不得不提RPC,所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,简单点来说就是我A机器上写的函数可以在B机器上通过RPC协议直接调用。它与http不同的是:RPC是基于TCP实现的,RESTFUL是基于HTTP来实现的。 从传输速度上来看,因为HTTP封装的数据量更多所以数据传输量更大,所以RPC的传输速度是比RESTFUL更快的。为什么内部(约定情况下的服务与服务)使用rp..

2021-10-05 13:39:49 315

原创 算法中的复杂度分析

复杂度前言来复习下,算法体重经常聊到的复杂度算法中我们经常会从两个角度去考虑算法的优劣,那就是【时间维度】和【空间维度】时间复杂度时间复杂度:就是执行当前算法消耗的时间。当然我们这里讲的时间复杂度是个更加通用的描述,因为我们知道代码在不同中机器中执行的时间是不同的,性能好的机器可能就用的时间更短。所以我们这里的时间复杂度,用的是【大O符号表示法】,即T(n) = O(f(n))如何理解呢?先来个栗子func sum(n int) int { sum :=0 i..

2021-10-04 12:46:08 69

原创 树莓派使用python+继电器控制220V灯泡

需要的材料1.继电器:继电器是一种电控制器件,它实际上是用小电流去控制大电流运作的一种“自动开关”,我们这里用它来控制电灯。控制了继电器就等于控制了电灯。我购买的是某宝上3块钱的“1路 5v继电器”,这里的“几路”指的是可用控制多少个电灯220v线路,5v指继电器本身需要5v电压来驱动,树莓派本身提供5v电压输出所以这里选用5v2.杜邦线:某宝几块钱一组40P,这里只需要三根,用于连接 树莓派与继电器3.电灯+灯座+铜线+电源插头GPIO说明GPIO是(Gener

2021-10-04 12:44:40 3196 3

原创 Redis三种集群模式介绍

三种集群模式redis有三种集群模式,其中主从是最常见的模式。 Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性而演变出来的。哨兵顾名思义,就是用来监控的,主要作用就是监控主从集群,自动切换主备,完成集群故障转移。 cluster 模式是redis官方提供的集群模式,使用了Sharding 技术,不仅实现了高可用、读写分离、也实现了真正的分布式存储。一、主从复制redis主从复制 1、reids主从模式 2、redis复制原理 redis

2021-09-30 16:04:48 347

原创 Redis分布式锁,看完不懂你打我

简易的redis分布式锁加锁:set key my_random_value NX PX 30000这个命令比setnx好,因为可以同时设置过期时间。不设置过期时间,应用挂了,解不了锁,就一直锁住了。解锁:if redis.call("get",KEYS[1])==ARGV[1] then return redis.call("del",KEYS[1])else return 0end先比较一下值,相等才删除。防止其他线程把锁给解了。以上方案在一般的场景..

2021-09-30 16:03:47 202

原创 面试中一个暴露能力等级的问题

背景通常我写在文章发表出来之前我问的一些面试题都是我要下架的面试题。就是说我有一个面试题库,我会经常更新,淘汰一些。一般淘汰的问题我才敢拿出来全面分析,避免造成面试时候的不公平。但是有一道题,我面试时必问,我也建议其他的面试官考察这道题。如果面试者能提前准备,回答的很漂亮,再好不过。但是这道题就像自我介绍一样,是个引子。回答的好,会引出下面很多问题。回答的不好,直接决定能力等级的打分。这道题就是:请介绍你遇到的印象最深的一个问题或者故障,请介绍你是怎么发现、处理、分析和解决的。回答举例举例一

2021-09-30 16:03:10 86

原创 利用注解 + 反射消除重复代码,妙!

1.1 案例场景假设银行提供了一些 API 接口,对参数的序列化有点特殊,不使用 JSON,而是需要我们把参数依次拼在一起构成一个大字符串:1)按照银行提供的API文档顺序,将所有的参数构成定长的数据,并且拼接在一起作为一整个字符串2)因为每一种参数都有固定长度,未达到长度需要进行填充处理字符串类型参数不满长度部分要以下划线右填充,即字符串内容靠左 数字类型的参数不满长度部分以0左填充,即实际数字靠右 货币类型的表示需要把金额向下舍入2位到分,以分为单位,作为数字类型同样进行左填充 参

2021-09-29 12:52:16 62

转载 使用three.js实现炫酷的酸性风格3D页面

背景近期学习了WebGL和Three.js的一些基础知识,于是想结合最近流行的酸性设计风格,装饰一下个人主页,同时总结一些学到的知识。本文内容主要介绍,通过使用React + three.js技术栈,加载3D模型、添加3D文字、增加动画、点击交互等,配合样式设计,实现充满设计感的????酸性风格页面。基础知识Three.jsThree.js是一款基于原生WebGL封装运行在浏览器中的3D引擎,可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。是一款使用非常...

2021-09-29 12:02:03 705

原创 ThreadLocal基本使用和内存泄漏分析

ThreadLocal基础部分ThreadLoal的作用保存线程的独立变量,即每个线程维护一份。这种变量在线程的生命周期内起作用,减少同一个线程内多个函数之间公共变量传递麻烦。使用场景需要给不同的线程保存不同的信息时。基础使用public class TestThreadLocal { private static ThreadLocal<Integer> threadLocal=new ThreadLocal<Integer>();// ..

2021-09-29 11:48:04 157

原创 一文彻底掌握Apache Hudi异步Clustering部署

1. 摘要在之前的一篇博客中,我们介绍了Clustering(聚簇)的表服务来重新组织数据来提供更好的查询性能,而不用降低摄取速度,并且我们已经知道如何部署同步Clustering,本篇博客中,我们将讨论近期社区做的一些改进以及如何通过HoodieClusteringJob和DeltaStreamer工具来部署异步Clustering。2. 介绍通常讲,Clustering根据可配置的策略创建一个计划,根据特定规则对符合条件的文件进行分组,然后执行该计划。Hudi支持并发写入,并在多个表服务之间

2021-09-27 13:53:12 367

原创 新人如何快速上手新项目?

按楼主的经验和知识,本文总结了应用开发中的各种存储架构,从易到难,从起步到起飞。如有不对之处,欢迎留言。1、单库最简单的初始架构,适用于千万级以下的数据,并发量低的场景。单库、单表 或单库、多个分表:之所以分表是为了给后续分库做预留准备 2、分库分表、读写分离最常见的存储架构,适用于十亿级别以下的数据(单表控制在千万级别或以下),并发量较大、主备高可用的场景。分库分表:对业务id(如用户id、商户id)取模,散列到各个分库的分表中 读写分离:适用于读多写少的场景,利用数据库一

2021-09-27 13:51:41 111

原创 防御性编程

引子一个测试工程师走进一家酒吧,要了一杯啤酒;一个测试工程师走进一家酒吧,要了一杯咖啡;一个测试工程师走进一家酒吧,要了-1杯啤酒;一个测试工程师走进一家酒吧,要了一份asdfQwer@24dg!&*(@;一个测试工程师走进一家酒吧,什么也没要;一个测试工程师走进一家酒吧,又走出去又进来又出去又进来又出去,最后在外面把老板打了一顿;一个测试工程师走进一家酒吧,要了NaN杯Null;一个测试工程师冲进一家酒吧,要了500吨啤酒;一个

2021-09-27 13:49:00 123

原创 一篇文章,带你全面的了解二叉树-记得点赞

前言日常生活中,很多事物都可以用树来描述,例如书的目录、工作单位的组织架构等等。树是计算机中非常重要的一种数据结构,树存储方式可以提高数据的存储、读取效率。一、树的基本定义日常生活中,很多事物都可以用树来描述,树是计算机中非常重要的一种数据结构,树存储方式可以提高数据的存储、读取效率,比如利用二叉排序树,既可以保证数据的检索速度,同时,也可以保证数据的插入、删除、修改的速度。其实,树的种类有很多种,比如普通的二叉树、完全二叉树、满二叉树、线索二叉树、哈夫曼树、二叉排序树、平衡二叉树、AV

2021-09-25 14:38:19 306

原创 鼓作气学会“一致性哈希”,就靠这 18 张图了

当架构师大刘看到实习生小李提交的记账流水乱序的问题的时候,他知道没错了:这一次,大刘又要用一致性哈希这个老伙计来解决这个问题了。嗯,一致性哈希,分布式架构师必备良药,让我们一起来尝尝它。1. 满眼都是自己二十年前的样子,让我们从哈希开始在 N 年前,互联网的分布式架构方兴未艾。大刘所在的公司由于业务需要,引入了一套由 IBM 团队设计的业务架构。这套架构采用了分布式的思想,通过 RabbitMQ 的消息中间件来通信。这套架构,在当时的年代里,算是思想超前,技术少见的黑科技架构了。但是

2021-09-25 14:33:56 78

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除