自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 Vue3+TypeScript情境下父子组件传值

vue3+ts情境下 不同组件互相传递参数

2025-02-26 20:12:43 394

空空如也

空空如也

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

TA关注的人

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