自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMQ之动态创建队列与绑定交换机和监听器

为什么需要动态创建队列与绑定交换机?我在写项目的时候遇到这么个问题,我数据库中存在一个字段messageType指定为消息类型,消息类型存在三种,一种是通知类,一种是验证码类,一种是活动类。并且对应的,要将消息进行不同渠道的分发,还存在一个channelType,而他又存在QQ邮箱,手机短信、服务号三种不同的渠道。假如说我每增加一个渠道类型,我就必须再一次手动创建一个队列,那可太烦人了,并且还得新增一个新的监听器。

2023-09-12 14:03:17 2696

原创 SpringBoot整合Swagger + Knife4j后修改 static-path-pattern 冲突问题

我本来是想在resource/static下存放静态资源,但是Spring Boot需要修改放行静态资源访问。修改之后的确可以访问该静态资源目录下的文件。但是确将swagger文档屏蔽了。而此时需要在application.yml中修改配置。中的此方法无法解决问题。

2023-08-22 22:27:50 316

原创 Redis中数据类型与数据结构的对应关系

数据类型:就是我们平时使用的数据类型,String、Hash、List、Set、ZSet。

2023-07-09 23:00:51 170 1

原创 聊聊MySQL中的锁

为当前数据库加上一个锁。当加上该锁的时候,所有的线程过来只能读无法写。该锁的粒度是表级别的。也就是锁住整张表,放行某些操作阻塞某些操作。锁定的粒度大,发生锁冲突的概率最高,并发度最低。引用在MyISAM、InnoDB、BDB等存储引擎中。为了避免DML在执行时,加的行锁与表锁的冲突,在InnoDB中引入了意向锁,使得表锁不用检查每一行是否添加了行锁。想一想,每次添加表锁,都需要一行一行比对,那可太耗时了。假如每次对数据进行DML时,顺带添加一个意向锁,直接判断一次是否可以添加表锁即可。

2023-06-22 16:11:38 265 1

原创 Redis中的压缩列表(ZipList)

压缩列表的最大特点,就是它是一种内存紧凑型的数据结构,占用一块连续的内存空间,而且还会根据数据类型的不同,选择不同的编码方式来节省内存。压缩列表的缺点也很明显它查询节点只能一个一个查,所以时间复杂度是O(n)。不能存放过多的节点,查询效率会变低。修改/新增数据时,需要重新计算压缩列表空间,并且可能会导致连锁更新问题。它不同于其他的数据结构,我在Redis甚至看不到它的结构体定义,因为它本身就是一块连续的内存地址。找到它的new函数看看return zl;其中,它的常量定义如下。

2023-06-04 18:30:22 540

原创 用汇编写一个99乘法表(简单易懂带注释)

【代码】用汇编写一个99乘法表(简单易懂带注释)

2023-06-02 19:01:22 677 1

原创 Redis中的哈希结构(Dict)

哈希结构是一个在计算机中非常常见的结构。哈希结构可以让我们在O(1)时间复杂度查找元素并且对其操作,并且增删改查性能并不会随着数据量的增多而改变。反而数据量的增大,会出现两个关键问题,一个是哈希冲突,另一个是rehash。而在Redis中,使用拉链法来解决哈希冲突,使用渐进式rehash来降低rehash的性能开销。我们把存储数据的地方看成一个个桶(Bucket),当数据量超出桶容量或者Hash函数给出的桶号相同的时候,便会出现哈希冲突。

2023-06-02 16:48:30 355

原创 Redis中的整数集合(IntSet)

Redis会确保Intset中的元素唯一、有序具备类型升级机制,可以节省内存空间底层采用二分查找方式来查询。

2023-06-01 22:31:14 478

原创 Redis中的动态字符串(SDS)

当我们存储一些小的字符串比如’name’,'user’这些非常小的字符串,根本没必要去用int64这么大的空间去存储,否则有可能结构体定义比本身数据还要占内存。所以,为了更好的管理内存空间,Redis设计了结构头,定义了 sdshdr5(已弃用),sdshdr8,sdshdr16,sdshdr32,sdshdr64五种SDS类型,分别表示该结构体存储的字节大小。Redis是用C语言编写的。当你运行这段代码时,你可以看到,打印的结果是 5,表示编译器用了紧凑型内存分配,s2 结构体只占用 5 个字节的空间。

2023-06-01 14:40:13 316

原创 最小生成树

贪心策略:如果我们自己去找最小生成树,以我自己为例,可能每次我都会下意识的去找 对应那一点可以走的最小的点,但是走到第三张图的时候,我就无法再走下去了,所以贪心策略不是以当前点为中心,找到他可达周围的最小点。正确的贪心策略应该是,从目前可达的点中,选择一个最小的点去到达。如果G的一个子图G’是一颗包含G的所有顶点的树,则称G’为G的生成树。在G的所有生成树中,耗费最小的生成树称为G的最小生成树。大白话:在一个无向图中,找到点数 - 1 个边可以连起来所有顶点,并且所有边权加起来最小。

2023-05-25 17:46:11 1007

原创 Java中的类加载机制

一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历**加载、验证、准备、解析、初始化、使用和卸载七个阶段。类的初始化是类加载的最后一个阶段,也是在这个阶段,JVM才开始执行Java类中编写的代码。初始化阶段就是执行类构造器< clinit >()方法的过程。- main 方法所在的类,总会被首先初始化- 首次访问这个类的静态变量或静态方法时- 子类初始化,如果父类还没初始化,会引发- 子类访问父类的静态变量,只会触发父类的初始化- Class.forName- new

2023-05-24 23:52:58 643

原创 Dijkstra单源最短路

描述:给定一个带权有向图G = (V,E),其中每条边的权时非负数。另外,给定V中的一个顶点,称为源。现在要计算从源到所有其他各顶点的最短路长度。这里路的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。以下图的题为例,进行分析。设源点为顶点1,采用Dijkstra算法求下图中源V0为到其余各顶点的最短路径。

2023-05-20 18:31:25 755

原创 动态规划 --- 01背包

01背包,从暴力递归一步步优化到动态规划。

2023-05-04 16:52:57 490

原创 动态规划 --- 电线布设

其实写到dp [ i ] [ j ] = dp [i - 1] [ j ] 还能理解,但是dp [ i ] [ j ] = Math.max(dp [ i - 1 ] [ j ] , dp [i - 1] [ end[ i ] - 1] + 1 ) 怎么去理解?如果 j >= end[i],判断当前连线能否加入最大不相交子集 dp [ i ] [ j ] = Math.max(dp [ i - 1 ] [ j ] , dp [i - 1] [ end[ i ] - 1] + 1 )当 i == 1时,

2023-04-27 18:23:12 1778

原创 Mysql插入中文乱码或者插入中文报错问题

如果还是不行,那就先生成sql数据,在生成的sql数据上修改字段编码集,再重新生成数据库。可以看到我的name字段里默认字符编码集是 latin1 这样导致一直插入中文异常。1.数据库编码不对 2.表编码不对 3.字段编码不对。修改数据库表中字符字段编码集为utf8mb4。最近在写项目,被这个问题困扰了一会。mysql插入抛出的异常。mybatis抛出的异常。首先从连接开始找起,

2023-03-03 21:18:13 393

原创 n皇后问题

每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。按照国际象棋的规则,皇后可以攻击与之处在同一行 或同一列 或同一斜线上的棋子。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。​ 从当前坐标开始,往上,x减小,y增加。​ 从当前坐标开始,往下,x增加,y减小。从当前坐标开始,往下x,y都增加。从当前坐标开始,往上x,y都减小。

2023-01-28 19:18:43 467

原创 数据结构之栈与队列

栈,队列,单调栈,单调队列,简单实现与应用

2023-01-12 18:47:08 74

原创 设计模式之职责链模式

3)性能会受到影响,特别是在链比较长的时候,因此需要控制链中最大节点数量,一般通过Handler中设置一个最大节点数量,在setNext()方法中判断是否已经超过阈值,超过则不允许该链建立,避免出现超长链无意识的破坏系统性能。1)职责链模式(Chain Of Responsibility Pattern),又叫责任链模式,为请求创建了一个接受者对象的链。如果一个对象不能处理该请求,那么他会把相同的请求传给下一个接收者,依次类推。1)将请求和处理分开,实现解耦,提高天天的灵活性。

2023-01-10 01:22:50 368

原创 设计模式之备忘录模式

2)理解:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记。在软件层面,备忘录模式有者相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作。1)备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。4)说明:如果希望保存多个Originator对象的不同状态,使用HashMap即可。

2023-01-09 13:27:35 150

原创 Redis五大数据类型学习笔记

redis五大数据类型学习

2022-11-04 12:55:15 427

原创 数据结构之链表

数据结构之链表链表与数组的好处和坏处各种链表的操作以及构建

2022-10-04 23:44:17 202 1

空空如也

空空如也

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

TA关注的人

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