- 博客(108)
- 问答 (4)
- 收藏
- 关注
原创 Java:JavaAgent技术(java.instrument和java.attach)
本文详细介绍了Java Instrumentation机制,主要包括java.instrument和java.attach模块的核心架构、工作机制以及基于ASM的字节码操作实战。核心组件包括Agent代理、ClassFileTransformer转换器和Instrumentation实例。文章阐述了三种Agent启动方式:命令行启动、动态附加和可执行JAR内嵌,并对比了不同拦截时机(类加载前和类重定义)的能力边界。最后介绍了ASM框架的核心概念(ClassReader、ClassVisitor等)及其在字节
2025-12-23 15:55:27
312
原创 All In AI——DSPy框架,让智能体开发像模型训练一样
DSPy框架提供了一套简洁的API来构建AI系统,其开发流程分为编程、评估和优化三个阶段。核心思想是通过代码而非字符串来定义任务,使用签名(Signature)声明模块的输入输出行为,支持多种数据类型和自定义类型。内置模块如Predict和ChainOfThought可组合使用,通过优化器自动生成高质量提示或微调模型。该方法比传统提示工程更模块化、适应性强,能有效提升AI系统的开发效率和质量。
2025-12-13 14:35:48
957
原创 JVM 字节码指令活用手册(基于 Java 17 SE 规范)
JVM 字节码指令手册摘要 本手册基于Java SE 17规范,系统化讲解JVM字节码指令,适用于开发者、学习者及底层技术研究者。主要内容包括: 核心模型:JVM执行基于局部变量表、操作数栈和常量池的三元数据流模型 指令分类解析: 常量加载指令(如iconst、ldc等) 局部变量存取指令(如iload、astore等) 数组操作指令(如iaload、iastore等) 实用特性: 指令格式标准化说明(操作数、栈行为等) 典型应用场景与异常处理 优化设计(如单字节指令优化) 手册采用"从代码到字节
2025-12-08 10:51:12
771
原创 ASM七步曲之一:Core API——类
文章摘要: 本文详细介绍了Java编译后类的结构及其与源代码的区别。编译后的类保留了源代码的大部分结构信息,包括类修饰符、字段、方法和注解等,但不包含注释、包声明和导入节。主要差异体现在:1) 每个编译类对应一个类文件;2) 使用常量池存储常量;3) 类型表示方式不同,包括内部名称、类型描述符和方法描述符。文章还介绍了ASM框架中的ClassVisitor接口,该接口提供了一系列访问类结构的方法,并规定了这些方法的调用顺序。这些知识对于理解Java字节码和进行字节码操作具有重要意义。
2025-12-08 09:34:55
1036
原创 SSE字符串以及Flux<String>中文乱码问题
摘要:Spring Boot 3.2.5使用SSE发送中文字符串时出现乱码问题,原因是StringHttpMessageConverter默认编码非UTF-8。解决方案是继承WebMvcConfigurationSupport并重写extendMessageConverters方法,将StringHttpMessageConverter替换为UTF-8编码版本。但该方案在.http文件请求中仍存在乱码问题,尝试转换为ISO编码或使用WebMvcConfigurer均无效,必须添加@EnableWebMvc注
2025-12-03 15:15:04
238
原创 All In AI之三:一文构建Python核心语法体系
本文从执行模型和数据模型两个维度系统介绍了Python的核心机制。执行模型部分详细解析了代码块结构、名称绑定规则、命名空间作用域(LEGB原则)以及local/nonlocal/global关键字的用法。数据模型部分深入剖析了对象的三大特性(标识号、类型、值),阐述了基类object与元类type的关系,并重点介绍了抽象基类体系及其在数字类型、容器类型中的应用。全文基于官方文档,以清晰的逻辑和结构化的方式呈现Python语言设计精髓,为开发者提供全面而深入的语言底层认知框架。
2025-09-23 18:58:47
3350
原创 All in AI之二:一文构建机器学习数学体系
本文介绍了机器学习所需的数学基础,重点涵盖数与量、几何、函数和线性代数四大模块。数与量区分了标量与向量,强调向量具有大小和方向的双重属性。几何通过坐标系将抽象数学量可视化,阐述了单位向量和线性组合的几何意义。函数部分解析了标量函数与向量函数的区别及其空间表达,包括单变量/多变量函数和参数曲线的动态变化。线性代数则深入探讨向量空间、线性组合、线性相关性、基和维度的核心概念,并引入范数作为向量大小的量化工具。全文以直观几何解释配合严谨数学定义,为读者构建了机器学习所需的实用数学框架。
2025-09-09 18:18:04
1060
原创 All in AI之一:AI基本概念
本文介绍了AI模型的核心概念与应用技术,涵盖五大关键方向:1)AI模型的分类与功能,包括文本、图像、音频等输入输出形式;2)提示词工程的艺术性与技术性,强调模板化设计对输出质量的影响;3)嵌入技术的向量化表示,说明其在语义相似度计算中的作用;4)Token的基础计量单位特性,揭示其与费用计算和上下文窗口的关联;5)数据整合的三大技术路径(微调、提示词填充、工具调用),重点解析RAG技术通过ETL管道实现外部数据融合的机制。文章系统性地呈现了AI应用开发中的关键技术要素,为开发者提供了从理论到实践的完整认知框
2025-08-05 09:59:34
1075
原创 SpringAI:提示词工程
本文介绍了如何使用Spring AI实现高效提示工程技术,重点讲解了LLM配置和提示词技术实现。主要内容包括:1)LLM厂商选择和配置(如Anthropic Claude模型),通过ChatOptions调整temperature、maxTokens等参数控制输出特性;2)支持结构化输出映射到Java对象;3)零样本提示技术的实现示例,展示了电影评论情感分类案例。文章提供了完整的代码示例,帮助开发者将提示工程理论转化为可运行的Java实现。
2025-07-28 13:11:40
1151
原创 SpringAI:构建高效的智能代理系统
原文连接“Agent” 可以有多种定义。一些客户将 Agent 定义为完全自主的系统,能够独立运行较长时间,使用多种工具完成复杂任务。另一些客户则用该术语描述遵循预定义工作流程的指令式实现。工作流(Workflows):这类系统通过预定义的代码路径对 LLM 和工具进行编排(例如:指令式系统)Agent(智能体):这类系统由 LLM 动态驱动自身的流程和工具调用下面,我们将详细探讨这两类 agentic 系统。在 LLM 领域取得成功,不在于构建最复杂的系统,而在于构建最适合你需求的系统。
2025-07-28 11:31:14
1140
原创 站在 Java 程序员的角度如何学习和使用 AI?从 MVC 到智能体,范式变了!
本文探讨了Java开发者如何适应AI技术变革,分析了从传统MVC开发向AI Agent模式的范式转变。文章指出,LLM(大语言模型)作为预测性无状态系统存在输入限制、缺乏记忆等固有缺陷,而AI智能体通过三大核心技术解决了这些问题: Prompt工程 - 控制模型行为 RAG技术 - 动态注入外部知识(结合语义检索与关键词检索) MCP架构 - 赋予模型工具调用能力(API/DB/代码执行) 文章还展望了AI应用的未来方向:多模态输入(图像/语音/视频处理)和多智能体协作(任务分解与角色分工)。这种转变本质上
2025-07-03 13:30:08
1113
原创 分布式系统全链路监控之一:分布式全链路监控基础概念和OpenTelemetry
OpenTelemetry(OTel)是一个开源、厂商无关的可观测性框架,用于采集和导出追踪、指标和日志等遥测数据。它支持分布式系统监控,通过链路追踪(Traces)、指标(Metrics)和日志(Logs)等信号提供系统可观测性。OTel的核心概念包括上下文传播、信号关联以及结构化日志处理,帮助开发者理解系统行为并排查问题。其收集器(Collector)可统一处理多种数据源,自动关联日志与追踪信息,推荐使用结构化日志以提升分析效率。OTel已成为行业标准,被广泛集成于各类应用中。
2025-06-16 11:58:50
1482
原创 分布式系统全链路监控之二:Spring Actuator
Spring Boot Actuator 提供生产级监控和管理功能,通过HTTP或JMX接口实现。主要功能包括健康检查、指标收集和审计日志等。通过添加spring-boot-starter-actuator依赖即可启用。Actuator提供多种内置端点,如beans、env、metrics等,用于监控应用状态。端点访问权限可通过配置管理,默认仅开放health端点。敏感信息会自动脱敏处理,端点响应可缓存优化性能。还支持自定义端点扩展功能,满足特定监控需求。详情可参考Spring Boot官方文档。
2025-06-16 09:32:02
1144
原创 从操作系统到Java一文彻底搞懂Java并发和异步编程
在Java中,当我们启动`main()`函数时其实就是启动了一个JVM 进程,而 `main()` 函数所在的线程就是这个进程中的一个线程,也称主线程。Java线程如何实现并不受JVM规范的约束,它与具体的虚拟机实现相关。以HotSpot为例,它的每一个Java线程都是直接映射到一个操作系统原生线程来实现的。目前使用的两种主要线程库是:POSIX Pthreads、Windows API。Pthreads作为POSIX标准的扩展,可以提供用户级或内核级的库。Windows线程库是用于Windows操作系统的
2024-12-19 12:25:38
748
原创 Redis Stack十部曲之五:管理Redis
Redis 的安全模型依赖于可信的客户端和环境。其设计初衷是使 Redis 只被可信客户端访问,通常不应该直接暴露 Redis 实例到互联网或不受信任的环境中
2024-10-06 19:19:12
1670
原创 Redis Stack十部曲之四:与Redis数据之间的交互
你可以使用 Redis Stack 作为一个强大的搜索和查询引擎。它允许你创建索引,并对结构化数据进行高效的查询,还可以对非结构化数据进行基于文本和向量的搜索。
2024-10-06 13:56:06
1361
原创 MySQL十部曲之九:MySQL优化理论
在学习优化理论之前,应该先明白:下文提到的所有优化方法是指MySQL优化器在特定条件下对SQL的的优化,我们要做的仅仅是在编写SQL时尽量满足这些特定条件而尽量多的触发MySQL优化器对SQL的优化。此外,MySQL版本的差异和MySQL的不断发展都会导致优化方法和触发条件的变化,本文基于MySQL8以及InnoDB进行讨论。
2024-05-30 09:24:47
1791
原创 Redis十部曲之一:理解Redis中的数据类型
Redis的字符串存储字节序列,包括文本、序列化对象和二进制数组。因此,字符串是您可以与Redis键关联的最简单类型的值。它们通常用于缓存,但它们还支持额外的功能,使您能够实现计数器并执行位操作。
2024-04-03 11:08:16
1549
1
原创 操作系统——进程与线程
现代操作系统允许多个程序并发执行,为了更好地描述和控制程序的并发执行,从而引入了进程的概念。程序和进程的区别如下:- 程序:是静态的,是一个存放在磁盘里的可执行文件,是一个指令的集合。- 进程:是动态的,是程序的一次执行过程
2024-02-17 11:20:17
1125
原创 Docker五部曲之五:通过Docker和GitHub Action搭建个人CICD项目
通过Docker和GitHub Action搭建个人CICD项目
2024-01-18 17:52:32
2150
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅