自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 雪花算法理解

雪花算法(Snowflake Algorithm)是Twitter开源的一种分布式唯一ID生成算法,它生成的ID并不是传统意义上的字符串,而是一个64位的长整型数字。这个64位的数字被划分为多个部分,每个部分都有其特定的含义。

2025-10-09 14:11:43 386

原创 Java设计模型-责任链模式

责任链模式(Chain of Responsibility)是一种行为设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合。这个模式通过将请求沿着处理链传递,直到某个对象处理它为止。

2025-09-16 17:44:24 229

原创 Navicat更改MySql表名后IDEA项目启动会找原来的表

解决方法:Navicat关闭数据库连接,再重新连接数据库。问题:找不到表,项目启动失败。

2025-08-12 15:47:52 211

原创 Java设计模式-建造者模式

把复杂对象拆成三个阶段,先指挥按序,最后一个的对象。

2025-07-25 15:08:19 1139

原创 Java设计模式-代理模式

代理模式是一种结构型设计模式:为提供一种以控制对它的访问。调用方不直接引用原对象,而是引用代理;代理在“把请求转给原对象的前/后”附加额外逻辑(缓存、鉴权、延迟加载、事务、日志、熔断、AOP 等)。

2025-07-25 15:04:32 665

原创 Java设计模式-适配器模式

/目标接口//高级播放器接口(需要被适配)

2025-07-24 20:17:42 925

原创 使用浅克隆 ,判断两个对象却不是同一个?

堆地址 0x3000 → { id = 1, list = 0x2000 } ← 注意 list 仍指向 0x2000。堆地址 0x1000 → { id = 1, list = 0x2000 }比较的是 0x1000 与 0x3000,显然不同 →。可能指向同一份子对象,这才是“浅”的含义。是从原型对象那儿“按位拷贝”过来的。因为“浅克隆”≠“引用复制”。所以即使只是浅克隆,

2025-07-24 20:16:04 163

原创 Java设计模式-备忘录模式

备忘录模式把“状态”变成可存储、可回滚的独立对象,让“撤销/重做”功能在面向对象世界里优雅落地。

2025-07-23 15:13:20 382

原创 Java设计模式-策略模式

策略模式(Strategy Pattern)是 Java 设计模式中。

2025-07-23 14:43:54 426

原创 Spring中的SpEL是什么

SpEL 就是 Spring 的“运行时脚本”,能在注解、XML、模板里直接读写 Bean、环境变量、集合、静态方法,语法简洁、功能强大,但要警惕运行时异常和性能开销。

2025-07-18 16:31:58 666

原创 怎么解决Spring循环依赖问题

真正解决循环依赖,优先做领域拆分或事件驱动;代码层面用@Lazy/ Setter 注入即可 90% 场景无痛落地;构造器循环或多例 Bean 只能重构,Spring 的三级缓存只是兜底,不是银弹。

2025-07-18 16:25:39 453

原创 Redis键过期后会立即删除吗

当你尝试访问一个键时,Redis 会检查该键是否已经过期。如果过期了,Redis 会将其删除,并返回空值。这就是惰性删除,也就是说,只有在实际访问该键时,Redis 才会检查并删除过期的键。在 Redis 中,键的过期机制并不是立即删除的。当一个键设置了过期时间后,Redis 不会在设置的过期时间一到的瞬间就立即删除该键。Redis 还会周期性地对数据库中的键进行检查,删除那些已经过期的键。因此,在极少数情况下,键可能会在过期后短时间内依然存在,直到下次访问或定期清理发生。

2025-07-16 16:53:13 337

原创 热部署插件Jrebel激活2025.7.16亲测有效

插件选择下载2025.2.0版 ,更高版本可能失效。{guid}换成这个网页生成的。

2025-07-16 14:13:27 8334 26

原创 Java开发中的DDD架构思想

DDD的优势主要体现在它通过深入的领域知识来构建可维护性高的系统,促进了开发人员与业务专家之间的合作,从而能更好地满足业务需求。DDD强调将软件的设计与业务领域紧密结合,通过对领域知识的深刻理解来指导系统的构建。:在大型系统中,通常会有多个子领域和模块,限界上下文即为这些子领域的边界。每个限界上下文有自己独立的模型和逻辑,清晰定义了一个模型在特定上下文中的使用,而不同上下文之间可能会存在模型衔接(如通过API、消息等)。:在领域模型中,有身份的对象,它的生命周期是被跟踪的,通常具有唯一标识符。

2025-07-14 09:40:36 370

原创 SpringBoot的启动流程是怎样的?

阶段,Spring Boot 启动内嵌的 Web 服务器,默认使用。负责接收并处理 HTTP 请求,随后将请求分发到相应的控制器。Spring Boot 创建应用上下文,并通过。启动应用,这是整个启动流程的入口。Spring Boot 通过。Spring Boot 通过。自动配置 Web 组件,如。初始化 Web 环境。,极大地简化了配置过程。

2025-03-06 10:22:58 410

原创 Spring是如何处理循环依赖问题的?

中,这样它们就可以先用“半成品”凑合着工作,而不会一直等待对方的完成。: 等到所有对象都准备好了,Spring 就会把它们放到。: 当两个对象互相依赖时,Spring 会先把它们放到。中,这样它们就可以完全使用了。

2025-03-05 11:20:48 295

原创 Java中的CountDownLatch是什么?

在Java中,是一个用于实现线程间的同步的同步辅助类,属于包。它允许一个或多个线程等待,直到一组操作完成。CountDownLatch通过一个计数器来控制线程的执行顺序。

2025-03-02 14:52:06 472

原创 Java中的CyclicBarrier是什么?

在Java中,是一个用于在多线程中使多个线程在某个点上进行同步的同步辅助类。它允许一组线程互相等待,直到达到某个共同的障碍点(即 阻塞点),从而实现线程间的协调。

2025-03-02 14:51:18 435

原创 Java中的Semaphore是什么?

在Java中,(信号量)是一种用于控制对共享资源访问的同步工具。它属于包,主要用于在多线程环境中限制同时访问某个特定资源的线程数量。

2025-03-02 14:50:26 285

原创 Java中的ForkJoinPool是什么

ForkJoinPool是Java 7引入的一种线程池,专门用于并行处理大任务的子任务。它是包中的一个类,旨在简化并行计算,尤其是在涉及递归分解任务时。

2025-03-02 14:48:43 369

原创 Redis的线程模型是什么

Redis 的基本线程模型是单线程的,通过事件驱动和高效的 I/O 多路复用机制,能够在高并发的场景下提供高性能的服务。同时,Redis 6.0 及以后的版本也逐步引入了多线程处理来优化特定操作,但核心命令的处理仍然采用单线程方式。Redis 的线程模型相对简单,主要采用的是单线程模型。

2025-01-17 18:06:39 655

原创 讲一下Java中Synchronized关键字底层原理

关键字是用于实现线程安全的一种机制。

2025-01-17 18:05:13 497

原创 HTTP返回码和其含义

HTTP返回码是用来表示HTTP请求的结果状态的数字代码。

2024-11-01 12:43:11 1002

原创 RabbitMQ怎么避免消息被重复消费

消息唯一标识符: 为每条消息分配一个唯一的标识符(例如 UUID)。消费者在处理消息时,可以将这个标识符存储在数据库中或者内存中,处理后再进行确认。如果系统重启或者重复消费了同一消息,消费者可以先检查标识符是否已存在,从而避免重复处理。 消息去重机制: 在消费者端实现消息去重机制,例如使用内存或数据库维护已处理消息的集合,定期清理过期的记录,避免内存或存储的无限增长。

2024-11-01 12:00:45 384

原创 如何保证RabbitMQ消息的可靠传输?

丢失分为:生产者丢失消息、消息列表丢失消息、消费者丢失消息;

2024-11-01 10:58:05 673

原创 RabbitMQ的解耦、异步、削峰是什么?

是指使系统的不同组件间的依赖关系减少或消失。在使用RabbitMQ时,生产者(发送消息的组件)和消费者(接收和处理消息的组件)不直接交互,而是通过消息队列进行通信。通信意味着消息的发送和接收可以不在同一时间进行。当生产者发送消息到RabbitMQ时,它不必等待消费者处理完消息再继续执行。是指在系统负载高峰时,使用队列暂时存储请求,减轻系统瞬时负载的压力。

2024-11-01 10:49:51 1207

原创 什么是RabbitMQ

RabbitMQ 是一个开源的消息代理软件,旨在支持多种消息协议。RabbitMQ 允许应用程序和服务之间进行异步通信,能够在不同的应用和系统之间传递消息,从而实现解耦。同时,RabbitMQ 也支持消息持久化,将消息保存在磁盘上,以便在重启时恢复。:RabbitMQ 提供多种语言的客户端库,支持 Java、Python、Ruby、Go 等多种编程语言,方便开发者与 RabbitMQ 进行交互。:RabbitMQ 可以根据需求进行水平扩展,使之适应更大规模的消息处理需求。

2024-10-31 22:20:29 846 1

原创 Spring框架中的单例Bean是线程安全的么?

Spring容器中有多种作用域,包括单例、原型、请求、会话、应用程序和全球会话。不同的作用域可能存在线程安全问题,特别是单例模式。Spring容器本身并不负责线程安全,只有在特定情况下才存在线程安全问题。根据Bean的作用域和状态来判断是否存在线程安全问题。解决线程安全问题:可以通过更改作用域、避免在bean中定义需要修改的成员变量或使用ThreadLocal来解决线程安全问题。单例模式下,无状态 Bean 不存在线程安全问题;有状态 Bean 存在线程安全问题。

2024-10-12 16:25:48 356 1

原创 Redis的哨兵机制

Redis 哨兵机制是实现 Redis 高可用性的重要工具,能够有效监控 Redis 主从架构,并在主节点故障时自动进行故障转移。通过合理配置哨兵参数,可以确保 Redis 服务的稳定性和可靠性。

2024-10-12 15:00:11 582

原创 Redis的过期策略和内存淘汰策略

过期策略主要用于管理键的有效性,确保过期的键会被及时删除。内存淘汰策略则在内存达到设定限制时决定删除哪些键以释放空间。

2024-10-12 14:55:25 621

原创 解释一下什么是MVCC

在MVCC中,每个数据项都有多个版本。这样,不同的事务可以同时读取数据的不同版本,避免了在读取时需要加锁,从而减少了竞争和等待的时间。MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于数据库管理系统中的并发控制机制,它允许多个事务同时访问同一数据而不会相互干扰,从而提高系统的并发性能。:当一个事务读取数据时,系统会根据事务的时间戳或版本号,选择一个适当的版本返回给事务。:每当一个数据项被修改时,系统会生成一个新的版本,并将其与事务的时间戳或版本号关联。

2024-10-11 09:35:19 405

原创 讲一下聚簇索引和非聚簇索引

聚簇索引:数据按照索引排序,表中只能有一个。非聚簇索引:索引与数据分离,可以有多个,比较灵活。

2024-09-30 16:54:36 639

原创 Spring的事务传播机制

Spring的事务传播机制是指当一个方法调用另一个方法时,如何处理事务的行为。:如果当前存在事务,则在当前事务中嵌套一个事务;如果没有事务,则新建一个事务。(默认值):如果当前存在事务,则加入该事务;如果当前没有事务,则新建一个事务。:如果当前存在事务,则加入该事务;如果没有事务,则以非事务的方式执行。:如果当前存在事务,则加入该事务;:总是新建一个事务,如果当前存在事务,则将当前事务挂起。:以非事务的方式执行,如果当前存在事务,则抛出异常。:以非事务的方式执行,如果当前存在事务,则将其挂起。

2024-09-30 15:40:00 458

原创 Spring框架中的单例Bean是线程安全的么?

在Spring框架中,默认情况下,Bean的作用域是单例模式,因此框架没有对Bean进行多线程的封装处理。如果Bean 是有状态的,则需要开发人员自己确保线程安全。

2024-09-29 15:33:47 282

原创 Spring面向对象的设计模式

在Spring框架中,面向对象的设计模式被广泛使用,这些设计模式能够提高代码的可维护性、可扩展性和复用性。

2024-09-29 15:05:45 824

原创 Spring中Bean的作用域

在Spring框架中,Bean的作用域(Scope)定义了Bean的生命周期和在Spring容器中的可见性。

2024-09-29 14:34:06 475

原创 BeanFactory和ApplicationContext有什么区别?

⑤载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层。ApplicationContext是BeanFactory的子接口。①继承MessageSource,因此支持国际化。③提供在监听器中注册bean的事件。②统一的资源文件访问方式。④同时加载多个配置文件。

2024-09-29 14:30:07 310

原创 AOP是什么

AOP(面向切面编程,Aspect-Oriented Programming)是一种编程范式,旨在通过将横切关注点(如日志记录、安全、事务管理等)从业务逻辑中分离出来,以增强程序的模块化程度。

2024-09-26 16:25:51 502

原创 Spring是什么

Spring是一个轻量级的开源的J2EE框架。它是一个容器框架,用来装javabean(java对象),中间层框架(万能胶)可以起一个连接作用,比如说把Struts和Hibernate粘合在一起运用,可以让我们的企业开发更快、更简活。

2024-09-26 13:55:04 436

原创 红黑树和B+树

红黑树适合需要频繁插入、删除和查找操作的场景,特别是在内存中运行时。B+树更适合用于大型数据库和文件系统,能够高效地处理大量数据,并且在磁盘和内存之间的I/O效率更高。

2024-09-24 16:30:22 1215

空空如也

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

TA关注的人

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