自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Chrome DevTools MCP:让 AI Agent 拥有“眼睛“的三大实战用法

Chrome DevTools MCP 是 Google 官方提供的 MCP Server,能让 AI Agent 直接操控浏览器。本文介绍三大实战场景:页面布局自动调优、竞品 API 分析、前端 Bug 排查,帮助前后端和产品经理大幅提效。

2026-03-24 19:58:04 368

原创 Prompt 工程实战:五要素框架与 Spring AI 模板化落地

Prompt 决定模型能力上限——不是模型不行,是你的指令不够精确。五要素框架(角色、任务、约束、格式、示例)——把"凭感觉"变成可复制的工程方法。Spring AI 提供了从硬编码到外部模板文件的完整工具链——让 Prompt 管理融入正常的软件工程流程。DIAGRAM: 总结脑图——中心"Prompt 工程",分支出"五要素"、"Spring AI 模板化"、"常见踩坑"三大块,五要素再细分为角色/任务/约束/格式/示例。

2026-03-16 14:06:54 349

原创 Spring AI 生产避坑指南与 RAG 内存向量库实战

Component@Overridelog.info("[AI调用] 用户消息: {}", userMessage);log.info("[AI调用] 模型回复({}ms): {}", elapsed,@Override// 最先执行,覆盖完整链路耗时生产避坑Token 成本→ 精简 Prompt + 限制历史 + 用量监控 AdvisorKey 泄露→ 环境变量 / .gitignore / 配置中心并发限流。

2026-03-16 14:06:07 379

原创 Spring AI 多模型切换与异步并发:一套代码支撑多厂商 + CompletableFuture 并行调用

app:ai:providers:deepseek:qianwen:@Component// getter / setter 省略// getter / setter 省略@Service// 读取该 provider 的自定义配置// 如果配置了自定义参数,覆盖默认 optionsif (config!想全局切换默认模型?。能力方案关键技术多模型共存排除自动配置 + 手动注册 Bean动态路由。

2026-03-16 14:05:05 435

原创 Spring AI Alibaba 多模态全家桶:图片理解、图片生成与语音合成实战

实际业务中通常需要指定图片尺寸和生成数量,通过.withN(count) // 生成几张.withWidth(width) // 宽度.withHeight(height) // 高度.build()));DIAGRAM: 图片生成调用时序图——客户端 → Controller → ImageModel.call() → DashScope 提交任务 → 轮询状态 → 返回图片 URL能力核心类模型关键配置图片理解ChatClientMedia必须开启图片生成ImageModel。

2026-03-16 14:04:02 431

原创 谷歌TPU能否挑战英伟达GPU的垄断地位?从架构到供应链的全面拆解

从架构、软件生态、供应链、成本四个维度,拆解谷歌TPU和英伟达GPU的核心差异,分析TPU能否打破GPU的垄断地位。

2026-03-14 11:46:02 478

原创 Spark Job 调度机制拆解:从 Action 算子到 Task 执行

简单说,Spark 的 Job 调度就是框架底层根据 RDD 的逻辑链条,划分 Stage → 生成 Task → 提交执行的整个过程。

2026-03-14 10:22:42 245

原创 Spring AI Prompt 工程与结构化输出实战

JsonPropertyDescription("文章标题,如果没有则根据内容生成")@JsonPropertyDescription("文章类型:NEWS/OPINION/TUTORIAL/RESEARCH/OTHER")@JsonPropertyDescription("100字以内的摘要")@JsonPropertyDescription("关键词列表,最多5个")@JsonPropertyDescription("文章的主要观点,最多3条")

2026-03-09 11:15:34 360

原创 Spring AI Advisor 拦截器体系:从日志到限流到安全审查

内置的功能有限,实际项目中我们通常需要更精细的日志:记录用户原始消息、模型回复内容、调用耗时。这就需要自定义 Advisor。顺序Advisororder 建议职责说明1日志/链路追踪记录请求、计时、traceId 传递最外层,覆盖完整链路2认证鉴权1校验用户身份和权限未认证直接拒绝3内容安全5输入/输出内容审查敏感内容不消耗后续资源4限流10按用户/租户控制调用频率保护模型 API 配额5对话记忆100注入历史消息、保存新消息。

2026-03-09 11:14:22 347

原创 Spring AI 实战:ChatMemory、SSE 流式输出与 Function Calling

能力解决的问题核心 APIChatMemory多轮对话记忆SSE 流式输出长回答的用户体验返回AI 调用外部系统@Tool@ToolParam.tools()ChatMemory 从内存开始,再升级 Redis。开发调试用内存版就够了,上生产再换 Redis 实现,代码改动极小。流式输出是标配。只要涉及面向用户的对话界面,一定用流式,体验差距是质变级别的。Function Calling 的 description 要花心思写。

2026-03-09 11:13:21 465

原创 Spring AI 入门与 ChatClient 全面解读

维度ChatModelChatClient抽象层级底层接口高层封装调用风格手动构建 Prompt,手动解析 Response链式 Fluent API代码量多(3-5 行起步)少(一行链式搞定)内置功能无支持 Advisor、Memory、结构化输出等适用场景需要精细控制底层行为日常开发首选实际建议:除非有非常特殊的底层控制需求,否则一律用ChatClient。它就像和WebClient的关系——能用高层 API 就别用低层的。模式关键 API一句话总结基础对话。

2026-03-09 11:11:50 437

原创 大模型基础认知:Token、Temperature、RAG 一文搞懂

目前落地最成熟的方向RAG:知识库问答、企业搜索,需求大,Java 生态成熟:AI 调用外部系统,Java 后端最擅长结构化输出:AI 结果直接接入业务流程正在快速成熟的- Agent 工作流:自动化复杂任务- 多模态:图文混合输入输出还在探索期,不急- 完全自主的 AGI Agent- 端侧大模型大规模商用我的看法:不用追最新的概念,先把最有落地价值的东西吃透。

2026-03-09 09:47:41 754

原创 数仓 + Claude Code Skill 的方式实现统计分析 Agent 化

本文提出了一种基于自然语言处理的统计分析Agent化方案,通过Claude Code Skill实现评测项目指标的自动化查询。

2026-02-26 20:29:03 613

原创 Agent Skills 全面解析 概念拆解、安装使用、制作实践与常见误区

Agent Skills 全面解析 本文系统介绍了当前AI领域热门的Agent Skills技术

2026-02-25 20:51:10 560

原创 Java 程序员的 Go 速成指南

面向对象复杂但功能全企业级框架(Spring)简单实用组合优于继承并发是一等公民“少即是多”何时用 Go?✅ 微服务✅ 云原生应用✅ 高并发服务✅ CLI 工具✅ DevOps 工具何时用 Java?✅ 企业级应用✅ 复杂业务逻辑✅ 已有 Java 生态祝你快速掌握 Go!有 Java 基础,你会学得很快!🚀。

2025-10-23 17:26:26 459

原创 数仓实战 - 事实表设计的最佳实践

本文系统介绍了数据仓库中事实表的设计方法与实践。首先阐述了事实表的核心概念,指出事实表围绕业务过程设计,粒度可细分为维度属性组合和业务含义两种表述方式。随后详细讲解了事实表设计的六个步骤:业务过程识别、粒度确定、维度识别、度量选择、表结构设计和命名规范。重点分析了三种常见事实表类型:事务事实表记录原子事务数据,周期快照事实表存储定期汇总信息,累积快照事实表追踪完整生命周期过程。最后介绍了聚集事实表的设计过程、原则和案例,强调其作为派生指标集合的作用。全文通过示意图和案例,完整呈现了事实表从理论到实践的设计体

2025-08-27 23:37:22 490

原创 数仓实战 - 维度表设计的最佳实践

维度表是数据仓库的核心组件,用于存储业务过程的描述性信息。其核心特征包括:描述性、宽表结构、较少数据行,并作为查询入口。维度属性是维度表的列,用于过滤、分组和标记数据。获取维度需通过与业务人员沟通、分析现有报表等方式。设计最佳实践包括使用代理键、丰富属性、一致性维度和反规范化。维度表设计步骤包括选择维度、确定主维表、关联维表及属性选取。注意区分数值型属性和事实,并沉淀通用属性。维度的层次结构需合理设计以支持多级分析。

2025-08-27 21:34:30 1403

原创 从罗永浩访谈李想中学习现代家庭教育智慧

从罗永浩访谈李想中学习现代家庭教育智慧

2025-08-23 22:51:57 995

原创 Redis是什么?架构是怎么样的?讲清楚Redis的由来!!!

本文探讨了如何通过缓存机制解决高并发查询场景下MySQL性能不足的问题。文章从本地缓存方案入手,逐步演进出远程缓存服务的设计思路,最终引出Redis的完整架构。Redis作为远程字典服务,通过内存存储、多种数据结构支持、LRU淘汰策略和RDB/AOF持久化机制,有效缓解数据库压力。文章还介绍了Redis的扩展插件生态,展示其作为"万金油"中间件的多样性应用场景。整个演进过程清晰展示了从简单缓存到成熟中间件的技术发展路径,为解决高并发查询提供了系统性的解决方案。

2025-08-23 22:32:49 974

原创 Java泛型深度解析:从基础语法到高级应用

Java泛型(Generics)是Java SE 5.0引入的一个重要特性,它提供了编译时的类型安全检查,消除了强制类型转换,让代码更加清晰和安全。本文将从基础概念出发,深入探讨泛型的原理、应用和最佳实践。

2025-08-22 14:43:15 503

原创 Flink Stream API - 用户函数Operator类AbstractUdfStreamOperator源码超详细讲解

本文深入解析了 Flink 流处理中的 `AbstractUdfStreamOperator` 类,这是一个承上启下的重要抽象类。它继承自 `AbstractStreamOperator`,专门用于处理包含用户自定义函数(UDF)的算子。

2025-08-22 11:56:53 636

原创 从源码中学习Java面向对象的多态

本文将通过分析Apache Flink源码中的多态机制,带您深入理解多态在大型框架中的**实战运用**,从调用链路、设计模式到架构思维,全方位掌握多态的精髓。

2025-08-21 20:50:31 789

原创 Flink Stream API - 核心Operator类AbstractStreamOperator源码超详细讲解

本文深入解析Flink中AbstractStreamOperator这个基础抽象类,它是所有流式算子实现的基础。通过本文,你将了解:AbstractStreamOperator的继承体系和接口实现状态管理的双套方法机制算子的完整生命周期核心方法的实现原理

2025-08-21 17:33:29 670

原创 Flink Stream API - 顶层Operator接口StreamOperator源码超详细讲解

这个就是那些算子的一个最顶层的接口,虽然它是一个最顶层接口,那也是站在算子这个体系的角度来看。其实这个接口本身也继承了一些其他的接口。

2025-08-20 23:07:57 1570

原创 数据治理前言:从痛点到实践的真实之路

作为一名数据开发,我经常收到这样的告警信息:"存储水位线告警"、"任务运行超时"、"数据质量异常"。面对这些问题,很多同学的第一反应是:加资源、重跑任务、手工修数据。但这些临时方案治标不治本,真正的问题在于缺乏系统性的数据治理。

2025-08-20 10:29:16 1627

原创 彻底讲清楚Java多态是什么

多态(Polymorphism)是面向对象编程的三大特性之一,它允许同一个接口表现出不同的行为。在Java中,多态意味着一个引用变量可以指向不同类型的对象,并且在运行时根据实际对象类型调用相应的方法。简单来说:同一个方法调用,在不同对象上会产生不同的行为。

2025-08-19 19:26:22 420

原创 Flink Stream API - 源码二开详细实现

这是一个基于 Apache Flink 的动态表达式处理系统,支持实时数据流处理和表达式热更新。系统采用操作符-协调器架构模式,实现了分布式环境下的表达式管理和数据处理。该系统现已完成完整的双操作符实现,包含表达式管理和计算执行的完整流程。

2025-08-19 18:55:41 1074

原创 Flink Stream API - 源码开发需求描述

本文介绍如何基于Flink源码进行二次开发,实现一个动态规则引擎系统。通过自定义算子和算子协调器,实现数据流的动态规则计算和协调管理。以此更好理解前面介绍的源码相关文章

2025-08-18 11:45:02 715

原创 Java HashMap深度解析:原理、实现与最佳实践

HashMap是Java中最常用的数据结构之一,它基于哈希表实现,提供了高效的键值对存储和检索功能。本文将深入分析HashMap的内部原理、实现机制、性能特点以及在实际开发中的最佳实践。

2025-08-17 13:50:07 1041

原创 从源码中学习Java面向对象中继承、接口、抽象的设计

Apache Flink作为世界级的流处理框架,其源码设计堪称面向对象设计的经典范例。本文通过深入分析Flink的核心设计,揭示继承、接口、抽象类在大型项目中的最佳实践,帮助开发者理解如何在实际项目中应用面向对象的设计原则。

2025-08-17 13:30:46 1032

原创 Java面向对象核心:继承、接口与抽象类详解

继承、接口和抽象类是Java面向对象编程的三大核心概念。理解它们的区别和使用场景,对于设计良好的软件架构至关重要。本文将通过实际示例,深入解析这三个概念的特点、使用方法和最佳实践。

2025-08-17 13:17:48 1163

原创 Flink Stream API核心概念继承体系

Flink的架构设计基于清晰的继承体系,每个核心抽象都有其完整的类层次结构。本文档将深入分析DataStream、Function、Transformation和StreamOperator四大核心抽象的继承关系,结合源码理解其设计理念和实现机制。

2025-08-17 12:30:19 1140

原创 Flink Stream API 源码走读 - 总结

Flink流处理核心流程解析 本文深入分析了Flink流处理API从数据源到窗口操作的核心处理流程。对之前的内容进行总结

2025-08-16 23:13:26 1547

原创 Flink Stream API 源码走读 - print()

本文深入分析了 Flink 中 print() 方法的源码实现,展示了 Sink 操作的完整流程,并通过调试验证了整个 Transformation 链条的构建过程。这是 Flink Stream API 系列课程的重要一环,帮助我们理解流处理 Pipeline 的终端操作机制。

2025-08-16 17:12:55 908

原创 Flink 源码系列 - 前言

本文介绍了Flink源码学习系列的前言,规划。

2025-08-16 13:50:44 2070

原创 Flink Stream API 源码走读 - window 和 sum

WindowedStream 本质是 Flink 中一个轻量的、包含窗口配置的逻辑视图,依赖于上游 KeyedStream 而存在。通过 window()方法创建时,它仅记录上游引用和窗口定义,​并未实例化实际计算算子。其必须通过聚合操作(如 sum(), reduce(), aggregate())才能触发真实计算并回归 DataStream 流程。例如 sum()内部使用预定义的 SumAggregator(基于 ReduceFunction),经过重载最终调用 transform()方法在此时才创建

2025-08-16 12:18:41 1088

原创 Java 泛型类型擦除

Java泛型擦除与TypeInformation解决方案 本文探讨了Flink如何处理Java类型擦除问题。由于Java泛型在编译后会擦除类型信息,导致运行时无法获取数据类型,影响序列化、类型检查和性能优化。Flink通过TypeInformation机制提供显式类型信息,其核心方法getTypeInfo采用多级推断策略:1)优先用户指定类型;2)查询ResultTypeQueryable接口;3)反射分析泛型;4)创建兜底类型。代码示例展示了类型擦除问题及Flink的解决方案

2025-08-15 17:12:54 666

原创 Flink Stream API 源码走读 - keyBy

本文深入分析Flink中keyBy()方法的源码实现,揭示其与map/flatMap等物理转换的本质区别。keyBy不会创建物理算子,而是构造一个包含KeySelector的KeyedStream,并生成虚拟的PartitionTransformation。虚拟转换仅指定数据分发规则,不包含实际计算逻辑,由KeyGroupStreamPartitioner在执行时根据KeySelector实现数据分区。这种设计避免了不必要的算子开销,直接在数据传输过程中完成数据重分布。

2025-08-15 10:52:25 989

原创 Flink Stream API 源码走读 - map 和 flatMap

本文深入剖析了 Flink 中 map() 和 flatMap() 方法的源码实现,揭示了从用户函数到算子转换的完整流程。核心内容包含:1)DataStream 的核心结构,每个 DataStream 都包含一个 Transformation 并形成链条;2)map() 方法通过类型抽取、算子封装、转换构造等步骤,将 MapFunction 转换为 StreamMap 算子并最终生成新的 DataStream;3)详细解析了 OneInputTransformation 结构及其在转换链中的作用;4)对比了

2025-08-15 09:52:12 1206

原创 Flink Stream API 源码走读 - socketTextStream

本文深入分析了 Flink 中 方法的源码实现,从用户API调用到最终返回 的完整流程。

2025-08-14 21:37:27 1426

空空如也

空空如也

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

TA关注的人

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