自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

罗小爬的技术宝书

一只没有脚的鸟...停不下的学习,持续的进步,点滴技术的记录与分享。

  • 博客(333)
  • 资源 (5)
  • 收藏
  • 关注

原创 OpenTelemetry系列 - 第5篇 OpenTelemetry JavaAgent目前支持的库、框架等

某些插桩工具可能会生成过多的跨度和指标,从而产生大量干扰信息。版本,支持众多主流的库、框架、应用服务器、JVM,开箱即用。目前最新的OpenTelemetry JavaAgent。

2025-11-28 10:01:19 965

原创 多个Filter中doFilter方法的执行顺序(二)

顺序依次为 1、2、3(即 1 在最前,3 在最后),当执行到。之后的处理逻辑仍可正常执行,可通过。抛出了异常,优先级更高的。

2025-11-21 11:28:56 50

原创 DDD系列 - 第12讲 如何在DDD中实现Query服务(轻量化CQRS)

轻量化CQRS、整合Repository和DAO的优势。

2025-11-17 16:28:13 82

原创 基于WebSocket + STOMP + SockJS + RabbitMq的聊天室Demo

老早之前写的一个基于WebSocket + STOMP + SockJS + RabbitMq的聊天室Demo,感兴趣的小伙伴可以鼓捣一下。相关技术:WebSocket + STOMP + SockJS + RabbitMq核心功能:支持广播消息、给指定用户发消息后端支持集群部署,且客户端到后端需支持会话保持聊天室页面展示。

2025-11-14 14:20:52 1058

原创 多个Filter中doFilter方法的执行顺序(一)

如果在 Filter2 的 doFilter 方法中没有调用 chain.doFilter(request, response),则请求处理流程会在 Filter2 停止,不会进入 Filter3 和目标 Servlet。

2025-11-14 14:07:57 353

原创 自定义Grafana错误率面板No Data问题排查

即解决了分子不存在时替换为0,又能和分母对齐标签,满足了分子不存在时的Http错误率显示为。Prometheus 查询分子没有数据时,Grafana 面板会显示。Http请求错误率时显示效果如下图,此时的错误率均为。,而我的需求是在分子没有数据时要让面板显示为。Http请求错误率时,却提示。

2025-09-17 15:06:42 800

原创 Spring Security OAuth2中Resource Server JwtDecoder时钟偏移量设置

这意味着,令牌过期后,服务端仍会有一分钟的“宽限期”允许访问。这种行为可能导致安全隐患,尤其是在对令牌有效期要求严格的场景下。多次测试后发现,JWT 实际失效时间比 exp 属性晚了约。的时钟偏移量(Clock Skew),用于容忍服务器之间的时间不同步。属性判定令牌有效期,可以将时钟偏移量设置为0,只需将其设置为。模式后,实际使用过程中发现 JWT 的。,发现 JWT 的时间校验逻辑由。并不是严格按照令牌中的。要严格按照 JWT 的。

2025-09-15 11:18:20 286

原创 在IDEA中设置新建Java类时自动添加类注释

tab页,可以看见Class、Interface等Java类定义上都包含了。设置完成后,新建Java类时,会首先弹出输入框,输入前文模版中的。想要给Java类统一设置类注释,可以直接修改。

2025-08-21 10:44:10 557

原创 Jaeger中的child-of和follows-from(及其在OpenTelemetry中表示方式)

即子 Span 由父 Span 直接触发,生命周期通常嵌套。创建 Span 时,将另一个 Span 的上下文作为。这两种关系有助于 Jaeger 展示调用链的结构和因果关系。这样可在链路追踪系统(如 Jaeger)中正确展示两种关系。在 OpenTelemetry 中,Tracing 的。创建子 Span 时,指定父 Span 的上下文(在 Jaeger(分布式链路追踪系统)中,OpenTelemetry 没有直接的。传入,表示因果关系但非嵌套。

2025-08-14 16:30:26 327

原创 windows下以all-in-one模式快速启动jaeger

是一款开源的分布式追踪系统,最初由 Uber 开发并贡献给 CNCF(云原生计算基金会)。它主要用于监控和分析微服务架构中的请求链路,帮助开发者定位性能瓶颈、分析服务依赖和故障原因。本文主要介绍如何在windows环境下快速安装Jaeger,并提供Jaeger UI查询界面,方便大家快速熟悉Jaeger相关生态。如下默认使用内存存储,重启后数据会丢失。进入Jaeger Github。即为Jaeger的启动文件。

2025-08-13 14:06:52 1091

原创 Keycloak中的redirect_uri参数的验证规则

在实际应用中,带 userinfo 的 URI 可能被用于钓鱼或其他安全攻击,因此需要严格校验。

2025-07-24 14:41:12 519

原创 SpringAI系列 - 基于Spring AI 1.0.0 的AI助手实现示例

因此在使用OpenAI EmbeddingModel时需将VectorStore数据库的dimension设置为1024,否则会导致数据插入失败。示例工程my-ai-agent中使用了阿里百炼大模型(qwen-plus)作为AI助手的默认大模型(OpenAI接口兼容模式),示例工程my-ai-agent使用了MariaDB作为默认的关系数据库和向量数据库。而OpenAI EmbeddingModel的dimension默认为1024,需获取到相应的API_KEY后,并将其设置到环境变量。

2025-07-08 17:02:52 376

原创 吐槽篇 - 最近身边的代码真是有些无语...

最近,感觉身边见到的代码质量真是一言难尽。有些大厂回沈的同事啥的,但是代码写的我也是无语了,并且还不接受意见,感觉没法交流。列举下我最不能接受的几段代码,真实发生在身边的代码。

2025-07-07 17:18:25 915

原创 OAuth2中的redirect_uri参数的验证规则

OAuth2的授权端点支持解析参数,该参数用于下,客户端接收授权码回调处理的端点。参见spring-security-oauth2-authorization-server中的授权端点实现: 是一个实现了 接口的类,用于验证 OAuth2 授权码请求中的参数。它是 Spring Security OAuth2 框架的一部分,主要负责确保授权请求()的合法性,本文重点关注的验证逻辑。若客户端发起的授权端点请求【不包括】参数:若客户端发起的授权端点请求【包括】参数: 参数在 OAuth2 授权端点中不是强制

2025-07-02 15:46:23 1375

原创 Byte-Buddy系列 - 第6讲 Advice相关

Byte-Buddy中提供Advice相关操作,类似AOP切面。进行环绕增强(类似before、after拦截),特殊关注。构造函数匹配器可以结合更具体的参数类型匹配器。的第1个参数,需要特殊注意。

2025-06-27 14:45:27 450

原创 SpringAI系列 - MCP篇(三) - MCP Client Boot Starter

MCP Client在使用STDIO协议连接Server时,是无需预先启动Server的(SSE下需要预先启动Server,暴露web端口),而是由Client根据配置的命令自行启动Server。提到的MCP Server实现打包成jar包,MCP Client通过Java命令、STDIO协议本地启动并连接MCP Server。提到的MCP Sever服务,MCP Server的SSE端点为。可根据MCP Server的运行方式自行选择相应的配置,配置形式连接MCP Server,目前该形式。

2025-06-03 14:45:07 665

原创 SpringAI系列 - 升级1.0.0

正式版后,相应的构造函数被移除,需通过builder进行创建。Spring AI发布。正式版了😅 ,搞起…

2025-05-30 14:56:05 623

原创 Byte-Buddy系列 - 第5讲 动态扩展类属性

在运行时可以通过Byte-Buddy中。我们想在运行时动态添加。

2025-05-23 09:37:39 327

原创 SpringAI系列 - MCP篇(二) - MCP Server Boot Starter

此处需注意之前的。

2025-05-09 09:49:55 933

原创 SpringAI系列 - 升级1.0.0-M8

模式会将大模型的响应拆分成多条记录,导致Spring AI无法正确提取到工具调用的上下文。版本后,实测工具调用不生效,查看源码后发现需通过。之前版本中的Spring AI中。,今天(25年5月1日)就发布。版本时,Spring AI的。模型的工具调用的,由于采用。异步响应stream。异步响应stream。

2025-05-01 11:14:16 766 2

原创 SpringAI系列 - 升级1.0.0-M7版本遇到的问题

底层的一些实现类的包名可能发生了变化,可删除原import后再重新导入。之前早些时候(25年2月的时候),按照Spring AI官网提示使用。之前版本的Spring AI底层的解析Tool参数的工具类。截止到本文发布前(25年4月30日),目前最新的稳定版为。最近在升级版本时,发现Spring AI官网提示的使用。目前Spring AI的最新特性都位于快照版本。参数,则要求所有的Tool方法(即便不需要。版本,说说升级过程中的一些注意事项。版本这个问题已被官方修复,不需要。版本(及之后版本)已发布到。

2025-04-30 10:49:56 726

原创 Byte-Buddy系列 - 第4讲 byte-buddy无法读取到SpringBoot Jar中的类

大力出奇迹,可以在byte-buddy中自定义SpringBoot的类加载器实现,即自行遍历的所有jar来加载类,具体自定义/*** SpringBoot复合类加载器*//*** 获取SpringBoot复合类加载器* @return SpringBoot复合类加载器*/try {= null) {} else {", ioe);/*** 转换资源为ClassFileLocator* @param resource 资源。

2025-04-25 10:14:45 877

原创 Byte-Buddy系列 - 第3讲 byte-buddy与jacoco agent冲突问题

配置Jacoco插件避开 ByteBuddy 要处理的类,即在jacoco中通过。ByteBuddy 与 JaCoCo 同时使用时出现。

2025-04-23 13:44:23 590

原创 Java注解不同ElementType说明及示例

在Java注解系统中,没有直接的ElementType类型可以限制注解"只能作为其他注解的属性"。当注解作为另一个注解的属性时,它实际上是作为一个"值"使用,而不是作为传统的注解应用于程序元素。是Java 8引入的注解目标类型,它比其他ElementType类型具有更广泛的应用范围,可用于几乎所有类型出现的位置。这是Java注解系统的一个局限性,没有直接的方式来声明"只能作为其他注解属性使用"的限制。:应用于方法参数声明。:应用于构造函数声明。:应用于注解类型声明。:应用于类型参数声明。

2025-04-22 08:59:44 1092

原创 SpringAI系列 - MCP篇(一) - 什么是MCP

由client中的用户自行选择及使用相应的模版或指令,用于引导client中的用户与语言模型进行交互(例如在client端通过输入。

2025-04-20 15:57:51 768

原创 如何使用SpringApplicationRunListener在Spring Boot 应用的不同生命周期阶段插入自定义逻辑

starting方法方法在run方法刚开始时立即调用,用于非常早期的初始化操作。方法在环境准备好但尚未创建之前调用。此方法可以用于在环境配置完成后执行逻辑。方法在创建并准备好,但尚未加载资源之前调用。方法在加载完成但尚未刷新之前调用。started方法在上下文刷新后,应用启动完成,但和尚未执���时调用。ready方法在run方法即将结束时调用,此时应用上下文已刷新,所有和已执行。failed方法如果应用启动过程中发生异常,则调用此方法。是 Spring 框架中一个抽象类,位于包下。

2025-04-17 11:01:07 953

原创 SpringBoot集成H2 Console管理界面

这个 URL 配置了一个运行在内存中的 H2 数据库,兼容 MySQL,表名和列名自动转为小写,并且设置了数据库在连接关闭或 JVM 退出时不会自动关闭。

2025-04-14 09:09:48 1549

原创 Byte-Buddy系列 - 第2讲 方法拦截与委托实现

由于这种组织方式,您应该总是最后注册更具体的方法匹配器。否则,之后注册的任何不太具体的方法匹配器可能会阻止应用之前定义的规则。与此方法匹配器成功匹配的方法永远不会被覆盖。默认情况下,Byte Buddy不覆盖任何合成方法。Byte Buddy以堆栈形式组织重写方法的规则。这意味着每当你注册一个新规则来覆盖一个方法时,都会被推到这个堆栈的顶部,并且总是首先应用(),直到添加了一个新的规则,这个规则的优先级更高。中的方法名也可以不一样,则会自动根据。定义,更具体的参数类型(相较于。)会优先生效,使用如下。

2025-04-09 16:56:05 1196

原创 Byte-Buddy系列 - 第1讲 关于类的相关操作

Java 代理实现为一个简单的 jar 文件,其入口点在 jar 文件的 manifest 文件中指定,正如链接资源中所述。Byte Buddy 是一个用于在 Java 应用程序运行时创建和修改 Java 类的代码生成和操作库,无需编译器的帮助。此外,Byte Buddy 提供了一个方便的 API,可以手动、更改类,使用 Java 代理或在构建期间进行更改。Byte Buddy 支持从 Java 5 到最新版本的 Java,并且是一个轻量级库,仅依赖于 Java 字节码解析库 ASM 的访问者 API。

2025-04-09 16:55:21 1043

转载 【转载】maven profile 使用/教程/示例

本文用示例说明maven的profile的使用。mavan的profile作用Maven中的profile能让你为不同的环境定义不同的构建;Maven中的profile是一组可选的配置,可以用来设置或者覆盖配置默认值。一个Profiles下面允许出现的元素</</</</</</</</</</</</</</</</</</</maven的profile与SpringBoot的profile的区别SpringBoot的profile作用:运行的时候,把哪几个配置包含进来。

2025-03-11 15:32:37 1026

原创 SpringAI系列 - ToolCalling篇(二) - 如何设置应用侧工具参数ToolContext(有坑)

在使用AI大模型的工具调用机制时,工具参数都是由大模型解析用户输入上下文获取的,由大模型提供参数给本地工具调用。传递额外的应用侧(客户端)参数给工具调用,如此应用侧在执行工具调用的过程中,便可获取到应用侧层传递的上下文参数,同时又可获取到AI大模型模型传递的工具参数。参数的,这个参数是Spring AI自身用来设置应用侧参数的,并不需要大模型提供。来解析工具参数,查看其源码发现目前并没有预留排除参数定义的方式。,如此在将工具描述上传给大模型时,大模型会认为工具同时需要。获取应用侧的上下文参数。

2025-02-19 15:15:23 1645 6

原创 SpringAI系列 - Tool Calling篇(一)- @Tool集成、Function集成

如果您不提供描述,则将使用方法名称作为工具描述。强烈建议提供详细描述,因为这对于模型理解工具的目的和如何使用它是至关重要的。注解,并在提示选项中提供它(单个提示中可以定义和引用多个工具),以便模型可以使用。在大模型无法回答我们的问题时,会自动检测用户输入时提供的工具并调用相应的工具,Spring AI框架会自动处理会话中的工具调用,通过调用。模式会将大模型的响应拆分成多条记录,导致Spring AI无法正确提取到工具调用的上下文。同样以之前发送警报的工具调用为例,调整为使用Function集成的方式,

2025-02-18 08:38:33 1678 1

原创 SpringAI系列 - RAG篇(四) - QuestionAnswerAdvisor

大语言模型是无法直接回答私有知识领域的问题,我们可以借助RAG技术和私有知识文档构建所谓的智能体应用,构建一个能回答私有领域问题的大模型问答应用。至此,RAG中2个阶段的所有工具均已介绍完毕,接下来我们便可以使用SpringAI集成大模型实现我们自己的AI知识库了。,该组件目前处于孵化中的状态,后续可能会改变,可自行进行学习和了解。Spring AI 为上述的 RAG 流程提供开箱即用的支持,即。即可以理解为跟用户输入类似的文档,即答案。可以理解为用户的输入,即用户的问题,而。也可以从简只使用2级层次。

2025-02-18 08:37:32 710

原创 SpringAI系列 - RAG篇(三) - ETL

主要负责知识的提取和管理。ETL 框架是检索增强生成(RAG)数据处理的核心,其将原始数据源转换为结构化向量并进行存储,确保数据以最佳格式供 AI 模型检索。具体组件的使用可点击相关链接进行查看。整个ETL管道操作的核心数据结构为。,该框架对应我们之前提到的。,如图片、音频和视频,

2025-02-18 08:36:38 649

原创 SpringAI系列 - RAG篇(二) - VectorStore

Apache Cassandra、Azure Cosmos DB、Azure Vector Search、Chroma、GemFire、Milvus、MongoDB Atlas、Neo4j、OpenSearch、PineCone、Qdrant、SAP Hana、Typesense和Weaviate,大家可根据需要。元数据即对应ETL阶段生成的Document中的metadata中的属性,在使用VectorStore相关操作时,可通过。当给定一个向量作为查询时,向量数据库返回与查询向量“相似”的向量。

2025-02-18 08:35:23 757

原创 SpringAI系列 - RAG篇(一) - Embedding Model

我们亦可以通过HTTP接口调用的方式对EmbeddingMode发起调用,我们将文本发送给EmbeddingModel,然后EmbeddingModel将向量化后的多维浮点数数组返回给我们。加载到向量数据库的过程中,最重要的转换之一是将原始文档拆分成较小的部分。考虑到模型的令牌限制,我们需要具备过滤相关数据的能力,并将过滤出的数据填充到在模型交互的上下文窗口中,这种方法俗称。这种将高维数据映射到低维空间的技术在机器学习中非常有用,因为它可以将复杂的数据表示为简单的向量,从而便于计算和分析。

2025-02-18 08:33:33 490

原创 Spring AI系列 - Chat Client & Chat Model

例如,在聊天机器人中,用户输入问题后,模型可以逐步生成和返回回答,而不是一次性返回完整答案。:流式响应允许模型在处理数据的同时逐步返回结果,而不是等待整个任务完成后再返回。相较于ChatModel,ChatClient提供了通用的流式的API,提高了开发者的编程体验,且支持同步和流式编程模型。:对于用户来说,流式响应可以显著改善体验,特别是在处理复杂查询或生成长文本时,用户可以逐步看到结果,而不必长时间等待。:通过逐步返回结果,流式响应可以减少内存和计算资源的占用,因为不需要一次性处理和存储所有数据。

2025-02-18 08:32:06 588

原创 【Copilot】Redis SCAN & SSCAN

本文内容由Copilot生成。

2025-02-13 09:43:24 1105

原创 SpringAI系列 - 通过Ollama本地安装大模型

目前市面上提供了大量的Chat UI开源实现,比如Open WebUI、Cherry Studio、AnythingLLM等,启动后亦可停止ollama运行,配置完环境变量后再通过运行ollama app.exe重启ollama即可。应该至少有 8 GB 可用 RAM(内存)来运行 7B 型号,以下关于Ollama环境变量的详细说明由Copilot根据。16 GB 来运行 13B 型号,32 GB 来运行 33 B 型号。

2025-02-11 13:38:13 1171

原创 SpringAI系列 - 使用LangGPT编写高质量的Prompt

文件夹下提供了更多例子,包括 Prompt 以及和 ChatGPT 的完整对话,帮助你更好的上手使用 LangGPT。你也可以借鉴结构化的思想在 LangGPT 提供的模板基础上自行添加、删除、修改得到自己的 Prompt。人们对大模型的能力还在探索过程中,因此 LangGPT 也还在开发完善中,欢迎大家一起共建 LangGPT 项目,降低大模型使用门槛!上面的诗人 Prompt 就是通过用 LangGPT 的 Role 模板设计的。上面的例子都是使用 Role 模板编写的,

2025-02-06 10:10:46 1804

android存储

本文介绍Android中的5种数据存储方式 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实 现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据  

2013-05-16

pagenote.crx

pagenote - 一款chrome·网页标记插件, 在尝试了 (1)Scribe Toolbar(无法成功注册-google验证码限制), (2)Markup、LINER(免费版单网页标记数<=8个、颜色1-2种有限制), 最后发现了pagenote, (1)颜色有4种无限制, (2)单网页标记数可达50个 (3)可以无需登录离线使用

2021-12-03

kubekey-v1.2.0-linux-amd64.tar.gz

Kubesphere官方安装工具KubeKey v1.2.0版本, 个别企业环境无法访问github,可通过此链接下载

2021-11-30

Oracle VirtualBox User Manual - 6.1.28.pdf

VirtualBox 6.1.28用户手册 - 英文版

2021-11-22

headingsMap-3.10.1.zip

chrome浏览器插件

2021-11-08

空空如也

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

TA关注的人

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