面试题(二)

置顶面试题(二)

Netty框架学习-BIO到NIO再到Netty

Netty框架学习-BIO到NIO再到Netty

Netty 框架学习:从 BIO → NIO → Netty(小白版) 0. 学习路线总览(一张图先建立全局感) ┌────────────────────────────────────────────────────────────────────┐ │ Jav

MaxKB4j在RAG优化中的应用

MaxKB4j在RAG优化中的应用

MaxKB4j 是一款基于 Java 的开源 LLM 工作流与 RAG 知识库问答平台,借鉴 MaxKB、Dify 等设计,强调高性能与稳定性。它支持 12+ 种文档上传、自动分块、向量化入库,兼容 20+ 模型,并提供低代码 DAG 工作流、多 Agent 协作、RESTful API 及 MCP 支持。技术栈基于 Spring Boot 3、LangChain4j、pgvector 与 MongoDB,并采用 Java 21 虚拟线程提升并发性能,是工业级 RAG 落地的参考实现。

RAG系统效果评估指南

RAG系统效果评估指南

本文系统介绍 RAG 评估方法:强调必须用指标驱动优化,区分离线与在线评估并互补;从检索、生成、端到端三层拆解定位问题,并给出核心指标——检索层看 Recall@K、Precision@K、MRR、NDCG,生成层看忠实度、答案相关性等,构建完整评测闭环。

混合检索Hybrid-Search详解

混合检索Hybrid-Search详解

混合检索(Hybrid Search)同时使用BM25关键词检索与向量语义检索,分别召回后按RRF等算法融合排序,以弥补单一检索在精确匹配与语义理解上的各自短板。文章指出,现实RAG语料包含代码、数字等,纯向量或纯BM25均有死角,混合检索能稳定提升召回率,已成为RAG检索层标配,并与Rerank精排配合。常见融合算法包括加权归一化与RRF,其中RRF因仅依赖排名而成为工程首选。

RAG检索优化指南

RAG检索优化指南

本文提出RAG检索优化的“先诊断再优化”思路,将问题定位到分块、检索、查询三个层面。分块是检索上限,需选择合适策略、调整chunk大小与overlap,并可用父子分块、附加元数据;检索层优先采用混合检索(BM25+向量),辅以Embedding模型升级和Rerank重排。摘要强调通过自测定位问题环节,针对性优化提升检索精度。

向量检索相似度计算详解

向量检索相似度计算详解

向量检索通过计算向量间相似度判断内容相关性,常用方法包括余弦相似度、内积和欧氏距离。余弦只关注方向,不受向量长度影响;内积兼顾方向与长度,计算更快;欧氏距离衡量绝对距离,使用较少。核心结论是:余弦相似度等价于先归一化再内积,若向量已归一化,内积与余弦结果一致。选择哪种方式取决于向量是否已归一化及具体应用场景。

文本分块策略详解

文本分块策略详解

本文系统介绍了RAG系统中的文本分块策略。首先说明分块必要性:受限于上下文窗口、检索粒度、语义噪声和回答质量。随后详解七种策略:固定长度分块简单快速但易破坏语义;递归字符分块是通用默认方案;结构感知分块贴合文档逻辑;语义分块利用embedding检测话题切换;滑动窗口通过重叠避免边界信息丢失;父子分块用小子块检索、父块生成;LLM智能分块语义最准但成本高。最后给出chunkSize和overlap的设置要点,强调分块质量决定RAG检索上限。

框架封装

框架封装

本文介绍Maven依赖管理:创建父pom,通过dependencyManagement统一管理Spring Boot、Spring Cloud及Alibaba版本,并继承父pom实现依赖复用;同时提供公共代码,如结果码接口和枚举类,用于统一操作结果返回。

分布式事务

分布式事务

本文介绍了微服务核心组件:服务发现(Nacos原理)、客户端负载均衡策略、OpenFeign声明式调用及其动态代理实现。重点阐述了分布式事务的多种方案:2PC/XA的性能问题、TCC的编码补偿、AT模式利用undo_log自动补偿、Saga长事务补偿,并提及重试幂等方案。强调各方案优缺点及适用场景,需根据业务权衡。

微服务调用

微服务调用

本文介绍了基于 Nacos 的服务发现与调用方案,解决硬编码 IP:端口 带来的配置困难和地址变化问题。通过注册中心动态获取服务地址,实现提供方与调用方解耦;结合 Spring Cloud LoadBalancer 实现负载均衡,并讲解 OpenFeign 声明式调用的核心原理:动态代理与反射。

微服务入门

微服务入门

本文回顾了Java后端技术栈及企业级架构从单体、SOA到微服务、云原生、AI原生的演进,指出业务增长驱动分布式需求。介绍了微服务与分布式系统关系、CAP定理和BASE理论,并重点讲解Spring Cloud作为微服务工具集,涵盖Nacos、Sentinel、Gateway等组件,以及服务分层与独立数据库的设计要点。

电商SPU与SKU详解

电商SPU与SKU详解

电商 SPU 与 SKU 详解 一、概念定义 1. SPU(Standard Product Unit,标准产品单位) SPU 是商品的"属性集合",代表"是什么商品",是商品的最小聚合单位。 它是一组可复用、易检索的标准化信息的集合,描述的是商品的核心属性(如品牌、型号、名称、类目),但不包含具体

nacos面试题

nacos面试题

nacos的临时实例和持久化实例的区别 临时实例:注册时向nacos发起注册,并隔一段时间就发送健康检测,健康检测内容:服务名+ip+端口+更新内存中的lastUpdatedTime(nacos就是根据这个时间隔了多久还没有更新来判断是否存活的),因为状态是由实例自己传来的,nacos不能保证其真实

33-多线程使用

33-多线程使用

本文介绍了多线程的概念、应用场景(防止主线程阻塞、提高CPU利用率),以及三种实现方式:继承Thread、实现Runnable、使用线程池。重点讲解了ThreadPoolExecutor的核心参数(核心/最大线程数、队列、拒绝策略)和工作原理(有界/无界队列、同步移交),并给出了Spring MVC中配置和使用线程池的方法。

32过滤器和拦截器的区别

32过滤器和拦截器的区别

过滤器和拦截器都能在请求前后执行逻辑,但本质不同:过滤器基于Servlet规范,工作在容器层,通过责任链模式执行,不依赖Spring;拦截器基于Spring MVC框架,通过动态代理实现,依赖IoC容器,可访问Controller方法及注解。请求先经过过滤器链,再到DispatcherServlet,最后进入拦截器链。过滤器适合通用处理(如编码、静态资源),拦截器适合业务相关操作(如权限校验、日志记录)。

31AOP使用场景学习笔记

31AOP使用场景学习笔记

AOP是一种编程范式,通过将日志、事务等横切关注点模块化为“切面”,实现与业务逻辑的分离。核心概念包括切面、连接点、切入点、通知和织入。Spring AOP默认使用JDK动态代理或CGLIB代理实现运行时织入,支持前置、后置、异常、最终和环绕通知。常见应用场景有日志记录和事务管理,有效减少代码重复与耦合。

springboot+websocket实时聊天(一)

springboot+websocket实时聊天(一)

本文介绍基于Spring Boot WebSocket实现实时聊天功能的通用模板,涵盖功能概述、技术选型、数据库设计及后端实现。支持在线用户收发文字/图片消息,消息异步持久化至MySQL,离线用户通过REST拉取历史,按业务维度(如订单、群组)管理会话。推荐使用MQ异步写入、对象存储图片,并提供无MQ变体方案。