- 博客(74)
- 资源 (2)
- 收藏
- 关注
原创 Reactor Sinks 全面解析:它解决了什么问题,为什么 WebFlux 项目离不开它
Sinks是Reactor中用于主动推送数据的信号源,可以将外部回调式数据接入响应式流。它分为三种类型: Sinks.One:发射单次结果,封装为Mono,适用于异步回调场景 Sinks.Many:支持多次发射,分为三种模式: unicast(单订阅者) multicast(多订阅者广播,不回溯历史) replay(多订阅者带历史回溯) Sinks.Empty:仅发射终止信号 典型应用场景包括WebSocket推送、扫码登录通知等。使用时需注意: 通过tryEmitXxx/emitXxx方法推送数据 多线程
2025-12-26 00:21:42
725
原创 SpringAI和 Langchain4j等 AI 框架之间的差异和开发经验
本文对比了四种AI应用开发框架:Spring AI、Spring AI Alibaba、LangChain4j和LangGraph。Spring AI由Spring官方维护,提供统一的AI接入抽象;Spring AI Alibaba是其国内增强版,优化了本地模型支持。LangChain4j是Java版LangChain,专注复杂LLM应用编排;LangGraph在此基础上提供图式工作流编排能力。文章从项目定位、编程模型、厂商支持和使用场景等维度进行详细对比,为开发者提供选型参考。
2025-12-18 22:07:13
1045
原创 Spring AI Alibaba + Ollama 实战:基于本地 Qwen3 的 Spring Boot 大模型应用
,以本地 Ollama 的 Qwen3 模型为核心,构建对话、记忆、RAG、工具调用及 Graph 工作流等能力。通过统一的 ChatModel / ChatClient 抽象,既能在开发阶段本地调试,又能在未来平滑切换到阿里云 DashScope。文中给出了依赖配置、application.yaml 示例、核心 Controller 与配置类代码,并通过 spring-ai-alibaba-graph-core 展示顺序与多条件分支的有状态流程图,帮助 Spring 开发者快速落地大模型应用。
2025-12-15 00:01:17
1188
原创 MapStruct 企业级应用实战:复杂对象图映射、循环引用处理与模块化配置
MapStruct 是基于 Java 注解处理器的编译时代码生成框架,用于简化对象映射转换。通过编译期生成类型安全的映射代码,性能接近手写代码,远超反射方案。本文全面解析其核心原理、技术优势与实战应用,涵盖基础映射、高级技术、最佳实践等内容,结合实际案例为开发者提供完整的学习指南。
2025-12-13 16:40:54
1016
原创 Spring AI 深度实践:在 Java 项目中统一 Chat、RAG、Tools 与 MCP 能力
本文介绍了基于Spring AI的多模块示例项目java-ai,重点展示了spring_ai_demo子项目的实战应用。项目通过Spring AI实现了大模型集成,提供统一API抽象,支持配置驱动开发。主要内容包括:1) 基础对话功能实现,对比ChatModel与ChatClient+Advisor两种方式;2) 基于PostgreSQL+pgvector的RAG检索增强;3) 工具函数调用能力;4) MCP协议实现工具能力解耦。文章详细分析了Spring AI的优势(官方维护、供应商无关、编程简单)与不足
2025-12-10 23:20:54
1242
原创 Rust MCP:构建智能上下文协议的未来桥梁
本文介绍了Rust MCP项目,这是一个基于Model Context Protocol(MCP)协议的Rust实现,为AI模型提供结构化上下文交互能力。文章详细解析了MCP三大核心组件:Tools(提供外部执行能力)、Prompt(控制模型行为)和Resources(数据资源访问),并阐述了它们协同工作的流程。通过计数器服务器案例,展示了如何使用Rust MCP框架构建工具服务器,重点介绍了#[tool_router]和#[tool_handler]宏如何简化工具路由和请求处理。该技术栈结合了Rust的类
2025-09-25 00:16:53
1315
原创 告别手写文档:Schemars 如何让 Rust 代码自我描述
Schemars 是 Rust 生态中一颗冉冉升起的新星,它巧妙地架起了数据结构与 JSON Schema 之间的桥梁。通过简单的 derive 宏,开发者能让 Rust 代码自动生成精确的 JSON Schema,彻底告别繁琐的手动文档编写。本文深入探索 Schemars 的核心功能,展示其与 Serde 的无缝集成、强大的验证规则支持和灵活的自定义选项。
2025-09-21 20:02:58
691
原创 rdKafka驾驭手册:从青铜到王者的异步消息屠龙术
Rust Kafka客户端库rdkafka使用指南 本文介绍了基于librdkafka的Rust客户端库rdkafka的使用方法。主要内容包括:安装配置(需C依赖和系统工具链)、基本概念(生产者/消费者/分区等核心组件)、生产者操作(同步/异步消息发送、批量处理、消息头)、消费者实现、管理员功能以及高级特性。文档提供了详细的代码示例,涵盖从基础连接到高级消息处理的全流程,并包含错误处理和性能优化建议,帮助开发者快速构建高效的Kafka应用。
2025-09-11 22:26:12
837
原创 Rust 日志库完全指南:从入门到精通
本文介绍了Rust生态中几种主流日志库的特点与使用场景。核心日志门面log提供统一API,需配合其他实现使用;env_logger通过环境变量配置,适合命令行工具;pretty_env_logger提供彩色美化输出,适合开发调试;功能强大的flexi_logger支持文件与控制台输出,适合生产环境。各库在日志级别控制、输出格式和适用场景上各有侧重,开发者可根据项目需求选择。文中包含代码示例展示基础用法,更多细节可参考GitHub仓库rust-study。
2025-09-07 12:11:29
1442
原创 Rust 序列化技术全解析:从基础到实战
Rust学习项目GitHub仓库提供全面的Rust学习资源,涵盖基础语法到高级特性,包括Serde序列化框架及其JSON、TOML、INI等格式处理。Serde是Rust生态中高效的序列化/反序列化工具,支持多种数据格式,性能优异但学习曲线较陡。JSON作为通用交换格式易读但体积大,TOML适合配置文件支持丰富数据类型,INI格式简单但功能有限。项目包含实用代码示例,适合不同水平的Rust开发者学习实践。
2025-09-03 10:48:21
1207
原创 Rust解析器组合库Winnow:轻松构建高效文本解析器
Winnow是一个高效的Rust解析器组合库,提供模块化工具构建文本/二进制数据解析器。其核心模块包括: Token模块:提供基础解析函数如any、literal、take等; Combinator模块:通过seq、alt、opt等组合器构建复杂解析逻辑; ASCII模块:专门处理ASCII字符。Winnow采用"从头匹配"原则,支持三步使用流程:添加依赖→构建解析器→运行解析器。该库设计简洁高效,适合处理配置文件、自定义格式等场景,是Rust生态中强大的文本处理工具。相关学习资源可参考
2025-09-02 14:08:44
1101
原创 极速上手:Windows环境下Rust安装全攻略
随着对软件安全性需求的不断增加,Rust 正逐渐成为系统编程领域的首选语言之一。尤其是在需要兼顾性能和安全性的场景下,Rust 展现出了巨大的潜力。无论是传统的系统开发还是新兴的区块链、AI 领域,Rust 都有广阔的应用前景。
2025-04-24 11:12:14
3601
原创 【实战指南】SpringBoot结合Zookeeper/Nacos构建Dubbo微服务
Nacos整合Dubbo能够提供动态服务发现、配置管理和服务治理,简化了微服务间的通信和管理,提升了开发效率和系统可维护性。而Zookeeper与Dubbo结合,利用其分布式协调服务特性,保证了服务注册与发现的高可用性和一致性,增强了系统的稳定性和故障恢复能力。两者皆为Dubbo生态提供了强大的支撑,促进了分布式系统的健壮性和灵活性。
2024-06-19 23:45:46
2379
原创 从零到一,构建坚如磐石的Redis 7高可用集群:全程实录与关键技术详解
使用Docker搭建Redis集群是一种快速便捷的部署方案,通过容器化技术实现多个Redis实例间的协同工作。首先安装并配置Docker环境,接着拉取官方Redis镜像,利用Docker网络创建自定义网络以保证节点间通信。然后,分别运行Redis容器,并在启动时指定不同的端口、配置文件以及数据卷挂载点,确保每个Redis实例独立运行且持久化存储。最后,利用Redis自带的集群管理命令或脚本将各个实例组织成一个集群,通过槽分区(slot sharding)机制分配数据,并设置主从复制和哨兵模式以实现高可用性和
2024-03-09 20:44:59
1960
原创 Redis 7.0版本主从复制机制
Redis 7.0版本的主从复制是一种高可用和数据分发策略,通过配置主节点(Master)和从节点(Slave),主节点将写操作同步至从节点,实现数据备份与冗余。从节点可用于读请求分摊、故障恢复或搭建更复杂的Sentinel集群和Cluster架构,确保数据一致性与服务可靠性。在7.0版本中,主从复制依旧支持部分重同步优化,提高了大规模部署下的性能和稳定性。
2024-03-05 23:03:33
1677
1
原创 Redis7 实现持久化的三种方式
Redis提供了三种持久化方式,分别是RDB(Redis DataBase)持久化、AOF(Append Only File)持久化和混合持久化。RDB持久化:RDB持久化生成的快照文件是一个紧凑压缩的二进制文件,占用空间较小,适用于备份和全量复制等场景。同时,由于快照文件是完整的数据备份,因此恢复速度较快。但是,RDB持久化可能存在数据丢失的风险,因为它只保存了某个时间点的数据快照,无法记录数据的变化过程。
2024-03-03 17:35:52
1466
原创 万字讲解新一代分布式任务调度框架Power-job
PowerJob是一个功能强大的分布式任务调度平台,用于构建数据驱动的应用程序。它提供了简单易用的API和可视化的界面,让用户能够轻松地创建、管理和调度任务。本文通过近两万字带你实现PowerJob下载、使用、部署三方面的内容,内容详细、案例简单。
2024-01-18 22:31:48
6207
原创 Windows安装Docker运行中间件(详细)
Docker彻底改变了应用部署的方式,使得应用更加容易地迁移和扩展。通过Docker,我们可以轻松地创建、部署和运行应用程序,而无需担心环境配置和依赖问题。其次,Docker提高了开发效率。
2024-01-09 00:33:02
2445
原创 ShardingSphere数据分片之读写分离
读写分离是一种常见的数据库架构,它将数据库分为主从库,一个主库(Master)用于写数据,多个从库(Slave)进行轮询读取数据的过程。主从库之间通过某种通讯机制进行数据的同步。
2023-12-14 13:30:39
2979
2
原创 Mysql8.0实现主从复制
数据库的主从复制(master-slave replication)是一种数据复制技术,其中一台数据库服务器(主服务器)上的数据变更会复制到另一台或多台数据库服务器(从服务器)上。这种复制可以是同步的或异步的。
2023-12-10 16:30:25
2514
3
原创 ShardingSphere数据分片之分表操作
使用ShardingSphere进行分库分表是一种常见的数据库优化方案,旨在提高数据库的性能和可扩展性。它允许用户将一个数据库拆分成多个数据库,并将一个表拆分成多个表,以分布存储数据。通过ShardingSphere,用户可以更加灵活地管理数据,并实现对数据库的高效访问和控制。然而,使用ShardingSphere进行分库分表也需要考虑一些挑战,如配置复杂、维护困难以及可能的功能限制等。因此,在使用ShardingSphere进行分库分表时,需要仔细评估其适用性和成本效益。
2023-12-08 23:46:35
2755
3
原创 继承JsonSerializer+注解实现自定义数据脱敏方案
数据脱敏是一种重要的数据处理技术,可以保护隐私和数据安全,提高数据处理效率和安全性,同时满足法律法规和合规要求。
2023-11-27 20:17:04
1863
原创 分布式权限认证-Sa-token,So Easy!
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。
2023-11-26 23:23:09
3435
1
原创 SpringBoot结合Druid实现SQL监控
Druid是一个数据库连接池,具有高效、功能强大、可扩展性好的特点。与DBCP相比,Druid在功能、性能、扩展性方面都更优秀。Druid包括三个部分:基于Filter-Chain模式的插件体系、高效可管理的数据库连接池以及SQLParser。Druid内置了一个功能强大的StatFilter插件可以监控数据库访问性能,清楚知道连接池和SQL的工作情况。
2023-10-19 23:29:22
1908
4
原创 Gateway网关动态路由配置(YAML格式 + JSON格式)
在我们开发微服务系统时,Gateway是必不可少的一个组件,我们可以通过Gateway来转发用户进行的请求,这样就可以隐藏具体系统的信息。YAMLroutes其中第二种和第三种都可以结合Nacos实现动态路由,主要看开发者怎么选择。第二种就是结合Nacos的配置中心,将routes参数下的数据放入到nacos中,我这里使用第三种进行展示,用JSON的格式配置路由信息。
2023-09-23 16:02:59
5773
原创 Sentinel结合Nacos实现配置持久化(全面)
在分布式微服务的开发中,Gateway是必不可少的组件,那么对于服务的配置也会集成到Gateway中,但是我们不能把配置放在内存中,此时就需要结合nacos配置中心来实现配置的持久化了。
2023-09-22 21:21:55
11195
5
原创 前端:地图篇(一)
百度地图带来的便利是毋庸置疑的。首先,当我们想去某个目的地,但又对附近不熟悉时,导航功能强大。其次,百度地图可以规划最优路线,为我们的出行节省最多的时间。其三,当我们需求某样东西,但没有目的地时,百度地图可以自动匹配周边环境符合我们的需要。最后,安全系数增加。道路各种限制,限速,红绿灯指示,各种施工道路提醒等等。
2023-08-03 22:28:35
6449
3
原创 利用Clion编译器完成C++的头文件与源文件的映射
Java 是基于C/C++编写的,那么Java结合C/C++开发,是否会提升Java程序的性能呢?让我们一起行动起来吧。
2022-12-21 19:15:44
6073
3
原创 SpringBoot很实用的请求过滤器 - FilterRegistrationBean
在日常的开发中,我们的项目可能会被各种各样的客户端进行访问,那么,一些带有意图的朋友,就会利用自己所学的技术进行有目的的访问,那么我们的服务端就不再安全和可靠。
2022-10-08 23:56:56
19176
原创 MyBatis-plus实现逆向生成器
使用Mybatis-plus提供的逆向生成器,能让我们在开发中大大的节约建包建类的重复操作,本文详细的介绍了逆向生成器的创建与使用。
2022-08-17 11:34:33
6301
12
原创 Spring Boot配置多数据源的四种方式
在日常的项目中我们的开发都是采用单数据库的模式,但是在高并发的时代,单数据库已经无法承载大数据量的访问,所以就需要使用多个数据库进行对数据的读写分离。
2022-08-14 15:05:26
36324
40
原创 SpringBoot提供的缓存机制
Spring为我们提供了几个注解来支持Spring Cache。其核心主要是@Cacheable和@CacheEvict。
2022-07-03 21:39:22
1930
原创 SpringMVC实现拦截器的两种方式(详细)
本文介绍了SpringMVC中的两种过滤器的使用,分别是HandlerInterceptor和WebRequestInterceptor,详细的介绍了如何使用这两种过滤器。
2022-05-12 22:05:56
10458
1
原创 MySQL随机读取指定大小的数据量
学校里面常见的答题系统中,在题库中进行随机选择题目的时候,使用SQL的效率会比使用Java代码进行过滤来得更快,本段SQL执行的效率完全能应付百万的数据量
2022-04-17 20:10:20
1699
1
链表+泛型+反射实现自定义的LinkedList集合类
2021-09-11
贪吃蛇小游戏(IDEA修正2.0版本)
2021-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅