自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一文带你掌握如何区分agent智能体的对话流和工作流!

智能体的

2025-04-05 21:18:14 194

原创 java基础及多线程面试题总结

多线程是指一个程序中可以同时运行多个线程(线程是程序执行的最小单位),每个线程都有自己的任务和执行流程。多线程的目的是提高程序的执行效率和响应速度,特别是在多核处理器的环境中,可以充分利用硬件资源,实现真正的并行执行。工作原理:多线程的工作原理主要依赖于操作系统的线程调度机制。操作系统会根据一定的策略(如时间片轮转、优先级调度等),在多个线程之间分配CPU时间,使得每个线程都能得到执行的机会。线程在执行过程中,可以共享进程的资源(如内存、文件等),但每个线程有自己的程序计数器、寄存器和栈空间。

2025-04-02 17:53:43 938

原创 spring八股文面试知识点汇总!重点是在质不在量。

Spring是一款全面的一站式轻量级的Java开发框架,其核心特性为IOC(Inversion of Control)和AOP(Aspect Oriented programing)即控制反转和面向切面编程思想。其中IOC是通过DI(依赖注入)来实现,AOP是通过动态代理和预编译来实现动态的增加程序的功能。AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,它通过将横切关注点(如日志记录、事务管理、安全检查等)从业务逻辑代码中分离出来,实现代码的解耦和复用。

2025-03-24 20:27:54 973

原创 SpringBoot的启动流程

Spring Boot 的启动流程包括创建实例、加载配置文件、初始化 Spring 容器、自动配置、刷新容器、启动嵌入式服务器等步骤。这个流程使得 Spring Boot 应用程序能够快速启动并运行,同时提供高度的自动化配置和灵活性。

2025-03-24 20:13:21 603

原创 详细介绍Spring MVC的执行流程是怎么样的?

Spring MVC 是 Spring 框架的一部分,用于构建 Web 应用程序。:用户通过浏览器发送 HTTP 请求到服务器,请求首先被前端控制器 DispatcherServlet 接收。:DispatcherServlet 根据请求的 URL 和其他信息,通过 HandlerMapping 查找合适的处理器(Handler)。:找到处理器后,DispatcherServlet 使用处理器适配器 HandlerAdapter 来执行该处理器。

2025-03-24 18:44:03 432

原创 java中的动态代理核心原理及代码实现

首先定义一个接口,该接口将被目标对象和代理对象共同实现。

2025-03-24 14:38:18 250

原创 在spring中如何创建和使用bean以及xml配置文件的具体含义

创建 Bean:在 XML 配置文件中使用<bean>元素定义 Bean,指定其类和属性。使用 Bean:通过 Spring 容器的getBean方法获取 Bean 实例,并在代码中使用。XML 配置文件:包含 Bean 的定义、依赖注入和配置信息,是 Spring 容器管理 Bean 的基础。通过这种方式,可以在 Spring 中灵活地创建和使用 Bean,实现松耦合和可维护性。

2025-03-23 16:20:09 398

原创 如何在spring中创建bean

注解,Spring会自动扫描并创建Bean。通过在类或方法上添加注解来定义Bean。通过配置类中的方法返回Bean实例。在Spring的XML配置文件(如。注解启用组件扫描,自动检测带有。注解,手动定义Bean。注解的类并创建Bean。通过工厂类创建Bean。定义一个普通工厂类,通过。标签来定义Bean。在配置类的方法上添加。方法来创建Bean。

2025-03-23 16:05:22 255

原创 详细了解Spring,Springmvc,以及Springboot的区别

• Spring Boot是简化 Spring 开发的框架,提供自动化配置和快速开发能力,适用于基于 Spring 技术栈的应用开发,能快速构建独立运行的 Spring 应用。• 核心功能:提供快速开发模板,自动配置 Spring 及相关技术,减少配置,内置 Tomcat 等服务器,简化部署。• 应用场景:适用于各种 Java 应用开发,包括 Web 应用、企业级应用等,提供基础架构支持。• 开发效率:简化 Web 开发,但配置较繁琐,开发简单应用时效率不高,开发复杂应用时效率尚可。

2025-03-19 19:07:28 291

原创 有关Volatile的底层实现原理

volatile`关键字通过内存屏障和`lock`前缀指令确保了变量的内存可见性和操作的有序性,但不保证操作的原子性。在 Java 中,`volatile`关键字用于确保变量的内存可见性和操作的有序性,其底层实现主要依赖于内存屏障(Memory Barrier)和`lock`前缀指令。• 写操作:当线程写入`volatile`变量时,JVM 会在写操作后插入一个写内存屏障(Store Barrier),确保所有之前的操作都已完成,并且该写操作的结果会立即刷新到主内存。

2025-03-16 14:12:41 144

原创 序列化和反序列化是什么?

序列化(Serialization)和反序列化(Deserialization)是计算机科学中用于处理数据存储和传输的两个重要概念。它们主要用于将数据结构或对象转换为可存储或可传输的格式,以及将这些格式还原为原始数据结构或对象。

2025-03-14 10:21:18 328

原创 如何在消息队列(MQ)中保证消息的一致性

事务消息允许将消息发送与本地事务操作绑定,确保本地事务和消息发送能够一起成功或失败,从而保证数据的强一致性。:生产者在收到MQ的确认响应后,才认为消息发送成功;:MQ定时轮询准备消息的状态,如果生产者挂掉或网络异常,会通过回调接口确认事务状态。:通过独立的消息服务子系统,预存消息并管理消息状态,确保消息的可靠传递。:根据本地事务的执行结果,生产者向MQ发送确认消息(提交)或回滚消息。:消费者在处理失败时,MQ会根据预设策略重试消息,直到成功。:将消息存储到持久化介质(如磁盘),确保消息在故障后可恢复。

2025-03-14 10:18:32 405

原创 数据库以及java线程中的乐观锁与悲观锁

适合写操作频繁、冲突概率高的场景,优点是能有效防止冲突,缺点是并发性能较差。

2025-03-13 17:34:08 739

原创 对AQS(AbstractQueuedSynchronizer)的理解

AQS 本身并不直接提供锁或其他同步工具的具体实现,而是通过继承 AQS 并实现其提供的方法来创建具体的同步器。例如,Semaphore等都是基于 AQS 实现的。AQS 是 Java 并发编程中一个非常重要的抽象类,它通过一个同步状态和一个 FIFO 等待队列来管理线程对共享资源的访问。通过独占式和共享式两种获取资源的方式,AQS 提供了灵活的同步机制,使得开发者可以根据实际需求自定义同步器。理解 AQS 的工作原理和机制对于编写高效、可靠的并发代码至关重要。

2025-03-11 16:12:21 318

原创 线程安全的原子性、可见性和有序性详细解释

原子性:保证操作的不可分割性,防止操作被中断。可见性:确保一个线程对共享变量的修改能够被其他线程看到。有序性:保证代码的执行顺序与预期一致,防止指令重排序。这三者是并发编程中线程安全问题的核心,需要通过适当的机制(如锁、volatile、原子类等)来保证。

2025-03-10 22:56:13 586

原创 Hashmap的底层原理

HashMap 的底层原理基于哈希表,其核心是通过哈希函数将键映射到哈希桶数组中的特定位置,并通过链表或红黑树处理哈希冲突。扩容机制和红黑树优化确保了 HashMap 在大多数情况下具有较高的查询和插入性能。

2025-03-07 11:32:53 850

原创 java如何保证线程的安全性?

原子类:通过CAS算法实现无锁的原子性操作,适用于对单个变量的原子性更新。volatile:保证变量的可见性和禁止指令重排序,适用于需要保证变量修改的可见性但不需要原子性操作的场景。锁:通过互斥机制保证同一时刻只有一个线程能够访问共享资源,适用于需要对代码块或方法进行同步的场景。在实际开发中,选择哪种方式取决于具体的业务场景和性能要求。如果只是对单个变量的原子性更新,原子类可能是更好的选择;如果需要保证变量的可见性,volatile可能更合适;如果需要对代码块或方法进行同步,锁可能是更好的选择。

2025-03-04 23:15:36 647

原创 springboot的自动注入原理

通过注解扫描、Bean 的注册和依赖注入,Spring 容器能够自动管理 Bean 的生命周期和依赖关系,并在需要时将 Bean 注入到其他组件中,从而简化了开发者的开发工作。依赖注入的核心思想是将对象的创建和依赖关系的管理交给框架(容器)来处理,而不是让开发者手动创建对象和管理依赖。Spring Boot 的自动注入原理是基于 Spring 框架的核心特性,即依赖注入(DI)和控制反转(IoC)。:Spring 会根据字段的类型在容器中查找匹配的 Bean,并将其注入。当 Spring 扫描到一个带有。

2025-03-04 14:44:06 278

原创 微服务OpenFeign服务@FeignClient、@EnableDiscoveryClient 和 @EnableFeignClients 注解的含义、用法和使用顺序的详细说明

提供了服务发现的基础环境,使得应用可以注册到服务注册中心,并发现其他服务。在服务发现的基础上,启用了 Feign 客户端功能,方便地进行远程服务的调用。用于定义具体的 Feign 客户端接口,指定目标服务的名称、URL、降级处理等信息。通过以上注解的合理使用,可以实现微服务架构中服务之间的高效通信和调用。

2025-02-17 23:50:08 341

原创 java常见集合类及其用法

如果方法接受一个 Collection<> 类型的参数 ,这意味着它可以接受任何实现了 Collection 接口的集合类,如 List、Set 等。Collection 类是Java集合框架中的一个接口,它是所有集合类的根接口。Collection 接口定义了一些通用的方法,用于操作集合中的元素,如添加、删除、遍历等。> c):判断集合中是否包含指定集合中的所有元素。这些集合类提供了丰富的方法来操作和处理数据,可以根据具体的需求选择合适的集合类来使用。概念:List是一个有序的集合,可以包含重复的元素。

2025-02-11 00:04:34 330

原创 @FeignClient注解

Feign会生成一个代理类,当你调用getQuestionById方法时,代理类会生成一个HTTP GET请求,路径为/api/question/inner/get/id,并将questionId作为请求参数传递。这个代理类会实现接口中定义的所有方法,并在方法被调用时,根据方法上的注解(如@GetMapping、@PostMapping等)生成相应的HTTP请求,然后将请求发送到远程服务,并将响应转换为方法的返回类型。这个代理类会在运行时动态生成,它负责处理与远程服务的通信。

2025-02-10 16:04:15 144

原创 如何理解非关系型数据库的‘非关系’特点

例如,在键值(Key - Value)存储类型的非关系型数据库(如 Redis)中,数据是以键值对的形式存储,键是唯一的标识,值可以是各种类型的数据,如字符串、数字、对象等。例如,要查询某个公司所有员工的姓名和他们所在部门的名称,可能需要连接 “员工” 表和 “部门” 表,通过 SQL 的 JOIN 语句来实现复杂的查询逻辑,这在非关系型数据库中通常是难以实现或者需要通过其他方式来间接完成的。:关系型数据库的数据存储在固定的表格结构中,每个表都有明确的列(字段)定义,数据必须按照这些列的格式进行存储。

2025-02-08 19:40:12 437

原创 nginx反向代理配置格式

nginx反向代理配置格式

2024-12-09 20:37:10 121

原创 spring依赖注入实现原理

依赖注入(Dependency Injection,DI)是一种设计模式,它通过将对象之间的依赖关系的创建和维护转移到外部容器中来,以减少对象之间的紧耦合性并提高可重用性。在传统的程序设计中,对象通常通过直接创建和维护依赖关系来使用其他对象,这会导致对象之间的紧耦合性,使代码难以维护和扩展。然而,依赖注入模式将对象之间的依赖关系的创建和维护转移到外部容器中,使得对象之间的耦合性降低,并且可以方便地更改依赖项的实现类,而无需修改受影响的对象的代码。

2024-10-23 15:18:12 130

原创 gzu高级语言第九次作业

第九次作业,链表输出学生成绩。

2022-12-12 23:40:48 620 1

空空如也

空空如也

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

TA关注的人

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