- 博客(243)
- 收藏
- 关注
原创 3步搞定MCP协议部署!
MCP协议为企业AI系统提供了标准化的工具集成方案,支持本地与远程调用模式,适用于多场景部署。文章深入探讨了其在金融、医疗和制造业的应用策略,并结合Spring框架展示了服务注册、工具开发及安全合规实现。通过合理架构设计、治理规范与性能优化,企业可高效整合AI能力与现有系统,提升业务效率并保障安全性。
2025-06-12 09:00:00
418
原创 MCP协议安全指南|零基础也能~
MCP协议在提供AI工具调用标准化接口的同时,也面临诸多安全挑战。其设计初衷侧重功能实现而忽视安全性,导致信息不对称、上下文隔离不足、权限验证缺失等隐患。本文系统分析了MCP的安全风险,结合代码审查、环境隔离、网络策略等实践提升安全性,并详解本地、远程及Serverless三种部署模式的应用场景与配置要点,强调安全与便利的平衡。未来需推动协议层深度安全集成与生态治理,确保MCP生态健康发展。
2025-06-12 08:30:00
573
原创 使用Spring AI和MCP协议构建图片搜索服务
本文介绍如何使用Spring AI与MCP协议构建图片搜索服务,通过封装Pexels API实现AI调用图像资源。内容涵盖项目架构设计、服务端与客户端开发步骤、传输模式配置及部署方案,提升AI应用的多模态处理能力,增强交互实用性。
2025-06-09 09:00:00
1192
原创 MCP协议入门:AI工具调用的标准化接口
MCP协议作为AI工具调用的标准化接口,通过统一工具定义和调用流程,增强AI获取实时信息、执行外部操作及使用专业工具的能力。它简化开发、促进生态共享,助力AI应用突破模型限制,广泛适用于云平台、客户端及程序内调用场景。
2025-06-09 08:45:00
570
原创 对话记忆持久化方案对比与实现:构建可靠的AI会话系统
Spring AI的对话记忆持久化支持内存、文件、数据库三种方案:内存存储高性能但易丢失,适合开发测试;文件存储兼顾持久化与简易性,适合单实例部署;数据库存储高可靠支持分布式,但依赖运维。文章通过性能对比(写入/读取耗时、扩展性等)指导选型,并提供多模态记忆、向量检索、智能摘要等扩展方案,助力构建生产级AI对话系统。
2025-05-22 09:00:00
812
原创 自定义Advisor机制:打造更智能的AI应用
Spring AI的Advisor机制基于责任链模式,允许开发者在LLM调用链中插入自定义逻辑(如日志记录、违禁词过滤、推理增强),提升应用安全性与智能化水平。其核心接口`CallAroundAdvisor`(同步)和`StreamAroundAdvisor`(流式)通过`getOrder()`控制执行顺序。内置支持对话记忆、知识库检索、向量存储等功能,并可通过实战案例实现情感分析、术语增强等定制化逻辑,结合优先级配置与性能监控,构建高效合规的AI应用。
2025-05-22 08:30:00
886
原创 GitHub文档加载器设计与实现
GitHub文档加载器可从GitHub仓库加载文件并封装为Document对象,支持单文件/目录递归加载、智能分支回退、文件大小/类型过滤,适用于知识库构建与RAG应用。提供SSL安全测试方案,建议生产环境规范证书验证。核心设计兼顾性能与容错性,助力高效处理开源文档。
2025-05-17 20:51:20
1122
原创 构建下一代AI智能体:基于Spring AI的多轮对话应用
本文介绍了如何基于SpringAI框架构建具备持续记忆能力的多轮对话AI应用。首先,文章详细探讨了Prompt工程的核心要素,包括系统Prompt、用户Prompt和助手Prompt的设计,并提出了优化Prompt的技巧,如明确任务角色、提供详细示例、使用结构化格式等。接着,文章分析了AI需求的三要素:需求来源、需求细化和MVP策略。在应用方案设计部分,文章展示了如何设计系统提示词,并通过SpringAI的ChatClient和Advisors实现多轮对话的记忆持久化。最后,文章通过一个恋爱咨询应用的开发实
2025-05-17 08:30:00
846
原创 基于Spring AI实现多轮对话系统架构设计
基于SpringAI框架的多轮对话系统设计,涵盖ChatClient、Advisor、ChatMemory等核心组件,探讨链式调用、动态参数绑定、拦截器机制及多种记忆存储方案,助力构建高效、可扩展的对话系统。
2025-05-12 09:00:00
1719
原创 Prompt工程精要与优化策略:让AI更懂你的意图
本文系统介绍了Prompt工程的理论基础、优化技巧及实战应用,旨在帮助开发者提升AI应用的表现力与实用性。文章首先阐述了Prompt工程的核心三角架构,包括系统Prompt、用户Prompt和助手Prompt的协同作用,并提出了三大维度设计方法,涵盖功能型划分、复杂度梯度和开发级别。接着,文章详细介绍了基础提示技巧和进阶提示策略,如思维链提示法和少样本学习,并通过案例分析展示了从普通到专业的Prompt优化过程。此外,文章还探讨了Prompt模板设计与参数化的实现方法。
2025-05-12 08:30:00
620
原创 Spring AI: 为Java应用赋能人工智能
Spring AI 是 Spring 生态系统的一部分,旨在简化 Java 应用中人工智能功能的集成。它通过统一接口支持多个主流 AI 模型提供商,如 OpenAI 和 Google Vertex AI,并强调可移植性和模块化设计。文章详细介绍了 Spring AI 的核心组件、快速入门步骤和高级功能,例如 RAG(检索增强生成)与向量数据库集成。此外,还涵盖了最佳实践、安全性和性能优化策略,并展望了其未来发展。
2025-04-28 08:30:00
1131
原创 AI大模型接入实战:概念、方式与代码详解
AI大模型是指那些拥有超大规模参数的深度学习模型,它们经过海量数据训练,能够处理多模态数据(如文本、图像、音频等),具备逻辑推理和代码编写等"涌现能力"。这些模型通常拥有数十亿甚至数千亿的参数,能够理解复杂指令并生成高质量的内容。OpenAI:提供GPT-4o(多模态)、GPT-4(文本+图像)、GPT-3.5 Turbo等模型Anthropic:推出Claude 3系列模型Google:开发了Gemini Ultra/Pro/Nano系列Meta:开源了Llama 3和Llama 2模型。
2025-04-28 08:30:00
1149
原创 深入解析,MyBatis的一二级缓存
MyBatis的二级缓存机制为我们提供了强大的性能优化工具,正确使用可以显著减少数据库访问,提升应用响应速度。一级缓存适用于单会话内的查询优化,无需配置,自动管理二级缓存适用于跨会话的数据共享,需要手动配置,并注意数据一致性问题在实际应用中,应根据业务特性、数据变更频率和一致性要求来选择合适的缓存策略。对于分布式环境,可能需要考虑使用专业的分布式缓存解决方案替代MyBatis原生的二级缓存。正确理解和使用MyBatis的缓存机制,将帮助你在保证数据一致性的同时,最大限度地提升应用性能。
2025-04-07 08:00:00
1431
原创 深入理解STAR法则
STAR是**Situation(情境)、Task(任务)、Action(行动)、Result(结果)**的缩写,是一种结构化描述个人经历或成就的方法论。它通过四个维度的递进式叙述,将复杂的故事转化为清晰、有逻辑的表达,尤其适用于需要突出个人能力的场景。Situation(情境):描述事件发生的背景,包括时间、地点、环境及面临的挑战。Task(任务):明确你的角色和需要完成的目标。Action(行动):具体说明你采取了哪些行动,以及背后的思考逻辑。Result(结果)
2025-04-07 01:38:03
3116
原创 Liquibase:数据库变更版本控制工具 CI/CD
Liquibase是一个开源的数据库版本控制工具,它通过日志文件的形式记录数据库的变更,然后执行这些变更,将数据库更新或回滚到一致的状态。Liquibase支持多种数据库类型,包括MySQL、PostgreSQL、Oracle、SQL Server等。除了使用Liquibase的XML标签,还可以直接执行自定义SQL:</</</</Liquibase为数据库版本控制提供了强大且灵活的解决方案。通过将数据库变更作为代码进行管理,开发团队可以更可靠地跟踪、应用和回滚数据库变更,大大降低了跨环境部署的风险。
2025-03-25 08:15:00
1032
原创 Redis Stack 基础知识-构建现代实时数据平台
Redis Stack 是 Redis 官方推出的一站式解决方案,它整合了 Redis 最先进的模块和功能,为开发者提供了构建实时应用的理想平台。Redis Stack 作为现代实时数据平台,不仅继承了 Redis 的高性能特性,还扩展了其数据处理能力,使其成为构建 AI 应用、实时分析系统和高性能应用的理想选择。结合 Spring AI,Redis Stack 可以轻松实现向量数据库功能,为 RAG 系统和其他 AI 应用提供强大的基础设施支持。
2025-03-25 08:00:00
971
原创 Java类加载器(ClassLoader)知识点总结
类加载器负责将Class文件(字节码)加载到内存中,转为JVM能够识别的Class对象。Java程序运行时,并不是一次性将所有类加载到内存,而是按需加载。Arthas是阿里巴巴开源的Java诊断工具,它可以帮助开发人员分析生产环境中的各种问题,包括类加载问题。类加载器是Java虚拟机的重要组成部分,它将Java程序的字节码动态加载到内存中。理解类加载器的工作原理和双亲委派模型对于解决类加载相关问题、防止类加载安全漏洞具有重要意义。通过Arthas等工具,我们可以更便捷地分析和解决类加载问题。/ω\
2025-03-05 09:15:00
888
原创 Java 集合框架 基础 - 幽默版
ArrayList是查找小能手LinkedList是增删高手HashSet是去重专家TreeMap是排序达人选对英雄,才能在对应场景下发挥最大战斗力!记住:工具千千万,场景不一般。用对工具事半功,用错工具事倍般。/ω\),支持一下。如果愿意的话关注一下。会对你有更多的帮助。每天都会不定时更新哦 >人<。
2025-03-05 09:00:00
834
原创 JVM初学者指南:Java虚拟机基础知识 笔记
JVM(Java Virtual Machine,Java虚拟机)是运行Java字节码的虚拟机。JVM是Java"一次编写,到处运行"这一特性的关键所在。无论什么平台,只要安装了对应的JVM,就能运行Java程序。跨平台性:Java代码被编译成字节码后,可以在任何安装了JVM的设备上运行自动内存管理:通过垃圾回收机制自动释放不再使用的内存安全性:提供沙箱安全机制,限制Java程序访问本地系统资源JVM是Java生态系统的核心组件,理解JVM的工作原理对于编写高效、稳定的Java应用程序至关重要。
2025-03-03 09:30:00
542
原创 Git 最佳实践 入门:从零到团队协作的必备指南
现在尝试完成以下挑战:🔹 创建一个功能分支开发TODO列表功能git checkout -b feature/yourname/todo-list # 创建必要的文件 touch todo-list.js todo-list.css🔹 使用git add -p提交至少3个原子化修改# 编辑文件后...# 选择性地提交变更git commit -m "feat(todo): 创建基础Todo项组件"# 继续开发后...git commit -m "feat(todo): 实现添加新任务功能"
2025-03-03 09:00:00
923
原创 FastExcel 新一代的潮流 (EasyExcel)
如果您的项目需要处理大规模的Excel数据,FastExcel无疑是一个值得考虑的选择。FastExcel通过事件监听器实现Excel文件的逐行读取,这对于处理大文件尤为重要,因为它可以避免内存溢出的问题。FastExcel作为一个高效且易于使用的Excel处理工具,不仅继承了EasyExcel的所有优点,还在此基础上进行了性能和功能的增强。在使用FastExcel进行Excel文件的读写操作之前,需要定义一个实体类,该类中的每个属性对应Excel中的一列。首先,创建测试数据,然后通过。
2025-01-20 14:15:00
986
原创 解析JSON 几大工具
不管是和前端交互、调用第三方接口,还是处理配置文件,几乎都绕不开JSON。这篇文章总结了6种主流的JSON解析方法,希望对你会有所帮助。在Java开发中,解析JSON是一个非常常见的需求。曾有安全漏洞争议,社区支持稍逊Jackson。中小型项目,简单的JSON转换场景。企业级项目,复杂序列化和反序列化场景。丰富的注解支持,便于控制序列化行为。性能高,社区活跃,企业级项目首选。轻量级,简单易用,适合中小型项目。功能强大,性能优异,支持复杂结构。高性能需求,大数据量的动态解析。
2025-01-20 14:00:00
2004
原创 Java 集合框架 基础 总结 - lenyan
在 Java 编程中,集合框架是一个非常重要的部分,它提供了一组用于存储、操作和处理数据的类和接口。集合框架可以大大简化我们处理数据集合的工作,提高编程效率和代码质量。本文将对 Java 集合框架的基础内容进行总结,包括常见的集合类型、接口及其特点、常用方法等。Java 集合框架位于java.utilCollectionMap和Iterator。Collection是一个用来存储一组对象的接口,它有几个重要的子接口,如ListSet和Queue。Map则是用于存储键值对的数据结构。Iterator。
2024-12-23 10:00:00
1197
原创 一文秒懂 String、StringBuffer和StringBuilder的区别
例如,在一个多线程的服务器应用程序中,需要对用户输入的字符串进行拼接、格式化等操作,并且多个线程可能会同时访问和修改这个字符串,这时就应该使用StringBuffer。比如,在一个简单的本地工具程序中,需要对一个字符串进行大量的拼接、替换等操作,并且这个程序是单线程运行的,那么使用StringBuilder可以提高性能。StringBuilder在单线程环境下性能最好,因为它没有同步机制的开销,在进行字符串修改操作(如拼接、插入、删除等)时,能够快速地在原对象上进行操作,避免了创建大量新对象的开销。
2024-12-23 09:00:00
974
原创 FastDFS:高效的分布式文件系统解析与实践
FastDFS 是专门为互联网应用量身定制的分布式文件存储系统,非常适合存储用户图片、视频、文档等各类文件。它充分考虑了冗余备份、负载均衡、线性扩容等机制,着重关注高可用、高性能等关键指标,使用它能够轻松搭建一套高性能的文件服务器集群,对外提供文件上传、下载等服务,并且基于 Docker 还可以快速进行搭建,方便快捷地应用到项目中。
2024-11-24 10:00:00
947
原创 深入解析 EasyExcel 组件原理与应用
这种方式内存占用小、效率高,但 POI 官方提供的 API 过于繁琐,使用起来步骤繁多,比如读取一个 Excel 文件,要先将 xlsx 格式的 Excel 文件解析成 OPCPackage 对象,再创建 XSSFReader 对象来解析获取对应 xlsx 下的 xml 内容,想要处理还得进一步创建内容处理器等等,着实有些麻烦。在解析和写入等流程中,定义了一些模板化的方法,不同的实现类可以按照这些模板去扩展和定制具体的业务逻辑,保证了整体流程的规范性和可扩展性。
2024-11-24 09:00:00
1752
原创 《Go 语言基础入门:开启编程新旅程》- lenyan 青训营笔记
Go 语言,又被称为 Golang,是由 Google 公司开发的一种开源编程语言。它汲取了多种编程语言的优秀特性,旨在打造一门具有高效性能、简洁语法以及强大并发处理能力的语言。Go 语言在网络编程、云计算、分布式系统等诸多领域都有着广泛的应用,像 Docker、Kubernetes 等热门项目就是基于 Go 语言开发的。这里我们定义了一个名为add的函数,它接受两个整数类型的参数a和b,然后返回它们的和。
2024-11-23 09:30:00
1014
原创 Git 最佳实践 入门✨
觉得有用的话可以点点赞 (*/ω\*),支持一下。如果愿意的话关注一下。会对你有更多的帮助。每天都会不定时更新哦 >人< 。
2024-11-23 09:00:00
809
原创 Java 中的 Optional:优雅处理空值的利器
合理运用它的各种方法,不仅能够有效减少空指针异常的发生,还能让我们的代码逻辑更加清晰易读,提升整个项目的代码质量。包下的一个容器类,简单理解,它就像是一个特殊的 “盒子”,这个盒子里要么装着我们想要的某个对象(非空的情况),要么就是空的(没有装任何对象)。的诞生,就是为了解决这个痛点,它提供了一种标准化、优雅的方式来处理那些可能为空的值,让我们可以在代码中更清晰地表达对空值的预期和处理逻辑。,我们可以将原本分散在各个角落、用于判断对象是否为空的代码,统一用它提供的一套规范方法来处理,使代码的意图更加明确。
2024-11-18 09:00:00
1666
原创 ✨Java并发编程:Synchronized与ReentrantLock的比较
特性使用方便是否锁的细粒度控制有限高可中断否是公平锁选项否是性能现代JVM下接近甚至优于ReentrantLock取决于具体用例。
2024-10-02 10:00:00
431
原创 深入解析 ConcurrentHashMap:从 JDK 1.7 到 JDK 1.8
JDK 1.7:使用分段锁(Segment)和,每个 Segment 是一个独立的小哈希表,适合中等并发场景。JDK 1.8:采用 CAS 操作和锁定链表或红黑树的首节点,提供了更细粒度的锁,适合高并发场景。通过这些改进,JDK 1.8 版本的在性能和并发控制方面有了显著的提升。觉得有用的话可以,支持一下。如果愿意的话关注一下。会对你有更多的帮助。每天都会不定时更新哦 >人<。
2024-10-02 09:30:00
1800
原创 MySQL 是如何实现事务的 (锁,Redo Log,Undo Log,MVC)?
用于实现事务的原子性和隔离性。MySQL 通过锁机制、Redo Log、Undo Log 和 MVCC 来实现事务的四大特性,保障数据的一致性和完整性。是 MySQL 实现高效并发控制的技术之一,它通过保存数据的多个版本,允许事务在不加锁的情况下读取不同事务中修改的数据,从而提高并发度。它记录了事务对数据的修改操作,并且在系统崩溃时通过重做日志恢复未提交的事务操作,保证数据的持久性。MVCC 依赖于 Undo Log 生成旧数据版本,通过版本链的方式提供事务之间的数据隔离,从而实现高效的并发读写操作。
2024-09-28 10:00:00
1015
原创 InfluxDB 时序数据库基础介绍与使用
InfluxDB 是一个功能强大且灵活的时序数据库,特别适合处理大规模的时序数据。介绍了 InfluxDB 的基本概念、安装配置、基本操作以及其高级功能。无论是在系统监控、物联网还是金融数据分析中,InfluxDB 都能够发挥其优势,帮助用户高效管理和分析时序数据。/ω\),支持一下。如果愿意的话关注一下。会对你有更多的帮助。每天都会不定时更新哦 >人
2024-08-16 12:00:00
737
原创 Spring Boot AOP 切面注解
AOP,即面向切面编程,是一种编程范式,旨在处理程序中那些分散在各处的“横切关注点”。横切关注点通常是那些贯穿多个模块的功能,比如日志记录、性能监控、事务管理、安全检查等。AOP 的核心思想是通过“切面”将这些关注点与业务逻辑分离,使得代码更为简洁且易于维护。在 Spring 中,AOP 是通过动态代理实现的。Spring 使用 AOP 来在运行时动态织入一些逻辑,如方法执行前后插入代码、捕获异常等,而无需改变原始的业务代码。自定义注解是 Java 提供的一种灵活机制,用于创建可自定义的元数据。
2024-08-12 12:00:00
1580
原创 分库分表 [ 技术 ] 指南 ✨
分库分表是通过将数据分散到多个数据库和表中,以减轻单库单表的压力,提高系统性能和可用性。分库分表可以分为垂直分库分表和水平分库分表两种方式。垂直分库分表垂直分库是将不同的业务模块分配到不同的数据库中。比如用户信息放在一个数据库中,订单信息放在另一个数据库中。垂直分表是将一个表中的不同列拆分到不同的表中。水平分库分表水平分库是将同一个表的数据按某种规则分配到多个数据库中。水平分表是将同一个表的数据按某种规则分配到多个表中。分库分表是解决高并发、大数据量场景下数据库性能问题的重要手段。
2024-07-21 09:00:00
1120
原创 Java [ 进阶 ] JVM双亲委派机制✨
双亲委派机制是一种类加载模式,它规定类加载器在加载某个类时,会首先委托父类加载器去尝试加载该类。如果父类加载器无法找到这个类,才会由当前类加载器自己来加载。这种机制保证了 Java 类的统一性和安全性,避免了重复加载和类冲突。双亲委派机制是一种类加载模式,它规定类加载器在加载某个类时,会首先委托父类加载器去尝试加载该类。如果父类加载器无法找到这个类,才会由当前类加载器自己来加载。这种机制保证了 Java 类的统一性和安全性,避免了重复加载和类冲突。解析:这道题目主要考察对双亲委派机制基本概念的理解。
2024-07-14 10:00:00
792
原创 Java [ 进阶 ] JVM类的生命周期 ヾ(≧▽≦*)o
类的生命周期指的是类从加载到内存中,直到从内存中卸载的过程。加载(Loading)验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)使用(Using)卸载(Unloading)
2024-07-14 09:00:00
866
原创 Java [ 进阶 ] 深入理解 JVM
Java 虚拟机(JVM)是 Java 程序运行的核心,了解 JVM 的内部结构和垃圾回收机制对优化 Java 应用性能至关重要。本文将深入探讨 JVM 的结构和垃圾回收机制,并附上一些代码示例以帮助理解。JVM 是 Java 程序运行的核心,深入理解 JVM 的结构和垃圾回收机制有助于优化 Java 应用的性能。不同的垃圾收集器和算法各有优缺点,选择合适的垃圾收集器需要根据具体应用的需求进行权衡。JVM 的垃圾回收机制负责自动管理内存,回收不再使用的对象。
2024-07-08 10:00:00
830
lenyan算法笔记,日常更新自己的笔记而已
2024-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人