自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 Kafka 延时队列&重试队列

1. 简介TimingWheel是kafka时间轮的实现,内部包含了⼀个TimerTaskList数组,每个数组包含了⼀些链表组成的TimerTaskEntry事件,每个TimerTaskList表示时间轮的某⼀格,这⼀格的时间跨度为tickMs,同⼀个TimerTaskList中的事件都是相差在⼀个tickMs跨度内的,整个时间轮的时间跨度为interval = tickMs * wheelSize,该时间轮能处理的时间范围在cuurentTime到currentTime + interval之间的事件。

2022-07-06 21:26:18 1152 2

原创 微服务追踪SQL(支持Isto管控下的gorm查询追踪)

SQL的追踪正确插入到微服务的调用链之间详细记录了SQL的执行内容和消耗时间搜索SQL的类型多线程(goroutine)下的追踪效果在 Kubernetes 中部署微服务后,通过 Istio 管控微服务之间的流量,Istio 默认会将微服务之间的调用关系生成追踪,放入追踪收集器。但他不支持更细化的SQL操作,比如执行了哪些SQL,每条SQL消耗多长时间。为此,我写了一个简单的支持查询并生成追踪的插件:istio-gorm-tracing在上使用管控微服务后,微服务之间的调用会自动上传到的收集器。但只能追踪到

2022-07-01 21:51:06 587

原创 【Java面试】@Resource 和 @Autowired 的区别

@Resource和@Autowired的区别我认为是在它们的一个注入的一个方式上@Resource它是根据name来进行注入的,@Autowired是根据类型来注入的。好的,面试官。@Resource和@Autowired这两个注解的作用都是在Spring生态里面去实现Bean的依赖注入。下面我分别说一下@Autowired和@Resource这两个注解。闪现 [@Autowired的作用详解 ] 几个字。首先,@Autowired是Spring里面提供的一个注解,默认是根据类型来实现Bean的依赖注入。

2022-06-22 22:06:23 878

原创 循序渐进 Redis 分布式锁(以及何时不用它)

假设我们有个批处理服务,实现逻辑大致是这样的:流程如图:现在我们单独看看上图中虚线框中的内容(3~6):批处理服务从数据库拉取任务列表投递到消息队列。生产环境中,为了高可用,都会部署至少两台批处理服务器,也就是说至少有两个进程在执行虚线框中的流程。有什么问题呢?假设这两个进程同时去查任务表(这是很有可能的),它俩很可能会得到同一批任务列表,于是这批任务都会入列两次。上图虚线框中那段逻辑在并发原语中有个专门名称叫“临界区”——我们要做的就是让多个操作者(进程、线程、协程)必须一个一个地(而不能一窝蜂地)去执行

2022-06-20 20:29:28 278

原创 透过Redis源码探究字符串的实现

最近在通过 Redis 学 C 语言,不得不说,Redis的代码写的真的工整。这篇文章会比较全面的深入的讲解了Redis数据结构字符串的源码实现,希望大家能够从中学到点东西。Redis 的字符串源码主要都放在了 和 这两个文件中。Redis 的动态字符串结构如下图所示:SDS 大致由两部分构成:header以及 数据段,其中 header 还包含3个字段 len、alloc、flags。len 表示数据长度,alloc 表示分配的内存长度,flags 表示了 sds 的数据类型。在以前的版本中,sds

2022-06-18 13:27:59 443

原创 掘地三尺搞定 Redis 与 MySQL 数据一致性问题

数据一致性指的是:反推缓存与数据库不一致:把 Redis 作为缓存的时候,当数据发生改变我们需要双写来保证缓存与数据库的数据一致。数据库跟缓存,毕竟是两套系统,如果要保证强一致性,势必要引入 或 等分布式一致性协议,或者分布式锁等等,这个在实现上是有难度的,而且一定会对性能有影响。如果真的对数据的一致性要求这么高,那引入缓存是否真的有必要呢?在使用缓存时,通常有以下几种缓存使用策略用于提升系统性能:所谓「旁路缓存」,就是读取缓存、读取数据库和更新缓存的操作都在应用系统来完成,业务系统最常用的缓存策略。2

2022-06-17 22:37:31 117

原创 万字剖析Ribbon核心组件以及运行原理

大家好,本文我将继续来剖析SpringCloud中负载均衡组件Ribbon的源码。本来我是打算接着OpenFeign动态代理生成文章直接讲Feign是如何整合Ribbon的,但是文章写了一半发现,如果不把Ribbon好好讲清楚,那么有些Ribbon的细节理解起来就很困难,所以我还是打算单独写一篇文章来剖析Ribbon的源码,这样在讲Feign整合Ribbon的时候,我就不再赘述这些细节了。好了,话不多说,直接进入主题。这是个很简单的东西,就是服务实例数据的封装,里面封装了服务实例的ip和端口之类的,一个服务

2022-06-16 21:55:19 247

原创 解决maven依赖冲突,这篇就够了!

什么是依赖冲突依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成了包版本冲突。依赖冲突的原因我们在maven项目的pom中 一般会引用许许多多的。例如,项目A有这样的依赖关系:X是A的,但是两条依赖路径上有两个版本的X,那么哪个X会被Maven解析使用呢? 两个版本都被解析显然是不对的,因为那会造成依赖重复,因此必须选择一个。至于怎么选肯定有它的规则(下面会讲),这里我们先假设最终引用的版本,这样会不会有问题呢?当然会有的1、你想如果B引用X(2.0)的新创建的类,但因为最终被解析的是X

2022-06-15 21:52:57 1965

原创 一文澄清网上对 ConcurrentHashMap 的一个流传甚广的误解!

上周我在极客时间某个课程看到某个讲师在讨论 ConcurrentHashMap(以下简称 CHM)是强一致性还是弱一致性时,提到这么一段话 这个解释网上也是流传甚广,那么到底对不对呢,在回答这个问题之前,我们得想清楚两个问题首先我们先来看第一个问题,什么是强一致性一致性(Consistency)是指多副本(Replications)问题中的数据一致性。可以分为强一致性、弱一致性。强一致性也被可以被称做原子一致性(Atomic Consistency)或线性一致性(Linearizable Consiste

2022-06-14 21:49:16 114

原创 连 Kafka 的稳定性都不懂,也敢说自己会用Kafka!

1. 事务简介1.1 事务场景1.2 关键概念和推导1.3 事务语义多分区原子写入:事务能够保证Kafka topic下每个分区的原⼦写⼊。事务中所有的消息都将被成功写⼊或者丢弃。⾸先,我们来考虑⼀下原⼦读取-处理-写⼊周期是什么意思。简⽽⾔之,这意味着如果某个应⽤程序在某个topic tp0的偏移量X处读取到了消息A,并且在对消息A进⾏了⼀些处理(如B = F(A)),之后将消息B写⼊topic tp1,则只有当消息A和B被认为被成功地消费并⼀起发布,或者完全不发布时,整个读取过程写⼊操作是原⼦的。

2022-06-13 22:35:23 400

原创 一致性哈希的简单认识

在分布式集群中,对机器的添加、删除或者是机器故障后自动脱离集群等操作是分布式集群管理最基本的功能。如果采用的是常见的取模哈希算法,当有机器添加、删除之后,需要对数据做迁移,非常麻烦。而一致性哈希利用哈希环的概念,保证增加或减少服务器,数据存储的改变最少,相比取模哈希算法大大节省了数据移动的开销,非常方便。一致性哈希认为在动态变化的缓存空间环境中,良好的哈希算法应该满足以下几个方面:一致性哈希可以理解成普通取模哈希算法的改良版,改变的是将普通的线性哈希空间变成环状的哈希空间,其中每一个缓存空间是环上的一个节点

2022-06-12 21:53:39 107

原创 聊消息中间件,AMQP那些事儿

说到消息队列,相信大家并不陌生。大家在日常的工作中其实都有用过。相信大部分的研发在使用消息队列的过程中也仅仅是停留在用上面,里面的知识点掌握得并不是很系统,有部分强大的功能可能由于本身公司的业务形态或者业务量级的原因根本无法触及到。老猫在工作中就是如此,所使用的MQ都是架构师封装好的,简单调用即可。为了更好地了解其所以然,所以老猫就花时间好好梳理了一下MQ的一系列的知识点,俗话说“好记心不如烂笔头”,所以老猫在学习的过程中就记录了下来。分享出来给有需要的小伙伴,当然也方便后续自己查阅,因此就有了该系列文章。

2022-06-10 13:22:11 195

原创 使用Docker+Jenkin自动化流水线发布.Net应用

使用Docker容器方案可以快速安全地将项目部署到客户的服务器上,作为公司项目,需要解决两个问题:1. 需要搭建一个私有的Docker仓库,以便安全的存储镜像2. 需要一套自动化发布方案,实现代码到应用部署的自动化流程大致流程如下在java世界中有很多文章介绍了Docker+Jenkin的自动化部署方式,这次来看看如何用这一套工具实现.Net 应用的发布。以Soa项目为例MatoApps/Soa: 一个轻量级的微服务库,基于.Net 6 + Abp框架 可快速地将现有项目改造成为面向服务体系结构,实现模块间

2022-06-08 21:47:40 387

原创 Spring Ioc源码分析系列--容器实例化Bean的四种方法

在讲解到bean真正通过那些方式实例化出来的时候,并没有继续分析了,而是留到了这里去分析,主要是因为获取获取构造函数,推断构造函数也是一个比较复杂的操作,就想另起一篇文章再说,但是总的来说,应该不会比前面的逻辑绕,因为这里很清晰,就是实例化对象的几种方法,那么实例化对象有哪几种选择呢?没印象,那说明前面的文章没留下影响,回去翻翻。所以废话少说,跟着上面文章的口子,我们来分析实例化bean的过程。首先,这里回忆一下之前说到什么。本篇文章的核心逻辑入口是在方法里。跟进方法。这个方法干了哪几件事?先贴一下代码,

2022-06-06 22:16:02 215

原创 通过一次生产case深入理解tomcat线程池

最近生产上遇到一个case,终于想明白了原因,今天周末来整理一下生产case最近测试istio mesh的预热功能(调用端最小连接数原则)来控制调用端进入k8s刚扩出来的容器的流量因为刚启动的JVM解释执会导致慢请求,如果不控制流量会导致cpu突然飙升等带来的一系列连锁反应!表像这里我借用github上有个哥们的相类似提问:image翻译一下:首先突发流量导致线程突然上升到最大线程(800),流量下来后还在工作的线程(busy threads)线程就下降到了 10,

2022-05-28 16:34:10 244

原创 一文带你看懂Java中的Lock锁底层AQS到底是如何实现的

前言相信大家对Java中的Lock锁应该不会陌生,比如ReentrantLock,锁主要是用来解决解决多线程运行访问共享资源时的线程安全问题。那你是不是很好奇,这些Lock锁api是如何实现的呢?本文就是来探讨一下这些Lock锁底层的AQS(AbstractQueuedSynchronizer)到底是如何实现的。本文是基于ReentrantLock来讲解,ReentrantLock加锁只是对AQS的api的调用,底层的锁的状态(state)和其他线程等待(Node双向链表)的过程其实是由AQS来维护

2022-05-27 22:12:41 227

原创 MySQL的Explain总结

Explain简介MySQL优化器在基于成本的计算和基于规则的SQL优化会生成一个所谓的执行计划,我们就可以使用执行计划查看MySQL对该语句具体的执行方式。介绍这个好啰嗦就是了,我们可以通过这个优化器展示的执行计划,查看优化器对我们的SQL进行优化的步骤,连接转换成单表访问时的优化。以及对于之前知识的复习了属于是,比如访问方式,索引的选择,半连接等SQL语句优化。mysql> explain select * from mall.ums_admin; +----+----------..

2022-05-26 21:09:01 549

原创 sql server 聚集索引,非聚集索引,Identity ,gudi,主键的概念和比较

索引可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。聚集索引和非集聚索引聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序。非聚集索引:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。索引是通过二叉树的数据结构来描述的,我们可以这么理解聚集索引:索引的叶节点就是数据节点。而非聚集索引的叶节点仍然是索引节点,只

2022-05-25 21:59:41 494

原创 解放双手,推荐一款 GitHub 星标 8.2k+的命令行软件管理器,非常酷炫

小二是公司新来的实习生,之前面试的过程中对答如流,所以我非常看好他。第一天,我给他了一台新电脑,要他先在本地搭建个 Java 开发环境。二话不说,他就开始马不停蹄地行动了。真没想到,他竟然是通过命令行的方式安装的 JDK,一行命令就搞定了!连环境变量都不用配置,这远远超出了我对他的预期。我以为,他会傻乎乎地下一步下一步来安装 JDK,就像这样。然后这样配置环境变量。结果他是这样的,就一行命令,环境变量也不用配置!卧槽!牛逼高大上啊!看着他熟练地在命令行里安装 JDK 的样

2022-05-24 13:46:10 628

原创 戏说领域驱动设计——Saga设计模型

上一节我们讲解了常用的事务,也提及了Saga,这是在分布式环境下被经常使用的一种处理复杂业务和分布式事务的设计模式。本章我们的主要目标是编写一个简单版本的Saga处理器,不同于Seata框架中那种可独立部署的事务服务,我们所编写的Saga和业务集成在一起也不支持通过手画流程的方式实现,因为我们的目标是将Saga作为一种设计模式(不是框架)来使用,类似于您经常使用的“工厂”、“策略”等,重点学习它的思想,在真实项目中使用肯定是需要根据需求做二次加工的。而且,简单版本的优势就是足够简单,投入虽然不多但能从中获取

2022-05-24 13:45:12 560

原创 Redis系列:深刻理解高性能Redis的本质

1 背景分布式系统绕不开的核心之一的就是数据缓存,有了缓存的支撑,系统的整体吞吐量会有很大的提升。通过使用缓存,我们把频繁查询的数据由磁盘调度到缓存中,保证数据的高效率读写。当然,除了在内存内运行还远远不够,我们今天就以具有代表性的缓存中间件Redis为例子,分析下,它是如何达到飞起的效率。2 Redis高效性能分析Redis之所以能够提供超高的执行效率,主要从以下几个维度来实现的:存储模式:基于内存实现,而非磁盘 数据结构:基于不同业务场景的高效数据结构 动态字符串(REDIS_

2022-05-22 21:18:58 343

原创 一文看懂 ZooKeeper ,面试再也不用背八股(文末送PDF)

ZooKeeper知识点总结 一、ZooKeeper 的工作机制 二、ZooKeeper 中的 ZAB 协议 三、数据模型与监听器 四、ZooKeeper 的选举机制和流程 本文将以如下内容为主线讲解ZooKeeper中的学习重点,包括 ZooKeeper 中的角色、ZAB协议、数据模型、选举机制、监听器原理以及应用场景等。会对相关的面试题或开发中常见内容,进行重点讲解。接下来将带领大家入门学习 ZooKeeper 系列的内容,力求通俗易懂,图文并茂。一

2022-05-20 22:24:42 88

原创 一个故事看懂CPU的SIMD技术

一个简单的循环那天,我们遇到了一段代码:void array_add(int data[], int len) { for (int i = 0; i < len; i++) { data[i] += 1; }}循环了好几百次之后,才把这段代码执行完成,每次循环都是做简单又重复的工作,把我累得够呛。一旁负责结果回写的老K也是累的满头大汗,吐槽道:“每次都是取出来加1又写回去,要是能一次多取几个数,批量处理就好了”老K的话让我眼前一亮,对啊,能不能批量操作呢?

2022-05-18 22:06:15 339

原创 Hashmap 面试题 + Hashmap 原理 + Hashmap 源码(史上最全)

HashMap作为我们日常使用最频繁的容器之一,相信你一定不陌生了。今天我们就从HashMap的底层实现讲起,深度了解下它的设计与优化。常用的数据结构我在05讲分享List集合类的时候,讲过ArrayList是基于数组的数据结构实现的,LinkedList是基于链表的数据结构实现的,而我今天要讲的HashMap是基于哈希表的数据结构实现的。我们不妨 一起来温习下常用的数据结构,这样也有助于你更好地理解后面地内容。数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1)

2022-05-17 21:13:14 2194

原创 那些年你啃过的ConcurrentHashMap

前言最近迷上了并发编程。并发这玩意怎么说呢,就是你平时工作用不到,一用就用在面试上。这不,又卷起了并发容器。那说起并发容器,你一定也知道那几个,CopyOnWriteArrayList、并发队列BlockingQueue,等等。但是作为面试的典中典,聊到并发容器就无法绕开ConcurrentHashMap。由于篇幅原因,这篇文章不会具体解释那些较为基础的问题,比如为什么散列表数组的长度一定要是2的n次方等。将更多围绕并发这个话题。如有需要,之后会另外讲解。所以本文我们就来深入聊聊这个大厂面试

2022-05-13 13:53:13 218

原创 AQS源码探究之竞争锁资源

我们进入ReentrantLock源码中查看其内部类Sync 对AQS进行扩展公共方法并定义抽象方法的抽象类 FaireSync 实现公平锁的AQS的实现类 UnFairSync 实现非公平锁的ASQ的实现类我使用例子进行的debug,然后一步一步看源码。例子在文章最后面以下流程皆以非公平锁为例线程竞争锁资源AQS的state解释:0 表示锁没有被占用 1 表示锁被占用了 > 1 表示锁被重入了 PS: ReentrantLock是可重入锁获得锁执行流程创建Reen

2022-05-12 21:32:40 200

原创 每日慢查询上亿,快看美团的SQL急救大法

对于数据库来说,慢查询往往意味着风险。SQL执行得越慢,消耗的CPU资源或IO资源也会越大。大量的慢查询可直接引发业务故障,关注慢查询即是关注故障本身。本文主要介绍了美团如何利用数据库的代价优化器来优化慢查询,并给出索引建议,评估跟踪建议质量,运营治理慢查询。一、背景慢查询是指数据库中查询时间超过指定阈值(美团设置为100ms)的SQL,它是数据库的性能杀手,也是业务优化数据库访问的重要抓手。随着美团业务的高速增长,日均慢查询量已经过亿条,此前因慢查询导致的故障约占数据库故障总数的10%以上,而且高

2022-05-11 21:08:33 382

原创 如何解决linux系统平均负载高(load average)

系统平均负载高(load average)问题现象两个案例都是:系统平均负载高,但cpu,内存,磁盘io都正常什么是系统平均负载 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使用率并没有直接关系。 可运行状态的进程,是指正在使用CPU或者正在等待CPU的进程,也就是我们常用ps命令看到的,处于R状态(Running 或 Runnable)的进程 不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可

2022-05-09 13:52:11 13045 2

原创 Nacos源码系列—服务端那些事儿

前言在上节课中,我们讲解了客户端注册服务的大体流程,客户端在注册服务的时候调用的是NamingService.registerInstance来完成实例的注册,在最后呢我们知道服务注册是通过nacos/v1/ns/instance接口来完成注册的,我们今天来讲解服务端的注册,首先就从这个接口地址开始,来看具体服务端都做了哪些事情服务注册上面是我们从官网中找到的Nacos架构图,从这个图中我们大体可以得出我们要找的接口应该是在NamingService这个服务中,同时我们在项目结构中也...

2022-05-08 21:01:03 690

原创 Spring Ioc源码分析系列--Ioc的基础知识准备

Ioc的概念在Spring里,Ioc的定义为The IoC Container,翻译过来也就是Ioc容器。为什么会被叫做容器呢?我们来比对一下日常生活中的容器,也就是那些瓶瓶罐罐。假设我们有个大米缸,里面提前放好了米,等我们需要米的时候,我们就可以到大米缸里面取。那么Ioc也是一样的道理,里面有一个容器singletonObjects(提前透露这里容器的类型是ConcurrentHashMap),里面放好了各种初始化好的bean,当我们代码需要使用的时候,就到里面去取。借助一张图来看一下Spring

2022-05-06 22:08:28 304

原创 SpringBoot整合MybatisPlus基本的增删改查,保姆级教程

1|0概述MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动,这里介绍了基本的整合SpringBoot和基础用法。2|0引入依赖在项目中pom文件引入mybatisplus和mysql驱动依赖,如下图<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boo

2022-05-05 14:07:48 2174

原创 用浏览器快速开启Docker的体验之旅

互联网科技发展创造了很多奇迹,比如我今天要提到的docker技术就是其一。我很早就关注它(在2015年写过这方面的博客),那会儿还只是一个开源项目,现在已经是一个行业事实标准了,它推动了云原生的变革和发展。这一篇文章致敬docker。要玩docker,你需要有一个合适的宿主环境。一般来说,原生的linux都支持docker,我在这一篇文章中已经提到了在主流的ubuntu 服务器中安装docker的步骤,很简单,一行命令(sudo apt install docker.io)而已。而如果你用...

2022-05-04 14:25:54 975

原创 SpringBoot中异常处理

一、背景在我们编写程序的过程中,程序中可能随时发生各种异常,那么我们如何优雅的处理各种异常呢?二、需求1、拦截系统中部分异常,返回自定义的响应。比如:系统发生HttpRequestMethodNotSupportedException异常,我们需要返回如下信息。http的状态码:返回405{ code: 自定义异常码, message: 错误消息}2、实现自定义异常的拦截拦截我们自己写的BizException三、编写一些异常基础代码1、引入jar包..

2022-04-28 22:03:39 481

原创 MySQL索引原理

索引类型MySQL索引类型可以按不同纬度分为如下几种:从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引 从应用层次划分:普通索引、唯一索引、主键索引、复合索引 从索引键值类型划分:主键索引、辅助索引(二级索引) 从数据存储和索引键值逻辑关系划分:聚集索引和非聚集索引普通索引指基于普通字段建立的索引。建立索引的方法如下:CREATE INDEX <索引的名字> ON tablename (字段名);ALTER TABLE ta

2022-04-26 21:47:39 567

原创 TCP 连接的建立 & 断开

TCP 连接的建立过程一开始,客户端和服务端都处于 close 状态。先是服务端监听某个端口,此时服务端处于 listen 状态。这个时候客户端就可以发送连接请求报文了。第一次握手客户端会主动发送连接请求报文,随机初始化序列号为 x,并把 SYN 标志位设置为 1,表示 SYN 报文。客户端发送 SYN 报文后,客户端进入 syn_sent 状态。第二次握手服务端收到 SYN 报文后,服务端会发送 SYN-ACK 报文,用于「对客户端发送的 SYN 报文进行应答」和「服务

2022-04-24 22:07:28 2272

原创 MySQL中的索引和其两种引擎、主从复制以及关系型/非关系型数据库

1、MySQL中的索引在MySQL,索引是由B+树实现的,B+是一种与B树十分类似的数据结构。形如下面这种:​其结构特点:(1)有n课子树的结点中含有n个关键码。(2)非根节点子节点数: ceil(m/2)<= k <= m(ceil是天花板函数的意思,也就是向上取整,比如ceil(1.2)=2 ),m为该B+树的阶数。根节点最少有两个子节点,最多同样为m个。(2)叶子节点包含了全部关键码的信息,及指向含有这些关键码记录的指针。并且叶子节点根据关键码的大小..

2022-04-21 16:05:34 160

原创 如何使用 Redis 缓存?

​编辑添加图片注释,不超过 140 字(可选)如何使用 Redis 缓存前言对于 Redis 来讲,作为缓存使用,是我们在业务中经常使用的,这里总结下,Redis 作为缓存在业务中的使用。旁路缓存Cache Aside(旁路缓存)策略以数据库中的数据为准,缓存中的数据是按需加载的。它可以分为读策略和写策略。只读缓存只读缓存 从缓存中读取数据;如果缓存命中,则直接返回数据;如果缓存不命中,则从数据库中查询数据;查询到数据后,将数据写入到缓存中,并且返回给..

2022-04-20 21:42:54 15310

原创 面渣逆袭:Spring三十五问,四万字+五十图详解

有人说,“Java程序员都是Spring程序员”,老三不太赞成这个观点,但是这也可以看出Spring在Java世界里举足轻重的作用。基础1.Spring是什么?特性?有哪些模块?一句话概括:Spring 是一个轻量级、非入侵式的控制反转 (IoC) 和面向切面 (AOP) 的框架。2003年,一个音乐家Rod Johnson决定发展一个轻量级的Java开发框架,Spring作为Java战场的龙骑兵渐渐崛起,并淘汰了EJB这个传统的重装骑兵。到了现在,企业级开发的标配基本就是Sp.

2022-04-19 21:49:05 189

原创 Elasticsearch 索引策略

Elasticsearch 7.6 索引生命周期es的生命周期就对应了索引的策略,比如我们在使用elk的时候,由于数据量较大,时间比较久远的数据就没有那么有价值了,因此就需要定期的清除这些历史数据,所以我们在设置es的索引策略的时候就可以进行数据的冷热策略设置。在es 7.6索引的生命周期分为4部分,不过最新版的已经更新为了5部分,本文介绍 7.6版本的生命周期:Hot:正在积极更新和查询索引。 Warm:索引不再更新,但仍在查询中。 Cold:索引不再更新,很少被查询。信息仍然需要可搜索,但

2022-04-14 15:49:24 2434

原创 一篇文章带你搞懂InnoDB的索引|结合样例

前言前阵子面试的时候,在第三面问到了MySQL索引相关的知识点,并且给出了一些SQL语句分析索引的执行情况。所以今天这篇文章给大家讲讲索引,结合一些案例分析一下一个SQL查询走索引时涉及到的最左前缀原则。在讲解最左前缀原则之前,先复习一下MySQL索引的重要基础知识(下面都将基于InnoDB存储引擎下的索引规则)索引类型主键索引InnoDB存储引擎使用B+树建立索引,主键索引的非叶子结点存放主键字段的值,通过主键中的字段构建B+树,叶子结点存放对应主键的整一条记录的信息(因此主键索引也称

2022-04-13 14:05:06 260

空空如也

空空如也

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

TA关注的人

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