- 博客(143)
- 收藏
- 关注
原创 Redis的主从复制
在分布式系统中,通常会把数据存放到多个副本中,并且部署到多个服务器,以此来满足故障恢复和负载均衡的需求。Redis也是如此,它可以实现多个结点。每个结点可以存储相同的数据。结点集合中又可以分为一个主结点和多个从结点。客户端可以在主节点和从节点读数据,但是写数据只能在主结点上写。主节点写入新数据,则通过本节要讲的主从复制机制,把数据同步给从结点。每个从结点只能有一个主节点,而一个主节点可以同时具有多个从结点。psync命令专门用于主从复制。一般用于初次数据同步,早期redis版本只支持这种赋值方式。
2025-06-01 07:03:52
1034
原创 Redis持久化
fork创建子进程的过程不会中不会真的把父进程的所有数据都拷贝到自己的内存空间中,而是只会复制部分基本的元数据(这些数据很少因此较为轻量)。AOF(Append Only File)持久化:以独⽴⽇志的⽅式记录每次写命令,重启时再重新执⾏ AOF⽂件中的命令达到恢复数据的⽬的。RDB持久化是把当前进程中的全量数据生成一个快照,转成rdb二进制文件并压缩,保存到硬盘的过程(服务器默认开启RDB),RDB在redis中可以手动触发,也可以自动触发。实际上就是把命令集合中冗余的部分删除,只关注数据最终的结果。
2025-06-01 07:00:00
1720
原创 RabbitMQ集群与负载均衡实战指南
RabbitMQ集群架构支持多节点部署,各节点存储相同数据,包含元数据和消息数据。文章介绍了两种队列类型:经典队列(Classic)适合通用场景,但存在宕机丢失数据的风险;仲裁队列(Quorum)基于Raft算法,确保高可用性,适用于一致性要求高的场景。还提供了创建仲裁队列的三种方式(Spring框架、amqp-client、管理平台),并探讨了通过HAProxy实现负载均衡的方法,包括配置修改、队列声明和消息发送示例,以充分利用集群资源并提高系统稳定性。
2025-05-29 08:48:00
1005
原创 RabbitMQ的高级特性
RabbitMQ消息确认机制分为消费者确认(ACK)和生产者确认两种。消费者确认支持自动/手动模式,手动模式下需调用basicAck/Nack/Reject进行确认,否则消息会处于未确认状态。生产者确认通过Confirm和Return机制确保消息可靠投递,需配置publisher-confirms并实现ConfirmCallback回调。Spring AMQP对这些机制进行了封装,通过acknowledge-mode和publisher-confirm-type配置项简化使用。合理配置确认机制可确保消息可靠
2025-05-29 08:47:12
1229
原创 RabbitMQ的其中工作模式介绍以及Java的实现
RabbitMQ是一种广泛使用的消息队列系统,支持多种工作模式和交换机类型。常见的交换机类型包括Fanout、Direct、Topic和Header,分别用于不同的消息路由需求。RabbitMQ的工作模式包括简单模式、工作队列模式、广播模式、路由模式、通配符模式、RPC模式和发布确认模式,每种模式适用于不同的应用场景。简单模式适用于单一生产者和消费者,工作队列模式则支持多个消费者处理不同消息。广播模式将消息复制并发送给所有绑定队列,路由模式和通配符模式则根据路由键进行消息过滤。RPC模式用于请求-响应场景,
2025-05-21 07:17:16
1536
原创 探索MQ:消息队列的核心作用与主流实现
MQ( Message queue ), 是基于生产者消费者模型的, 本质是个队列, FIFO 先⼊先出,只不过队列中存放的内容是消息(message) ⽽已. 消息可以⾮常简单,⽐如只包含⽂本字符串, JSON等,也可以很复杂, ⽐如内嵌对象.MQ多⽤于分布式系统之间进⾏通信。product消息的生产者,它会把生产的消息给到Broker(图中的Virtual Host部分),最终通过Broker给到。生产者和RabbitMQ之间是通过TCP进行连接的,这里的Connection指的是TCP连接。
2025-05-21 07:16:14
1043
原创 Redis常用命令表格汇总(超精炼)
Redis相关命令是学习Redis的基础。它有助于我们使用客户端,比如Jedis和RedisTemplate,又或者C++的RedisPlusPlus,去操作执行Redis相关命令。但是Redis命令还是非常多的,死记硬背不现实,最重要的还是多用,用的多了,自然就记住了。先说明,Redis中下标从0开始,并且输入的下标支持负数。指定的区间也都是闭区间,这和我们之前学的编程语言有所不同。比如区间[0,-3]意思是0到倒数第3个下标的位置。
2025-05-05 16:16:00
1246
原创 从0到1快速了解Redis数据库
Redis(Remote Dictionary Server)是基于内存的仅存储键值对的开源内存数据库(组件)。因其高性能,也就是读写速度快、简单易用而闻名业界。虽然它不像MySQL这种关系型数据库支持多种复杂的数据库查询操作,但架不住它实在是"太快了"(每秒可处理数十万次操作),在高并发场景下应用广泛。至于为什么Redis性能如此之高,下文会介绍到。此外它还支持持多种数据结构,例如Map\Set\List等,适合多种场景,比如缓存、排行榜、会话存储 、消息队列、分布式锁、实时分析与统计…
2025-05-05 16:08:33
1017
原创 形象的讲解什么是Gateway网关
要弄懂Gateway网关,我们需要知道什么是网关。在web应用服务中会涉及很多的接口调用,而且服务器的种类也有很多,为了更好的管理这些接口的调用规则,我们需要建立一个网络请求进入的统一入口。Spring Cloud Gateway是网关的一个实现方式,它是基于Spring+SpringBoot进行开发的。Gateway的组成主要是两大部分Predicate(断言)Filter(过滤器)
2025-04-26 16:33:01
1122
原创 Openfein实现远程调用的方法(实操)
会把Java对象的字段映射成HTTP 请求的查询参数,同样地,是不可省略的注解。order是服务调用方的一个接口,意思是查询orderId为1的订单信息。做足准备后,接下来我们就可以使用Openfeign来进行远程调用了。不可省略,表示接收json格式数据,并且转换成Java对象。
2025-04-17 20:27:09
459
原创 Openfeign的最佳实践
抽取的方式,把解耦合做的更彻底,把opnfeign远程远程调用的功能全部统一放到一个服务中,其他服务调用方使用它提供的jar包即可,相比于继承的方式,抽取的方式连继承都不用写,直接依赖注入即可。这就是继承的方式实现openfeign,我们不需要对每一个服务调用方写方法的实现了,简化了编写流程,这种继承的方式是spring官方推荐的。个人认为抽取的方式会跟加好用,因为它解耦合更彻底,完全可以看作是一个独立的模块,尽管继承的方式是官方推荐的。如果有多个服务调用方,我们就需要写多次这种重复的代码,比较麻烦。
2025-04-17 20:25:33
613
原创 nacos的安装与配置教程
注意如果启动失败可能是端口占用导致的,naocs默认执行端口是8848。如果端口号占用可以杀掉windows中端口号为8848的程序,或者重新配置nacos的运行端口号。.cmd和.sh都是启动nacos的脚本;在windows环境下,我们需要下载jdk,并且需要配置与jdk版本对应的环境变量,这里不过多介绍。单机模式就是只启动一个naocs程序,这个更方便我们进行测试,在设计集群模式时才需要开启集群模式。它是一个功能完善的集注册中心、配置中心、命名服务于的中间件,是微服务架构的核心组件之一。
2025-04-09 15:18:11
1400
2
原创 nacos上手相关配置总结,自备水杯,因为全是干货
在nacos平台我们可以直接对某一个服务的权重进行修改(0-1)数值越大,当前服务承担的任务量越大:当weight为0时,发起的请求不会通过这个服务。这里说的集群指的是服务器集群,也就是提供同种类型服务的服务器集合。这些集合可能被放置在不同的地理位置。不同地理位置的集群之间进行通信会有一定延迟,因此可以设置同集群优先访问的方式优先向里用户最近的服务器发起请求,来提升响应速度。客⼾端通过⼼跳上报⽅式告知服务端(nacos注册中⼼)健康状态, 默认⼼跳间隔5秒;
2025-04-09 15:17:20
964
原创 为什么我们抛弃了Session,拥抱了JWT?
注意signWith(key)是对签名的加密而不是内容,黑客实际上可以枚举jwt提供的有限的算法,去解析出token中传递的数据,这是为什么说明不建议用token去传递敏感信息的原因!使用令牌技术可以解决session的这个痛点,因为令牌使用的是统一的一些哈希算法去生成和解析令牌的,每个服务器只需要保存同一个密钥,即可。token的生成需要key,token的解析也需要key,而key保存在服务器中,因此,token可以防止被黑客伪造!(保存在服务器,不能公开,用于token的生成和token的解析)
2025-04-07 09:48:01
1100
原创 面试遇到SpringAOP不要慌
Aspect Oriented Programming(面向切面编程)是一种编程思想。所谓切面可以理解为特定的一些方法。所以AOP可以看成是面向特定的方法进行编程。比如上一篇文章提到的拦截器,就是AOP的体现。它针对特定的方法进行统一的管理,让代码模块化,易于维护。包括ExceptionAdvice、ResponseBodyAdvice(统一异常处理、统一数据返回格式)都运用了AOP的思想。定义一个注解:@Retention(RetentionPolicy.RUNTIME)//表示运行时,仍然存在。
2025-03-27 15:49:46
938
原创 Spring拦截器(Intercepter)
拦截器(Intercepter)是Spring框架提供的一个核心功能,它可以拦截指定接口的请求和响应,执行预设好的代码。(注意是在网络请求的层面进行的拦截)那么它有什么应用场景呢?最常用到的一个就是用户的登录校验。如果我们要对项目中所有的接口统一增加一个登陆校验的功能,那我们可能需要对所有接口的代码进行修改,其实这是非常复杂的,违背了软件工程中解耦合的要求。而拦截器恰好能解决这样的问题。它可以在不对原有业务代码侵入的情况下,在网络请求的层面,对用户的请求进行校验,
2025-03-27 10:30:51
1062
原创 通俗易懂搞懂@RequestParam 和 @RequestBody
本博客将会详细讲解以下参数绑定相关注解的使用场景,说明它们之间的关系和区别,以及在项目开发中使用的规范@Param。
2025-03-22 19:28:51
2151
原创 Session和Cookie我不允许你不懂
Cookie是一种在客户端存储少量数据的技术,通过 HTTP 头部传递信息,实现用户状态保持,但受容量、安全性等限制。Session则将用户数据存储在服务器端,通过 Cookie 传递 Session ID 来恢复状态,虽然安全性更高,但也需要合理管理服务器资源。
2025-03-20 21:42:11
984
原创 Legendre公式
nnn是一个正整数ppp是一个小于等于nnn的质数。x :通过Legendre公式可以计算出n!n!n!的其中一个约数pxp^xpx中xxx的最大值。唯一分解定理表明,任何正整数都可以唯一地表示为质数的幂的乘积,n!n!n!n!n!p1e1p2e2pkek,其中pip_ipi是唯一分解后的质数,eke_kek是对应的pip_ipi。
2025-03-02 10:59:07
668
原创 最小生成树——prim算法
最小生成树是一棵树,因此它是不成环的。他是一个具有N个结点,N-1条边的无向图。(树是特殊的图)并且这个图任意一个结点之间都是直接或者间接相连的。这个图的边权和是最小的,顾名思义最小生成树。邻接表存图vis数组记录已访问结点优先级队列优化每次都从优先级队列里贪心的拿到最小权值所访问结点小于实际结点数,说明图不连通完。
2025-02-28 08:37:58
749
原创 完全平方数——唯一分解定理
任何大于 1 的正整数,都可以唯一分解为若干个质数的乘积(忽略排列顺序)。对于任意正整数n1( n > 1 )n1np1e1×p2e2×⋯×pkeknp1e1×p2e2×⋯×pkekp1p2pkp1p2pk是质数;e1e2eke1e2ek是正整数;
2025-01-23 10:09:18
1239
原创 地宫取宝——DFS记忆化搜索
原因在于,我们需要腾出一个状态用来表示起点位置(x=1,y=1)没有选择任何宝物,当前的选择的最大宝物的价值的无效值用max=0表示。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。因此我们可以使用DFS,先深度搜索把靠终点位置的情况保存起来,然后回退逐步计算起点位置的值。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这。宝物的价值,重新处理过一次,整体+1,原先范围是。代表这个格子上的宝物的价值。,以及当前捡到的宝物的最大价值。
2025-01-16 16:15:22
1083
原创 深度搜索——记忆化搜索
/到达一个位置,就标记//当前位置的上下左右深度搜索i<4;i++){//位置(a,b)不能越界,同时高度也不能比(x,y)大dfs(a,b);
2024-12-30 13:59:47
982
原创 深度搜索——染色法
根据或运算的这几个特性,我们直接对color中当前位置的周围数据进行|=运算,结果是3的话,那么这个墙打破,终点和起点就是可以连通的。gX和gY配套使用,是用来辅助移动的数组,例如当前位置是(X,Y),如果向上移动,我们只需要(X+gX[0],Y+gY[0])即可。图中,黑色是墙,蓝色粗线是正确可达终点的路径,周围的细线是递归的分支,表示不可达终点的路径被搜索过。由于那个坐标有墙,我们不确定,所以我们可以直接把graph数组遍历一遍,找到是墙的位置。由于终点黑色墙的阻碍,起点未能搜索到终点。
2024-12-29 15:09:26
1002
原创 线段树快速上手
线段树是高效查询数组某区间的特殊值的高级数据结构。底层适用数组来实现,但逻辑上是二叉树结构,因此它的更新和查询的时间复杂度都是OlogNO(logN)OlogN。(建立线段树的时间复杂度是ONO(N)ON这里提到的区间特殊值有很多,可以是区间最值,可以是区间和,也可以是区间GCD(最大公约数)等等。因此它的应用非常广泛。
2024-12-29 15:08:40
699
原创 基础算法:一维差分
本篇博客首先讲解一维差分的做题套路(模板),在讲解做题流程的时候不用想为什么要这样,按照这个套路来就可以作对。在文章最后,我会用一个简单的例子让大家直观的了解的原理,如果要说用数学定理证明,小编暂时还没有这个本事🫡。diff默认值为0,大小是原来数组的大小n然后在+1。为什么要这样,等一下就知道了。接下来我们需要进行q次操作,在区间[R,L]中的框增加k个球。每次操作我们只需要对diff[R]+=k即可。这也是为什么diff数组大小必须是n+1的原因,如果R太大,就会越界。
2024-12-20 08:40:32
575
原创 01背包:模板题+实战题
我们有一个背包,背包的容积有限,最多只能装下总体积为V的物品。现在给定我们N个物品,第i个物品的体积vi,对应的价值是wi1≤i≤N每个物品有且仅有一个。要求我们再背包容量允许的范围内,选取物品,使得总价值最大。
2024-12-19 08:16:27
806
原创 完全背包_模板题
完全背包可以看作是01背包演变过来的,其定义如下:我们有一个背包容量是V,给定我们N种物品,每个物品有其对应的价值wi和占用体积vi1≤i≤N1≤i≤N),并且每种物品都有无限个,要求我们在不超过V的情况下,选取物品,使得总价值最大化。它和01背包唯一的区别就是在物品的选择次数上。完全背包中,每种物品是由无限个的,你可以选择任意多个物品,当然选0个也是可以的,而后者只能选或者不选。
2024-12-18 08:17:22
1243
原创 MyBatis是什么?直接快速入门!
xml的配置和方法一是相同的。但是要注意xml中涉及的字段,userInfo这个对象的字段中一定要设置!简单来说,它使用代码来实现程序和数据库之间的交互的。实际上我们刚才就完成了一次数据库连接!@Select(“写SQL即可”)以MySQL为例演示。
2024-12-18 08:17:01
633
原创 【一维前缀和】以及【二维前缀和的图形化理解】
一维前缀和是一种用于快速计算数组部分和的技巧。前缀和数组中的每个元素表示原数组从第一个元素到当前元素的累积和。通过预处理得到前缀和数组,可以在常数时间内计算任意区间的和。假设有一个数组 arr = [1, 2, 3, 4, 5],我们想快速计算某个区间 [l, r] 的和(例如,计算区间 [2, 4] 的和)。首先构建前缀和数组 prefix,其中prefix[i] 表示 arr[0] 到 arr[i] 的累积和所得的前缀和数组为 prefix = [0, 1, 3, 6, 10, 15]。
2024-12-17 08:51:07
833
原创 多重背包以及二进制优化(无死角)
多重背包问题是01背包问题的一个变种,它同样需要在多种物品中选择,。,使得总价值最大化。01背包问题中,每种物品只能选取一次,因此选择范围是0或1,即“选”或“不选”。多重背包问题中,
2024-12-17 08:50:43
1512
原创 spring+hutool实现简单验证码功能
请求方式GET请求URL请求参数:无超时时间的定义:长宽的定义:验证码和时间戳名字的定义:一旦我们要求改这些参数,会非常麻烦,东改一下,西改以下。所以我们的优化思路是把这些参数放到properties文件中。
2024-12-16 08:43:10
776
原创 2024年蓝桥杯Java B组省赛真题超详解析(全)
正经详细题解(全),代码均可AC。不是标题党!讨厌TMD标题党!!如有疑惑欢迎评论区讨论,或者@博主帮你解答o(≧▽≦)o
2024-12-16 08:42:39
18306
16
原创 裴蜀定理详细介绍
裴蜀定理对于两个整数 ( a ) 和 ( b ),它们的最大公约数 ( d ) 可以表示成 ( a ) 和 ( b ) 的线性组合。也就是说,一定存在整数 ( x ) 和 ( y ),使得axbydaxbyd假设 ( a = 15 ) 和 ( b = 10 )。它们的最大公约数是 5,也就是 ( gcd(15, 10) = 5 )。
2024-12-14 08:35:59
1567
原创 JavaEE 第27节——IP协议报头格式介绍
对于一个IP数据报:分为首部和数据部分,数据部分包含了传输层的数据报,例如可能时TCP数据报,或者UDP数据报。
2024-12-13 09:03:14
966
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人