自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

itwxming的博客

互联网的好处是总有文明的道路可以走,如果在产品、技术、管理上挖掘潜力的话,可以不作恶而通向成功的道路。(布局自己的技术体系,不要被公司需求牵着走!)

  • 博客(178)
  • 收藏
  • 关注

原创 Spring AI Alibaba-ReactAgent框架-chatbot智能体应用

示例,是一个用来快速体验和上手 Spring AI Alibaba Agent 框架的入门级智能体应用。ReactAgent框架是spring-ai-alibaba-agent-framework中最核心、最常用的智能体(Agent)实现类。它的底层实际上是一个基于 Graph(图)的工作流引擎,通过多个节点循环协作来完成任务。普通的 LLM 应用只能依靠模型训练时的历史数据来回答问题,存在知识滞后和幻觉问题。的能力,让 AI 不再只是一个只会陪聊的机器人,而是一个能真正帮你干活的智能助手。

2026-06-03 00:38:37 365

原创 Ollama入门笔记

Ollama 是一个开源、跨平台的本地大模型运行工具。不是模型本身,而是用于轻松部署和运行开源大语言模型(如 Llama 3、Mistral、DeepSeek、Qwen 等)的轻量级框架。‌‌Ollama 是‌‌,实际大模型由社区提供。支持 Windows、macOS、Linux。提供本地 RESTful API(默认端口 11434。),可集成到 Python、Java、LangChain 等。所有计算在本机完成,数据不上传云端,适合敏感场景或离线使用。

2026-05-31 23:16:19 412

原创 Spring AI Alibaba-Graph流程编排

SpringAI Alibaba的Graph工作流编排模块实现了复杂AI业务流程的可视化编排。该框架支持同步/异步节点执行、条件分支、并行处理等能力,特别适合构建智能客服等企业级AI应用。相比原生SpringAI,Alibaba版本深度集成了Nacos服务治理,提供了服务注册发现、负载均衡和高可用等企业级特性。通过智能客服示例展示了如何定义工具、编排Graph工作流并触发执行,体现了其在处理复杂流程(如RAG检索、工单跟踪和人工介入)时的优势。关键创新包括异步优先设计、持久化状态管理和人机协同能力,显著提升

2026-05-12 03:01:21 672

原创 SpringAI实用-MCP

创建一个 Spring 组件,并使用。

2026-05-10 03:22:13 478

原创 SpringAI实用-RAG

RAG(Retrieval Augmented Generation),检索增强生成,有助于克服大语言模型在处理长篇内容、事实准确性和上下文感知方面的局限性。。Spring AI 中的是解决大模型“一本正经胡说八道”(幻觉)和“知识滞后”问题的核心技术。简单来说,RAG 就是给大模型配了一个(私有知识库)。当用户提问时,系统先去知识库里“翻书”(检索),把找到的相关内容作为“参考资料”(上下文)塞给大模型,让它基于这些资料回答问题。

2026-05-06 22:40:33 466

原创 SpringAI实用-Tools

Spring AI 的,即。大模型本身是“离线”的,它不知道今天的天气,也无法查询订单状态。通过 Tools,可以告诉大模型:“如果你需要查天气,就调用这个 Java 方法”。大模型会分析用户意图,自动决定以及,Spring AI 负责执行这些方法并把结果返回给大模型。

2026-05-06 16:42:33 417

原创 SpringAI实用-多轮会话记忆

本文介绍了SpringAI中实现多轮会话记忆的技术方案,核心包含三个组件:ChatMemoryRepository(数据层)、ChatMemory(逻辑层)和MessageChatMemoryAdvisor(交互层)。文章详细讲解了基于MySQL和Redis两种存储方案的实现步骤,包括依赖配置、数据源设置、Bean定义和使用方法。特别针对时间窗口策略,提供了自定义TimeWindowChatMemory的实现方案,可支持按时间范围(如24小时)过滤历史消息。

2026-05-06 01:26:15 417

原创 SpringAI入门

SpringAI是一个企业级AI集成框架,核心解决三大问题:基础交互(ChatClient/PromptTemplate)、数据转换(BeanOutputConverter)和上下文管理(ChatMemoryAdvisor)。它通过统一接口屏蔽不同AI厂商差异,提供提示词模板、结构化输出、记忆管理等核心功能。进阶能力包括RAG(检索增强生成)和工具调用,支持私有知识问答和业务系统集成。框架采用模块化设计,包含ChatModel、EmbeddingModel等核心抽象。并支持生产级需求的监控、降级和多模型路由

2026-05-01 14:33:55 417

原创 Python-AI入门

官方没有支持python3新版本的PIL库的话,用pillow替代。pillow是一个PIL库的分支,他提供了更多图像格式的支持,并且与Python3兼容。安装之后代码照样用PIL写法就行。Python Imaging Library(PIL)是一个强大的图像处理库,可以在Python中进行图像操作和处理。要求Python3版本。查看安装成功的pip列表(有些是自动安装的):pip3 list。如果已经安装了pip,但是pip命令不识别,那就用pip3。安装百度aip模块:名字不一致。

2023-12-21 11:08:13 1238

原创 并发相关知识点整理

Java内存模型内存交互操作:如果要把一个变量从主内存中复制到工作内存中,就需要按顺序地执行read和load操作,如果把变量从工作内存中同步到主内存中,就需要按顺序地执行store和write操作。但Java内存模型只要求上述操作必须按顺序执行,而没有保证必须是连续执行。(read和load,以及store和write是成对执行的,其中一个执行了另一个就会立马执行。

2023-04-11 19:05:12 599

原创 MySQL索引底层数据结构算法、优化以及锁与事务整理

1、MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序。index 效率高,filesort效率低。2、order by满足两种情况会使用Using index。1) order by语句使用索引最左前列。2) 使用where子句与order by子句条件列组合满足索引最左前列。3、尽量在索引列上完成排序,遵循索引建立(索引创建的顺序)时的最左前缀法则。4、如果order by的条件不在索引列上,就会产生Using filesort。

2023-03-15 17:24:23 800

原创 JVM垃圾回收调优知识点整理

不是FullGC,老年代的堆占有率达到参数(-XX:InitiatingHeapOccupancyPercen)设定的值则触发(大对象没有连续空间也会触发),回收所有的Young和部分Old(根据期望的GC停顿时间确定old区垃圾收集的优先顺序)以及大对象区,正常情况G1的垃圾收集是先做MixedGC,主要使用复制算法,需要把各个region中存活的对象拷贝到别的region里去,拷贝过程中如果发现没有足够的空region能够承载拷贝对象就会触发一次Full GC。(空间利用率不高,留有一半复制。

2023-03-10 20:53:51 1586

原创 加强版ThreadLocal之阿里开源TransmittableThreadLocal学习

我们都知道ThreadLocal是可以在一个线程中当容器使用的局部变量,是线程隔离、线程安全的。但是如果子线程要获取父线程的变量,便不太方便。下面我们一步一步进入:一、ThreadLocal示例:public class MyThread01 { public static void main(String[] args) throws InterruptedException { ThreadLocal<String> parent = new

2021-08-13 15:19:43 3367

原创 记一次软引用SoftReference做缓存的漏洞修复及验证

框架底层的Excel导入组件实现中使用SoftReference软引用做缓存,将Excel导入对应类的字段等注解配置信息做了缓存。开发测试都没问题,但是程序部署时间长了导入功能就用不了报错。排查定位到为该缓存失效导致的。原代码:public final class BeanUtils { /** * 申明软引用以便内存溢出的时候回收. */ private SoftReference<Map<Class<?>, Map<Stri

2020-12-24 14:12:04 468 2

原创 Netty02——核心功能与线程模型精练

一、Netty初探 NIO 的类库和 API 繁杂, 使用麻烦: 需要熟练掌握Selector、 ServerSocketChannel、 SocketChannel、 ByteBuffer等。 开发工作量和难度都非常大: 例如客户端面临断连重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处理等等。 Netty 对 JDK 自带的 NIO 的 API 进行了良好的封装,解决了上述问题。且Netty拥有高性能、 吞吐量更高,延迟更低,减少资源消耗,最小化不必要的内存复制等优点。 .

2020-09-24 13:35:29 444

原创 Netty——BIO,NIO,AIO精讲

一、总结:1、BIO(Blocking IO)同步阻塞模型,一个客户端连接对应一个处理线程。应用场景:BIO 方式适用于连接数目比较小且固定的架构, 这种方式对服务器资源要求比较高, 但程序简单易理解。2、NIO(Non Blocking IO)同步非阻塞,服务器实现模式为一个线程可以处理多个请求(连接),客户端发送的连接请求都会注册到多路复用器selector上,多路复用器轮询到连接有IO请求就进行处理。应用场景:NIO方式适用于连接数目多且连接比较短(轻操作)...

2020-09-21 11:34:14 384 1

原创 长连接与短连接——JDK的HttpClient、ApacheHttpClient及OkHttpClient类比——Feign产品优化

O、长连接与短链接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次挥手,所以说每个连接的建立都是需要资源消耗和时间消耗的。长连接:所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。维持长连接耗资源,所以用户量多了很可能把服务器资源耗尽,所...

2020-09-04 11:12:11 4473 3

原创 并发编程02——synchronized&Lock&AQS详解

一、并发同步器-设计同步器的意义多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。共享:资源可以由多个线程同时访问。可变:资源可以在其生命周期内被修改。引出的问题: 由于线程执行的过程是不可控的,所以需要采用同步机制来协同对 对象可变状态的访问。那么我们怎么解决线程并发安全问题? 实际上,所有的并发模式在解决线程安全问题时,采用的方案都是序列化访问临界资源。即在同一时刻,只能有一个线程访...

2020-05-26 18:31:59 584

原创 并发编程01-JMM&volatile详解

内容大纲 1、现代计算机理论模型与工作原理 2、什么是线程 3、为什么用到并发,并发的优缺点 4、JMM模型 5、volatile关键字 一、现代计算机理论模型与工作方式 现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存 储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下 来,再取出第二条指令,在控制器的指挥下完成规定操作。依此...

2020-05-13 19:41:02 504

原创 tl-微服务专题02-2-springboot自动装配原理详解

springboot自动装配原理详解1)传统ssm整合redis的时候 需要在xml的配置文件中 进行大量的配置Bean 我们在这里使用springboot来代替ssm的整合,只是通过xml的形式来整合redis第一步:加入配置<dependency> <groupId>org.springframework.data</gr...

2020-04-20 11:14:32 305

原创 携程apollo配置中心使用

携程apollo配置中心搭建:https://blog.youkuaiyun.com/itwxming/article/details/104776170

2020-03-17 19:08:54 2070

原创 tl-微服务专题01-Spring Boot快速开始及核心功能介绍

目录第一节:springboot快速开始(对三篇)一:springboot 微服务开发利器1.1)什么是微服务,微服务和微服务架构的区别?1.2)什么是微服务架构​1.3微服务的优缺点:二:springboot快速开始2.1)(基于maven版本构建)2.1)配置IDE的环境(maven配置)2.2)创建一个空的maven工程,然后导入springboot...

2020-03-09 01:03:45 562

原创 tl-微服务专题10-hystrix实现自定义接口降级、监控、源码分析

方式

2020-02-15 03:56:44 233

原创 tl-微服务专题09-Hystrix介绍及服务限流、降级、熔断机制详解

直接通过RestTemplate调用远程服务时设置超时@Configurationpublic class MainConfig { @Bean public RestTemplate restTemplate() { //设置restTemplate的超时时间 SimpleClientHttpRequestFactory re...

2020-02-14 21:13:59 364

原创 tl-微服务专题08-Ribbon&Feign源码深入分析

RibbonAutoConfiguration类的部分代码如下:@Configuration@ConditionalOnClass({ IClient.class, RestTemplate.class, AsyncRestTemplate.class, Ribbon.class})@RibbonClients@AutoConfigureAfter(name...

2020-02-12 01:15:07 458

原创 tl-微服务专题07-Ribbon&Feign介绍及使用详解

目录一、负载均衡1.1、服务端负载均衡1.2、客户端负载均衡二、Ribbon使用2.1、使用Eureka时集成Ribbon2.1.1、搭建启动eureka注册中心2.1.2、把Ribbon集成到消费端consumer:2.1.3、搭建服务提供者provider:2.2、Ribbon核心知识点2.2.1、Ribbon所包含的负载均衡策略分类2.2.2、如何...

2019-12-27 14:44:39 684

原创 xxl-job学习笔记

目录一、路由策略:(相当于执行器集群部署下的负载均衡)二、调度中心集群部署如何保证一次任务调度被消费一次三、系统远程调用思想四、代码在线编辑,动态执行。1、多种类型代码在线编辑:2、后端动态执行:五、使用注意点:一、路由策略:(相当于执行器集群部署下的负载均衡)执行器集群部署时,几点要求和建议:- 执行器回调地址(xxl.job.admin.addres...

2019-12-23 15:33:52 1242

原创 Eureka服务监督(客户端缓存刷新、心跳监测)定时任务亮点——自动调节间隔的周期性任务

TimedSupervisorTask类(自动调节间隔的周期性任务)Eureka中客户端缓存刷新、心跳监测,调远程服务端接口操作的定时任务,调远程网络不确定性导致定时任务执行不确定性,Eureka设计了一个自动调节间隔的周期性任务!!!通过一个线程类的run方法的finally中再次调用该线程实现。1、该定时任务的启动代码:DiscoveryClient类里的initSchedule...

2019-12-04 15:59:50 1487

原创 Eureka多级缓存机制亮点(待整理)

读写互斥,加锁影响效率。Eureka最终一致性,高可用。对外接口resource类中接口防御性编程,对入参优先做校验。解决频繁的读写:读写分离注册方法写的时候直接写内存注册表,写完表之后主动失效读写缓存。获取注册信息接口先从只读缓存取,只读缓存没有再去读写缓存取,读写缓存没有再去内存注册表里取(不只是取,此处较复杂)。并且,读写缓存会更新回写只读缓存,同步。更新缓存:只读缓...

2019-12-02 01:05:06 1903 4

原创 springcloud ribbon的负载均衡注解 @LoadBalanced的实现原理(@Qulifier注解的使用)

@ConfigurationpublicclassMainConfig{@Bean@LoadBalancedpublicRestTemplaterestTemplate(){returnnewRestTemplate();}}如上,在使用springcloud ribbon的rest服务客户...

2019-10-31 11:48:35 1536

原创 tl-微服务专题04-微服务介绍 及Eureka服务注册与发现详解

微服务介绍及Eureka服务注册与发现详解目录一、微服务概述1、微服务是什么?2、微服务架构是什么?3、微服务的优缺点4、CAP理论为啥CAP 只能三选二5:springcloud微服务技术栈有哪些技术二、eureka应用入门1、没有使用注册中心搭建的分布式应用2、服务发现原理初探3、Eureka入门4、Eureka 部署架构5、eur...

2019-10-25 11:59:50 869 4

转载 JWT RSA无状态鉴权基本原理与使用(token入门)

前后端交互时不能只将用户信息封装进JWT中,否则token被人截获可以冒用。应该将所有的动态参数也封装进token里去,使之变成动态token,并解析比对token里的参数和获取到的参数的一致性。防止token有效,但参数被篡改!!!(相对彻底解决token被劫持,一个比较简单的解决思路:关于测试报告中第一个垂直越权漏洞,并不是完全像测试报告说的那样。首先,1、api/passwordchec...

2019-09-17 10:45:02 1349 2

原创 事件Event监听相关——spring的事件监听相关

应用场景:事件驱动模型简介事件驱动模型也就是我们常说的观察者,或者发布-订阅模型。理解它的几个关键点:1、首先是对象间的一对多的关系;最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方);2、当目标发送改变(发布),观察者(订阅者)就可以接收到改变;3、观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的),目标无需干涉;所以就松散耦合了它们之间的关系...

2019-08-30 19:37:38 452

原创 Redis常用命令——远程连接、清理缓存

本地redis黑窗口连接远程Redis:命令行登录redis:在redis文件夹路径输入cmd进入该目录下。再输入命令即可。redis-cli -h 192.168.254.129 -p 6379============================命令行赋值取值================================================...

2019-04-18 13:31:53 8704

原创 StarRocks入门部署

StarRocks 是一款高性能分析型数据仓库。广泛应用于实时数仓、OLAP 报表、数据湖分析等场景。

2023-08-11 18:31:50 3157

原创 苹果Mac像Windows一样使用

1.1、点击任务栏第一个按钮打开“访达”,点击菜单栏上的访达-偏好设置:1.2、勾选“硬盘”,这样macOS的桌面上就会显示一个本地磁盘,之后重命名为磁盘根,相当于windows中的“此电脑”。

2023-08-10 18:29:17 6088

原创 RocketMQ整理

RocketMQ在阿里云上的商业版本,集成了阿里内部一些更深层次的功能及运维定制。开源版本,功能上略有缺失,但大体上是一样的。使用Java开发,便于深度定制。最早叫MetaQ。消息吞吐量虽然依然不如Kafka,但是却比RabbitMQ高很多。在阿里内部,RocketMQ集群每天处理的请求数超过5万亿次,支持的核心应用超过3000个。经过阿里双十一多次考验。RocketMQ天生就为金融互联网而生,因此他的。

2023-05-16 22:03:35 697

原创 spring解决循环依赖的三级缓存

并不是每个 bean 都需要进行这样的处理,所以, Spring 没有直接在 createBeanInstance 之后直接生成 bean 的早期引用,而是将 bean 的原始对象包装成了一个 ObjectFactory 放到了三级缓存singletonFactories。2、看对应的 Bean 是否在创建中,如果不在直接返回找不到,如果是,则会去 earlySingletonObjects (二级缓存)查找 Bean,如果找到则返回,否则进行步骤 3。如果Bean存在AOP的话,返回的是。

2023-05-02 19:35:54 1801

原创 RabbitMq、Kafka、RocketMq整理

MQ的主要作用:异步提高性能、解耦提高扩展性、削峰。

2023-05-02 03:02:03 2178

原创 Redis相关整理

因为它所有的数据都在内存中,所有的运算都是,而且单线程性能损耗问题。正因为 Redis 是单线程,所以要小心使用 Redis 指令,对于那些耗时的指令(比如 keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。

2023-04-26 16:12:59 549

空空如也

空空如也

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

TA关注的人

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