- 博客(87)
- 收藏
- 关注
原创 【SpringAI】快速上手,详解项目快速集成主流大模型DeepSeek,ChatGPT
本文介绍了SpringAI框架及其在Java/Spring生态中集成大型语言模型(LLM)的应用。SpringAI作为Spring生态下的人工智能开发框架,旨在简化开发者对LLM、向量数据库等AI能力的集成,解决企业数据与AI模型的连接问题。文章详细讲解了核心概念如模型、LLM、提示词、Tokens等,并提供了接入DeepSeek、ChatGPT等主流模型的实践指南,包括环境配置、代码示例和测试方法。此外,还介绍了ChatClient的高级功能、SSE协议实现以及Flux流处理API的使用。通过Spring
2025-08-28 10:15:24
2276
19
原创 【性能测试】Jmeter工具快速上手-搭建压力测试脚本
JMeter 是一款由 Apache 开发的开源性能测试工具,核心作用是模拟多用户并发场景、生成各类负载压力,从而全面评估系统的性能表现与稳定性。它支持 HTTP、FTP、数据库、RPC 等多种协议,可通过线程组、定时器、事务控制器等组件灵活定制业务场景(如用户登录、商品下单、数据查询等完整流程),并实时收集响应时间、吞吐量、错误率等关键指标。同时,JMeter 具备强大的扩展性,可通过脚本、插件扩展功能,适配复杂业务需求;其可视化报告能直观呈现系统在不同负载下的性能瓶颈(如资源耗尽、接口延迟、数据库阻塞等
2025-08-25 18:12:26
1508
21
原创 【自动化测试】Selenium详解-WebUI自动化测试
本文介绍了Selenium Web自动化测试的核心功能,重点讲解了常用函数和方法。主要内容包括:1)浏览器初始化和控制方法;2)8种元素定位方式;3)元素操作方法;4)窗口/标签页操作;5)屏幕截图实现;6)三种等待机制(强制/隐式/显示);7)弹窗处理方法;8)文件上传技巧;9)浏览器参数设置(无头模式/加载策略)。文章通过Java代码示例详细演示了各功能的使用场景,并针对常见问题提供了解决方案,是Selenium自动化测试的实用指南。
2025-08-18 17:15:12
2395
16
原创 【自动化测试】测试分类概述-初步接触自动化测试
本文系统介绍了软件测试的主要方法分类。白盒测试基于代码内部结构,包含静态测试(代码审查、扫描工具等)和动态测试(语句覆盖、路径覆盖等6种方法);黑盒测试关注输入输出,不涉及内部实现;灰盒测试则介于两者之间。按测试阶段可分为单元测试、集成测试、系统测试,以及冒烟测试和回归测试。文章通过具体代码示例(如冒泡排序)详细说明了不同测试方法的应用场景和实施要点,强调测试的核心目标是保障软件质量而非机械套用方法。
2025-08-14 15:58:01
1138
21
原创 【测试】Bug+设计测试用例
测试用例(Test Case)是软件测试中为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、测试步骤、测试数据、预期结果正确设计测试用例的思想:常规思维+逆向思维+发散性思维设计测试用例原则一:测试用例中的一个必须部分是对预期输出或结果进行定义设计测试用例的原则二:1.测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应该根据无效和未预料到的输入情况。2.检查程序是否“未做其应该做的”仅是成功的一半,测试的另一半是检查程序是否“做了其不应该做的”。(是上一条原
2025-08-12 23:13:34
1310
25
原创 【Git】企业级使用
本文系统介绍了Git版本控制工具的核心概念与使用方法。主要内容包括:1)Git三大核心区域(工作区、暂存区、版本库)的功能解析;2)Git基础操作命令详解(仓库初始化、文件操作、提交管理、版本回退等);3)分支管理策略与常见操作;4)远程仓库协作流程(克隆、推送、拉取);5)标签管理(创建、查看、推送标签);6)GitFlow工作流模型(master、develop、feature、release、hotfix分支规范)。文章通过具体示例演示了Git的完整工作流程,特别强调了分支管理和冲突解决的重要性,为开
2025-08-08 16:12:36
739
2
原创 【MySQL】剖析InnoDB存储引擎
答:表空间文件是用来存储表中数据的文件,表空间文件的大小由存储的业务数据多少决定,不同的表空间文件存储数据的种类也有所不同,在MySQL中表空间分为五类,包括:系统表空间、独立表空间、通用表空间、临时表空间和撤销表空间,这些在上面的InnoDB架构图中都有体现。答:局部性原理是指程序在执行时呈现出局部性规律,在一段时间内,整个程序的执行仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域,局部性通常有两种形式:时间司部性和空间局部性。时间局部性(Temporal Locality)
2025-07-14 17:50:28
1008
3
原创 【MySQL】剖析事务和锁
使用事务而不是使用 LOCK TABLES 语句手动加锁,并使用 innodb_lock_wait_timeout 变量设置锁的超时时间,保证任何情况下锁都可以自动释放。经常使用 SHOW ENGINE INNODB STATUS 命令来确定最近一次死锁的原因。这可以帮助我们修改应用程序以避免死锁。如果出现频繁的死锁警告,可以通过启用 innodb_print_all_deadlocks 变量来收集调试信息。对于死锁的信息,都记录在 MySQL 错误日志中,调试完成后记得禁用此选项。如果事务由于死锁而
2025-05-23 15:55:02
954
7
原创 【MySQL】架构和存储引擎
MySQL服务器架构由多个核心组件构成,包括连接池、服务管理工具、NoSQL接口、SQL接口、解析器、优化器、缓存、存储引擎和文件系统。连接层负责客户端连接管理和权限验证,服务层处理SQL解析、优化和执行,存储引擎层负责数据的读写操作,支持多种可插拔的存储引擎,如InnoDB、MyISAM、MEMORY等。InnoDB是默认存储引擎,支持事务、行级锁和崩溃恢复,适用于高并发场景。MyISAM适用于读密集型应用,但不支持事务和外键。MEMORY引擎将数据存储在内存中,适合临时数据存储。MySQL还提供了CSV
2025-05-17 13:28:56
959
5
原创 【MySQL】服务器配置与管理(相关日志)
mysqld接受的选项可以通过 mysqld --verbose --help 查看,列表中的有些项目是可以在服务器启动时设置的系统变量,系统变量可以在连接MySOL后使用 SHOW VARIABLES 语句查看,但有些内容只在--help 中存在,使用 SHOW VARIABLES 时并没有显示,这是因为它们只是选项而不是系统变量。选项值可以通过命令行和选项文件设置,部分系统变量可以通过 SET 语句动态设置值。
2025-05-15 10:37:25
896
4
原创 【MySQL】mysql/bin目录下程序介绍
mysqld MySQL 的守护进程即 MySQL 服务器,要使用 MySQL 服务器 mysqld 必须正在运行状态mysql MySQL 客户端程序,用于交互式输入 SQL 语句或以批处理模式从文件执行 SQL 的命令行工具mysqlcheck 用于检查、修复、分析和优化表的表维护客户端mysqldump 将 MySQL 数据库转储到 SQL、文本或 XML 文件中的客户端mysqlimport 将文本文件导入到表的客户端工具mysqladmin 执行管理操作的客户端,例如创建或删除数据库、重
2025-05-14 17:13:18
1007
原创 【RabbitMQ】应用问题、仲裁队列(Raft算法)和HAProxy负载均衡
文章主要讨论了分布式系统中消息中间件RabbitMQ的关键问题及其解决方案。首先,介绍了幂等性的概念及其在消息重复消费场景中的重要性,提出了通过唯一标识和去重表来实现幂等性的方案。其次,探讨了消息顺序性保障的挑战,并提出了单一队列、分区消费和消息确认机制等解决方案。接着,分析了消息积压的常见原因,包括生产过快、消费者处理能力不足等,并提出了提高消费者效率、限制生产者速率等对策。此外,文章还简要介绍了Raft算法在分布式一致性中的应用,以及RabbitMQ的仲裁队列和HAProxy负载均衡器在提升系统可用性
2025-05-12 17:42:56
1305
原创 【RabbitMQ高级特性】延迟队列、事务和消息分发
本文探讨了如何在RabbitMQ中实现延迟队列的两种方法:TTL+死信队列和官方提供的延迟插件。TTL+死信队列方式通过设置消息的生存时间(TTL)和死信队列(DLX)来实现延迟效果,但存在消息顺序问题和处理复杂性。而延迟插件则直接支持延迟队列,避免了时序问题,但需要额外插件支持。此外,文章还介绍了RabbitMQ的事务机制,确保消息的原子性,以及通过QoS机制实现消息分发和限流的策略,以提高系统的处理效率和稳定性。
2025-05-12 10:00:00
1005
3
原创 【Redis】缓存和分布式锁
Redis最主要的应用场景便是作为缓存。是一种用于存储数据副本的技术或组件,目的是提高数据访问性能、减轻后端数据源负载。:在靠近数据源或用户的位置,开辟一块存储空间,用于存放常用或热点数据副本。例如浏览器缓存网页资源(图片、CSS、JavaScript 文件等),将其存储在本地磁盘或内存特定区域:当应用程序请求数据时,先检查缓存中是否有所需数据。若存在(即缓存命中 ),直接从缓存读取返回,避免对原始数据源(如数据库、远程服务器 )的访问;
2025-05-10 10:00:00
1273
8
原创 【Redis】哨兵机制和集群
Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工的进行主从切换,同时需要大量的客户端需要被通知切换到了新的主节点之上,不适用于大规模的应用,因此这里用到了。 Redis Cluster 是 Redis 官方提供的分布式解决方案,旨在解决单机 Redis 的性能瓶颈、数据容量限制和高可用性问题,他通过引入多组的Master/Slave,每一组的Master/Slave存储数据全量的一部分,从而构成一个更大的整体,称为Redis集群(Cluster).
2025-05-07 18:42:35
1624
50
原创 【Redis分布式】主从复制
在分布式系统之中为了解决单点问题(1、可用性问题,该机器挂掉服务会停止2、性能支持的并发量是有限的)通常会把数据复制多个副本部署在其他服务器,满足故障和负载均衡的要求。 Redis 主从复制(Master-Slave Replication)是一种数据同步机制,允许将一台 Redis 服务器(主节点,Master)的数据复制到其他 Redis 服务器(从节点,Slave)。主从复制在 Redis 中广泛用于数据冗余、读写
2025-05-01 16:00:00
1864
9
原创 【Docker】Docker拉取部分常用中间件
这里以Docker拉取MySQL5.7为例-e参数用于设置容器内的环境变量。TZ是用于设置时区的环境变量,这里将容器的时区设置为,即中国上海所在的时区。这对于确保容器内应用程序的时间显示和时间相关操作与预期一致非常重要。一般不使用root权限去进行操作数据库,因为操作权限太高容易产生问题,根据项目所需去创建一个可以连接的新用户,赋予其权限。
2025-04-30 16:40:55
1882
8
原创 【RabbitMQ高级特性】消息确认机制、持久化、发送方确认、TTL和死信队列
消费者确认机制确保消息被正确处理后才从队列中删除。如果消费者处理失败(如业务异常或宕机),Broker 会重新投递消息。1.消息一旦被消费者接收(无论是否处理成功),立即自动确认并从队列删除。若消费者在处理消息时崩溃或抛出异常,消息将永久丢失(因为已被确认删除)。非关键业务,允许消息偶尔丢失(如日志采集、监控数据)。2.消费者在处理消息后,必须显式调用basicAck()确认消息;若处理失败,调用或拒绝消息。:确认单条或批量消息。:拒绝消息,可选择是否重新入队。:拒绝单条消息(不支持批量)。
2025-03-24 21:33:20
1053
6
原创 【SpringCloud】OpenFeign、Gateway和Nginx
自定义GatewayFilter自定义GatewayFilter,需要去实现对应的接口GatewayFilterFactory,Spring Boot默认帮我们实现的抽象类是AbstractGatewayFilterFactory,可以直接使用代码示例@Data@Slf4j@Component/*过滤器的核心方法*/@Override/*** exchange ServerWebExchange: HTTP请求-响应交互契约,提供了对HTTP请求和响应的访问。
2025-03-22 16:07:04
923
3
原创 【SpringCloud】Eureka、LoadBalancer和Nacos
Spring Cloud 是一系列框架的集合,它提供了工具和组件来帮助开发者快速构建分布式系统,特别是基于微服务架构的应用。它构建在 Spring Boot 基础之上,利用 Spring Boot 的便利性简化了分布式系统基础设施的开发。
2025-03-17 21:45:51
1300
5
原创 【Redis】持久化(RDB和AOF)和事务
对于数据的存储而言,为保证速度快,数据得在内存中,但为了持久,数据还得存在硬盘之中,Redis 的持久化机制是其高可靠性的核心,主要用于在重启或崩溃后恢复数据。和,以及从 4.0 版本开始支持的。
2025-03-10 19:16:21
1065
3
原创 【RabbitMQ】Spring Boot 结合 RabbitMQ 完成应用间的通信
Spring 框架与 RabbitMQ 的整合主要通过 Spring AMQP(Advanced Message Queuing Protocol)模块实现,提供了便捷的消息队列开发能力。@RabbitHandler 注解用于标记方法,这些方法会根据消息的类型来处理接收到的消息。当一个消息监听器容器接收到消息时,它会根据消息的类型选择合适的 @RabbitHandler 注解的方法来处理该消息。
2025-03-06 17:21:42
1948
5
原创 【RabbitMQ】RabbitMQ的核心概念与七大工作模式
在现代分布式系统和微服务架构中,消息队列(Message Queue) 是解决服务间通信、系统解耦和流量削峰的关键技术之一。而 RabbitMQ 作为一款开源的消息中间件,凭借其高可靠性、灵活性和易用性,成为开发者最常用的工具之一。MQ (Message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是消息 (message) 而已。消息可以非常简单,比如只包含文本字符串,JSON 等,也可以很复杂,比如内嵌对象。MQ多用于分布式系统之间的通信。
2025-03-04 21:28:53
1501
4
原创 【Redis】Redis初阶:常用数据结构相关命令与Jedis使用
🔥个人主页: 中草药🔥专栏:Redis(Remote Dictionary Server)是一个开源的、基于内存的键值对存储数据库,支持持久化、网络化访问,并提供多种数据结构操作,用作数据缓存。它由Salvatore Sanfilippo开发,凭借其单线程模型和高效数据结构,成为高并发场景下的首选解决方案。核心特性:内存存储:数据主要存储在内存中(内存为主,硬盘为辅),读写速度远超传统磁盘数据库,如MySQL(最大特点快)。丰富的数据结构:支持String、List、Hash、Set、Zset五种基础类
2025-02-28 20:23:25
1494
50
原创 【测试】开发模型和测试模型
测试是指使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。它是对软件规格说明、软件设计和编码的最后复审,是软件质量保证的关键步骤。
2025-01-29 10:00:00
1439
48
原创 【OAA 】面向对象分析:从概念到实践
阅读和理解需求文档或用例描述筛选出名词或名词短语,建立初始类清单(候选类)将候选类分为三类:分别是显而易见的类,无意义的类和不确定类别的类舍弃明显无意义类别的类综合讨论不确定类别的类,直到把他们合并或调整到其他两个类别。如该用例描述我们可以得到经过简单分析:“版块类别”和“版块帖子数量”都可以归结到“版块”类,做为“版块”类的属性;"帖子标题”和“帖子正文”都可以归结到"帖子“类,做为“帖子”类的属性;"权限”可以归结到“用户“类,做为“用户"类的属性。用户、版块、帖子。
2025-01-03 10:00:00
1367
54
原创 【Spring】深入解析 Spring 原理:Bean 的多方面剖析(源码阅读)
SpringBoot的自动配置原理源码口是 @SpringBootApplication 注解,这个注解封装了3个注解@SpringBootConfiguration 标志当前类为配置类@ComponentScan 进行包扫描(默认扫描的是启动类所在的当前包及其子包)@EnableAutoConfiguration@Import 注解:读取当前项目下所有依赖jar包中 META-INF/spring.factories,META-INF/spring/org.springframework.boo
2024-12-25 10:00:00
5341
56
原创 【Spring】Linux的基本使用和程序部署
Linux 的基本使用和程序部署是开发和运维工作中的重要环节。掌握这些知识,可以更好地利用 Linux 系统的强大功能,高效地部署和管理各种应用程序,为构建稳定、可靠的服务奠定坚实的基础。随着不断的实践和学习,对 Linux 的运用会更加熟练和深入,能够应对各种复杂的场景和需求。
2024-12-23 10:03:04
2306
45
原创 【Spring】Spring事务和事务传播机制
Spring 事务管理及其事务传播机制为企业级应用开发提供了强大而灵活的事务处理能力。通过合理地配置事务和选择合适的事务传播行为,可以有效地保证数据的一致性、完整性和隔离性,同时满足复杂业务逻辑和分布式系统的需求。在实际开发中,我们需要深入理解事务传播机制的原理和应用场景,根据业务需求进行准确的配置,以构建健壮、可靠的应用程序。
2024-12-06 16:13:47
3649
58
原创 【Spring】AOP
Spring AOP是Spring框架中的一个强大特性,它为开发者提供了一种优雅的方式来处理横切关注点。通过Spring AOP,可以轻松地实现日志记录、事务管理、安全控制等功能,并且能够保持业务逻辑代码的简洁性和清晰度。无论是使用注解还是XML配置,Spring AOP都能让你的代码更加模块化、可维护和易于扩展。
2024-12-02 09:15:00
3259
62
原创 【Spring】MyBatis&MyBatis-Plus
MyBatis 是一个支持自定义 SQL、存储过程以及高级映射的持久层框架。它在 Java 应用程序和各种数据库之间架起了一座桥梁,使得开发者能够方便地将数据持久化到数据库中,并从数据库中检索数据。与传统的 JDBC 相比,MyBatis 大大简化了数据库操作的复杂性,同时又不失灵活性,让开发者能够更好地掌控 SQL 语句,以满足各种复杂的业务需求。Maven配置数据库spring:mybatis:#日志配置,数据库配置#驼峰自动转化#xml文件所在位置。
2024-11-26 09:00:00
3701
56
原创 【Java算法】链表常用技巧和操作总结
在编程世界中,链表是一种非常重要的数据结构,它具有很多独特的优势和用途。今天,就让我们一起来总结一下链表的常用技巧和操作。链表的基本概念链表是一种线性数据结构,由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。链表的特点是可以动态地增长和收缩,不需要预先分配固定的存储空间。链表的常用技巧1.常画图--->直观形象,便于理解2.引入虚拟头结点处理边界情况方便操作链表3.不要吝啬空间,大胆定义变量(大胆定义变量)4.双指针。
2024-11-13 14:43:03
1278
10
原创 【Java算法】分治--归并排序
这段 Java 代码实现了使用归并排序算法对给定整数数组进行排序的功能。归并排序是一种分治算法,其主要思想是将数组不断地分割成较小的子数组,直到每个子数组只有一个元素,然后再将这些子数组合并成有序的数组。确定中间数:后序遍历,给左右两个数组排序:合并两个有序数组:还原:代码算法原理 这段 Java 代码实现了计算给定数组中 “交易逆序对的总数” 的功能,使用了归并排序的思想。
2024-11-06 20:52:57
895
9
原创 【Java算法】分治--快速排序
快速排序三段法是对传统快速排序的一种优化,主要用于对数组进行高效排序。其核心思想是算法原理 该算法采用了三指针的方法,通过一次遍历将数组分为三个部分,分别对应元素值为 0、1、2 的区域,实现对数组的高效排序。初始化指针:遍历与分类:循环终止条件:代码算法原理 这段代码实现了快速排序算法的一种变体 —— 三段划分快速排序。其目标是对给定的整数数组进行排序,通过随机选择一个枢轴元素(),将数组划分为小于枢轴、等于枢轴和大于枢轴的三个部分,然后对这三个部分分别进行递归
2024-10-31 21:43:28
790
11
原创 【Spring】Ioc&DI
在 Java 开发的世界里,Spring 框架无疑是一颗璀璨的巨星,而其中的控制反转(Inversion of Control,简称 Ioc)和依赖注入(Dependency Injection,简称 DI)更是其核心特性之一。今天,就让我们一起深入探索 Spring 中的 Ioc 和 DI。
2024-10-28 15:41:51
4317
83
原创 【Spring】MVC
Spring MVC 是基于Servlet API构建的原始的Web框架,是 Spring 框架的一个重要模块,它实现了模型 - 视图 - 控制器(MVC)设计模式,用于构建灵活、可维护的 Web 应用程序。MVC设计模式模型(Model):负责处理业务逻辑和数据存储。它包含了应用程序的数据和业务规则,可以是 Java 对象、数据库实体等。视图(View):负责呈现用户界面。它可以是 HTML 页面、JSP 文件、XML 视图等,用于将模型中的数据展示给用户。控制器(Controller)
2024-10-21 09:00:00
3666
85
原创 【JavaEE】JVM
Java虚拟机(JVM, Java Virtual Machine)是Java平台的核心组件,它使得Java程序可以在任何安装了JVM的平台上运行,而不需要关心底层的操作系统和硬件架构。JVM的主要职责包括加载、验证、准备、解析和执行Java字节码,以及自动管理内存。 Java虚拟机(JVM)的内存区域划分是理解Java应用程序如何管理和使用内存的关键。JVM将运行时数据区分为几个不同的部分,每个部分
2024-10-05 11:45:24
2402
89
原创 【JavaEE】http/https 超级详解
HTTP(HyperText Transfer Protocol)即超文本传输协议,他是应用非常广泛的应用层协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议。它是一种请求/响应式的协议,客户端发送请求到服务器,服务器处理后返回响应给客户端。HTTP是一个应用层协议,运行在TCP/IP协议族之上,通常使用80端口进行通信。http不仅能传输文本,还能传输图片,传输音频文件,传输视频,传输其他的各种数据目前互联网见到的绝大多数版本都是http/1.1。
2024-10-01 15:36:03
3976
60
原创 【JavaEE】数据链路层协议和DNS
🔥个人主页: 中草药🔥专栏:【Java】登神长阶 史诗般的Java成神之路 以太网(Ethernet)是一种局域网技术,它定义了开放系统互连(OSI)模型中的物理层和数据链路层的规范。以太网是目前最广泛使用的有线网络技术之一,支持不同类型的计算机和其他设备之间的通信。 MAC地址(Media Access Control Address)是一种用于标识网络设备硬件的唯一地址。它在数据链路层(OSI模型中的第二层)上工作,主要用于局域网通信。每个网络接口卡(NIC)或任何其
2024-09-25 15:42:45
1098
79
原创 【Java算法】二叉树的深搜
深度优先搜索 (DFS):算法使用了深度优先搜索的方法来遍历整棵树。从根节点开始,逐步深入到叶子节点。路径构建:使用StringBuilder来构建从根节点到当前节点的路径。每次访问一个节点时,将该节点的值添加到路径中。回溯:通过在每次递归调用时创建一个新的StringBuilder对象path,确保每次递归调用时路径都是独立的。这样在回溯时,路径可以恢复到之前的正确状态。路径存储:当到达叶子节点时,将当前路径转换为字符串并添加到结果列表retl中。剪枝优化:如果某个子树为空,则不需要
2024-09-20 13:31:45
1235
86
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人