自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL | 从SQL到数据的完整路径

最近我正在学习 MySQL 的面试相关八股,打算单独开一个 MySQL 专栏来记录自己每天的学习,内容主要来自小林coding和 JavaGuide。今天了解到了 MySQL 的架构和执行流程,没想到一条简单的 sql 语句居然在 MySQL 中经历了这么多的流程。

2026-04-08 23:53:21 951

原创 Amadeus的知识库 | RAG 系统优化升级的前提 —— 你真的搞明白了它的评估体系吗?

我们今天主要围绕 RAG 系统评估展开,指出上线后优化需先明确评估标准,将 RAG 分为检索、生成、端到端三阶段,分别介绍各阶段核心评估指标(如检索阶段的命中率、MRR 等,生成阶段的忠实度等,端到端的正确率等)。同时提出采用 LLM-as-Judge(用独立大模型按设定标准打分)结合人工定期审查的方式,高效计算各项指标,助力 RAG 系统监测与优化。

2026-04-08 09:32:17 501 1

原创 Amadeus的知识库 | RAG 场景下大模型有记忆了检索系统却犯了难?—— 重中之重是搞清问题重写策略!

我们在这篇文章中指明了 RAG 场景下仅靠大模型多轮会话记忆不够,因检索阶段无法理解问题中的指代、省略等信息,需通过问题重写解决。随后介绍了指代消解、省略上下文、口语化转正式、多意图混合、模糊描述五种重写策略及各自原理、解决方案,还提到需合理设计改写模型 Prompt,明确改写时机,其中多意图混合需拆分 Query 并指定 JSON 格式输出。

2026-04-07 19:12:03 499

原创 Amadeus的知识库 | 每次 API 请求都是失忆的?让你的大模型记住你!—— 一文讲清楚几种多轮会话记忆设计策略

我们今天主要围绕大模型多轮会话记忆功能展开,阐释了大模型的本质无状态,需通过工程设计实现记忆,其记忆来源为请求体中的 messages 数组。随后介绍了全量历史回传、滑动窗口、Token 截断、总结压缩、混合策略、向量数据库检索、实体记忆、外部知识图谱八种设计策略,分析了各策略的原理、优缺点及适用场景,其中混合策略在实际生产中最常用。

2026-04-07 17:23:39 378

原创 Amadeus的知识库 | 告别碎片化集成:深度解析 AI 时代的“USB 协议” —— MCP

本文围绕模型上下文协议MCP展开介绍,先阐释其定义,再说明其诞生是为解决传统交互模式的局限。对比Function Calling仅输出格式化JSON、依赖开发者实现逻辑、复用性与动态性不足的问题,MCP作为完整通信协议,具备完善生态、强复用性与动态发现能力。其核心架构包含Host、Client、Server三大角色,支撑起Resources、Tools、Prompts三大核心能力,实现资源、工具与提示词模板的标准化交互。以及对比 MCP 中 Server 与 Client 传输层三种通信机制

2026-04-06 23:52:49 403

原创 Amadeus的知识库 | 纯向量检索关键词识别弱?带上BM25算法搞混合检索 + Reranking做召回优化,RAG生成质量大幅增强!

我们先是介绍了 BM25 算法的核心机理,围绕 IDF、词频、文档长度三大评判标准展开,说明其计算公式与分词、计算 IDF、文档打分、排序的完整流程,并指出其相比 TF-IDF 在抑制长文档、平滑词频上的优化。随后对比 BM25 关键词检索与向量检索的优劣,前者精于关键词匹配、成本低,后者擅长语义理解与同义词处理。接着阐述混合检索实践及分数融合难点,重点讲解 RRF 分数融合策略与计算公式。最后介绍 Reranking 召回优化流程,对比 Bi-Encoder 与精度更高的 Cross-Encoder 编码

2026-04-06 20:47:49 495

原创 Amadeus的知识库 | RAG高效向量检索的秘密?—— 关于向量数据库你必须知道的!

我们通过这篇文章主要解析了向量数据库在RAG系统中的核心地位。针对传统数据库在相似度检索中全表扫描效率低下的痛点,向量数据库引入了近似最近邻搜索(ANN)算法,在保证高精度的同时极大提升了检索速度。文章重点探讨了两大主流索引算法:IVF通过聚类分区缩小搜索范围,而HNSW则借鉴跳表思想构建分层图结构,实现从“快车道”到“慢车道”的快速寻路,是高性能检索的首选。此外,文中还对比了向量数据库与传统数据库在集合、实体及索引等核心概念上的差异。总之,向量数据库是专为海量向量高效检索而设计的关键基础设施。

2026-04-05 23:49:06 479

原创 Amadeus的知识库 | 传统检索不懂语义?大模型知识有限?—— RAG检索增强生成来帮忙!

经过本篇文章的讲解,相信大家对 RAG 的诞生原因以及它的大致链路有了一定了解。但 RAG 可不是仅此而已,上面我只是对六大节点的大致过程进行了一个概述,补充了一点点细节,但每个节点其实都还有很多要下的苦功夫。除去那六大节点,我们可能还得考虑诸如文档具体怎么解析、用户问题口语化怎么进行重写增强检索效果、多轮对话怎么实现、用户一个问题多个意图怎么对其进行拆分、大模型又怎么识别用户意图再做相应操作、纯向量检索效果不好怎么搭配其他类型的检索进行优化、数据检索时的鉴权怎么实现,还有重排序、会话记忆、引导澄清、效果监

2026-04-05 17:35:15 568

原创 Amadeus的知识库 | OpenAI的API规范是啥来头?—— 集成大模型到项目中的必备通行证

这篇文章我们主要围绕OpenAI API接口展开讲解,先梳理对话补全、嵌入、微调、图像生成、音频处理五类接口的适用场景与常用模型;接着说明调用前需准备BASE_URL与API_KEY,重点解析Chat Completions请求体核心参数,包括model、messages各类角色消息、工具调用相关配置及stream、top_p、temperature等参数;再介绍响应体字段含义与流式响应格式,清晰展示从发起带工具的对话请求、模型返回函数调用指令,到完成结果交互的完整流程。整体为开发者提供了OpenAI AP

2026-04-04 23:46:08 562

原创 Amadeus的知识库 | 概念多、迭代快、同学聊大模型插不上嘴?—— 零基础带你打通大模型核心认知

本文梳理大模型入门七大核心概念:Token是模型文本计量单位,中英换算不同,决定计费与上下文长度。上下文窗口包含提问与回答总长度,超限会遗忘早期内容,并非越长越好。Temperature控制生成随机性,值越低越稳定,越高越创意。BaseModel是预训练原始基座,仅会文本续写;ChatModel是经指令微调后的对话模型,可理解意图、多轮交互。量化是将高精度参数压缩为低精度,减少显存占用。CoT思维链让模型分步推理,提升复杂问题准确率,这些是理解与使用大模型的基础。

2026-04-04 00:25:24 407

原创 黑马头条日记 | Kafka Stream流式计算 —— 助你实时计算热点文章

我们上一篇定时计算热点文章使用的是XXL-JOB,这个方案有几个明显的不足。第一个不足就是每一次计算评分都是把最近5天全部文章拉出来一起评分,这种全量扫描在很多情况下是没必要的,比如说那些评分数据不变的就没必要拉出来再算复用之前的评分即可。第二个不足就是用户只有在隔天才能感受到热点文章的变化,无法实时感知,时效性差。因此我们在本篇文章决定采用Kafka Stream的流式计算功能,通过事件驱动 + 增量流式实现实时计算热点文章。

2026-04-01 23:46:26 7581 1

原创 黑马头条日记 | 分布式任务调度平台XXL-JOB —— XXL之力一举完成热点文章定时计算

APP端用户在不同频道来回切换时,该如何向用户推送内容呢?直觉来说就是从数据库按照文章发布时间倒序查询,但这样操作会有两个明显的问题,第一个是用户频繁切换频道对于数据库查询压力过大,一旦用户访问量上去,数据库可能就扛不住如此大量的请求。第二个是查询返回的结果是按照文章发布时间倒序排序,只能说明新的文章会显示在前面,它的质量是不确定的,我们想要看到的是把一些热点文章放在前面,这也是用户乐意看到的。综合上述考虑最终拟定的解决方案是把热点数据(点赞、评论、阅读、收藏四要素决定)存入Redis进行展示。

2026-04-01 15:40:49 7818 1

原创 黑马头条日记 | 内容安全的重要防线——文章审核中敏感词过滤的最佳实践指南

自媒体端文章发布前需要对用户发布的文章进行审核,在文章审核功能中除了调用第三方接口对文章图片和内容进行安全审查外,往往还需要对一些敏感词进行排查,而这恰恰又是单纯的内容安全审核无法完成的。因此在本篇文章中,我将基于黑马头条中实现文章内容与图片敏感词排查功能的过程进行详述,从技术调研到技术选型再到技术实现的全链路一一展开。

2026-03-29 20:23:34 7767 1

原创 黑马头条日记 | 都是托人办事,OpenFeign和异步消息通知有啥区别?

最近在项目中频繁使用到OpenFeign和异步消息通知,我发现这俩哥们都是托人办事,确切地说,都是在当前微服务中某项业务一部分功能的实现必须由其他微服务代为完成,这个时候往往在项目中都会使用上述两项技术,那他们的区别又是什么呢?对此我决定对黑马头条项目中二者的使用场景进行深挖,以下内容将包括它们的最佳实践细节以及技术场景对比。

2026-03-24 12:03:59 7823

原创 黑马头条日记 | GateWay和Nginx两口子把日子过好了比什么都重要——三分钟带你弄清它们的分工

写这篇博客的起因是昨天一个朋友问我,如果你的微服务项目出问题了,用户访问页面响应404 Not Found该怎么办。我直接傻了,查网关层?然后再定位对应接口,对照路径?后面问了一些大佬后才知道一般来说如果微服务项目出现问题,排查顺序一般都是倒着来的,先查接口,再查网关,最后查Nginx。我恍然大悟,随即想到了初中用电流表和电压表排除故障的物理题。羞愧之余决定重温一下微服务项目的架构,故作此文分享给大家。

2026-03-22 08:31:45 7865

原创 黑马头条日记 | 微服务项目MinIO与业务代码耦合度过高?耐心看完这篇你就知道如何从零构建MinIO起步依赖!

恭喜你你已经成功学会了如何封装MinIO起步依赖并将其集成到微服务中,这是一个极具复用价值的实践经验,在之后的学习中一定会多次使用到!就像 Spring Boot 提供的 spring-boot-starter-web 一样,它封装了 Web 开发的常用配置,让开发者只需引入依赖就能快速开发 Web 应用。heima-file-starter 也是同样的思想,封装了文件存储的常用配置,让所有微服务都能快速使用文件存储功能。这就是 Spring Boot Starter 的核心价值!

2026-03-22 08:28:20 7832

原创 黑马头条日记 | 截获Token就想冒名登录?门都没有!带你洞悉JWT Token内部实现

在 JWT 的三部分结构中,Signature(签名)是最容易被忽视但最关键的防护机制。它通过密钥的不对称性,确保即使 Token 被黑客截获,也无法被篡改。

2026-03-21 11:52:26 7980

原创 黑马头条日记 | 守住用户的命根子——开发者与黑客之间的博弈

多次MD5或者手动加盐虽然能增加一定的破解成本,但无法对抗GPU 硬件加速的暴力破解。MD5 的计算开销太低,且不支持动态调整计算成本。在现代微服务开发中,我们更倾向于使用BCrypt或Argon2这种‘慢哈希’算法,通过可调节的工作因子来对抗硬件算力的进步,从而确保密码存储的长期安全性。

2026-03-21 08:58:57 7748

原创 Amadeus的知识库 | 《Java核心技术卷Ⅱ》——零基础带你掌握Old程序员必备的Stream流式装X大法

今天我们的主题是Stream流,虽然它经常被Java程序员诟病调试难、可读性差等等,但说实话有哪个小白刚接触Stream流写法时不希望自己有一天也能掌握这种行云流水的写法?最近我恰好正在拜读《Java核心技术卷Ⅱ》这本书,觉得里面关于Stream流的部分讲的很好,于是花了三天时间怒肝两万余字总结分享给大家

2026-03-20 16:09:18 8177 69

原创 范进说八股 | Docker篇——你可以永远相信这只鲸鱼

Docker和虚拟机的区别是什么?Docker中的镜像是什么?运行Docker容器的命令是什么?说出几个DockerFile的常见指令COPY和ADD的区别,CMD和ENTRYPOINT的区别?Docker中的数据卷是什么,有什么作用?请简要介绍Docker网络的几种模式如何创建一个自定义的Docker网络?什么是docker-compose?

2026-03-14 12:55:17 7721

原创 范进说八股 | Elasticsearch篇——恐怖如斯的企业级搜索引擎

什么是倒排索引?Es中的文档、字段、索引分别是什么?分词器包含几种模式?如何拓展词库?match查询和term查询的区别?如何实现分页查询?深度分页的解决方案?怎么在ES中组合多个查询条件?全文检索查询结果默认是如何排序的,如何控制这个顺序?

2026-03-14 12:08:04 7913 2

原创 范进说八股 | RabbitMQ篇——你兔哥在消息就在

RabbitMQ的核心组件和工作原理、交换机类型?有哪些消息模型?如何确保消息的可靠性?如何保证消息的幂等性?什么是死信队列?消息是如何成为死信的?什么是延迟队列?如何实现延迟队列?如何解决消息堆积问题?集群方案有哪些?

2026-03-13 16:18:27 7834

原创 范进说八股 | 微服务篇——拉开你和其他实习生的差距

微服务常用组件、服务注册和服务发现、Eureka和Nacos区别、服务远程调用时的负载均衡是如何实现的?Ribbon中常用的负载均衡策略、服务雪崩,以及解决方案、限流算法中的漏桶算法和令牌桶算法、Spring Cloud Gateway 的路由和断言关系、Spring Cloud Gateway中常见的过滤器、Sentinel中常用的流量控制规则有哪些?CAP定理?BASE理论?分布式锁的常见实现方案、分布式事务,分布式事务的解决方案有哪些?如何保证接口的幂等性。

2026-03-12 23:55:10 7810

原创 范进说八股 | Redis篇——万字拆解常见八股拷打面试官

Redis的常用数据结构?持久化机制?如何和mysql进行数据同步?缓存穿透、雪崩、击穿概念以及解决方案?如何判断一个KEY是否过期?数据过期策略有哪些?内存淘汰策略有哪些?集群有哪些方案?

2026-03-11 23:49:47 804

原创 黑马点评 | 达人探店、好友关注、附近商户、用户签到、UV统计

GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有:GEOADD:添加一个地理空间信息,包含:经度(longitude)、纬度(latitude)、值(member)GEODIST:计算指定的两个点之间的距离并返回GEOHASH:将指定member的坐标转为hash字符串形式并返回GEOPOS:返回指定member的坐标。

2026-03-06 14:01:50 441 2

原创 黑马点评 | 三万余字从零打造万级并发的优惠券秒杀系统

秒杀系统从数据库锁 -> 分布式锁 -> 异步优化 -> 消息队列 的演进过程。这种架构不仅解决了超卖和一人一单,还将吞吐量提升了数十倍,QPS 从几百提升到几千甚至上万。

2026-03-04 23:47:41 8070 74

原创 黑马点评 | 本地缓存的三种实现与分布式缓存、多级缓存架构、穿透雪崩击穿

这篇博客介绍了缓存的本质、实现方案(HashMap、Caffeine、Redis等),分析了其利弊与多级缓存架构,讲解了商户缓存实践及更新策略(删除缓存、先更数据库再删缓存),并总结了缓存穿透、击穿、雪崩三大问题及解决方案。

2026-03-04 00:04:59 629

原创 黑马点评 | 黑马点评架构、基于Session和Redis两种方式实现短信登录、保证登录态实时刷新

Tomcat 用固定大小的线程池处理请求,避免了为每个请求创建新线程的开销,提升了并发能力。

2026-03-01 00:00:23 1015

原创 Typora破解教程 | Markdown写作的“标杆级工具”

Typora 是一款主打所见即所得的极简 Markdown 编辑器,以实时渲染、无预览分栏、纯本地文件管理为核心设计,支持标题、表格、代码块、数学公式、图表等丰富语法,界面清爽、启动快速、导出格式齐全,非常适合用来写笔记、博客、技术文档与日常文稿,是追求高效、干净写作体验的常用工具。

2026-02-24 23:38:05 1670

原创 Linux | 开发者的必修课

Linux 是现代互联网与云计算的底层操作系统,稳定、开源、无处不在。对开发者来说,Linux 不是加分项,而是上岗必备项—— 它决定你能不能独立把代码跑上线、能不能搞定线上问题、能不能往后端 / 架构 / 运维方向发展。

2026-02-23 22:45:10 945

原创 Mybatis-Plus | 只做增强不做改变——为简化开发而生

BaseMapper是 MyBatis-Plus 提供的通用 Mapper 接口,内置了单表操作的所有核心 CRUD 方法(新增、删除、修改、查询),无需手动编写 Mapper 方法和 SQL,只需让自定义 Mapper 接口继承BaseMapper,即可直接使用这些通用方法,大幅减少重复编码工作。@Data@TableName("t_user") // 关联数据库表名@TableId(type = IdType.AUTO) // 主键自增。

2026-02-23 15:20:13 1162

原创 Spring Security | 集认证、授权、防攻击于一体的安全框架

Service// 注入MyBatis的Mapper(替代之前的JPA Repository)@Autowired@Override// 1. 通过Mapper从数据库查询用户(含角色)// 2. 用户不存在则抛出异常(Spring Security会捕获并处理)throw new UsernameNotFoundException("用户名不存在:" + username);// 3. 转换为Spring Security的UserDetails对象。

2026-02-22 12:18:46 1092

原创 代码随想录 | LeetCode904水果成篮、LeetCode76最小覆盖子串

1.快指针是导致滑动窗口合法性丧失的罪魁祸首2.慢指针是使得滑动窗口重新合乎条件的帮手3.快慢指针共同维护一个有条件的滑动窗口。

2026-02-21 23:22:45 993

原创 苍穹外卖日记 | Day12 工作台模块、导出运营数据Excel报表

今天导入了工作台模块,学习了新框架Apache POI,借此实现了导出运营数据Excel报表功能,至此苍穹外卖完结撒花,最近正好在刷一些星球论坛之类的空间,看了挺多前辈的简历,打算自己做一个项目技术总结,然后用些学来的专业术语模板包装下苍穹外卖,练练手怎么写简历的项目板块。

2026-02-07 18:34:18 1039

原创 苍穹外卖日记 | Day11 营业额统计、用户统计、订单统计、销量前10统计

第十一天主要就是数据统计模块的开发,总体下来没什么新技术点,主要是熟悉Service层和SQL语句的编写即可。

2026-02-06 19:50:11 807

原创 苍穹外卖日记 | Day10 定时任务处理订单状态、来单提醒和客户催单

第十天内容是通过SpringTask框架实现超时未支付订单和一直派送中订单的定时任务处理,并通过WebSocket技术,通过构建请求参数,调用相关API,向客户端发起消息,实现来单提醒和用户催单两块功能。

2026-02-05 12:15:41 683

原创 苍穹外卖日记 | Day9 用户端历史订单模块、商家端订单管理模块、用户下单功能优化

第九天主要是完成用户端历史订单模块、商家端订单管理模块相关业务新功能开发和已有功能优化,前两个新模块开发体验下来就各模块前一两个功能接口难一点耗时间一点,剩下的接口都比较简单。然后调用第三方接口对用户下单功能进行距离校验的时候,发现自己对这个流程还是不熟悉,但是自己手动完成优化后发现调用第三方接口也没那么难,依旧固定几步,构造请求参数,解析结果等等,总之第九天实战感觉对自己代码能力锻炼还是挺大的,因此总结的时候也就有很多东西需要写不知不觉第九天博客都两万两千多字了,看来还是要多实战进步才更快啊。

2026-02-02 23:41:20 1544

原创 苍穹外卖日记 | Day8 用户下单、订单支付

今天主要完成了用户下单和订单支付两个功能模块,感觉有了之前购物车模块编写的经验,用户下单写起来也不是很复杂,订单支付这里也是调用一些第三方接口类似操作,不过因为配置信息问题没法真正实现微信支付调用,只是进行了个模拟,所以导入的PayNotifyController这些东西都没用上,里面的一些加密逻辑也不怎么了解,新学了个cpolar技术也没用上,这玩意可以让第三方接口服务重定向到开发者服务器上可以用虚拟的网站地址而不是localhost又定向到自己服务器,可以在开发阶段调试使用。

2026-02-01 11:22:41 989

原创 苍穹外卖日记 | Day7 缓存商品、购物车

第七天主要就是完成缓存商品和购物车模块,使用了之前的Redis技术,并且学习了更加方便的SpringCache基于注解进行缓存操作,实现添加购物车接口时逻辑稍微变复杂了,写下来之后明显感觉到自己独立完成删除购物车商品的时候,知道如何分析了。

2026-01-30 13:44:41 966

原创 苍穹外卖日记 | Day6 HttpClient、微信小程序开发、微信登录功能、商品浏览功能

第六天主要完成的是微信登陆功能,了解HttpClient的使用和微信小程序开发流程。这里面比较困难的就是微信登录流程分析。后面的商品浏览功能实现跟管理端写接口差不多,没什么难度。

2026-01-27 23:40:29 918

空空如也

空空如也

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

TA关注的人

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