自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Langchain4j-Java AI开发】10-框架集成(Spring Boot & Quarkus)

LangChain4j 框架集成指南介绍了如何在 Spring Boot 和 Quarkus 中构建 AI 应用。文章重点展示了 Spring Boot 集成方案,包括:1) 添加必要的 Maven 依赖(OpenAI 集成和内存向量存储);2) 配置 application.properties 文件设置模型参数;3) 创建基础 AI Service 接口;4) 实现 Controller 调用 AI 服务;5) 添加工具集成示例(天气查询工具)。教程还提供了测试命令,帮助开发者快速验证功能。通过 Lan

2025-12-26 17:52:31 508

原创 【Langchain4j-Java AI开发】09-Agent智能体工作流

LangChain4j 智能体工作流简介 本文介绍了 LangChain4j 提供的智能体工作流功能,展示了如何构建和编排 AI 智能体完成复杂任务。主要内容包括: 智能体基础 - 单个智能体的创建与使用 顺序工作流 - 多个智能体按顺序执行,传递中间结果 循环工作流 - 重复执行智能体直到满足条件 通过代码示例演示了简历生成和定制的工作流程实现。LangChain4j 的智能体系统支持状态管理、多智能体协作和多种工作流模式,适用于构建复杂的业务流程自动化解决方案。

2025-12-26 17:52:21 474

原创 【Langchain4j-Java AI开发】07-RAG 检索增强生成

摘要 LangChain4j RAG(检索增强生成)技术使大语言模型能够访问外部知识库,解决其仅依赖训练数据的局限性。RAG工作流程包括文档加载、分割、向量化存储和检索回答。本文展示了两种实现方式:Easy RAG(简单模式)提供快速原型开发,自动处理文档处理流程;Naive RAG(基础模式)则提供完全手动控制,适合需要精细调整的场景。代码示例演示了如何创建带RAG功能的AI助手,使其能够基于公司政策文档回答具体问题。

2025-12-26 17:52:10 953

原创 【Langchain4j-Java AI开发】06-工具与函数调用

文章摘要: LangChain4j的工具(函数调用)机制通过@Tool注解扩展AI能力,使LLM能够调用外部API和执行计算。示例展示了基础工具定义(如计算器)、参数描述(@P注解)和实战应用(数据库查询)。工具解决了纯LLM无法获取实时数据的限制,通过自动调用外部函数(如天气API)返回动态结果。开发只需定义工具类并注入AI服务,系统就能智能判断何时调用工具,实现更强大的交互功能。

2025-12-26 17:51:36 1072

原创 【Langchain4j-Java AI开发】05-对话记忆管理

本文介绍了LangChain4j中的对话记忆管理功能。主要内容包括: 对话记忆的重要性:使AI能够记住之前的对话内容,实现连贯的多轮对话 两种主要记忆类型: MessageWindowChatMemory:按消息数量限制记忆 TokenWindowChatMemory:按Token数量限制记忆 每种记忆类型的特点和适用场景: 消息窗口记忆简单直接但可能超出Token限制 Token窗口记忆更精确但实现稍复杂 提供了两种记忆类型的Java代码示例 简要提及了自定义记忆策略的可能性 这些记忆管理功能是构建上下文

2025-12-26 17:51:21 619

原创 【Langchain4j-Java AI开发】04-AI 服务核心模式

LangChain4j AI服务核心模式摘要: LangChain4j通过AI Services设计模式提供声明式Java接口构建AI应用。核心特性包括类型安全、简洁API和易测试性。开发者可定义带注解的接口,如@SystemMessage定义AI角色,@UserMessage指定用户输入。支持结构化输出,包括枚举、列表和数值类型自动转换。典型应用场景包括情感分析(返回POSITIVE/NEUTRAL/NEGATIVE枚举)、问题分类和多语言翻译。该模式通过AiServices.create()方法将接口绑

2025-12-26 17:50:34 737

原创 【Langchain4j-Java AI开发】03-提示词与模板

本文介绍了LangChain4j中的提示词(Prompt)与模板功能。主要内容包括:1)基础文本提示的使用方法;2)提示词模板(PromptTemplate)技术,通过占位符实现动态内容注入;3)在AI Service中使用@SystemMessage和@UserMessage注解定义提示词,以及@V注解的参数映射功能。这些技术可帮助开发者创建灵活、可复用的提示词,提高与大语言模型(LLM)交互的效率和质量。

2025-12-26 17:50:04 692

原创 【Langchain4j-Java AI开发】08-向量嵌入与向量数据库

本教程介绍了LangChain4j中的向量嵌入(Embedding)技术与向量数据库应用。主要内容包括: 向量嵌入基础:将文本转换为数值向量,并计算语义相似度 三种Embedding模型: 本地模型(BGE Small/All-MiniLM-L6-v2) - 适合开发测试 OpenAI模型(text-embedding-3) - 质量最高 其他云端模型(Cohere/Azure/HuggingFace) 向量数据库使用示例: 演示了InMemoryEmbeddingStore的基本操作流程 包括文本嵌入、存

2025-12-26 17:47:54 916

原创 【Langchain4j-Java AI开发】02-模型参数配置与调优

本文介绍了LangChain4j模型参数的配置与调优方法,主要包括:1)温度参数(temperature)的设置,控制输出的随机性和创造性;2)超时(timeout)和最大令牌数(maxTokens)的配置;3)核采样(topP)的参数调整;4)日志记录功能的使用,包括内置日志和自定义监听器;5)流式响应的实现。文章提供了详细的Java代码示例,演示了不同温度设置下的输出差异、日志记录方式以及流式响应的处理,帮助开发者优化模型性能并监控API调用情况。

2025-12-26 17:42:08 1170

原创 【Langchain4j-Java AI开发】01-快速入门与HelloWorld

本文介绍了LangChain4j Java库的快速入门指南,包含三个核心示例:1)基础ChatModel实现简单对话;2)使用AIService接口实现类型安全的AI交互;3)通过@SystemMessage添加角色设定。教程详细说明了环境配置、Maven依赖添加方法,并展示了如何切换不同LLM提供商(OpenAI、Anthropic、Ollama等)。示例代码均提供完整实现,涵盖从环境变量读取API密钥到执行AI对话的全流程,帮助开发者快速构建AI驱动的Java应用。

2025-12-26 17:40:11 858

原创 Go语言核心知识点底层原理教程【垃圾回收机制】

Go语言采用并发三色标记清除算法进行垃圾回收,通过写屏障技术实现并发标记而不丢失对象。GC流程分为四个阶段:清扫终止(STW)、并发标记、标记终止(STW)和并发清扫。触发机制包括内存增长、定时和手动触发,可通过GOGC参数调节GC频率,1.19+版本支持内存限制设置。混合写屏障(插入+删除)是保证并发标记正确性的关键技术,有效减少了STW时间。

2025-12-26 09:00:00 809

原创 Go语言核心知识点底层原理教程【Channel的底层实现】

Go语言中的Channel是goroutine间通信的核心机制,底层通过hchan结构体实现。hchan包含环形缓冲区、等待队列和互斥锁,支持无缓冲和有缓冲两种模式。创建channel时,会根据元素类型和缓冲区大小分配内存。发送和接收操作遵循特定流程:首先检查是否有等待的goroutine可直接通信,其次尝试使用缓冲区,最后才会阻塞并加入等待队列。Channel保证了并发安全性和数据顺序性,是实现Go并发模型的关键组件。

2025-12-25 08:30:00 466

原创 Go语言核心知识点底层原理教程【GMP调度模型详解】

Go语言的GMP调度模型是其高效并发实现的核心。该模型由三个关键组件构成:G(goroutine)代表轻量级协程,M(OS线程)是实际执行单元,P(逻辑处理器)管理本地G队列。调度器通过全局队列和本地队列的协同工作,配合工作窃取机制实现负载均衡。初始化时通过GOMAXPROCS设置P数量,调度循环中会优先从本地队列获取G,不足时从全局队列或网络轮询器获取,最后通过窃取其他P的任务来保持高效执行。这种设计充分利用多核资源,确保goroutine的高效调度和公平执行。

2025-12-24 12:00:00 708 1

原创 Go语言核心知识点底层原理教程【接口的底层结构】

Go语言接口底层结构分析 Go语言的接口采用两种底层结构实现: eface结构表示空接口(interface{}),包含类型指针和数据指针 iface结构表示非空接口,包含itab表和数据指针 itab表是接口实现的核心,缓存了接口类型与实际类型的方法映射关系。接口赋值时会动态创建itab或从缓存中查找,通过方法表实现动态分派。这种设计实现了Go接口的隐式实现特性,同时保证了运行效率。 关键特点: 空接口eface仅存储类型和数据 非空接口iface通过itab实现方法动态绑定 itab缓存机制优化接口转换

2025-12-24 09:30:00 340

原创 Go语言核心知识点底层原理教程【Map的底层原理】

Go语言Map底层原理摘要 Map是Go语言中的哈希表实现,采用hmap结构体管理数据。核心特点包括无序性、引用类型和动态扩容。底层结构包含: hmap主结构体,记录元素数量、哈希种子和bucket数组 bmap桶结构,每个桶存储8个键值对,采用tophash优化查找 键值分开存储以提高内存利用率 Map操作原理: 查找:计算哈希值→定位桶→比较tophash→验证完整key 插入:检查扩容需求→分配新桶→迁移数据→写入新值 删除:标记删除而非立即释放内存 Map采用渐进式扩容策略,当负载因子超过6.5时触

2025-12-23 21:10:39 645

原创 Go语言核心知识点底层原理教程【Slice的底层实现】

本文深入解析了Go语言中Slice的底层实现。Slice作为动态数组的抽象,其底层由指向数组的指针、长度和容量三部分组成。文章详细介绍了Slice的四种创建方式(字面量、make函数、数组切片、slice切片),重点分析了扩容机制(小容量翻倍、大容量平滑增长)和内存分配过程。此外,还讲解了append和copy操作的实现原理。Slice通过灵活的底层设计,克服了数组的固定长度限制,实现了高效的动态增长和数据共享。

2025-12-23 21:10:00 844

原创 Go语言核心知识点底层原理教程【变量、类型与常量】

本文系统介绍了Go语言的类型系统与变量机制。主要内容包括:1)Go类型分类,分为基本类型(布尔、数值、字符串)、复合类型(数组、切片、映射等)和自定义类型;2)变量的底层表示,包括内存布局、平台相关类型和零值机制;3)基本类型详解,涵盖布尔、整数、浮点和复数类型的底层实现;4)常量特性,如无类型常量、iota枚举器和编译期计算;5)类型转换机制,包括显式转换、字符串/字节切片转换及unsafe操作。文章深入剖析了Go类型系统的设计原理与实现细节,对理解Go语言底层机制具有重要参考价值。

2025-12-19 13:37:57 872

原创 Go语言入门到精通【全集】

本教程是一份详细的Go语言学习指南,从基础入门到高级应用,涵盖了Go语言开发的各个方面。

2025-12-19 08:15:00 1692

原创 【GO】Gin 框架从入门到精通完整教程

欢迎来到 Gin 框架完整教程!本教程将带你从零开始,系统学习 Go 语言最流行的 Web 框架 Gin,从基础知识到高级应用,再到实战项目开发。

2025-12-18 23:37:26 977 1

原创 Spring AI Alibaba 详细使用教程

《Spring AI Alibaba 核心功能与实战指南》是一份全面的开发教程,主要包含以下内容: 快速入门:从环境准备到创建第一个智能体,提供完整代码示例 核心概念:详细解析三大核心模块(Graph Core、Agent Framework、Model Support) 智能体开发:涵盖ReactAgent配置、工具集成、系统指令等完整指南 高级特性:包括多智能体编排、Graph工作流、状态恢复等企业级功能 实战应用:提供智能客服、代码助手等典型场景的实现方案 教程采用分层设计,适合不同阶段的开发者: 初

2025-12-18 23:05:32 1326 1

原创 Spring AI Alibaba A2A 使用指南

本文介绍了Spring AI Alibaba的A2A(Agent-to-Agent)框架,这是一个智能体间通信协议和解决方案。A2A提供了服务发现、远程调用、负载均衡和故障恢复等核心功能,使分布式智能体系统开发更简单。文章详细阐述了A2A的应用场景,包括企业客服、专家咨询系统和跨部门协作等,并重点介绍了其核心特性:透明的远程调用、自动服务发现、负载均衡、健康检查、版本管理和灰度发布。通过A2A,不同智能体可以专业化分工、资源隔离和团队协作,实现复杂AI应用的构建。

2025-12-18 23:02:32 1001

原创 告别环境管理噩梦:用 SDKMAN! 优雅管理 Java 等开发环境

告别环境变量噩梦:用 SDKMAN! 优雅管理 Java 等开发环境

2025-12-15 16:58:16 727

原创 【美团】放它一马

文章摘要: 本文通过动态规划方法解决怪物击败问题,维护每轮击败不同数量(0-9)怪物的状态。对于每个怪物i,考虑击败或放走两种选择,分别更新状态和最大经验值。击败时累加击败奖励和连击加成,放走时仅增加基础经验。最终输出遍历所有可能状态后的最大经验值。算法时间复杂度O(n),适用于大规模输入。

2025-08-27 21:50:01 275

原创 【数学归纳法】证明数列极限

数学归纳法的核心思想类似于多米诺骨牌效应。首先通过基础步骤证明命题在初始情况成立,然后通过归纳步骤证明"若命题对n成立,则对n+1也成立"。在证明数列xₙ>3时,假设xₖ>3并非直接断言其成立,而是作为推导xₖ₊₁>3的前提条件。这种"假设"实际上是在验证递推关系的有效性,结合已证的基础情况,就能确保命题对所有n成立。数学归纳法的关键在于证明传递机制的可靠性,而非对特定情况的断言。

2025-08-09 15:43:45 1052

原创 【bug排查记录】由Redission配置引发的Satoken血案

摘要: 线上出现用户登录状态失效问题,排查发现Redis数据库配置冲突。虽然Spring配置spring.data.redis.database=1正确加载,但实际连接仍使用Redisson默认的数据库0。原因是Redisson未继承Spring配置,需要单独设置数据库索引。解决方案是在Redisson配置中显式调用setDatabase(1),使底层连接与业务配置保持一致。

2025-05-26 23:45:26 935

原创 ELK服务搭建-0-1搭建记录

本文介绍了在CentOS7服务器上使用Docker搭建ELK(Elasticsearch+Logstash+Kibana)日志系统的完整流程。主要内容包括:1) 创建Docker网络并部署Elasticsearch 8.5.0容器,配置相关参数;2) 安装配置Logstash 8.5.0容器,设置日志收集规则;3) 部署Kibana 8.5.0容器用于可视化展示;4) 最后给出了SpringBoot项目对接Logstash的具体配置方法,包括添加依赖和logback配置。整个搭建过程详细说明了各组件参数设置

2025-05-25 22:23:34 1403

原创 DevOps&Jenkins

DevOps是开发与运维的结合,旨在通过自动化流程实现软件高效构建、测试和发布。其核心是打通IT工具链,促进团队协作。关键实践包括持续集成(CI)、持续交付(CD)和持续部署(CD),分别实现代码频繁集成、类生产环境测试和自动上线。CI需要自动化测试、版本控制和构建工具(如Jenkins);CD确保快速发布高质量软件;持续部署则自动将测试通过的代码投入生产。整套流程如Jenkins等工具可实现从代码到上线的全自动化,大幅提升效率。

2025-05-25 17:59:54 609

原创 Docker实战指南

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。容器化对比虚拟机Docker镜像类似于虚拟机镜像,可以将他理解为一个只读的模板。Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建来的。容器可以启动、停止、删除,容器之间彼此隔离,互不可见。可以把容器看做是一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子Docker仓库是存储镜像的仓库。可以有P

2025-05-25 09:37:29 1394 1

原创 【项目】SpringBoot +MybatisPlus集成多数据源

在项目中引入多个Mysql数据库时,可以通过自定义数据源配置类实现。首先,在pom.xml中引入MyBatis Plus依赖,无需额外依赖。接着,在application.yml中配置多个数据源,分别指定不同的数据库连接信息。然后,通过创建两个配置类EcshopWpDataSourceConfig和XgBiLccDataSourceConfig,分别配置数据源、SqlSessionFactory和事务管理器。每个配置类通过@MapperScan注解指定对应的Mapper包路径,并通过@Bean注解创建数据源

2025-05-21 21:04:24 385

原创 【堆】最大堆、最小堆以及GO语言的实现

堆是一个完全二叉树,即除了最后一层,其他层的节点数都是最大的,且最后一层的节点都集中在左侧。堆序性质:根据堆的类型(最大堆或最小堆),节点的值满足特定的排序关系。

2025-05-03 17:43:34 1304

原创 【框架学习】Spring AI-功能学习与实战(一)

在2024年10月8日,Spring AI再次进行了更新,尽管当前版本仍为非稳定版本(1.0.0-M3),但博主将持续关注这些动态,并从流行的智能体视角深入解析其技术底层。目前,Spring AI仍处于小众状态,尚未经过开源社区多年的维护和稳定化过程,这与已经较为成熟的Spring框架形成鲜明对比。即便是Spring AI的稳定版本(1.0.0-SNAPSHOT),在常见的maven仓库中也难以找到,仍需通过Spring的jfrog仓库进行访问。

2025-04-24 19:14:09 1722

原创 【记录手贱bug日常】IDEA 配置vmoptions后打不开,重新安装,删注册表均无用

满心欢喜觉得没什么问题,直接删除缓存重启,结果不出意料的出问题了,打不开,然后去文件目录下面重新修改也不行,,,后来卸载、重装、重启都不行,差点生无可恋,还好这段时间没什么需求,最后,发现每次改完目录下面的vmoptions好像都没有生效,突然觉得有没有可能idea打开并不是用的安装目录下面的,然后去c盘appdata下面搜文件名,果然有一个,打开后,这个才是正确的,到这问题也解决了,如果大家改了后也出问题了,可以去c盘appData去看看。

2025-04-24 10:36:43 664 1

原创 【langchain4j】Springboot如何接入大模型以及实战开发-AI问答助手(一)

langchain4j可以说是java和spring的关系,spring让我们开发java应用非常简单,那么langchain4j对应的就是java开发ai的 “Spring”他集成了AI应用的多种场景,并且抽象多种接口,让我们开发AI应用非常简单,下面介绍其常用功能,以及为了降低模型的使用门槛,这里开发使用国内模型-阿里千问系列进行开发,登录去控制台获取key就行。

2025-04-19 22:54:11 1776

原创 HashMap的底层原理-一文搞懂

扩容前后,key的哈希值对数组长度求余,对比结果发现,同一个桶中的元素a和b在扩容后的新位置取决于新数组长度减1对应的二进制的最高位,即00010000,其十进制正巧为旧数组长度。● 若数组索引位置对应的数据结构是链表,则生 成low和high两条链表,low链表插入新数组中的下标为[当前数组下标],high链表插入新数组中的下标为[当前数组下标+旧数组长度]。可以看出,当容量不是2的n次幂时,4个不同的哈希值的与运算得到的结果相同,发生了严重的哈希碰撞,这是因为容量减1对应的二进制低位存在0比特位。

2025-04-17 22:33:50 1078

原创 【限流算法】计数器、漏桶、令牌桶算法

结合图1-17和图1-18,XX:00:59时刻到达的500个请求会落在第6个灰色格子里,而XX:01:00到达的500个请求会落在第7个格子中,但当时间到达XX:01:00时,窗口会往右滑动一格,此时时间窗口内的总请求数为1000个,可以触发系统500个请求的限流。如图1-17所示,假设每分钟系统限流500个请求,在XX:00:59时刻系统接收到500个请求,在XX:01:00时刻系统又接收到500个请求,那么系统在1秒内就处理了1000个请求,超出了1分钟限流500个请求的要求。

2025-04-17 20:28:04 661

原创 【解析】ReentrantLock锁、Syschronized锁面试点解析

● 公平锁与非公平锁的区别是什么?● 什么是可重入锁?● 什么是死锁,怎样避免死锁?● ReentrantLock与Syschronized实现原理是什么?两者有什么区别?● 请说明ReentrantLock获取锁与释放锁的流程。● 请说明Syschronized锁升级的过程。● 锁性能优化方法是什么?● 介绍一下AbstractQueuedSynchronizer(AQS)。

2025-04-16 23:23:19 1338

原创 【计网】SSL/TLS核心原理

在HTTP协议中,信息是明文传输的,因此为了通信安全就有了HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)协议。HTTPS也是一种超文本传送协议,在HTTP的基础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务端的身份,并为浏览器和服务端之间的通信加密。HTTPS是一种通过计算机网络进行安全通信的传输协议,使用HTTP进行通信,借助SSL/TLS建立安全通道和加密数据包。

2025-04-15 20:44:28 1599

原创 【蓝桥杯】第十六届蓝桥杯 JAVA B组记录

【蓝桥杯】第十六届 JAVA B组蓝桥杯

2025-04-12 15:05:44 4701 27

原创 【安全】加密算法原理与实战

为了理解SSL/TLS原理,大家需要掌握一些加密算法的基础知识。当然,这不是为了让大家成为密码学专家,所以只需对基础的加密算法有一些了解即可。基础的加密算法主要有哈希(Hash,或称为散列)​、对称加密(Symmetric Cryptography)、非对称加密(Asymmetric Cryptography)、数字签名(Digital Signature)。

2025-04-10 23:47:32 1442

原创 【计网】TCP 协议详解 与 常见面试题

介绍了TCP/IP模型,以及各个层次的作用和协议,还详细介绍了TCP协议的建立与端口过程

2025-04-06 22:00:11 1554

java高频面试,分布式,微服务

java高频面试

2025-04-15

空空如也

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

TA关注的人

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