自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMQ高级

本文系统探讨了MQ消息可靠性三大环节——发送者、消息代理(MQ)、消费者端的优化策略。通过发送者重连、确认机制(PublisherConfirm/PublishReturn)、消息持久化、LazyQueue、消费者确认(ACK/NACK/reject)及重试机制,显著提升可靠性。针对非幂等操作引入唯一消息ID与业务状态校验保障幂等性;结合死信交换机模拟延迟消息,解决支付超时等场景问题。最终通过插件化方案简化延迟消息实现,构建高可用、可兜底的消息系统。

2026-10-20 19:34:03 301

原创 RabbitMQ基础--java客户端

本文快速入门SpringAMQP,通过实例演示消息发送与接收、WorkQueue工作模型及“能者多劳”优化。介绍Fanout(广播)、Direct(定向)、Topic(通配符)三种交换机的使用场景与配置,并强调在生产环境中应通过注解自动创建交换机、队列及绑定关系,提升可靠性。最后说明使用JSON序列化替代默认JDK序列化,优化消息传输效率与安全性。

2026-10-16 16:54:40 245

原创 MQ基础与使用背景

本文对比了同步调用与异步调用的差异,指出同步调用因强依赖、性能差及容错性弱等问题,适用于核心业务;而异步调用通过消息代理(如RabbitMQ)解耦服务,提升拓展性与并发处理能力,适合非核心功能。文中介绍了RabbitMQ的核心组件(交换机、队列、虚拟主机)及简单实践,强调其在微服务中实现解耦与数据隔离的作用。

2026-10-14 20:19:28 263

原创 Seata(分布式事务)

本文介绍在微服务架构中使用Seata解决分布式事务问题。通过“购买”业务场景,演示如何在多个独立数据库的微服务间实现全局事务管理。引入Seata客户端,配置各服务的事务注解与配置文件,在入口服务添加@GlobalTransactional注解,实现跨服务的数据一致性。基于AT模式,Seata通过二阶段提交协议,利用前后镜像和undo_log表实现自动回滚。测试表明,当任一环节出错时,所有操作均能回滚,确保数据一致性。同时介绍了Seata的TC、TM、RM架构及四种事务模式(AT、XA、TCC、SAGA),重

2026-10-14 10:37:53 332

原创 Gateway--网关

Spring Cloud Gateway作为微服务API网关,统一管理请求路由与负载均衡,通过配置路由规则(如Path断言)实现请求转发。支持短写法与长写法断言,可自定义断言与过滤器(如添加响应头、记录耗时),并可通过全局/自定义过滤器实现统一处理。结合Nacos实现服务发现,配置简单灵活。支持跨域设置,满足前后端分离场景需求。

2026-10-11 17:30:00 162

原创 Sentinel(服务保护)

本文介绍了Sentinel在微服务架构中的应用,重点阐述其核心概念:资源(如HTTP请求、业务代码)与规则(如流控、熔断、热点)。通过配置规则并由客户端推送至各微服务,实现对资源的保护。实践包括:使用流控规则限制QPS、链路模式精准限流、关联模式“舍车保帅”保障关键接口、熔断规则基于慢调用/异常比例自动降级,以及热点参数限流。结合自定义BlockExceptionHandler和@SentinelResource兜底处理,实现标准化异常响应,提升系统稳定性与可用性。

2026-10-10 21:24:14 191

原创 OpenFeign

本文介绍了OpenFeign作为声明式Rest客户端的远程调用实现,对比编程式RestTemplate,Feign通过注解简化了调用流程。重点讲解了Feign的基础使用、第三方服务调用、负载均衡(客户端与服务端区别)、超时控制配置、重试机制(Retryer)及拦截器(Interceptor)的应用,并演示了兜底返回(Fallback)的实现,结合Sentinel完成熔断处理,提升系统稳定性与用户体验。

2026-09-29 19:47:22 210

原创 Nacos--配置中心

本文介绍了在微服务架构中使用Nacos配置中心实现配置动态更新的实践方法。通过引入Nacos依赖,将配置文件移至Nacos管理,结合@RefreshScope和@ConfigurationProperties实现配置的实时刷新,避免服务下线修改。同时,利用Namespace、Group、DataID实现多环境配置隔离,并通过ApplicationRunner与ConfigService监听配置变更,支持自动通知。最后优化项目配置文件,基于Spring Profile动态加载不同环境配置,提升系统灵活性与可维

2026-09-22 19:52:38 148

原创 Nacos—注册中心

本文指导读者基于Nacos 2.5.4搭建微服务注册与发现环境,通过Spring Cloud实现服务注册、自动发现及远程调用。重点演示了在分布式架构下,通过引入model模块共享实体类、使用DiscoveryClient获取服务实例信息,并结合RestTemplate完成跨服务调用。最终通过添加@LoadBalanced注解实现负载均衡,提升系统可用性与性能,确保请求均匀分布于多个服务实例。

2026-09-19 18:35:06 82

原创 微服务--分布式基础

本文介绍微服务基础架构,从单体架构出发,对比集群与分布式架构的优劣。重点讲解微服务拆分、远程调用、注册中心(服务注册与发现)、配置中心、熔断机制及分布式事务等核心概念,强调通过服务独立部署、负载均衡与统一管理提升系统可扩展性与稳定性,为后续深入实践奠定基础。

2026-09-18 14:33:12 163

原创 Docker 基础+实战

docker基础+实战 彻底搞懂!

2026-09-17 17:41:09 404

原创 9.AI服务化开发

本文系统介绍了从AI智能体开发到Web项目全链路部署的实践过程。基于Spring Boot与Vue3构建前后端分离应用,实现同步与SSE流式接口,通过Flux与SseEmitter完成实时对话与智能体思考过程流式输出。前端采用EventSource消费SSE,支持打字机效果与可折叠思考面板。后端使用Docker打包,依托阿里云SAE与ACR实现Serverless部署,结合Nginx反向代理与跨域配置,最终完成前后端一体化上线,实现高效、可扩展的AI服务发布。

2026-09-12 18:15:48 234

原创 8.AI智能体构建

<think>好的,用户请求根据帖子内容生成不超过150字的文章摘要。 首先需要解析内容的核心结构。帖子探讨了AI应用与智能体的区别,重点讲解了AgentLoop机制,以及OpenManus项目的四层架构和关键组件,最后实践了基于SpringAI框架的简化版Manus智能体。 摘要需要覆盖关键信息:AgentLoop是核心、手动掌控循环是关键差异、OpenManus架构要点、以及最终的实践成果。需要确保在字数限制内,用简洁的概括性语言表达出来,突出从概念学习到实际构建的脉络。 想到了几个要点:项

2026-09-04 14:34:33 250

原创 7 MCP协议

内容是关于MCP协议、架构、使用、Spring AI开发等。需简洁概括核心要点。</think>本文介绍MCP(模型上下文协议)作为AI与外部系统交互的开放标准,类比USB接口,阐述其客户端-服务器架构及核心概念(工具、资源、提示词等)。通过阿里云百炼、Workbuddy及Spring AI示例,展示MCP的配置与调用方式,并实战开发图片搜索MCP服务端与客户端,强调通过标准化协议实现AI能力扩展与系统集成。

2026-09-01 14:40:57 164

原创 6.1 AI的工具调用

本文介绍了如何通过工具调用技术增强AI应用的功能,使其不仅能回答问题还能执行实际任务。主要内容包括: 需求分析:从单纯的问答扩展到联网搜索、网页抓取、资源下载等6类实用功能。 工具调用原理:AI仅决定何时使用工具并传递参数,实际执行由应用程序控制,确保安全性。 技术实现:使用SpringAI框架的注解式开发模式,通过@Tool和@ToolParam定义工具。 具体工具开发:详细讲解了文件操作、联网搜索、网页抓取、终端操作、资源下载和PDF生成6类工具的实现方法。 工具集成:通过配置类集中注册工具,在AI会话

2026-08-19 12:21:52 173

原创 5.2 RAG 最佳实践和调优

本文深入探讨了RAG(检索增强生成)系统中文档处理的优化策略,主要涵盖四大核心链路: 文档收集与切割优化 强调知识完备性,提出"AI原生文档"概念 详细讲解文档切片策略,避免语义缺失或冗余 介绍元数据标注的三种实现方式(手动/批量/自动) 向量转换与存储优化 讨论存储方案选择标准(成本/规模/性能) 分析嵌入模型对检索效果的影响 文档过滤与检索优化 实现查询重写和多查询扩展技术 配置相似度阈值、返回数量等核心参数 演示基于元数据的过滤规则实现 查询增强与关联优化 设计边界情况处理机制 提

2026-08-14 17:35:41 203

原创 5.1知识库概念进阶

本文摘要: 文章详细介绍了知识库构建与检索的完整流程,分为四个核心部分: 文档收集与切割(ETL流程) Extract:通过DocumentReader组件提取文档 Transform:包含文本分割器、元数据增强器和内容格式化工具 Load:使用DocumentWriter将处理后的文档写入目标存储 向量转换与存储 讲解VectorStore接口及其实现类 详细说明PGVectorStore的配置和使用 介绍搜索请求构建的关键参数 文档过滤与检索 预检索阶段的查询优化方法(重写、翻译、压缩、扩展) 检索器的

2026-08-07 00:43:55 1968

原创 4.1RAG知识库基础

本文详细介绍了RAG(Retrieval-Augmented Generation)知识库的构建与使用流程。主要内容分为两大部分:建立索引和检索生成。 建立索引: 文档收集与切割:将长文档分割成适当大小的片段(chunks),推荐基于语义边界或递归分割策略 向量数据转换:使用Embedding模型将文本转换为高维向量,存储到向量数据库,便于语义相似度检索 检索生成: 文档过滤与检索:将用户问题转为向量,在数据库中查找语义相近的文档片段 查询增强与关联:将检索结果与用户问题组合成增强Prompt,交由AI生成

2026-07-29 21:09:16 337

原创 3.1构建项目--多轮历史对话大模型

本文简要介绍了构建AI对话项目的核心步骤:1.配置大模型;2.实现用户与AI的交互流程。重点解析了聊天方法的实现逻辑:通过ChatClient预装AI能力,用doChat处理单次对话,利用chatId管理对话历史,最终通过call调用模型并返回响应结果。整个过程清晰划分了系统初始化、请求构建和响应处理三个阶段,实现了从用户输入到AI输出的完整链路。

2026-07-24 15:37:22 274

原创 3.2 构建AI智能体项目扩展知识

本文介绍了SpringAI框架下自定义拦截器、结构化输出、对话持久化和提示词模板的实现方法。首先通过实现CallAroundAdvisor和StreamAroundAdvisor接口创建自定义拦截器,核心是aroundCall和aroundStream方法。其次利用record定义输出格式,通过修改提示词实现结构化输出。对话持久化提供文件和JDBC两种存储方式,文件存储通过Kryo库实现对象序列化。最后使用PromptTemplate模板管理提示词,支持动态替换占位符,提升交互规范性。这些技术可增强AI应用

2026-07-24 15:12:32 254

原创 Redis--数据类型常用指令

本文介绍了Redis的常用数据类型及其操作命令,包括String、Hash、List、Set和ZSet五种基本类型。String适用于缓存、计数器等场景;Hash适合存储对象;List支持队列和栈操作;Set提供去重和集合运算功能;ZSet通过score实现有序集合。文章详细讲解了每种类型的特性、内部编码、常用命令及典型应用场景,并对比了不同数据类型的差异。此外还介绍了Key的层级命名规范和通用命令,帮助开发者根据业务需求选择合适的数据结构。

2026-05-07 19:31:58 396

原创 Docker:项目部署

对比项手动部署部署步骤需要手动执行多个docker run命令一个搞定网络配置需要手动创建网络,并让每个容器加入自动创建网络,所有服务自动加入依赖管理需要手动控制启动顺序通过depends_on自动管理配置管理命令参数复杂,容易出错YAML 文件清晰易读,便于版本管理适用场景简单项目、学习测试生产环境、多容器项目附录:常见问题 FAQQ1:为什么修改配置文件后,需要用容器名而不是 localhost?

2026-04-30 12:45:56 813 6

原创 Docker入门

Docker容器技术核心笔记摘要 核心概念:Docker包含镜像(只读模板)、容器(运行实例)和镜像仓库三大要素,镜像命名规范为[repository]:[tag]。 常用命令: 镜像操作:pull拉取、images查看、rmi删除 容器操作:run创建、ps查看、start/stop启停、exec进入 参数说明:-d后台运行、-p端口映射、-e环境变量 关键技术: 端口映射:通过宿主机端口访问容器服务 数据卷:实现容器数据持久化和便捷编辑 自定义网络:解决容器IP变动问题,支持通过容器名通信 镜像构建:使

2026-04-29 15:51:23 503

原创 Springboot原理篇:自动配置

SpringBoot自动配置原理笔记摘要 本文详细解析了SpringBoot自动配置机制的核心原理: 自动配置流程:通过@SpringBootApplication→@EnableAutoConfiguration→AutoConfigurationImportSelector加载META-INF/spring/AutoConfiguration.imports文件中的配置类,自动注册Bean到IOC容器。 关键机制:第三方jar包预置AutoConfiguration.imports文件,SpringBo

2026-04-17 09:49:43 415

原创 SpringAOP:面向切面编程

Spring AOP(Aspect Oriented Programming,面向切面编程)是一种编程思想,核心思想是:在不修改原有业务代码的情况下,为指定的方法统一添加额外的通用功能。输出操作人实现思路:操作的时候需要登陆认证,会产生JWT令牌,之前我们定义的JWT令牌自定义了信息“id”,而这个id可以唯一标识每一个员工,因此获取到这个id就相当于知道操作人是谁了。方法名(方法参数) throws 异常?每次请求的数据都会保存在独立的一次线程中,保证了获取到的数据就是那次请求的数据。

2026-04-17 09:17:00 414

原创 Spingboot:登陆认证实现

本文摘要:基于SpringBoot实现登录认证功能,主要包含三部分:1) 登录功能采用三层架构实现用户验证;2) 使用JWT令牌进行无状态认证,包含令牌生成、解析工具类实现;3) 通过过滤器和拦截器两种方式实现登录校验,拦截未授权请求。文章详细介绍了JWT的结构原理、过滤器/拦截器的配置方法及执行流程,并对比了两种校验方式的优缺点。最终实现完整的登录认证流程:用户登录成功生成JWT令牌,后续请求需携带有效令牌才能访问受保护资源。

2026-04-11 18:12:15 427

原创 基于PageHelper的分页查询

本文详细介绍了基于PageHelper和MyBatis实现JavaWeb分页查询功能的完整方案。主要内容包括:1. 系统架构设计(四层结构:Controller、Service、Mapper和数据模型)2. 关键数据模型设计(实体类、查询参数封装类、分页结果类和统一响应类)3. 各层实现要点:Controller参数接收与响应、Service分页设置与结果封装、Mapper动态SQL构建4. PageHelper工作原理(SQL拦截与改写)5. 完整的数据流转过程。该方案实现了支持多条件查询的分页功能,具有

2026-04-04 17:07:15 429

原创 MySQL:多表查询

本文介绍了数据库多表查询的核心技术。重点讲解了内连接和外连接的区别:内连接只返回符合连接条件的交集数据,而外连接会保留某一边表的全部数据。文章通过具体示例展示了如何避免直接查询产生的笛卡尔积问题,强调区分连接条件(on)和筛选条件(where)的重要性。此外还介绍了子查询(嵌套查询)的四种形式:标量、列、行和表子查询,并提供了对应的查询示例。这些技术能有效提升多表数据查询的效率和准确性。

2026-03-10 14:56:59 400

原创 知识回顾:前后端分离+接口编写+其他优化

本文深入探讨前后端分离开发中的关键要点,重点解析后端数据交互流程。文章详细说明成功回调函数的运作机制:后端通过Result对象返回状态码和数据,前端接收JSON格式响应并进行渲染(以Vue的v-for为例)。同时介绍了三层架构中Controller层的核心注解使用,包括@RestController、@RequestMapping及各类参数接收注解(@RequestParam/@PathVariable/@RequestBody)。最后提及优化方案:通过Nginx代理服务器隐藏后端细节并实现负载均衡,以及L

2026-03-04 23:52:23 481

原创 知识总结:IOC+DI解耦与MyBatis

本文介绍了SpringBoot的IOC容器与DI依赖注入技术,以及MyBatis简化JDBC操作的方法。在SpringBoot部分,重点讲解了通过@Component注解实现IOC控制反转,以及使用@Autowired进行依赖注入,有效降低了代码耦合性。MyBatis部分详细说明了如何通过接口注解方式实现增删改查操作,包括单参数和多参数的SQL语句处理方法,并对比了简单项目使用注解与复杂项目使用XML配置文件的适用场景。文章还强调了Lombok工具在简化实体类创建过程中的重要作用。整体内容涵盖了从基础连接到

2026-02-03 22:33:59 734 1

原创 UE5 角色移动逻辑

本文概述了UE5中角色移动的实现逻辑。首先通过输入映射上下文(IMC_input)设置WASD按键规则,绑定2D输入操作(IA_Move2)作为信号接收器。在角色蓝图中,游戏启动时添加映射上下文。移动时,持续按键触发增强输入节点的Trigger事件,调用"添加移动输入"节点。通过"获取Actor方向向量"确定移动方向,并将IA_Move2接收的2D值经"拆分向量2D"处理后,分别连接到前后/左右移动的ScaleValue参数,实现角色在3D空间中的

2026-01-15 21:13:50 771 1

原创 实例回顾:JavaWeb最基本的前后端分离——外卖订单管理系统

摘要:本文讲解了前后端分离的核心思想与技术实现。前后端分离本质是一种职责划分思想:后端专注数据处理,前端负责页面交互,二者通过HTTP协议通信。项目采用Ajax异步请求、SpringBoot快速开发接口、MySQL数据库和Druid连接池等技术实现。具体开发流程包括:1)数据库配置与连接;2)定义数据模型和接口规范;3)JDBC实现增删改查操作;4)SpringBoot编写RESTful接口;5)前端通过Ajax发送请求并处理响应。项目实现了订单的增删改查功能,展示了前后端分离架构下各层协作的完整流程。

2025-11-29 21:58:59 846 1

原创 MySQL基础-------DQL语句

本文介绍了MySQL的DQL数据查询语句,包括基础查询(SELECT FROM)、条件查询(WHERE)、聚合函数、分组查询(GROUP BY)、排序查询(ORDER BY)和分页查询。重点讲解了字段选择、别名设置、去重查询、比较运算符和逻辑运算符的使用,以及WHERE与HAVING的区别(分组前后过滤条件的不同)。同时详细说明了聚合函数(COUNT, MAX, MIN, AVG, SUM)的具体用法,并通过实例展示分组查询的执行逻辑,最后介绍了排序和分页查询的基本语法。全文通过思维导图方式组织,便于理解D

2025-11-09 14:13:30 811 1

原创 MySQL基础------DML语句

MySQL DML语句操作指南: 添加数据: 指定字段:INSERT INTO 表名(字段1,字段2) VALUES(值1,值2) 批量添加:可一次插入多组值 注意:字符串/日期需加引号,值不超过字段范围 修改数据: 语法:UPDATE 表名 SET 字段=值 [WHERE 条件] 特殊:设置字段为NULL可实现"伪删除"(非DELETE操作) 删除数据: 语法:DELETE FROM 表名 [WHERE 条件] 与UPDATE区别:DELETE直接删除整行数据 (注:示例代码显示基础语

2025-11-09 12:40:38 365 1

原创 MySQL基础——基础语法数据类型和DDL语句

基于内容,以下是思维导图的整理:基于内容,分为两大板块来讲解,DDL可以1.对数据库操作 2.可以对表格操作,下面我们来学习。

2025-11-02 16:57:55 341 1

原创 华为ICT仓颉语言小游戏——心灵感应魔法

猜数字游戏运用二进制原理实现"心灵感应"效果。游戏将十进制数字转换为二进制位组合,每张卡片对应一个二进制位(如卡1对应第一位)。通过询问数字是否在卡片上,实际是在收集二进制位的状态(1/0)。最后将"是"对应的卡片权重值相加,完成二进制转十进制计算,还原目标数字。整个过程巧妙运用了二进制编码逻辑,将数学计算隐藏在互动问答中。

2025-11-01 22:54:45 943 2

原创 华为ICT仓颉语言基础——第二章:程序结构基础

摘要:本文介绍了仓颉语言中的程序结构,主要分为条件判断和自定义函数两部分。条件判断包括ifelse语句、matchcase选择分支结构(类似switchcase但需穷尽所有情况)以及条件表达式。自定义函数部分讲解了函数定义格式、命名参数与非命名参数的区别,以及math库的基本数学函数。文章通过思维导图和代码示例详细说明了各种语法规则和使用注意事项。

2025-11-01 22:36:58 729 2

原创 华为ICT-仓颉语言基础——第一章:基本数据类型

在仓颉语言中,只要涉及到运算符那就是”运算“,并且运算的数字和变量必须是同一个类型的(位数相同,数据类型相同),这与Java不同,在Java中,整型与浮点型做计算,整型会自动转换位浮点型。但是仓颉语言中,只要类型不同,就会立马报错。我们刚刚说”运算“的时候其实已经提到了,仓颉语言中对于运算的数据类型十分严格,加号也是一个运算符号,因此,即使他作为连字符,本质上还是在做一个加法运算,因此左右两边的数据类型必须相同,必须是字符串+字符串的形式,不能再向Java一样打印输出时使用”字符串+变量“的形式了。

2025-10-26 22:59:41 763 3

原创 JAVA的读取和写入——实例:文档数字读取和排序输出

大家好,我是一个编程小白,以后的编程笔记就以博客文章形式存储了(wps便签太容易吞图片画质了,之前学web前端,上传的图片笔记和实例糊的不成样子,想要复习还得开电脑自己去vscode看自己写的实例,麻烦死了,以后就在这里写好了) (所以这是个纯个人笔记,不喜勿喷哈)的缓冲区,它会先把要写的内容 “暂存到内存缓冲区”,等缓冲区满了或代码执行完,再一次性写入磁盘 / 网络(这些操作很慢),从而减少写入次数、提高效率。// split("\\s+"):按一个或多个空白字符分割字符串,得到单个数字的字符串数组。

2025-10-19 16:56:54 765 3

SpringAI构建前置知识

SpringAI构建前置知识

2026-07-24

空空如也

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

TA关注的人

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