自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Fiddler使用(一)

我记得第一次下载后会给我们跳出一个下载证书,我们需要进行一个下载(因为如果不进行下载,我们fiddler是只能抓http包的,不可以抓https的包,那下载证书之后,我们就可以抓到https的包),如果我们这里没有跳出下载证书,我们也可以在工具栏的Tools中点击options。定位前后端bug也是依赖我们的抓包功能,我们抓到请求包后,可以对比文档,看看对应的url,方法,参数,请求头是否正确,那如果对不上文档,可能是前端的问题,否则可能是后端问题。

2025-03-20 14:54:30 852

原创 MVCC学习记录

MVCC又叫多版本并发控制,用来解决脏读,不可重复读,以及配合锁解决幻读问题,在保证隔离性基础上,提升了读取效率和并发性。

2025-03-08 17:05:45 818

原创 Mysql事务和锁

事务就是把一组sql打包成一个整体,在sql执行中,要么都执行成功要么都执行失败。

2025-03-07 17:11:02 1029

原创 IO多路复用

IO多路复用是一种机制,允许一个进程同时来监控多个文件描述符(fd)的IO事件,不使用多线程,只用一个进程来提高并发性和资源的利用,避免为每个连接或IO操作创建一个单独的进程或者线程,减少上下文切换的开销。

2025-03-06 19:47:52 858

原创 Mysql存储引擎

我们可以使用show engines语句来查看我们当前数据库支持哪一些存储引擎,我这里使用的是mysql数据库。support表示是否支持,值分为:yes,no,default,分别表示支持,不支持,和默认存储引擎。

2025-03-05 22:57:02 713

原创 面试题汇总(一)

平衡二叉树是一种二叉搜索树,他的左右两个字数的高度差绝对值不超过1,并且左右两个子树都是一颗平衡二叉树,通过左旋,右旋,左右双旋,右左双旋,来保持平衡,目的就是为了提高二叉排序树的查找效率,避免出现退化为链表的情况(也就是偏树),使其平均查找时间复查度O(logn)

2025-03-05 20:55:32 810

原创 JVM垃圾回收器

因为我们之前在JVM的一篇博客说过了垃圾回收机制,所以我们这里简单复习一下1)标记-清除算法:标记出所有需要回收的对象,标记完后统一回收会导致内存碎片化,导致我们有可能会无法找到一片连续足够的内存2)复制算法:对标记-清除的一种优化,将内存分成大小相等的两块,每次只使用其中一侧,当这块内存要回收时,我们把存活的数据复制到另一侧,再把这一半的内存区域一次性清理,这样可以提升效率,避免内存碎片化会导致我们空间利用率不高,会浪费一般的内存空间。

2025-03-01 01:20:18 864

原创 Java线程池

总的来说,池化技术都有以下几个优势1.降低资源消耗:减少了我们频繁地去创建和销毁线程2.提高响应速度:当任务到达时,任务不需要等待线程的创建,直接拿到一个线程就可以响应3.便于管理:我们通过线程池统一的去管理我们所有线程,进行统一分配,调优和监控。

2025-02-28 23:10:21 409

原创 Spring原理

我们说的spring可能是spring家族也可能是springCore,我们这里就来简述下spring家族以及SpringCore的关系1.Spring,Spring Boot和Spring MVC的关系以及区别:简单来说,Spring是一个开发应用框架,具有轻量级、⼀ 站式、模块化的特点,其目的是用于简化企业级应用程序开发。

2025-02-27 22:30:14 1056

原创 RabbitMQ---面试题

相关面试题:RabbitMQ的核心流程简单介绍下,讲下RabbitMQ的结构RabbitMQ负责接收消息并且转发消息核心概念:Producer:生产者,向RabbitMQ发送消息的 Consumer:消费者,从RabbitMQ中获取消息Broker:消息队列服务器 Vistual Host:虚拟机,逻辑上隔离的,可以用来做业务区分Connection:网络连接,允许客户端和RabbitMQ进行通信 Channel:信道,发送消息和接收都是通过信道。

2025-01-24 21:40:24 1479

原创 RabbitMQ---应用问题

包括很多,有数据库幂等性,接口幂等性以及网络通信幂等性等就比如数据库的select操作,这个操作就是符合幂等性的,虽然不同时间查询的结果会不同,但是幂等性指的是对资源的影响,而不是返回结果,查询数据本质上是不会对资源产生影响的,所以即使两次查询结果不同,那也是因为查询间有一些其他的操作对资源进行了修改我们再来看接口的幂等性,就是说同一个接口多次调用,对系统的影响是相同的,就比如多次调用支付接口(同一个订单),对系统的影响也是一样的(也就是只生效一次)

2025-01-20 19:37:43 1413

原创 RabbitMQ---事务及消息分发

RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,所以RabbitMQ也支持事务机制,他的事务允许开发者确保消息的发送和接收时原子性的,要么全部成功,要么全部失败我们设置事务有三步,首先就是开启事务因为我们是针对rabbitTemplate来作设置的,所以会影响此rabbitTemplate的所有消息,这里我们新开了一个然后我们使用时要加一个注解最后一步我们需要加上事务管理这样我们就成功开启了事务这三步是必不可少的,缺少一步,都无法成功开启事务。

2025-01-19 20:29:56 1251

原创 RabbitMQ--延迟队列

延迟队列是一种特殊的队列,消息被发送后,消费者并不会立刻拿到消息,而是等待一段时间后,消费者才可以从这个队列中拿到消息进行消费。

2025-01-18 20:10:13 1773

原创 RabbitMQ---TTL与死信

TTL又叫过期时间RabbitMQ可以对队列和消息设置TTL,当消息到达过期时间还没有被消费时就会自动删除注:这里我们说的对队列设置TTL,是对队列上的消息设置TTL并不是对队列本身,不是说队列过期时间到了,队列被删除,而是消息到达此队列后会给他设定一个过期时间,这个时间到了,消息会删除,不是队列删除(如果同时此消息本身带有TTL过期时间,按短的来)

2025-01-17 16:20:03 1323

原创 RabbitMQ--发送方确认及消息重试

之前我们在七大工作模式中简单说了发送方确认,就是生产者到RabbitMQ这一过程中,消息是否正确到达服务器,生产者要进行确认的过程一共有两种确认模式。

2025-01-16 18:02:01 1520

原创 RabbitMQ---消息确认和持久化

生产者发送消息后,到达消费端会有以下情况:1.消息处理成功2.消息处理异常如果RabbitMQ把消息发送给消费者后就把消息删除,那么就可能会导致,消息处理异常想要再获取这条消息的时候,造成消息丢失,但如果消息处理成功,不需要这条消息了,就可以进行删除。此时就不会有问题所以如何保证消费者成功接收并正确处理?我们RabbitMQ就给我们提供了消息确认机制。

2025-01-14 15:55:31 1194

原创 RabbitMQ的工作模式

RabbitMQ有7种工作模式来进行消息传递,我们上一篇博客就是简单模式。

2025-01-13 01:20:56 918

原创 RabbitMQ基本介绍及简单上手

MQ(message queue)本质上是队列,满足先入先出,只不过队列中存放的内容是消息而已,那什么是消息呢?消息可以是字符串,json也可以是一些复杂对象我们应用场景通常是再分布式系统之间。

2025-01-08 20:37:10 1197

原创 LinkedHashMap

LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。Cache又名缓存,他的容量有限,因此当我们的容量用完后,一旦有新的内容要进行添加,就需要我们对旧的数据进行替换,来空余出新空间来存放新内容,LRU Cache就是将最近没有使用的数据替换掉。

2025-01-05 20:24:45 299

原创 高阶数据结构----布隆过滤器和位图

位图是用来存放某种状态的,因为一个bit上只能存0和1所以一般只有两种状态的情况下适合用位图,所以非常适合判断数据在或者不在,而且位图十分节省空间,很适合于海量数据,且容易存储,数据无重复的场景(因为位图是天然去重的)那我们来看一下他是如何节省空间的我们看这个例子,如果我们不使用位图,一共10个整型数据,需要消耗40个字节,但是如果使用位图,我们就只需要3个字节就可以判断这个数字是否存在注:10亿字节1个g。

2024-12-30 14:23:22 993

原创 数据结构---AVL树

我们之前在实现的时候分析了查找的时间复杂度有两种情况 分别是:完全二叉树O(logN)和单分支的树O(N)那如果是完全二叉树肯定是最好的,但是如果是单支树,那么效率就会大大降低,所以我们要尽量的让左右子树平衡,所以就出现了AVL树---一种平衡的二叉搜索树。如果我们保证他的左右子树高度差在1以内,那么我们查询的时间复杂度就可以稳定在O(logN)在二叉搜索树的基础上,他的左右子树高度差(平衡因子)绝对值是不超过1的。他的左右子树也都是AVL树。左右子树也都为二叉搜索树。(一)回顾二叉搜索树。

2024-12-30 12:33:49 370

原创 哈希表源码分析

这个是默认的初始化容量,我们看他说必须要是2的几次幂,那具体是为什么呢?首先是为了高效的位运算,我们底层计算位置时是这样写的等价于hash%len,但是只有n是2的次幂才可以等价(位运算比模运算的效率高)其次方便扩容和缩容,因为我们hashmap在扩容或者缩容的时候鑫融联一般是翻倍或者减半的,这样我们容量是2的次幂的特性就能更快的计算出新的位置(通过位运算)这个是默认的负载因子,一旦我们的的负载因子超过这个值,就要进行扩容这三个首先。

2024-12-24 17:42:44 691

原创 数据结构---Map&Set

二叉搜索树又叫二叉排序树,因为他的中序遍历是有序的,它或者是一棵空树或者满足以下性质:若他左子树不为空,则左子树上的节点都小于根节点的值若他右子树不为空,则右子树上的节点都大于根节点的值他的左右子树也都是二叉搜索树这个就是一个二叉搜索树这也是一个二叉树所以,我们可以对这个进行处理,变成avl树(也是一种特殊的二叉搜索树)通过左右旋转来调整树的结构,以求让树更平衡1.当我们插入元素时,我们根据待插入元素的hashcode再通过一个哈希函数,计算出该元素的存放位置进行存放。

2024-12-24 16:38:36 1254

原创 JavaSE---String(含一些源码)

我们如何创建一个String类型的对象?注:String是引用类型,内部存的不是字符串本身,而是一个value[]和hash(value是一个字符数组)每个对象都会在栈和堆内分配不同的空间。

2024-12-23 19:04:26 748

原创 Spring如何解决bean的循环依赖

这里我们来说一下每一级缓存是干什么的,以及一些问题一级缓存:存储完整的Bean二级缓存:避免多重循环依赖的情况,重复创建动态代理三级缓存:三级缓存时函数式接口:通过lambda表达式把方法传入进去(把Bean的实例和Bean名字传入(aop创建))不会立即调:为什么不会立即调用呢?如果立即调用,那么所有的aop不管bean是否循环依赖都会在实例化后创建动态代理,但是正常情况下我们应该再初始化才创建动态代理,所以spring还是希望我们再正常时,在初始化阶段创建动态代理。

2024-12-19 17:11:18 1045

原创 布隆过滤器

布隆过滤器是一种数据结构,是由一个位数组和多个哈希函数构成的使用位数组可以很好的节省空间。

2024-12-18 22:07:58 490

原创 JavaSE复习---抽象类和接口

面向对象中,所有的对象都是由类描述的,但是并不是所有类都可以实例化一个对象,就比如我们讲到的抽象类,这个抽象类中没有包含足够的信息描绘对象,所以不可以实例化对象我们上一篇博客中有CAT和DOG继承Animal这个类,但是实际上我们并不会实例化出一个动物对象,因为这个并不准确,而且他的行为不可知,所以我们把他定义称一个抽象类是更合适的,而不是一个普通的类我们这里就可以把这个bark()定义成一个抽象方法,把Animal定义成抽象类。

2024-12-18 17:18:57 748

原创 JavaSE复习---继承和多态

面向对象语言的三大特征:封装,继承,多态我们知道每种生物都会有各自的特征,但也会有一些共性,我们继承就是对这些共性来进行抽取,实现代码复用,我们把抽象出来的共性放到一个类中,把他叫做“ 父类 ”,然后在这些共性上进行扩展(加上每种生物自己的特征),这样产生新的类,就叫做子类(派生类)就比如:猫和狗这两个类,他们都会吃东西,但是猫会抓老鼠,狗不会,狗会守大门,猫不会,但是他们吃东西这个特性是两者都有点,这样我们就可以把这个共性内容抽取,采用继承的思想来达到共用。

2024-12-17 21:07:31 995

原创 Java复习类和对象

这里还有一些规范:1.类名使用大驼峰定义2.类如果使用public则我们导包就可以使用,如果没有public就是默认的范围(在同一包内可以使用),这里我们在一会访问修饰限定符中再说。3.一般在一个文件中我们只定义一个类4.public修饰的类要与文件名相同(要改名使用开发工具里的Rename改)5.main方法所在的类要用public修饰,Eclipse默认在public修饰的类中找main方法操作方法这样我们就可以在包内创建类了。

2024-12-13 15:24:57 595

原创 优先级队列(堆)

JDK1.8中的优先级队列底层是使用的堆这样的数据结构,而堆就是在“完全二叉树的基础上进行了调整”

2024-12-08 18:37:20 696

原创 常见的排序算法

常见的排序算法分为四大种:插入排序,选择排序,交换排序,归并排序插入排序:直接插入排序,希尔排序选择排序:选择排序,堆排序交换排序:冒泡排序,快速排序归并排序:归并排序这里我们先讲几个,剩下比较复杂的,我们单独讲。

2024-12-07 17:27:31 735

原创 Redis哨兵

我们学习哨兵之前先来看一下redis中对一些名词的解释注意我们redis哨兵是一个单独的进程,和redis-server进程是要独立来的,并且哨兵节点是不负责存储数据的,只是用来监控数据节点但是这里还有一点要注意,因为哨兵是一个单独的进程监控数据节点,那么虽然说一个哨兵节点就可以监控,但是为了防止单点问题,哨兵节点挂了,我们一般是设置多个哨兵节点(通常是奇数个,后面选举leader的时候会说)

2024-11-21 20:43:32 992

原创 Redis做分布式锁

在一个分布式的系统中,会涉及到多个客户端访问同一个公共资源的问题,这时候我们就需要通过锁来做互斥控制,来避免类似于线程安全的问题因为我们学过的sychronized只能对线程加锁,在分布式系统中无法对进程进行加锁,此时我们就需要用分布式锁那分布式锁的本质我们可以理解为一个公共服务器,来记录加锁的状态,那我们这里使用redis来作为这个公共服务器。

2024-11-13 22:19:58 1112

原创 Redis缓存

我们之前在说redis的用途时,也提到了redis做缓存,那这里我们再来重新回顾一下。

2024-11-13 14:39:17 1088

原创 Redis主从复制

如果某个服务器程序,只有一个节点(物理服务器),那我们就称为单点这种情况下会有很多问题:1)我们用户访问量比较大的时候,我们的服务器有可能会承受不住(支持的并发量有限)2)如果这一个服务器挂了。服务就全部中断了那为了解决单点问题我们就引入了分布式系统,在分布式系统,我们引入了不止一个物理服务器来部署服务器程序,这样就可以提供更稳定和并发量更大的服务。

2024-11-09 08:30:00 1080

原创 Redis上的事务

提到事务,我们第一个想到的应该就是mysql,这里我们先来回顾一下mysql事务的特性:1) 原子性:用户的多个操作打包执行,要么正确执行,要么出现错误全部回滚2)一致性:事务执行前后,数据都不能离谱3)持久性:我们mysql的事务一旦提交了,那一定就是存储在硬盘上4)隔离性:这里又涉及到mysql的隔离级别(对写加锁,对读加锁等)那redis对比mysql,他的事务就简单很多了。

2024-11-08 08:00:00 954

原创 Redis持久化

我们都知道redis在内存中存储数据的,但是内存中的数据是不持久的,如果想要让数据持久,就需要把数据存储到硬盘上,但是如果直接存到硬盘上,那我们redis就和mysql没有什么区别了,所以为了保证自身快的特点,我们还是要把数据存放到内存中,但是为了持久化硬盘上也要存。当我们插入一个新的数据时,我们就把数据同时写入到内存和硬盘中,当查询某个数据的时候,就直接从内存读取,当我们redis重启时,我们从硬盘中取数据来恢复内存中的数据这里我们会有疑问,那存储了两遍会不会导致我们的效率变低?

2024-11-07 08:00:00 1399

原创 对于用户密码的加密

这篇文章也是在做项目的时候使用到的内容,来做成一篇博客。

2024-11-06 18:00:00 858

原创 Jwt令牌验证在代码中的使用

这个问题是我在实现项目中遇到的一个问题,之前我们登录都是在验证密码正确后,在服务端创建session,并且把sessionId放到cookie中,在cookie中储存,但是到后面我发现,这个方法在一些情况下不是很合理 比如在集群环境下,我们就无法使用session(集群环境我们在redis中说过,我们这里可以简单理解为多个机器) 我们在redis中说我们的项目通常会部署在多个服务器上,然后通过负载均衡,将用户分配到不同的服务器,就类似于这个图: 那如果我们使用session的话,我们来设想一下,我们

2024-11-05 11:45:58 1125

原创 Spring 事务

首先事务我们在Mysql阶段已经了解过了,事务就是一组操作的集合,是不可分割的,详细说就是事务会把所有的操作作为一个整体,一起向数据库提交或者撤销操作,所以这一组操作会一起成功或者失败。

2024-10-28 20:04:37 804

空空如也

空空如也

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

TA关注的人

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