幼zi园小霸王
码龄3年
关注
提问 私信
  • 博客:18,921
    18,921
    总访问量
  • 26
    原创
  • 73,077
    排名
  • 200
    粉丝
  • 0
    铁粉

个人简介:利用博客记录自己的知识积累,欢迎大家批评指正

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2022-01-16
博客简介:

qq_66452396的博客

查看详细资料
  • 原力等级
    当前等级
    2
    当前总分
    108
    当月
    6
个人成就
  • 获得225次点赞
  • 内容获得4次评论
  • 获得209次收藏
  • 代码片获得354次分享
创作历程
  • 26篇
    2024年
成就勋章
兴趣领域 设置
  • Java
    java
  • 后端
    后端分布式中间件
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

常见限流算法以及应用

每种限流算法都有优缺点,所以要根据不同场景合理的使用它们。当然,如果第三方框架已经封装好了这些算法,做到开箱即用,灵活调整流量阈值,这样无疑对我们工作还是学习用都是非常好的。当需要对接下游的服务时,一般都会有单位时间内调用次数的限制,这时候就需要限流了。而企业里面一般都部署多台机器,形成一个集群,使用集群限流可以保证集群整体的 qps 不会超出负载,配合合理的负载均衡算法可以一定程度上保证流量倾斜导致单机负载过大的情况。同时使用单机限流进行兜底,这样的限流方式可以确保整体服务的稳定性和可用性。
原创
发布博客 2024.10.22 ·
263 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

[已解决]Mac使用更改idea.vmoptions文件导致idea打不开

直接在访达中全局搜索 idea.vmoptions 文件,然后根据报错信息更改成默认的或者更改成默认的格式即可。
原创
发布博客 2024.10.08 ·
640 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

详细说一下MVCC

读操作只读该事务开启之前数据库的快照。如果 db_trx_id > low_limit_id,则表明事务开启期间有事务对这条记录进行了修改并提交,那么这条记录对该事务是不可见的。每开启一个事务,我们就会从数据库中获取一个事务 ID,这个 ID 是自增的,事务 ID 大的能看见事务 ID 小的事务的数据变更记录。如果 db_trx_id 存在于 trx_ids,则表明该事务开启过程中,未提交的事务已经提交了,那么这条记录对该事务是不可见的。up_limit_id,未提交的事务中最小的事务 ID。
原创
发布博客 2024.08.26 ·
1494 阅读 ·
4 点赞 ·
0 评论 ·
6 收藏

关于重复消费的一些解决方案

可以自定义一个幂等注解,然后配合 AOP 进行方法拦截,对拦截的请求信息(包括ip+方法名+参数名+参数值)根据固定的规则去生成一个 key,然后调用 redis 的 setnx 方法,如果返回 ok,则正常调用方法,否则就是重复调用了。这样可以保证重复请求接口在一定时间内只会被成功处理一次。至于锁的有效时长要根据业务情况而定的。创建幂等性注解获取 IP 的工具类创建幂等性切面上述解决调用的重复问题,核心是找到一个唯一的标识,从而判断是否为重复操作。
原创
发布博客 2024.08.25 ·
555 阅读 ·
5 点赞 ·
0 评论 ·
10 收藏

dom4j 操作 xml 之按照顺序插入标签

以上添加了详细注释的代码,读者可以直接拿来用,需要修改的部分是获取指定元素的名称以及 tagNames 数组。最近学了一下 dom4j 操作 xml 文件,特此记录一下。如果能给你带来帮助,那将是我的荣幸。
原创
发布博客 2024.07.17 ·
533 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

对于RBAC模型的认识

1. 简化权限管理:不用给每个用户单独分配权限,而是用过给角色授权,然后让用户拥有不同的角色从而获取相应的权限,大大降低了管理的复杂性。RBAC(基于角色的访问控制) 在企业的管理项目中应用比较频繁,我在实习的时候接手的授权管理项目就是使用的RBAC模型。它的核心是将角色和权限相关联,通过给用户分配不同的角色,从而获取相应的权限。2. 灵活:可以方便的对角色进行增改,而用户和对应的权限表改动的幅度较小。通过这几个表的关联查询,就可以将权限赋予对应的用户,实现授权管理了。user表:存放的是用户的信息。
原创
发布博客 2024.07.15 ·
280 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

SpringBoot项目集成MinIO

最近在学习MinIO,所以想让自己的SpringBoot项目集成MinIO,在网上查阅资料,并进行操作的过程中遇到一些问题,所以想把自己遇到的坑和完成步骤记录下来供自己和各位查阅。
原创
发布博客 2024.07.12 ·
5214 阅读 ·
29 点赞 ·
0 评论 ·
44 收藏

SpringBoot项目如何使用自定义Repository

否则就需要删除先前的记录从而保证数据库中的记录数。5. 调用 UserRepository. save方法,会自动进入到 CustomerBaseRepository 中重写的 save 方法,这样就完成了 自定义 Repository 的使用,也符合 调用 save 方法需要执行的业务逻辑了。1. 当创建一个UserRepository接口继承JpaRepository后,调用对应的save方法时,jpa会自动创建这个接口的实现类,并调用SimpleJpaRepository里面的save方法。
原创
发布博客 2024.07.12 ·
553 阅读 ·
5 点赞 ·
0 评论 ·
7 收藏

Redis五种基本数据类型的底层实现

redis五种基本类型可以涵盖项目中大多数的使用场景,而它们的底层实现在面试的过程中也是提问的提问的比较多的,今天就花时间来深入理解一下这五种基本数据类型的底层实现吧!
原创
发布博客 2024.06.10 ·
679 阅读 ·
9 点赞 ·
0 评论 ·
6 收藏

MySQL三大日志

我们需要恢复未写入磁盘但是写入biglog日志中的记录,虽然binlog中记录的是全量数据,但是当一条记录写入磁盘,另一条记录未写入磁盘时,binlog没有标识去判断哪些已经写入磁盘哪些没有,所以不管是两条记录都恢复到内存中还是都不回复,结果都是错误的。当事务提交后, buffer pool 中的数据页发生变化,这时还没有刷新到磁盘中的数据页称为脏页,脏页如果可以正常刷新到磁盘中,那么没redo log 什么事,如果服务宕机,脏页刷新失败,则会通过redo log 恢复数据。(在事务提交前写入;
原创
发布博客 2024.05.18 ·
437 阅读 ·
5 点赞 ·
0 评论 ·
4 收藏

十大排序算法之7种

冒泡排序、插入排序、归并排序是稳定的排序算法。选择排序、希尔排序、快速排序和堆排序是不稳定的排序算法。
原创
发布博客 2024.03.10 ·
1212 阅读 ·
38 点赞 ·
1 评论 ·
30 收藏

sorted set(zset)的底层实现原理

压缩列表本质上就是一个数组,只不过它增加了列表的长度,尾部偏移量,列表元素个数以及列表结束标志。这使得我们在查询列表首位元素时间复杂度为O(1),查询其他位置为O(n)。zset有一个重要特性就是范围查询,使用跳表可以利用多级索引快速查找起点,然后向后遍历就可以了;跳表是一种在链表的基础上增加了多级索引的数据类型。它可以通过多级索引进行转跳,实现快速查找元素的效果。当zset存储元素个数小于128个 或者 存储所有元素的长度小于64字节 这两种情况使用压缩列表。同样增删元素时间复杂度为O(logn)。
原创
发布博客 2024.03.10 ·
338 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

Redis中String类型的底层原理?

当我们继续向字节数组中添加“def”的时候,这时候空间不够了,那么就需要扩容,扩容后 len = 6,free= 6 (至于为什么等于6呢,这里设计的时候是以string类型存放数据 1mb进行划分,如果小于1mb,那么再次扩容后 len = free,这样就避免了频繁进行扩容;使用len用来记录以存放的字符的长度,保证了计算字符串长度这个操作的时间复杂度降为O(1),如果不加的话需要遍历字节数组,时间复杂度为O(n)。这样我们就大概了解了free的作用了,就是记录了可用字节的空间,从而避免了频繁的扩容。
原创
发布博客 2024.03.10 ·
374 阅读 ·
7 点赞 ·
1 评论 ·
0 收藏

【计算机网络】Https是如何保证数据安全传输的?

但是这种方式也会存在问题,中间人会把服务端发送给客户端的公钥劫持,然后伪造一份自己的公钥和私钥发送给客户端,然后客户端用这个公钥加密数据后被中间人劫持,中间人用自己的私钥解密数据,然后利用从服务端劫持过来的公钥加密一份数据,服务端就接收到了错误的数据,但是服务端不知道。比如说客户端和服务端需要发送一个数据,用了保证数据的安全性,需要对数据进行加密,客户端和服务端用的同一把密钥,客户端使用这把密钥对数据进行加密,服务端用这把密钥对数据进行解密,这个就是对称加密。
原创
发布博客 2024.01.28 ·
337 阅读 ·
2 点赞 ·
1 评论 ·
0 收藏

MySql索引的底层数据结构

如果采用b树的话,因为b树的非叶子节点和叶子节点都会存放数据,那么查找一个数据的时候,会从根节点向下查找,其他数据也会被读取出来,这样磁盘的读写代价比较高,而b+树的只在叶子节点存放数据,非叶子节点存放指针,查找数据的话,这个磁盘的读写代价比较低。如果采用二叉树的话,比如采用二叉搜索树,如果这个树是相对平衡的话,那么这个查找的时间复杂度是O(logn),如果数据是有序的,那么这个二叉搜索树就会退化成链表,查找的时间复杂度为O(n),查找速率太慢,也就是说使用二叉搜索树这个查找的效率不稳定。
原创
发布博客 2024.01.21 ·
376 阅读 ·
8 点赞 ·
0 评论 ·
10 收藏

【MySql高频面试题】MySql有哪些存储引擎,有什么区别?

MyISAM只支持表锁,如果有大量查询,使用MyISAM引擎效率会更高,而innodb支持行级锁,如果对数据表有大量的修改删除操作,使用innodb效率会更高。常见的引擎有innodb和MyISAM,innodb是mysql默认的存储引擎,而MyISAM是mysql早期的默认存储引擎。MyISAM的叶子节点存放的是数据所在的地址而不是数据,而innodb的叶子节点存放的是整行数据。MyISAM可以被压缩,所占磁盘空间较小,而innodb所占的磁盘空间较大。MyISAM不支持外键而innodb支持外键。
原创
发布博客 2024.01.21 ·
384 阅读 ·
9 点赞 ·
0 评论 ·
9 收藏

【MySql高频面试题】什么是聚簇索引和非聚簇索引?有什么区别?

innodb主键采用的是聚簇索引,MyISAM不管是主键索引,还是二级索引,采用的都是非聚簇索引。非聚簇索引指的是数据和索引分开存储,B+树的叶子节点保存了对应的主键,可以有多个,一般情况下我们给字段创建的索引都是非聚簇索引。聚簇索引指的是数据和索引放到一块进行存储,B+树的叶子节点保存了整行数据,它有且只能有一个,一般情况下主键会作为聚簇索引。首先我们要明白一点就是聚簇索引又叫聚集索引,非聚簇索引又叫二级索引,当问到这个的时候不要懵。它们之间的主要区别是b+树的叶子节点是否保存了整行数据。
原创
发布博客 2024.01.21 ·
497 阅读 ·
7 点赞 ·
0 评论 ·
6 收藏

【Java高频面试题】事务的隔离级别?mysql默认的隔离级别是什么?

它可以解决脏读和不可重复读的问题,但是解决不了幻读的问题,这也是mysql的事务的默认的隔离级别;,它解决不了脏读、不可重复读和幻读的问题,所以一般的项目中也不用它;,它可以解决以上提到的所有问题,但是它是让事务串行执行,性能比较低。,它能解决脏读的问题,但是解决不了不可重复读和幻读的问题;所以我们一般在项目中使用mysql的默认隔离级别。
原创
发布博客 2024.01.21 ·
436 阅读 ·
10 点赞 ·
0 评论 ·
8 收藏

什么是深拷贝和浅拷贝?

比如说有这样一个例子,定义一个老师类,它有姓名,年龄以及一个学生类。当进行浅拷贝后,修改这个老师类中的学生属性,那么拷贝的对象中的学生属性也会被修改。而进行深拷贝的话,那么修改学生的属性,拷贝的对象不会被修改。深拷贝要求拷贝的类需要实现Cloneable接口,并重写clone方法,它是会创建一个全新的对象,并将原对象所有的属性拷贝一份。也就是说,原对象修改,进行深拷贝的对象不受影响。浅拷贝是拷贝的原对象的地址,和原来的对象使用的是同一个内存地址。
原创
发布博客 2024.01.20 ·
414 阅读 ·
8 点赞 ·
0 评论 ·
9 收藏

【Java面试题】Java中的异常

非检查型异常,一般是运行时异常,它不需要显式的进行捕获或者抛出,但是运行的时候如果出现异常程序也会挂掉。对于这种异常,一般是代码本身出现问题,比如说数组越界,空指针异常等。如果代码写的健壮性足够高,这种异常是可以避免的。检查型异常需要在编译阶段进行捕获或者向上抛出,否则编译不通过,这种异常在IO操作中比较常见,比如说FileNotFoundException,并不是说一定会有这个异常,只是说可能会运行不成功,需要对这种情况做特殊处理。对于Java中的异常,主要分为两大类,检查型异常和非检查型异常。
原创
发布博客 2024.01.20 ·
601 阅读 ·
11 点赞 ·
0 评论 ·
6 收藏
加载更多