自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis持久化——RDB与AOF

Redis以存取速度快而闻名,其中最主要的原因是因为它是将数据存储在内存中的,但这就不可避免会出现因进程退出而导致的数据丢失的问题,为了解决这个问题,Redis支持了持久化功能,支持RDB和AOF两种持久化机制。

2025-08-10 10:45:13 539

原创 JVM——内存布局、类加载机制及垃圾回收机制

JVM会通过一系列称为“GC Root”的对象作为起点,不断向下遍历,遍历到的对象会被标记为可达,没有遍历到的对象会被标记为不可达,不可达的对象会被当作垃圾回收。给对象增加一个引用计数器,每有一个地方引用,计数器+1,每有一个引用失效,计数器-1,只需要通过判断计数器中的值是否为0来判断对象为垃圾。将类对象进行最终的初始化,对对象的各种属性进行填充(如果发现这个类的父类还没有加载,也会触发父类的类加载)JVM中的垃圾回收,实际上是回收对象,以对象为单位,既然要回收垃圾,就需要先找到垃圾,相关算法主要有。

2025-07-30 16:54:19 595

原创 深入Spring AOP底层——JDK、CGLIB动态代理

代理模式就是为其它对象提供一种代理以控制对这个对象的访问,它的作用就是通过一个代理类间接调用目标方法,并且在间接调用的过程中还可以对目标方法进行功能增强。打个比方:你可以想象,你想要租房,中介(代理)会帮你联系房东(目标对象),同时中介还会负责和你签订合同,代房东将房屋出租给你(如果这是一个黑中介,可能还会想你索取各种费用),那么在上面的过程中:(1)中介代房东将房屋出租给你,就属于间接调用(本质是房东出租给你)(2)黑中介向你索取各种费用,就属于功能增强了。

2025-07-29 10:02:46 858

原创 统一服务入口——Spring Cloud Gateway

API网关也是一个服务其中,id可以随便起一个,uri中的lb表示负载均衡,predicates表示路由条件(在当前配置表示所有路径符合Path规则的请求,都会代理到uri参数指定的地址)

2025-07-23 09:50:30 1035

原创 优雅实现远程调用——OpenFeign

OpenFeign是一个声明式的WebService客户端,可以使远程调用更加便利,只需要创建一个接口,然后添加一个注解就可以使用OpenFeign。

2025-07-21 16:17:21 703

原创 Nacos——集注册、配置等多功能的强大组件

Nacos时Spring Cloud Alibaba的组件,它遵顼Spring Cloud定义的服务注册与服务发现规范,因此使用Nacos或Eureka对Spring Cloud来说并没有太大区别,主要区别在于:1> Eureka需要自己搭建一个服务,而Nacos不需要,直接启动组件即可;2> 对应的依赖和配置不一样。

2025-07-21 16:17:07 842

原创 Spring Cloud——Spring Cloud LoadBalancer

将用户请求‌智能分发‌到多个相同服务的实例上,避免单点压力。核心目标:‌提升吞吐量、增强容错性、实现水平扩展‌1.定义随机算法对象,通过@Bean将其加载到Spring容器中,这里的代码时直接从Spring官网@Beanname);2.使用或者注解configuration = CustomLoadBalancerConfiguration.class)//参数name表示对哪个服务生效,configuration表示使用哪种负载均衡策略@Bean。

2025-07-21 16:16:50 844

原创 Spring Cloud —— 服务注册、服务发现

注册中心简单来说就是保存服务提供者信息的一种工具,当服务消费者需要调用服务时,从注册中心获取服务方信息。服务提供者(server):一次业务中,被其它微服务调用的服务,即是提供接口给其它微服务;服务消费者(client):一次业务中,调用其他微服务的服务,即调用其它微服务提供的接口;服务注册中心(registry)保存Server的注册信息,当Server节点发生变更时,Registry会同步 变更。服务与注册中心使用⼀定机制通信,如果注册中心与某服务长时间无法通信,就会注销该实例。

2025-07-21 16:16:13 887

原创 Spring Cloud 引题——模拟分布式及远程调用

一个微服务只负责⼀个功能或业务领域,每个服务应该有清晰的定义和边界,只关注自己的特定业务领域每个微服务都应该具备高度自治的能⼒, 即每个服务要能做到独立开发,独立测试,独立构建,独立部署,独立运行微服务之间需要做到单向依赖, 严禁循环依赖, 双向依赖。

2025-07-21 16:15:31 226

原创 RabbitMQ核心机制——事务、消息分发

RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制 因此RabbitMQ也支持事务机制。Spring AMQP也提供了对事务相关的操作。RabbitMQ事务允许开发者确保消息的发送和接收是原子性的,。

2025-05-26 07:54:48 1365

原创 RabbitMQ核心机制——延迟队列

消息发送之后,不想让消费者马上收到消息,而是进行消费。

2025-05-25 16:23:45 1787

原创 RabbitMQ核心特性——重试、TTL、死信队列

由于各种原因,导致的无法被消费的消息,就是死信,死信队列就是用来存储死心的队列,当一个消息在队列中变成死信后,可以被重新发送到另一个交换机DLX(Dead Letter Exchange)中,这个交换机绑定的队列就是死信队列DLQ(Dead Letter Queue)。1> 消息过期2> 消息被拒绝 ,且requeue参数置为false3> 队列达到最大长度3.2 死信代码示例一、声明队列、交换机及绑定关系上面在声明了普通交换机、队列以及死信交换机、队列,还要。

2025-05-24 11:38:21 1385

原创 RabbitMQ可靠传输——持久性、发送方确认

publisher confirms 机制可以保证消息从生产者到Broker的可靠性,其中confirm模式工作在生产者到exchange之间,return模式工作在exchange到queue之间。

2025-05-22 16:49:06 962

原创 RabbitMQ——消息确认

经过确认,可以发现AcknowledgeMode.NONE机制,无论消费者是否正确消费消息,都会自动确认,不会保留异常消费的消息。

2025-05-21 11:04:04 1260

原创 Spring Boot中如何使用RabbitMQ?

本文介绍了如何在SpringBoot中使用RabbitMQ,涵盖了准备工作、配置、以及四种常见的工作模式:工作队列、发布/订阅、路由和通配符。首先,需要在项目中添加spring-boot-starter-amqp依赖,并配置RabbitMQ的连接信息。接着,通过声明队列、交换机和绑定关系来配置不同的工作模式。生产者通过RabbitTemplate发送消息,消费者通过@RabbitListener注解监听队列并处理消息。与JDK原生客户端相比,SpringBoot简化了连接管理和配置,开发者只需关注业务逻辑的

2025-05-20 09:07:58 1602

原创 RabbitMQ七种工作模式解析及代码演示

生产者将信道设置成confirm(确认)模式, 一旦信道进入confirm模式, 所有在该信道上面发布的消息都会被指派⼀个唯⼀的ID(从1开始), ⼀旦消息被投递到所有匹配的队列之后, RabbitMQ就会发送⼀个确认给生产者(包含消息的唯⼀ID), 这就使得生产者知道消息已经正确到达目的队列了, 如果消息和队列是可持久化的, 那么确认消息会在将消息写入磁盘之后发出. broker回传给生产者的确认消息中包含了确认消息的序号, 此外 broker 也可以设置channel.basicAck方法中的。

2025-05-18 10:52:30 1085

原创 RabbitMQ工作流程及使用方法

RabbitMQ是一款基于AMQP协议的开源消息中间件,专为分布式系统中的异步通信设计。它通过消息代理机制实现可靠的消息传递、存储和路由,并支持跨语言和跨平台交互。RabbitMQ的工作流程包括生产者与代理建立连接、声明交换机和队列,以及消息的传输。入门使用RabbitMQ需要引入依赖、创建生产者和消费者实体类,并通过建立连接、创建信道、声明队列、发送和消费消息等步骤实现消息的异步处理。最后,资源使用完毕后需进行释放,以确保系统资源的有效管理。

2025-05-15 17:40:39 823

原创 服务器主动发送响应?聊天模块如何实现?

当我们在某聊天界面中发送一个消息时,如A给B发送了一个消息,而B马上就收到,仔细思考会发现以下问题 :1. A给服务器发送请求,但服务器却给B发送了响应2.B没有向服务器发送请求,却收到了响应很明显,单纯的使用HTTP协议很难做到这一点,因此需要使用另一种应用层协议——WebSocket。

2025-04-29 11:49:33 1003

原创 动态规划每日一练(五)

1312. 让字符串成为回文串的最少插入次数 - 力扣(LeetCode)1312. 让字符串成为回文串的最少插入次数 - 给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符。请你返回让 s 成为回文串的 最少操作次数。「回文串」是正读和反读都相同的字符串。示例 1:输入:s = "zzazz"输出:0解释:字符串 "zzazz" 已经是回文串了,所以不需要做任何插入操作。示例 2:输入:s = "mbadm"输出:2解释:字符串可变为 "mbdadbm" 或者 "mdbabdm"。

2025-04-12 08:11:50 1035

原创 SpringBoot——拦截器、统一结果返回、统一异常处理

(实现HandlerInterceptor接口)<2>

2025-04-09 17:17:48 1127

原创 更高的效率——MyBatis-plus

对于更加复杂的查询语句(如子查询),可能无法直接使用条件构造器完成,因此,MyBatis-plus提供了自定义SQL的功能,可以利用Wrapper构造查询条件,再结合Mapper编写SQL@Mapper测试代码:@Test使用自定义SQL,由几个注意事项:• 参数命名:在自定义 SQL 时, 传递 Wrapper 对象作为参数时, 参数名必须为 ew,或者使用注解明确指定参数为 Wrapper 对象.• 使用 ${ew.customSqlSegment}

2025-03-30 19:42:46 1069

原创 MyBatis操作数据库进阶——动态SQL

动态 SQL 是根据程序运行时的条件灵活生成不同 SQL 语句‌的技术。它的核心目的是在不修改代码‌ 的前提下,通过条件判断、循环等逻辑,,解决传统 SQL 语句死板、难以应对复杂业务场景的问题。

2025-03-24 16:15:22 902

原创 MyBatis 操作数据库

MyBatis 是一款基于 Java 的,主要用于简化数据库操作流程。其核心设计通过封装 JDBC 技术,将 SQL 语句与业务逻辑解耦,使开发者能够专注于 SQL 编写而非底层数据库连接管理‌。MyBatis 提供了一种半自动化的 ORM(对象关系映射)机制,支持通过 XML 或注解配置 SQL 语句,并将数据库记录映射为 Java 对象(如 POJO),从而实现数据持久化‌自动处理 JDBC 底层操作(如驱动加载、连接管理、结果集解析),减少重复代码‌。

2025-03-11 13:23:12 828

原创 SpringBoot——配置文件

配置文件在软件开发和系统管理中扮演着重要角色,主要用于存储和管理程序或系统的设置信息,使应用的行为能够,而配置文件主要是解决硬编码带来的问题,在idea、微信、qq等程序都存在配置文件,当启动一个程序时,程序从配置文件中读取数据并加载运行。

2025-02-24 17:29:25 525

原创 Spring IoC & DI

如:上面两个对象的名称不再使默认的方法名(s1、s2),而是自定义的student1、student2。(其它注解的修改方式类似)

2025-02-20 18:02:44 894

原创 MySQL——数据库约束

定义表示,若。

2025-02-17 16:39:16 884

原创 MySQL——CRUD

1>查询时不加限制会返回表中所有结果,如果数据量过大,会。

2025-02-10 09:59:14 849

原创 MySQL数据库基础(创建/删除 数据库/表)

影响order by 、 where条件和索引行为。MYSQL 8.0的默认字符集为utf8mb4,校对规则为utf8mb4_0900_ai_ci。

2025-02-07 12:43:44 1054

原创 Spring Web MVC项目的创建及使用

MVC 是 Model View Controller 的缩写,它是软件工程中的一种软件架构设计模式,它把软件系统分 为模型、视图和控制器三个基本部分• View(视图) 指在应用程序中专门用来与浏览器进行交互,展示数据的资源.• Model(模型) 是应用程序的主体部分,用来处理程序中数据逻辑的部分.• Controller(控制器)可以理解为一个分发器,用来决定对于视图发来的请求,需要用哪一个模型来处理,以及处理完后需要跳回到哪一个视图。即用来连接视图和模型。

2025-02-05 10:22:07 1249

原创 动态规划每日一练(四)

646. 最长数对链 - 力扣(LeetCode)646. 最长数对链 - 给你一个由 n 个数对组成的数对数组 pairs ,其中 pairs[i] = [lefti, righti] 且 lefti < righti。现在,我们定义一种 跟随 关系,当且仅当 b < c 时,数对 p2 = [c, d] 才可以跟在 p1 = [a, b] 后面。我们用这种形式来构造 数对链。找出并返回能够形成的 最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。

2025-01-31 17:09:35 660

原创 动态规划每日一练(三)

918. 环形子数组的最大和 - 力扣(LeetCode)918. 环形子数组的最大和 - 给定一个长度为 n 的环形整数数组 nums ,返回 nums 的非空 子数组 的最大可能和。环形数组 意味着数组的末端将会与开头相连呈环状。形式上, nums[i] 的下一个元素是 nums[(i + 1) % n] , nums[i] 的前一个元素是 nums[(i - 1 + n) % n]。子数组 最多只能包含固定缓冲区 nums 中的每个元素一次。

2025-01-23 17:05:57 740

原创 动态规划每日一练(一)

面试题 17.16. 按摩师 - 力扣(LeetCode)面试题 17.16. 按摩师 - 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动 示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。

2025-01-16 16:01:29 597

原创 动态规划每日一练(二)

746. 使用最小花费爬楼梯 - 力扣(LeetCode)746. 使用最小花费爬楼梯 - 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。示例 1:输入:cost = [10,15,20]输出:15解释:你将从下标为 1 的台阶开始。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。总花费为 15。

2025-01-11 16:58:45 646

原创 动态规划每日一题(2)——三步问题

面试题 08.01. 三步问题 - 三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例1: 输入:n = 3 输出:4 说明: 有四种走法示例2: 输入:n = 5 输出:13提示: 1. n范围在[1, 1000000]之间。面试题 08.01. 三步问题 - 力扣(LeetCode)

2025-01-06 16:35:09 329

原创 网络世界的“交通规则”——TCP/IP(一)

答:应答报文也是一个TCP数据报,但是它的载荷不携带任何信息,在发送应答报文时,只需要将6位标志位中的ACK设置为1即可。

2025-01-05 19:03:09 1172

原创 动态规划每日一题(一)——第n个泰波那契数

示例 1:输入:n = 4输出:4解释:T_3 = 0 + 1 + 1 = 2T_4 = 1 + 1 + 2 = 4示例 2:输入:n = 25输出:1389537 提示: * 0 <= n <= 37 * 答案保证是一个 32 位整数,即 answer <= 2^31 - 1。通过滚动数组的优化,可以是空间复杂度减低一个维度,由原来的O(n)变为O(1)1137. 第 N 个泰波那契数 - 力扣(LeetCode)对于这道题,每一个元素的状态表示都。只需要知道前三个元素的状态。的方式来进行空间优化。

2025-01-05 09:52:55 358

原创 网络原理——HTTPS

HTTPS 工作过程中涉及到的密钥有三组.用于校验证书是否被篡改. 服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书 的签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过用于协商生成对称加密的密钥. 服务器生成这组 私钥-公钥 对, 然后通过证书把公钥传递给客户端. 然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器。

2024-12-04 16:08:16 5760

原创 网络原理——HTTP

HTTP是一种非常常用的一个应用层协议,我们平时在浏览器中访问的各种中页面,都涉及到这个协议,当我们在浏览器中输入一个网址时,浏览器就会给对应的服务器发送一个HTTP请求,服务器会给客户端返回一个HTTP响应。

2024-12-04 16:07:43 1367

原创 Spring Boot入门——Spring Boot项目的创建

一、报红创建好Spring Boot项目之后,我们的pom.xml文件可能会出现一行或多行报红的情况,这实际上都是对应的报没有下载下来的缘故,对此我们有如下几种解决办法。1.刷新Maven这是最简单的办法2.如果是全部包都没下载下来,多次刷新Maven(如果还是不行,可能是没有权限的原因)我们就去文件夹中找到对应的包,将它删除即可如果还是解决不了,就加入版本号一般只有上图这个包才会出现删除了本地仓库还是报红的,其它包都不建议加入版本号。

2024-11-23 17:50:40 3787

原创 SpringBoot入门准备——Maven的使用

创建Maven项目之前,要先了解自己的idea类型,如果是社区版,版本必须在2022.1.4之前,jdk的版本要在17之前。Maven的核心功能主要体现在两个方面,分别是项目构建和管理依赖。Maven 提供了标准的,跨平台(Linux, Windows, MacOS等)的自动化项目构建方式 当我们开发了一个项目之后, 代码需要经过编译, 测试, 打包, 发布等流程, 每次代码的修改, 都需要经过这些流程, 如果代码反复调试修改, 这个流程就需要反复进行, 就显得特别麻烦, 而Maven 给我们提供了 一套

2024-11-22 15:03:25 1336

空空如也

空空如也

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

TA关注的人

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