自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis缓存三兄弟:穿透、击穿、雪崩

解决:1.加互斥锁:专门拿一个线程来重查过期的key存入缓存,当查询缓存中没有这个key就获取互斥锁,其他线程就获取失败等待重试;2.逻辑过期:不设置过期时间,当访问过期数据时,逻辑和互斥锁一样拿一个线程重建数据库只是其他现在不要等待直接返回过期数据;2.击穿:大量的去查一个过期的key,redis查不到就直接查库瞬间压垮数据库。1.穿透:去查询一个不存在的key,mysql就不会存入缓存中,导致每次访问数据库。redis使用场景:缓存、分布式锁、计数器、保存token、消息队列、延迟队列。

2024-03-20 15:21:46 228

原创 如何解决死锁问题?

1.通过jstack命令导出线程的dump日志,定位到具体的死锁代码;通过修改代码去破坏四个条件的任意一个就可以完成,除互斥条件因为锁的本身就满足互斥条件。死锁产生原因:两个或两个以上的线程抢占同一个共享资源,导致互相等待的一个现象;2.请求和保持状态:a线程已经获得x资源,在等待y资源时没有释放x资源。4.循环等待:a线程等待b线程的资源,b线程等待a线程的资源。3.不可抢占条件:其他线程不能去抢占线程中已经获得的资源。1.互斥条件:资源只能被一个线程占有。

2022-11-18 18:44:51 205 1

原创 分布式事务及解决方案

整个事务过程是由事务管理器和参与者组成,事务管理器负责整个分布式事务的提交和回滚,参与者只负责自己的提交回滚。XA:为了统一TM事务管理器和RM事务资源管理器之间通讯的接口规范的一种协议,TM通过XA接口来通知RM开始、提交回滚、结束。TC:事务协调器,他是独立的中间件,主要作用收集信息,接收TM指令发起全局事务的提交和回滚,通知RM事务的提交和回滚。TM:事务管理器,以jar包的形式嵌入应用程序中工作,开启全局事务向TC发送提交和回滚指令。3.事务协调者和参与者都宕机了,这下不知道事务有没有提交。

2022-11-15 22:33:49 335

原创 Quartz的使用实现

startNow() //corn表达式生成地址:https://cron.qqe2.com/1.调度器Scheduler的创建;System.out.println("炸弹爆炸,爆炸时间为:"+format);//2.创建JobDetail实例,并绑定执行类。//方式二,自定义corn表达式:(常用)//5.利用TimeUnit实现延时操作。//1.创建调度器Scheduler。//3.构建Trigger实例,//4.执行Quartz。//方式一:(不推荐)//6.关闭定时任务。

2022-11-11 20:45:22 180

原创 连接Kibana报错:Kibana server is not ready yet

停止Kibana服务,然后再从ElasticSearch中删除一下四个索引。日志查看那条错误,翻译错误原因。

2022-11-11 10:20:26 803

原创 Spring Boot自动装配机制

EnableAutoConfiguration :就是启动SpringBoot自动配置的注解,向spring容器中导入了一个selector,用来加载classpath下SpringFactoryLoader 定义的自动配置类,自动加载为配置bean。ComponentScan ,IOC自动扫描注解,回去扫描带有@Component ,@Respository ,@Service @Controller ,如果有,就会把这个类自动注册到Spring容器中。

2022-11-11 10:17:19 139

原创 Mybatis缓存机制

一级缓存:sqlsession级别也就是本地缓存,将数据库查询的数据放入sqlsession中,下次查询时直接从里面那。二级缓存:namespace级别,在经过一级缓存之前,会先通过CachingExecutor进行二级缓存查询,开启二级缓存会被多个sqlsession共享所以他是一个全局的缓存。原理:sqlsession中有Executor,Executor中有个localcache对象来存储,每次Executor都是从localcahe中写入和查询。作用:提高数据的检索效率,提高查询,减少性能消耗。

2022-11-10 19:56:06 220

原创 MQ详细讲解

2.系统的复杂度:会存在一定问题,消息的丢失?事务:生产者——half消息给MQ——响应half——生产者发送真正事务消息——MQ回查事务响应事务状态。消息队列,队列是一种FIFO先进先出的数据结构,然后消费者对消息进行处理。1.异步:送快递,将消息存放等待有时间去处理,作用响应速度和吞吐量提高。kafka:优点:吞吐量大,性能非常好,集群高可用。3.缺点:1.系统可用性降低:一旦MQ宕机,整个业务都会受到影响。rabbitMQ:优点:消息可靠,功能全面。解决:kafka:消息发送+回调。

2022-11-04 13:04:33 1555

原创 关于线程常问面试题

首先进入看线程池的线程数小于核心线程数,新创建一个任务执行,当核心线程数用完时会进入阻塞队列,阻塞队列也满时进入拒绝策略。在1.6之后进行升级,由偏向锁的无锁到轻量级锁CAS自旋锁,进行加锁如果自旋10次后会变成重量级锁。1.lock的加锁和解锁是由java代码实现的,Synchronized 是由JVM管理。Synchronized 是线程同步的重量级实现,volatitle 的轻量级实现。sleep是Thread类的方法,wait是Object的方法。corepoolsize:核心线程,不会被销毁。

2022-11-03 18:47:24 101

原创 JVM优化

1.什么是JVMJava虚拟机,编译java文件让Java代码无需考虑平台的差异,运行在不同的环境中。2.为什么要优化JVM项目在运行时突然出现卡顿,效率低下并发增加,想让程序平稳顺畅的运行,所以我们需要针对实际的需要来进行优化。3.首先讲解一下JVM的组成有哪些?一、首先是类加载器子系统:加载.class字节码文件到jvm内存中二、运行时数据区:有堆、方法区、虚拟机栈、本地方法栈、程序计数器三、执行引擎:有即时编译器和垃圾收集,将文件编译成指令码二进制让硬件设备能识别。

2022-11-01 12:55:06 162

原创 Redis常见问题及解决方案

2.基于订阅Binlog的同步机制,MySQL会生成一个binlog推送给canal,canal会转化成一个binlog对象,将他交给mq发生消息,最后保存到数据库。1.采用延时双删方案:通过先删除缓存的数据,在更新数据库的数据并设置过期时间后,再次删除缓存中数据。AOF:记录写命令,记录数据库的增加和修改,他的有点是格式清晰,保存数据完全,缺点体积较大,恢复速度慢。RDB:内存快照,只产生一个一个持久化文件,体积小,速度快,备份方便,缺点没有办法百分比存储数据。2.如何保证Redis和数据库的⼀致性?

2022-10-31 19:08:14 502

原创 MySQL锁和分布式锁

2.临时顺序节点+重试:第一个节点先获取到锁,下一个节点监听上一个节点,等待上一个完成释放后,删除第一个节点,第二个节点取代第一个节点执行以此类推。zookeeper:1.临时节点+重试:先执行的线程在zookeeper中创建一个临时节点,获取到这个锁,其他线程要等待第一个线程执行完成释放第二个才能获取锁。有哪些锁:可重入锁(避免死锁)、阻塞锁、公平锁。共享锁:也叫读锁,允许其他事务访问,但只能对数据读不能写。3.按粒度:行锁、表锁、间隙锁、页锁、记录锁、临键锁。

2022-10-31 16:57:06 303

原创 B树和B+树的区别

树的高度矮,因为B+树存储量hen'da的层级一般在2--4层,经行磁盘io的次数和层数相同。3,在搜索过程中,如果查询和内部节点的关键字一致,那么搜索过程不停止,而是继续向下搜索这个分支。2,B+树的叶子节点是带有指针的,且叶节点本身按关键码从小到大顺序连接。1,就是B+树所有关键码都在。

2022-10-31 16:19:48 183

空空如也

空空如也

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

TA关注的人

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