- 博客(11)
- 收藏
- 关注
原创 MinerU 安装、配置与 HTTP 服务调用使用教程
Docker↓MinerU↓vLLM↓MinerU2.5↓OCR / 文档解析PDF / 图片↓HTTP↓MinerU↓↓RAG对于 RAG 项目来说,推荐将 MinerU 独立部署成一个文档解析服务。业务系统只负责通过 HTTP 上传文件、查询任务并获取解析结果,从而实现文档解析与 RAG 业务的解耦。
2026-08-24 13:52:40
227
原创 Spring AI 2.0 MCP
本文介绍了SpringAI中的MCP(ModelContextProtocol)协议及其实现。MCP是一套标准化协议,用于AI客户端发现、理解和调用外部工具,解决AI标准化接入外部工具的问题。文章对比了MCP与FunctionCalling的区别,阐述了MCP的核心组成(Tools、Resources、Prompts)和工作流程,重点讲解了如何通过@McpTool注解创建工具、Tool描述的重要性,以及STDIO和HTTP两种通信方式的配置差异和注意事项。此外,还涵盖了错误处理、面试常见问题等实用内容,帮助
2026-08-17 11:32:22
173
原创 RAGAS——如何评价RAG生成和检索质量
RAGAS(Retrieval Augmented Generation Assessment)是用于的框架。
2026-08-14 09:23:53
228
1
原创 volatile、CAS、AQS、ReentrantLock
摘要: Java中的synchronized和ReentrantLock均为单机锁,核心区别在于后者基于AQS(抽象队列同步器)实现,提供更灵活的并发控制。主要差异: 管理方式:synchronized是JVM关键字,自动释放锁;ReentrantLock需手动解锁,支持中断、超时、非阻塞尝试(tryLock)及公平/非公平模式。 AQS机制:通过state变量和CLH队列实现锁状态管理,支持多条件变量(Condition),实现线程精准唤醒(如生产者-消费者模型)。 锁升级:synchronized有无锁
2026-06-29 12:37:43
237
原创 LORA微调Qwen2.5-0.5B-Instruct大模型
本文以阿里巴巴开源的 Qwen2.5-0.5B-Instruct 为基础模型,手把手演示如何使用 LoRA(Low-Rank Adaptation)完成一次完整的大模型微调实验,将模型的回答风格调整为专业、礼貌的客服话术。文章首先从原理层面介绍 LoRA 的核心思想——冻结原模型权重,仅训练两个低秩旁路矩阵,使可训练参数量降至原模型的约 0.1%,从而大幅降低显存与算力开销。随后按照"环境准备、数据构造、模型加载、LoRA 配置、数据预处理、训练启动、推理验证"的完整链路逐段讲解代码,重点剖析 `r`、`l
2026-05-20 09:06:09
424
原创 Canal在windows下的安装和监听初体验
本文介绍了使用Canal监听MySQL数据库变更的完整流程。首先在MySQL创建具有最小权限的子账号并开启binlog日志;然后下载配置Canal服务端,包括主库连接信息和账号配置;最后通过Java客户端代码实现数据库变更监听功能,包括依赖引入和监听逻辑实现。整个过程涵盖了从数据库配置到客户端开发的完整链路,最终通过插入测试数据验证了监听功能的有效性。
2026-03-30 14:45:47
379
原创 线程基础、CompletableFuture基础(自用)
摘要:本文详细介绍了Java中创建线程的多种方法,包括继承Thread类、实现Runnable接口、使用Lambda表达式、Callable+FutureTask模式以及线程池和CompletableFuture等高级用法。重点解析了CompletableFuture的各种API,如runAsync/supplyAsync异步任务执行、whenComplete结果处理、thenApply结果转换、applyToEither竞速获取结果、thenCombine合并结果等特性。通过代码示例展示了不同线程创建方式
2025-06-24 22:35:50
622
原创 最新SpringAI接入官方DeepSeek(超简单,5分钟完成搭建)
本文介绍了使用DeepSeek API调用大模型的步骤:1)注册DeepSeek账号并获取API Key;2)创建SpringBoot项目,配置OpenAI参数;3)创建客户端调用API接口;4)编写Controller接收用户输入并返回AI响应。整个过程包括API认证、项目搭建、接口配置和使用示例,开发者可通过简单配置快速集成AI对话功能。测试时需确保JDK版本符合要求。
2025-06-17 21:00:41
452
原创 synchronized底层原理(面试自用,逐步完善)
线程进入同步代码块,对象会关联Monitro尝试获取锁,退出代码块的时候,会释放锁。值得注意的是,在代码块出现了exceptin也会把锁释放(反编译后可知)。每一个Java对象都会与一个监视器锁进行关联,基于此实现了synchronized的同步操作。两个线程对一个对象进行加锁,但是访问时间是错开的,那么根本没有锁的竞争。3.Wait Set: (暂时未学习wait机制,待补充)2.Entry Set: 等待获取锁的阻塞队列线程。1. Owner: 持有锁的线程。在JDK6后,引入了锁的升级机制。
2025-03-10 13:39:19
1275
原创 线程八锁(自用面试题)
个人分析:a()和b()锁住的都是Demo06.class。a()和b()占用同一把锁(demo实例)的分析是对的。分析一下调用逻辑:调用了a().此时a()方法占用锁,此时去调用b().b也会尝试获取锁,但是由于b没有完成逻辑。调用了同一对象的a,b成员方法,由于锁住的是同一个对象。分析:由于a,b都是静态方法,那么他们所著的应该是Demo04.class。分析:a()和b()上的锁不是同一个。个人分析: 可以看到方法a,b都被上锁了,同一把锁(demo实例)。个人分析: a和b都是同步方法。
2025-03-09 12:55:53
645
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅