- 博客(81)
- 收藏
- 关注
原创 SpringBoot的启动流程是怎样的?
阶段,Spring Boot 启动内嵌的 Web 服务器,默认使用。负责接收并处理 HTTP 请求,随后将请求分发到相应的控制器。Spring Boot 创建应用上下文,并通过。启动应用,这是整个启动流程的入口。Spring Boot 通过。Spring Boot 通过。自动配置 Web 组件,如。初始化 Web 环境。,极大地简化了配置过程。
2025-03-06 10:22:58
334
原创 Spring是如何处理循环依赖问题的?
中,这样它们就可以先用“半成品”凑合着工作,而不会一直等待对方的完成。: 等到所有对象都准备好了,Spring 就会把它们放到。: 当两个对象互相依赖时,Spring 会先把它们放到。中,这样它们就可以完全使用了。
2025-03-05 11:20:48
219
原创 Java中的CountDownLatch是什么?
在Java中,是一个用于实现线程间的同步的同步辅助类,属于包。它允许一个或多个线程等待,直到一组操作完成。CountDownLatch通过一个计数器来控制线程的执行顺序。
2025-03-02 14:52:06
303
原创 Java中的CyclicBarrier是什么?
在Java中,是一个用于在多线程中使多个线程在某个点上进行同步的同步辅助类。它允许一组线程互相等待,直到达到某个共同的障碍点(即 阻塞点),从而实现线程间的协调。
2025-03-02 14:51:18
312
原创 Java中的Semaphore是什么?
在Java中,(信号量)是一种用于控制对共享资源访问的同步工具。它属于包,主要用于在多线程环境中限制同时访问某个特定资源的线程数量。
2025-03-02 14:50:26
166
原创 Java中的ForkJoinPool是什么
ForkJoinPool是Java 7引入的一种线程池,专门用于并行处理大任务的子任务。它是包中的一个类,旨在简化并行计算,尤其是在涉及递归分解任务时。
2025-03-02 14:48:43
243
原创 Redis的线程模型是什么
Redis 的基本线程模型是单线程的,通过事件驱动和高效的 I/O 多路复用机制,能够在高并发的场景下提供高性能的服务。同时,Redis 6.0 及以后的版本也逐步引入了多线程处理来优化特定操作,但核心命令的处理仍然采用单线程方式。Redis 的线程模型相对简单,主要采用的是单线程模型。
2025-01-17 18:06:39
524
原创 RabbitMQ怎么避免消息被重复消费
消息唯一标识符: 为每条消息分配一个唯一的标识符(例如 UUID)。消费者在处理消息时,可以将这个标识符存储在数据库中或者内存中,处理后再进行确认。如果系统重启或者重复消费了同一消息,消费者可以先检查标识符是否已存在,从而避免重复处理。 消息去重机制: 在消费者端实现消息去重机制,例如使用内存或数据库维护已处理消息的集合,定期清理过期的记录,避免内存或存储的无限增长。
2024-11-01 12:00:45
297
原创 RabbitMQ的解耦、异步、削峰是什么?
是指使系统的不同组件间的依赖关系减少或消失。在使用RabbitMQ时,生产者(发送消息的组件)和消费者(接收和处理消息的组件)不直接交互,而是通过消息队列进行通信。通信意味着消息的发送和接收可以不在同一时间进行。当生产者发送消息到RabbitMQ时,它不必等待消费者处理完消息再继续执行。是指在系统负载高峰时,使用队列暂时存储请求,减轻系统瞬时负载的压力。
2024-11-01 10:49:51
1007
原创 什么是RabbitMQ
RabbitMQ 是一个开源的消息代理软件,旨在支持多种消息协议。RabbitMQ 允许应用程序和服务之间进行异步通信,能够在不同的应用和系统之间传递消息,从而实现解耦。同时,RabbitMQ 也支持消息持久化,将消息保存在磁盘上,以便在重启时恢复。:RabbitMQ 提供多种语言的客户端库,支持 Java、Python、Ruby、Go 等多种编程语言,方便开发者与 RabbitMQ 进行交互。:RabbitMQ 可以根据需求进行水平扩展,使之适应更大规模的消息处理需求。
2024-10-31 22:20:29
724
1
原创 Spring框架中的单例Bean是线程安全的么?
Spring容器中有多种作用域,包括单例、原型、请求、会话、应用程序和全球会话。不同的作用域可能存在线程安全问题,特别是单例模式。Spring容器本身并不负责线程安全,只有在特定情况下才存在线程安全问题。根据Bean的作用域和状态来判断是否存在线程安全问题。解决线程安全问题:可以通过更改作用域、避免在bean中定义需要修改的成员变量或使用ThreadLocal来解决线程安全问题。单例模式下,无状态 Bean 不存在线程安全问题;有状态 Bean 存在线程安全问题。
2024-10-12 16:25:48
294
1
原创 Redis的哨兵机制
Redis 哨兵机制是实现 Redis 高可用性的重要工具,能够有效监控 Redis 主从架构,并在主节点故障时自动进行故障转移。通过合理配置哨兵参数,可以确保 Redis 服务的稳定性和可靠性。
2024-10-12 15:00:11
491
原创 Redis的过期策略和内存淘汰策略
过期策略主要用于管理键的有效性,确保过期的键会被及时删除。内存淘汰策略则在内存达到设定限制时决定删除哪些键以释放空间。
2024-10-12 14:55:25
569
原创 解释一下什么是MVCC
在MVCC中,每个数据项都有多个版本。这样,不同的事务可以同时读取数据的不同版本,避免了在读取时需要加锁,从而减少了竞争和等待的时间。MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于数据库管理系统中的并发控制机制,它允许多个事务同时访问同一数据而不会相互干扰,从而提高系统的并发性能。:当一个事务读取数据时,系统会根据事务的时间戳或版本号,选择一个适当的版本返回给事务。:每当一个数据项被修改时,系统会生成一个新的版本,并将其与事务的时间戳或版本号关联。
2024-10-11 09:35:19
353
原创 Spring的事务传播机制
Spring的事务传播机制是指当一个方法调用另一个方法时,如何处理事务的行为。:如果当前存在事务,则在当前事务中嵌套一个事务;如果没有事务,则新建一个事务。(默认值):如果当前存在事务,则加入该事务;如果当前没有事务,则新建一个事务。:如果当前存在事务,则加入该事务;如果没有事务,则以非事务的方式执行。:如果当前存在事务,则加入该事务;:总是新建一个事务,如果当前存在事务,则将当前事务挂起。:以非事务的方式执行,如果当前存在事务,则抛出异常。:以非事务的方式执行,如果当前存在事务,则将其挂起。
2024-09-30 15:40:00
410
原创 Spring框架中的单例Bean是线程安全的么?
在Spring框架中,默认情况下,Bean的作用域是单例模式,因此框架没有对Bean进行多线程的封装处理。如果Bean 是有状态的,则需要开发人员自己确保线程安全。
2024-09-29 15:33:47
232
原创 BeanFactory和ApplicationContext有什么区别?
⑤载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层。ApplicationContext是BeanFactory的子接口。①继承MessageSource,因此支持国际化。③提供在监听器中注册bean的事件。②统一的资源文件访问方式。④同时加载多个配置文件。
2024-09-29 14:30:07
275
原创 AOP是什么
AOP(面向切面编程,Aspect-Oriented Programming)是一种编程范式,旨在通过将横切关注点(如日志记录、安全、事务管理等)从业务逻辑中分离出来,以增强程序的模块化程度。
2024-09-26 16:25:51
439
原创 Spring是什么
Spring是一个轻量级的开源的J2EE框架。它是一个容器框架,用来装javabean(java对象),中间层框架(万能胶)可以起一个连接作用,比如说把Struts和Hibernate粘合在一起运用,可以让我们的企业开发更快、更简活。
2024-09-26 13:55:04
322
原创 红黑树和B+树
红黑树适合需要频繁插入、删除和查找操作的场景,特别是在内存中运行时。B+树更适合用于大型数据库和文件系统,能够高效地处理大量数据,并且在磁盘和内存之间的I/O效率更高。
2024-09-24 16:30:22
991
原创 内存泄漏和内存溢出有什么区别
内存泄漏是指已分配的内存未被正确释放,导致可用内存逐渐减少;而内存溢出则是指程序尝试分配的内存超出了可用的内存限制。内存泄漏可能导致程序性能下降,但不一定立刻中断程序;而内存溢出通常会导致程序直接崩溃或抛出错误。
2024-09-24 16:09:58
398
原创 接口和抽象类的区别
接口的设计目的,是对类的行为进行约束(更准确的说是一种“有”约束,因为接口不能规定类不可以有 什么行为),也就是提供一种机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。而抽象类的设计目的,是代码复用。当不同的类具有某些相同的行为(记为行为集合A),且其中一部分行为的实现方式一致时(A的非真子集,记为B),可以让这些类都派生于一个抽象类。在这个抽象类中实 现了B,避免让所有的子类来实现B,这就达到了代码复用的目的。而A减B的部分,留给各个子类自己 实现。
2024-09-20 11:24:32
516
原创 Redis的内存淘汰策略
Redis 作为一个内存数据库,提供了多种内存淘汰策略,以便在内存使用达到限制时管理数据的存储。内存淘汰策略决定了在 Redis 的内存达到限制时,应该清除哪些数据。
2024-09-19 14:31:11
627
原创 Array和ArrayList的区别
ArrayArray是一种固定大小的数据结构,用于存储多个相同类型的元素。创建数组时需要指定数组的大小,大小不能在创建后改变。ArrayListArrayList是 Java Collections 框架的一部分,是一个动态数组,能够自动调整其大小。在元素添加或删除时,ArrayList会自动调整其内部数组的大小。在选择使用Array还是ArrayList如果需要固定大小的存储并且性能优先,可以选择Array。如果需要灵活的大小、丰富的方法以及动态调整大小的能力,ArrayList是更好的选择。
2024-09-19 14:29:56
690
原创 Java中的Stream流
Java的Stream流是Java 8引入的一种新特性,提供了一种高效和简洁的处理集合(如List、Set等)的方法。Stream流允许我们以函数式编程的方式对数据进行操作,它可以在内存中以一种声明的方式表达数据的处理的管道。
2024-09-19 12:37:23
345
原创 如何将本地项目上传到GitHub(SSH连接)
将远程仓库文件拉取到本地,这里可以验证是否关联上,如果项目里出现了README文件,那就是关联上了。在个人GitHub中新建项目(远程仓库),添加一个README文件,方便后面验证。关联本地Git与远程仓库,这里的远程仓库地址就是刚刚复制的远程仓库的SSH地址。初始化本地仓库,同时指定默认分支为main,与远程仓库的main保持一致。记住这个默认分支,我这里是main,你的可能是master或其他。我把所有命令操作的记录放在这里,你做的时候可以对比结果是否正确。将提交的文件推送到远程仓库。
2024-09-13 14:27:26
577
原创 http连接与ssh连接的区别
HTTP连接和SSH连接是两种不同的网络协议,主要用于不同的目的。总结来说,HTTP主要用于网页浏览和数据传输,而SSH则用于安全的远程管理和文件传输。
2024-09-13 11:38:33
1563
原创 事务的四大特性
事务是一个不可分割的操作单元,要么全部执行成功,要么全部不执行。如果事务中的某个操作失败,整个事务将被回滚,数据库将恢复到事务开始之前的状态。: 事务的执行不应受到其他事务的干扰。即使多个事务并发执行,每个事务都应感觉自己是独占数据库的,事务之间的操作是相互隔离的。: 事务必须使数据库从一个一致性状态转变到另一个一致性状态。也就是说,事务的执行不能破坏数据库的完整性约束。: 一旦事务被提交,其结果是永久性的,即使系统发生故障,已提交的事务所做的更改也会被保留。
2024-09-12 11:08:23
854
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人