自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用synchronized时不能忽视的Synchronization on a non-final field

文章目录一、背景介绍二、错误代码三、为什么加了synchronized锁,锁住资源之后,进行线程操作,还是会有并发问题?四、正确代码一、背景介绍今天在使用synchronized关键字修饰变量进行多线程操作的时候,idea突然有个黄色的提示,直译过来的意思就是在非最终字段count上同步。二、错误代码public class Demo1 { static Integer count = 0; @SneakyThrows public static void main(

2021-11-22 09:56:50 1210

原创 Redis常见应用问题

文章目录一、缓存穿透1. 产生原因2. 解决方法二、缓存击穿1. 产生原因2. 解决方法三、缓存雪崩1. 产生原因2. 解决方法四、分布式锁一、缓存穿透1. 产生原因应用服务器突然收到大量缓存和数据库中都无法查询到结果的请求,因为无法查询到结果,所以每次请求都会经过缓存到数据库中查询。造成数据库压力增加,可能导致服务宕机2. 解决方法使用布隆过滤器过滤重复请求对于数据库中查询出来为空的值也给它缓存起来,但是缓存时间设置的短一点二、缓存击穿1. 产生原因key值对应的数据库在数据库中

2021-11-12 10:53:45 991

原创 Redis集群

文章目录一、为什么需要集群二、什么是redis集群三、如何开启集群1. Linux中安装Redis2. 编辑Redis配置文件3. 启动redis服务4. 将六个节点合成一个集群5. 连接集群一、为什么需要集群单台redis服务的容量不够大并发的写操作,单台redis无法支持二、什么是redis集群Redis集群实现了对Redis的水平扩容,即启动N个Redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/NRedis集群通过分区来提供一定程度的可用性:即使集群中有一部分

2021-11-11 20:25:24 952

原创 Redis的事务和锁机制

一、什么是Redis事务Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化,按顺序执行。事务在执行过程中,不会被其他客户端发送来的命令和请求锁打断。Redis事务的主要作用就是串联多个命令防止别的命令插队。二、Multi(开启事务)、Exec(执行事务)、discard(放弃事务)从输入Multi命令之后,输入的命令都会依次进入到命令队列当中,但是不会执行,知道输入Exec后,Redis才会将之前的命令依次执行。在组队的过程中可以通过discard来放弃组队三、事务对于错误的处理1.

2021-11-11 15:47:24 202

原创 Redis主从复制配置

文章目录前言一、Linux中安装Redis二、开启主从复制1. 创建新配置文件2. 启动redis服务3. 进入Redis服务4. 关联主服务(开启主从复制)三、主从复制实现原理四、薪火相传五、反客为主六、哨兵模式1. 什么是哨兵模式2. 如何开启3. 故障恢复前言因为本人只有一台服务器,所以配置的一台主和两台从Redis服务器都是在一台主机上,仅使用端口区分一、Linux中安装Redis官方下载压缩包Redis6.2.6版本压缩包下载路径解压到本地,进入到redis目录中makemake

2021-11-11 15:02:18 1401

原创 Redis的持久化机制

文章目录一、RDB1. 什么是RDB?2. 工作过程3. 开启RDB快照(docker方式)4.优缺点二、AOF1. 什么是AOF?2. 工作过程3. 开启AOF(docker方式)4. AOF和RDB同时开启时,Redis会按照什么执行持久化5. AOF同步频率设置6. Rewrite压缩6.1 什么是Rewrite压缩6.2 重写过程6.3 触发机制,何时重写7. 优缺点三、总结1. 用哪个比较好2. 官网建议一、RDB1. 什么是RDB?在指定的时间内将内存中的数据集快照写入到磁盘中,在恢复时

2021-11-10 16:18:33 487

原创 Redis五大数据类型

一、字符串(String)1. 简介String是Redis最基本的数据类型,一个key对应一个value。String类型是二进制安全的。意味着Redis的String可以包含任何数据,包括jpg图片或者序列化的对象。一个Redis字符串的value中最多可以存储512M的数据。2. 常用命令添加键值对:set < key > < value >查询对应键的值:get < key >将给定value追加到原值的末尾:append < key >

2021-11-08 14:50:27 166

原创 RabbitMQ的死信队列

文章目录一、什么是死信队列二、死信出现的情况一、什么是死信队列死信队列是RabbitMQ中的一种消息机制,死信消息会被RabbitMQ进行特殊处理,如果配置了死信队列,那么死信消息会被丢到死信交队列中,如果没有配置,那么死信消息将会被丢弃。二、死信出现的情况消息被否定确认(使用channel.basicNack或channel.basicReject拒绝消息),并且不进行消息重新发送(将requeue属性设置为false)消息在队列中的存活时间超过了设置的TTL时间消息队列中的消息已经超过

2021-11-07 12:09:03 1262

原创 RabbitMQ的可靠性投递

文章目录前言一、什么是消息确认?二、使用步骤1.引入库2.读入数据总结前言RabbitMQ的主要作用就是连接两个系统,进行消息传输的功能。而如何抱枕消息在两个系统之间传输不丢失,这是一个很重要的问题。因此需要我们的RabbitMQ消息确认机制。一、什么是消息确认?RabbitMQ的消息确认有两种。一种是消息发送确认。这种是用来确认生产者将消息发送给交换机,交换机传递给队列的过程中,消息是否投递成功。发送确认分为两步,一步是确认是否到达交换机,二步是确认是否由交换机到达队列二种是消费接收确认。这

2021-11-05 14:02:16 1321

原创 ELasticSearch基本使用

一、 ElasticSearch在window环境下的安装访问ElasticSearch的官方地址(https://www.elastic.co/cn/)下载ElasticSearch的windows版本安装解压解压完成之后,进入bin目录下,启动elasticsearch.bat文件启动完成之后,在浏览器输入localhost:9200,出现如下即表示启动成功二、正排索引和倒排索引一张表的数据如下idcontent1his name is tom2her

2021-11-04 10:11:12 1537

原创 RabbitMQ基础

RabbitMQ文章目录RabbitMQ前言一、RabbitMQ是什么?二、应用场景1. 异步处理2. 应用解耦3. 削峰填谷三、基础概念1. 组件介绍1.1 Broker1.2 Virtual Host1.3 Exchange1.4 queue1.5 Message1.6 Connection1.7 Channel1.8 Binding2. ExChange类型2.1 Direct2.2 Fanout2.3 Topic前言消息中间件是一种利用高效可靠的消息传递机制进行异步的数据传输,并基于数据通

2021-11-04 10:06:44 913

原创 MQ如何实现可靠性投递

一、消息可能出现丢失的情况消息在生产者,MQ,消费者三个维度都有可能造成消息的丢失生产者在向MQ服务器发送消息时,由于网络原因造成了消息发送失败,此时消息还未达到MQ造成了消息的丢失MQ接收到生产者发送过来的消息之后,保存在了内存当中,之后MQ服务器发生了重启,造成了消息丢失;或者MQ接收到消息之后正准备往硬盘存储,但是还未完成时,服务器发生故障,造成了消息丢失MQ将消息发送给消费者后,消费者在消息处理的时候出现了异常,虽然接收到了消息,但是因为出现了问题需要MQ重新发送;或者消费者在拿到消息之

2021-11-04 09:55:34 337

原创 Debug断点调试的多种用法

1. 行断点操作:将断点打在代码中的某一行,并使用debug的方式运行作用:可以将代码运行停止在某一行上,并可以按照行为单位继续往下执行代码截图:2. 方法断点操作:将断点打在方法名上,使用debug的方式运行作用:将断点打在方法上时,并使用debug启动后代码会停止在该方法的第一行上,然后再释放该断点(按Resume Program按钮),方法将会执行到代码的最后一行并停止。此操作可以查看该方法运行时的所有参数代码截图:3. 接口断点操作:将断点打在接口的方法上,使用debug的方式

2021-03-21 19:49:20 5944

原创 如何对Vue的data中定义的对象中未定义的属性进行响应式的修改

受JS的限制,Vue无法检测到属性的添加与删除。VUe实例会在初始化实例时,对属性执行getter/setter的转化过程,所以属性必须得是data对象上存在的,才可以让Vue转化它,这样才能让它是响应式的。let vm = new Vue({data:{ a:1 }})//vm.a是响应式的vm.b=2//vm.b则不是响应式的了上述的a属性时响应式的,所以当a属性发生变化时,会将变化的结果实时的渲染到页面上。而b是vm实例创建之后添加的属性,所以它不是响应式的,所以我们在修改b的值

2020-09-11 08:02:49 2774

原创 MyBatis进阶

一、MyBatis中的#{}和${}的区别#{}是预编译处理,而${}是字符串的替换MyBatis在处理#{}时,会将sql中的#{}替换为?,调用PreparedSattement的set方法来赋值使用#{}可以有效地防止SQL注入,以提高系统的安全性二、MyBatis是否支持延迟加载?延迟加载的原理是什么?MyBatis是否支持延迟加载MyBatis支持延迟加载,但是仅支持association关联对象,和collection关联对象的延迟加载,association指的就是一对一,co

2020-05-26 11:50:48 139

原创 Spring-AOP

AOP概述1.什么是AOP:AOP就是面向切面编程,是Spring框架的核心。2.AOP底层的实现原理:动态代理分为:JDK动态代理:基于接口的动态代理Cglib动态代理:基于类的动态代理3.AOP作用:在不更改源码的情况下,去动态的增强对象的一些功能AOP相关术语Spring的AOP的实现底层实现就是对于动态代理的实现的代码进行了封装,封装之后我们只需要对需要关注的部分进行代...

2020-02-12 19:55:04 158

原创 Spring框架的注解详解

原始注解注解说明@Component创建该类的Bean对象,然后存入IOC容器中@Repository创建持久层类的Bean对象,然后存入IOC容器中@Service创建业务层类的Bean对象,然后存入IOC容器中@Controller创建表现层类Bean对象,然后存入IOC容器中@Autowired使用在字段上,根据该字段的类型实行依赖注入...

2020-02-11 21:01:01 220

原创 SpringIOC&DI

Spring配置文件Bean标签基本配置id:用于在spring容器中找到创建的Bean对象的唯一表示class:给spring框架提供全路径类名,用于使用反射的方式创建对象Bean标签范围配置scope:指对象的作用范围,有如下取值取值范围说明singleton默认的,单例prototype多例的requestWEB 项目中,Spring ...

2020-02-10 22:33:05 159

空空如也

空空如也

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

TA关注的人

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