自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RocketMQ封装通用消息队列生产者

封装的RocketMQ通用生产者高扩展性:面向接口编程,切换MQ中间件只需新增适配器;生产可用:包含幂等、日志、异常处理、事务消息、事务回查等企业级能力;使用简单:业务层零感知底层细节,一行代码发送消息;事务安全:完整实现RocketMQ事务消息机制,保证分布式事务最终一致性;规范统一:强制业务规范,避免团队开发混乱。

2026-05-07 13:54:50 389

原创 向量数据库

本文系统阐述了向量数据库的核心技术与工程实践。针对传统关系型数据库在海量高维向量检索中的性能瓶颈,提出采用ANN(近似最近邻搜索)技术实现高效检索。重点分析了两大主流索引IVF和HNSW的原理及适用场景,其中HNSW因其高速检索和高召回率成为生产首选。在选型策略上,推荐根据数据规模选择FLAT、HNSW或IVF_SQ8等不同方案,并对比了Milvus等专用向量数据库的优势。最后详细介绍了基于Milvus的完整落地流程,包括索引创建、参数调优和混合检索等关键决策点,为大规模语义检索系统提供了实用解决方案。

2026-05-01 00:00:00 296

原创 RAG核心学习总结:文本分块与元数据的关键作用

RAG技术核心:文本分块与元数据的协同作用 在企业知识库应用中,RAG系统的效能取决于文本分块与元数据的有机结合。纯文本分块存在三大缺陷:答案无依据、权限无管控、纠错无方向。元数据作为文本块的"智能标签"(含文档标识、权限控制、位置追溯等字段),能实现三大核心功能: 答案溯源(精确到文档章节) 权限过滤(按角色隔离敏感信息) 问题定位(快速修正错误数据) 最佳实践强调字段精简(如doc_id、access_roles等关键字段)、场景适配(区分公开/机密文档),并为后续向量化处理奠定基础

2026-04-30 02:00:00 204

原创 RAG 基础学习总结

RAG技术在企业应用中的核心价值与挑战 RAG(检索增强生成)技术通过结合语义检索与大模型生成能力,有效解决大模型在企业落地中的知识滞后、专业度不足等问题。其核心流程分为离线准备(数据接入、切块、向量化)和在线问答(语义检索、生成回答),适用于知识库、客服系统等业务场景。虽然RAG具有成本低、可溯源等优势,但仍面临数据处理复杂、检索策略优化等工程挑战,效果高度依赖文档质量。该技术为Java开发者提供了无需深入模型微调即可实现AI落地的实用路径。

2026-04-29 00:00:00 359

原创 RAG核心学习总结:文本分块

本文总结了RAG技术中文本分块(Chunking)的核心要点。分块是解决大模型上下文窗口限制和提升检索精度的关键步骤,通过将长文本切分为语义完整的小单元实现精准检索。文章详细解析了chunkSize和overlap两个关键参数的选择原则,并对比了5种主流分块策略(固定大小分块、重叠分块、递归分块、语义分块和混合分块)的优缺点及适用场景。其中递归分块适用于大多数场景,而语义分块适合高精度需求,混合分块则适合企业级复杂知识库。分块策略的选择需要平衡块大小与语义完整性,为后续向量化和检索奠定基础。

2026-04-29 00:00:00 208

原创 对 RAG 项目中 Prompt 工程的完整学习思考

RAG项目中Prompt工程的核心价值与实践总结 Prompt工程在RAG系统中扮演着决定性角色,它通过结构化设计约束大模型的输出行为。有效的Prompt需包含五个关键要素:明确的角色定位、任务拆解步骤、严格约束规则、标准化的输入格式和固定的输出规范。实践中必须强制知识隔离以防止幻觉,建立资料冲突处理机制,实现引用溯源功能,并设置双层异常处理流程。Prompt需要像代码一样持续迭代优化,通过收集坏案例、补充约束条款和版本管理来提升效果。工程化落地时,Prompt应实现动态组装和模板化,使其成为可标准化、可扩

2026-04-28 17:00:00 395

原创 不同向量检索策略

混合检索技术解析:向量与关键词的完美结合 当前检索系统面临语义理解与精确匹配的双重挑战。本文系统分析了纯向量检索的三大缺陷,并提出混合检索解决方案。核心方案采用向量检索保证语义召回率,结合BM25关键词检索确保精准度,通过RRF排名融合技术实现优势互补。文章详细介绍了两种混合架构选择(原生混合与双引擎),以及重排序优化策略,对比了四种检索方案的适用场景。最后提炼出"向量管语义,BM25管关键词"的实践口诀,为构建高效RAG系统提供完整技术路径,特别强调混合检索在平衡召回率与精准度方面的核

2026-04-28 10:50:25 213

原创 OpenAI 接口协议 & 大模型Java调用 核心总结

摘要: OpenAI Chat Completions接口是大模型API通用标准,国内主流平台兼容。核心包括模型选择、对话角色(system/user/assistant)和参数控制(temperature/max_tokens)。Java调用分非流式(同步请求,适合后台任务)和流式(SSE协议,实时交互),技术栈采用OkHttp+Gson。开发时需注意多轮对话需手动维护消息历史,system提示词控制模型行为,流式接口不返回Token统计。该协议为后续RAG模块开发奠定统一基础。(150字)

2026-04-28 00:00:00 498

原创 大模型核心知识总结

大模型(LLM)核心是通过海量文本学习语言规律,无需硬编码规则,能理解自然语言,区别于传统 if-else 编程和传统 NLP(仅数词频、无真正语义理解),是 Java Agent 实现智能交互的核心依赖。

2026-04-27 11:56:13 201

原创 若依plus请求加解密

本文介绍了在RuoYi Plus框架中实现API请求响应加解密的完整方案。采用RSA+AES混合加密机制: 请求流程:前端随机生成AES密钥,用RSA公钥加密后放入请求头,使用AES加密请求体;后端用RSA私钥解密获取AES密钥,再解密请求体。 响应流程:后端生成新的AES密钥,RSA加密后放入响应头,AES加密响应体;前端用RSA私钥解密获取密钥,再解密响应内容。 实现方案:通过请求解密包装器和响应加密包装器拦截处理加解密逻辑,确保数据安全传输。 该方案兼顾性能与安全性,适合企业级应用开发。

2025-11-12 14:24:46 1016

原创 Spring Web 请求封装 + 拦截器统计耗时

本文介绍了一种解决Spring MVC中HttpServletRequest输入流只能读取一次问题的方案。通过装饰器模式,使用RepeatedlyRequestWrapper包装原始请求,将请求体内容缓存到内存字节数组,实现重复读取。该方案包含三个核心部分:1) RequestWrapper通过读取并缓存原始流到字节数组,重写getInputStream()方法提供可重复读取功能;2) RepeatableFilter在请求进入前判断并包装需要重复读取的请求;3) 拦截器利用包装器安全打印请求参数并统计处理

2025-11-05 15:44:38 345

原创 笔记工具类:ServletUtils

Spring框架的RequestContextHolder通过线程级请求上下文管理,允许在应用程序任意层获取HttpServletRequest、HttpServletResponse等对象,基于ThreadLocal机制实现。ServletUtils工具类整合了Spring的RequestContextHolder和Hutool的JakartaServletUtil,提供安全便捷的请求上下文访问能力,包括参数获取、头部操作、Session管理、响应渲染等功能,解决了传统Web开发中层间耦合问题,同时保证非

2025-10-25 11:15:00 343

原创 深入解析索引下推

索引下推(ICP)是MySQL 5.6引入的重要优化技术,能显著提升联合索引查询性能。当查询条件包含范围查询和后续过滤条件时(如age>25 AND city='北京'),传统方式需要先回表获取完整数据再过滤,而ICP则允许存储引擎直接利用索引中的字段进行预过滤,大幅减少不必要的回表操作。通过EXPLAIN查看执行计划时,Using index condition即表示使用了ICP。该技术适用于InnoDB/MyISAM的二级索引查询,能有效降低I/O开销,是后端开发者优化数据库性能的有力工具。

2025-09-19 09:14:37 1176

原创 你真的了解 count(﹡) 的底层原理吗?

摘要:MySQL中count()统计行数在大数据量下性能较差,MyISAM引擎虽缓存总行数但无法部分统计且不适用于事务引擎。InnoDB需逐行扫描,但会优化选择最小B+树。使用Redis缓存计数存在数据丢失和同步问题。性能对比:count() > count(1) > count(主键) > count(字段)。建议:小数据直接用count(*);大数据量采用缓存、异步统计或分析型数据库;业务允许时可使用冗余表存储统计数据。(149字)

2025-09-19 09:06:43 957

原创 MQ面试汇总

本文总结了消息队列(MQ)的核心知识点,包括其三大核心作用(解耦、异步、削峰)及使用中可能引发的问题(系统复杂度增加、可用性降低、一致性问题)。重点分析了消息堆积、重复消费、顺序性和延时消息等典型问题的解决方案,并对比了主流MQ产品的特性差异,为技术选型提供参考依据。建议业务系统优先考虑RocketMQ,大数据场景选用Kafka,小型系统可采用RabbitMQ或ActiveMQ。

2025-09-18 10:37:07 962

原创 从笛卡尔积噩梦到精准打击:一次复杂的PostgreSQL查询优化实战

本文分享了从低效SQL到高性能查询的优化实战。通过将一个复杂的多维度权限校验需求,从生成笛卡尔积的"暴力组合"方式重构为"分治策略":使用CTE提前过滤有效数据,分别精准计算三种权限路径下的有效人-设备对,最后用UNION合并结果。优化后的查询避免了50万级别的中间结果集,通过职责单一的JOIN和早期过滤,使执行效率提升数十倍。这种"精准打击"的查询设计思路,为处理复杂业务规则下的数据关联提供了高效范式。

2025-09-17 10:31:42 784

原创 Micrometer 的动态线程池运行指标监控

本文介绍了如何使用Micrometer+Prometheus+Grafana监控动态线程池的运行指标。通过Micrometer采集线程池核心参数(线程数、队列长度、拒绝次数等),结合Prometheus定时拉取数据,最终在Grafana实现可视化监控。重点解析了micrometerMonitor()方法的设计原理,强调需要缓存MonitorDTO对象来避免指标重复注册问题。这种方案能实时掌握线程池运行状态,为系统调优提供数据支撑。

2025-09-17 10:31:04 575

原创 告警速率检查器(基于时间窗口的报警限流器设计与实现)

本文介绍了一种基于固定时间窗口的报警限流器设计,用于解决线程池监控中频繁告警"刷屏"的问题。该限流器采用ConcurrentHashMap存储报警记录,通过compute方法原子性地判断是否允许发送报警:同一类报警在设定的时间间隔内只能发送一次,超出时间窗口才可再次触发。实现方案简洁高效,有效避免了告警信息过载,同时保证了并发环境下的线程安全。

2025-09-16 09:00:13 312

原创 为什么动态线程池修改 corePoolSize 和 maximumPoolSize 时要加顺序判断?

动态线程池修改参数时需要确保核心线程数(corePoolSize) ≤ 最大线程数(maximumPoolSize)。修改顺序取决于参数变化方向: 当扩容时(新core > 原max),必须先调大max再调大core 当缩容时(新core ≤ 原max),应先调小core再调小max 这种顺序判断避免了直接设置时可能引发的参数校验异常,确保线程池参数始终合法。该设计源于JDK对线程池参数的严格约束,在动态修改时仍需维持这一关系。

2025-09-15 09:06:00 334

原创 金蝶小微企业生态门户API集成完整指南(Java版)

金蝶API集成指南摘要 本文提供金蝶API集成完整指南,重点介绍获取app-token的核心流程和签名生成方法。主要内容包括: 前置准备:创建金蝶应用、申请沙箱环境 app-token获取:详细说明X-Api-Signature签名算法,包含请求方式、路径、参数等5部分拼接规则 Java实现:提供完整的签名生成工具类代码,涵盖HMAC-SHA256加密、参数排序和双重URL编码等关键技术点 注意事项:参数需按ASCII码排序,参数名和值均需双重URL编码 开发者可参考本文快速完成金蝶API的集成接入。

2025-09-12 09:30:20 924

原创 代理模式增强拒绝策略

摘要:本文介绍了代理模式的两种实现方式:静态代理和动态代理。静态代理需要手动编写代理类,虽然逻辑清晰但扩展性差;动态代理通过反射机制在运行时生成代理类,灵活性高但只能代理接口。文章重点分析了动态代理的核心组件Proxy类和InvocationHandler接口,并提供了增强拒绝策略的具体实现示例,展示了如何通过动态代理统计线程池拒绝次数并触发告警。两种代理方式各有优缺点,可根据实际需求选择使用。

2025-09-12 09:10:42 546

原创 线程池队列与活跃度报警检测器实现详解

本文介绍了一个线程池状态报警检测器的实现方案,用于监控线程池的队列使用率和线程活跃度。通过定时调度器检查线程池的队列容量、剩余容量和活跃线程数,当队列使用率或线程活跃度超过预设阈值时触发报警。该方案采用独立运行的定时任务,可无侵入式监控多个线程池状态,通过日志输出报警信息,后续可扩展接入其他通知方式。核心功能包括队列使用率检查、线程活跃度检查和异常输出,帮助开发者及时发现线程池过载风险,保障系统稳定性。

2025-09-10 18:21:44 354

原创 可变容量阻塞队列设计与实现

可变容量阻塞队列设计与实现 摘要:本文分析了传统固定容量阻塞队列在动态业务场景(如电商秒杀)中的局限性,详细说明了通过反射修改队列容量的方法及其存在的两个关键问题:1)队列满时线程无法感知容量变化;2)容量缩小后约束失效。文章提出了基于RabbitMQ方案的改进实现,核心思想包括主动唤醒机制、改进判断条件和使用智能信号触发。该方案通过复制并修改LinkedBlockingQueue源码,实现了真正可动态调整容量的阻塞队列,解决了高并发场景下流量波动带来的系统资源管理问题。

2025-09-09 09:19:19 359

原创 动态线程池参数变更通知

摘要 本文介绍了动态线程池参数变更通知的实现方案。首先在动态线程池配置中增加通知人设置,包含接收人信息。然后编写钉钉通知类并配置自动装配功能。最后采用模板方法模式,在配置变更时触发通知机制。整个方案通过结构化的配置和模块化的设计,实现了线程池参数变更时的自动通知功能。

2025-07-10 10:00:00 261

原创 NacosCloud 参数变更监听和动态刷新线程池

本文介绍了基于Nacos配置中心实现参数变更监听及动态刷新线程池的架构设计。主要内容包括: 通过NacosCloudRefresherHandler监听器实现配置热刷新,当Nacos配置变更时自动回调处理 使用单线程池异步处理配置变更事件,确保不阻塞Nacos长轮询线程 配置解析流程:将变更的配置内容解析为Map,再绑定到BootstrapConfigProperties对象 线程池动态刷新机制:通过对比本地和远程配置差异,更新线程池核心参数 配置类设计:使用@ConfigurationProperties

2025-07-09 08:43:13 573

原创 动态线程池启用注解

摘要:本文介绍了一种基于Spring条件装配的动态线程池启用机制,核心是通过@EnableOneThread注解配合MarkerConfiguration配置类实现。该组合注解通过@Import导入配置类,后者注册一个无功能的标记Bean作为条件判断标志。其他组件使用@ConditionalOnBean依赖此标记Bean,实现按需启用动态线程池功能。这种模式类似于Spring的@EnableAsync等注解,提供了一种灵活的功能开关方案。(149字)

2025-07-08 08:00:00 254

原创 SpringBoot后置处理器,扫描动态线程池,注册动态线程池

本文介绍了利用SpringBoot后置处理器实现动态线程池注册的机制。首先通过自定义注解@DynamicThreadPool标记动态线程池,然后利用Spring的扩展点:1) 使用ApplicationContextAware将上下文注入静态变量;2) 实现BeanPostProcessor后置处理器扫描标记注解的Bean;3) 将符合条件的线程池注册到静态Map中维护。该方法结合了Spring生命周期扩展点(BeanPostProcessor)和容器感知接口(Aware系列),实现了线程池的动态管理与注册

2025-07-07 08:17:33 256

原创 动态线程池核心包开发

本文介绍了动态线程池核心包的开发,主要包含五个核心类:增强线程池OneThreadExecutor、线程池参数配置类ThreadPoolExecutorProperties、线程池封装类ThreadPoolExecutorHolder、注册器OneThreadRegistry以及support包中的枚举类。其中重点讲解了BlockingQueueTypeEnum枚举类,它通过名称创建不同类型的阻塞队列实现(如ArrayBlockingQueue、LinkedBlockingQueue等),并提供静态方法cr

2025-07-04 16:28:06 189

原创 单点登录(Single Sign-On,SSO)详解

概念含义认证中心唯一负责用户登录鉴权的系统子系统业务系统,接入 SSO 客户端后支持自动登录Cookie用于保存认证中心或子系统本地登录态Ticket一次性登录票据,认证中心颁发,用于安全传递登录状态loginId用户唯一身份标识(一般是用户ID)

2025-04-21 16:42:43 1265

原创 SpringAI入门:对话机器人

Spring 通过 Spring AI 项目正式启用了 AI(人工智能)生成提示功能。本文将带你了解如何在 Spring Boot 应用中集成生成式 AI,以及 Spring AI 如何与模型互动。

2025-04-18 14:13:50 1153

原创 Java 线程中断和LockSupport

首先,一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止,自己来决定自己的命运。所以,Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。其次,在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Java提供了一种用于停止线程的协商机制―—中断,也即中断标识协商机制。中断只是一种协作协商机制,Java没有给中断增加任何语法,中断的过程完全需要程序员自己实现。

2025-04-09 17:00:15 818 1

原创 MySQL日志

本文系统介绍了 MySQL 中三种关键日志:Undo Log、Redo Log 和 Binlog,以及它们在事务处理中的作用与配合关系。Undo Log(回滚日志):用于记录数据修改前的状态,是实现事务原子性和 **MVCC(多版本并发控制)**的关键。事务回滚和快照读都依赖 Undo Log。Redo Log(重做日志):用于记录对数据页的物理更改,即使事务已提交但数据尚未写入磁盘,借助 Redo Log 也能在系统崩溃后恢复数据,保障事务持久性。

2025-04-06 17:06:20 758

原创 深入并发之Runnable、Callable、FutureTask原理分析

在FutureTask出现之前,Java中的多线程编程执行任务后是不能获取执行结果的,当我们需要多线程执行后的结果时则需要自己经过复杂的实现(如写到缓存或者全局变量中主线程再去读取)。而FutureTask整合了Runnable、Callable、Future三个接口,使得我们的多线程任务执行后可以异步获取到多线程的执行结果。FutureTask会将执行结束后的结果保存在成员变量:outcome中,等待获取执行结果的线程则读取outcome成员值即可。ask对象中的一个Callable成员的call。

2025-04-06 16:57:36 910

原创 前缀树学习

假如我们只构建一个只有26个英文小写字母的前缀树那么children的长度就是26 ,如果children[i] 不为空,那么证明有某个单词使用了这个前缀。

2025-03-24 14:01:41 487

原创 若依(RuoYi)OSS上传学习记录总结

在学习若依(RuoYi)框架的OSS(对象存储服务)上传功能过程中,我深入研究了其整合AWS S3协议OSS功能的实现方式、相关配置以及数据库设计等内容,收获颇丰。以下是详细的学习记录总结。

2025-03-22 15:07:25 1274

原创 MQ 消息发送可靠性保证 —— 整合 Spring Retry 重试框架 + 补偿发送方案

RocketMQ Starter 本身提供重试机制较为简单,无法指定较复杂的重试策略Spring Retry 是一个用于为应用程序提供自动重试功能的框架,特别适用于执行可能会因暂时性问题失败的操作(如网络请求、数据库操作、消息队列操作等)。通过配置,Spring Retry 能够在失败时自动重试指定次数,且每次重试可以配置不同的延迟和间隔。

2025-03-08 13:02:42 1146

原创 MYSQL锁的分类

整个数据库处于只读状态 ,增删改会被阻塞通常用于数据备份如何避免全局锁?在可重复读级别下会开启一个事务,整个事务执行期间会使用这个readView。

2025-03-04 16:26:20 837

原创 点赞,点赞列表方案设计

点赞系统是社交平台或内容平台中常见的功能,用户通过点赞来表达对内容的喜好。为了高效地处理大量用户的点赞请求并快速展示点赞列表,需要设计一个高效的点赞存储与查询系统。

2025-02-28 20:58:48 782

原创 提升 Spring Boot 系统性能:高效处理实时数据流的 BufferTrigger 使用详解

快手开源的 BufferTrigger 是一个用于数据处理,它主要用于实时数据流处理场景。BufferTrigger 的主要作用是为了解决在大数据流处理中常见的问题:如何高效地对连续的数据流进行缓冲,并在满足一定条件时触发下游计算或存储操作。提高效率:通过批量处理数据而不是逐条处理,可以显著减少 I/O 操作的次数,从而提升整体处理效率。资源优化:对于一些需要消耗较多计算资源的操作(如写入数据库、调用外部服务等),通过累积一批数据后再执行一次这样的操作,可以更有效地利用系统资源。简化逻辑。

2025-02-27 14:32:32 1325

原创 事务的隔离级别

在数据库的并发控制中,(Transaction Isolation Level)和(Read Types)对解决并发问题至关重要。常见的并发问题包括和。不同的隔离级别和读类型使用不同的锁机制来解决这些问题。

2025-02-26 21:25:13 742

空空如也

空空如也

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

TA关注的人

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