自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis 梳理汇总目录

Redis 哨兵集群(Sentinel)与 Cluster 集群对比-优快云博客如何快速将大规模数据保存到Redis集群-优快云博客Redis的一些高级指令-优快云博客

2025-04-01 16:33:10 217

原创 Redis的一些高级指令

在 Redis 中,pipeline(管道,你可能是想问这个而不是pinline)是一种用于批量执行命令的机制,它允许客户端将多个命令一次性发送到 Redis 服务器,而不需要等待每个命令的响应,然后一次性接收所有命令的响应。这种方式可以减少客户端和服务器之间的网络往返次数,提高执行效率。下面以 Python 的redis-py客户端库为例,展示如何使用管道来批量执行命令:python在上述代码中:首先创建了一个 Redis 客户端连接对象r。然后通过创建了一个管道对象pipe,并使用with。

2025-04-01 16:31:32 483

原创 如何快速将大规模数据保存到Redis集群

从 Redis 读取数据时再进行解压缩,这样可以减少数据在网络传输和 Redis 存储中所占用的空间,提高存储和读取的速度。:将大规模数据按照一定的规则进行分片,然后并行地将各个分片的数据保存到 Redis 集群中。在使用多线程或多进程时,要注意处理好线程安全和资源竞争的问题,确保数据的一致性和正确性。在实际应用中,需要根据具体的业务场景和数据特点,综合运用这些策略来达到最佳的性能表现。使用这些批量操作可以减少与 Redis 集群的交互次数,从而提高数据保存的效率。:避免逐条插入数据,Redis 提供了。

2025-04-01 16:15:09 285

原创 Redis 哨兵集群(Sentinel)与 Cluster 集群对比

redis-cli --cluster set-timeout 15000 # 调整节点超时时间。Master[主节点宕机] --> Detect[从节点检测到主FAIL]redis-cli --cluster rebalance # 自动平衡槽位分布。Elect -->|获得多数主节点同意| Promote[晋升为新主]遵循先到先得原则(First-Come-First-Served)# 通过min-replicas-to-write配置预防。实际选型需结合数据规模、业务特征和技术栈成熟度综合决策。

2025-04-01 16:01:02 871

原创 RAG专栏:提示工程

提示工程(Prompt Engineering)是指设计和优化向语言模型(如 GPT 系列、BERT、文心一言、通义千问等)输入的文本提示,以引导模型生成更准确、有用、符合预期的输出的过程。提示工程通过为大模型设计高效且精确的提示词,能够有效引导大模型理解输入信息,从而提升生成的准确性与相关性。

2025-03-27 12:01:45 124

原创 RAG专栏:混合检索

混合检索,又称融合检索 / 多路召回,是指在检索过程中同时采用多种检索方式,并将各类检索结果进行融合,从而得到最终的检索结果。混合检索的优势在于能够充分利用不同检索方式的优点,弥补各自的不足,从而提升检索的准确性和效率。

2025-03-27 11:10:12 238

原创 RAG专栏:向量数据库

Chroma、Qdrant 适合快速开发和轻量化部署,Milvus/Zilliz 适用于高性能和可扩展性需求,FAISS 适合不要求持久化且对性能有极致要求,Weaviate 和 LanceDB 在多模态数据处理中表现出色,PGVector、Elasticsearch 和 Redis 则在现有数据库的高效集成中占优势,而 Pinecone 是云托管场景的理想选择。通过这种索引和检索机制,检索到的向量为生成模型提供了必要的上下文信息,使模型能够依据当前的语义上下文生成更加精准和相关的响应。

2025-03-26 20:16:24 224

原创 RAG专栏:嵌入技术

Embedding 嵌入是指将文本、图像、音频、视频等形式的信息映射为高维空间中的密集向量表示。这些向量在语义空间中起到坐标的作用,捕捉对象之间的语义关系和隐含的意义。通过在向量空间中进行计算(例如余弦相似度),可以量化和衡量这些对象之间的语义相似性。在具体实现中,嵌入的每个维度通常对应文本的某种特征,例如性别、类别、数量等。通过多维度的数值表示,计算机能够理解并解析文本的复杂语义结构。

2025-03-26 17:06:55 360

原创 RAG专栏:分块策略

文档数据(Documents)经过解析后,通过分块技术将信息内容划分为适当大小的文档片段(chunks),从而使 RAG 系统能够高效处理和精准检索这些片段信息。分块的本质在于依据一定逻辑或语义原则,将较长文本拆解为更小的单元。分块策略有多种,各有侧重,选择适合特定场景的分块策略是提升 RAG 系统召回率的关键。

2025-03-26 16:48:23 878

原创 RAG专栏:文档解析

一般企业内部数据源多样性:如关系型数据 mysql,非关系型数据:redis,时序数据:InfluxDB及其他 ES 等,还有文档类的:pdf,word,ppt,excel,cvs,MD,json,xml,html等,针对这些不同的数据格式,我们需要针对各种类型做出对应处理。主要运用LangChain Document Loaders来对应文档操作。

2025-03-26 12:01:59 165

原创 RAG专栏:RAG快速实战

RAG专栏:RAG实战,从原理到代码讲解

2025-03-26 11:34:32 825

原创 RAG专栏:RAG的场景及技术原理

RAG 模型的核心思想在于通过检索与生成的有机结合,弥补大模型在处理领域问题和实时任务时的不足。传统的生成模型在面对复杂问题时,往往由于知识储备不足,生成出错误或无关的回答。而 RAG 通过检索模块获取相关的背景信息,使生成模块能够参考这些信息,从而生成更具可信度和准确性的答案。这种方法不仅增强了生成内容的准确性,还提高了模型在应对特定领域知识和动态信息时的适应能力。

2025-03-26 11:01:35 594

原创 Springboot事务篇

通过。

2025-03-13 12:26:15 1039

原创 Java 什么是线程安全及如何实现线程安全

通过 JVM 内置锁(Monitor)实现互斥访问,确保同一时间只有一个线程执行临界区代码。:基于 CAS(Compare-and-Swap)实现无锁线程安全操作,适用于简单原子操作。理解线程安全的三要素(原子性、可见性、有序性)是解决多线程问题的关键。死锁(Deadlock):多个线程互相等待对方释放锁,导致永久阻塞。:保证变量的可见性和禁止指令重排序,但不保证原子性。:操作不可分割,要么全部完成,要么全部不执行。更灵活的锁控制(如可中断、超时、公平锁)。单一变量的原子操作(如计数器、标志位)。

2025-03-12 18:31:26 937

原创 ReentrantLock VS Synchronized

以下是和的对比,针对每个不同点给出,帮助直观理解它们的差异。

2025-03-12 17:15:05 1022

原创 Spring Bean

三者初始化方式同时出现时候的顺序依次为:@PostConstruct 标注方法, 实现 InitializingBean 接口的 afterPropertiesSet() 方法,最后才是自定义初始化方法如@Bean(initMethod = "initUserFactory")。

2025-03-08 22:49:37 238

原创 Spring 构造器注入和setter注入的比较

在 Spring 框架中,构造器注入(Constructor Injection)和 Setter 注入(Setter Injection)是实现依赖注入(DI)的两种主要方式。它们的核心区别在于依赖注入的时机、代码设计理念以及适用场景。以下是两者的详细比较:优点:不可变性:依赖字段可声明为 ,确保线程安全和对象状态一致性。明确性:强制要求所有必需依赖,避免 。代码简洁性:结合 Lombok 的 ,可自动生成构造方法。兼容测试:易于在单元测试中手动注入依赖。缺点:灵活性不足:对可选依赖支持较弱,需通过重载构

2025-03-07 18:24:33 820

原创 IOC 篇

Spring IOC(Inversion of Control,控制反转)是 Spring 框架的核心特性之一,它是一种设计理念,用于实现对象的创建和依赖关系的管理。

2025-03-07 18:21:52 379

原创 SpringBoot 外化配置及加载顺序

Spring Boot 的配置加载顺序以“就近覆盖”为原则,同时支持灵活的外部化配置。理解这一机制有助于在不同环境(开发、测试、生产)中高效管理配置。Spring Boot 的外化配置加载顺序遵循特定的优先级规则,高优先级的配置会覆盖低优先级的。分隔符定义不同 Profile 的配置(需 Spring Boot 2.4+)。通过环境变量或系统属性传递的 JSON 格式配置,如。或 YAML 文件(如。或 YAML 文件(如。或 YAML 文件(如。或 YAML 文件(如。(命令行参数优先级最高)。

2025-03-06 08:08:34 361

原创 Springboot 梳理

命令行界面@Import({AutoConfigurationImportSelector.class})

2025-03-05 22:29:10 424

原创 Redis 篇

全表查询:keys分页查询:游标查询:

2025-03-05 15:25:46 276

原创 Kubernetes 篇

Kubernetes 中的资源通常是按命名空间(Namespace)进行隔离的,因此需要先确定目标 Pod 所在的命名空间。在开始查询 Pod 日志之前,需要确保你已经正确配置了 Kubectl 工具,并且能够连接到目标 K8S 集群。通过以上步骤,你可以在 K8S 集群环境下完整地查询一个 Pod 的日志,并检索包含特定关键字的日志信息。在确定了命名空间之后,需要找到目标 Pod 的名称。命令来检索包含特定关键字的日志信息。如果需要查看 Pod 的实时日志,可以使用。如果日志信息较多,可以使用。

2025-03-05 14:23:07 813

原创 MariaDB Galera 原理及用例说明

bash复制。

2025-03-05 14:02:32 1157

原创 Mysql优化实战

一、实战。

2025-03-04 18:09:34 102

原创 设计模式说明

一、设计模式。

2025-03-04 18:08:47 468

原创 Springboot 注入方式

在 Spring Boot 中,依赖注入是一种重要的设计模式,用于实现组件之间的解耦。

2025-03-04 16:39:45 416

原创 Springboot 循环依赖

让 Spring 延迟注入代理对象,直到实际使用时才初始化。在其中任意一个依赖上或者两个依赖都添加。

2025-03-04 16:11:42 202

原创 Mysql死锁场景案例及解决方案

MySQL 死锁(Deadlock)是指两个或多个事务在执行过程中,因争夺资源而相互等待的现象。每个事务都持有对方需要的锁,导致无法继续执行。通过统一操作顺序、优化索引、减少事务粒度、设置锁超时等方法可有效避免死锁。实际开发中需结合业务场景和监控日志,持续优化事务设计和数据库配置。MySQL死锁的常见原因包括。

2025-02-27 11:00:54 490

原创 Mysql 死锁场景及解决方案

在可重复读(RR)隔离级别下,事务A删除某范围数据,事务B尝试插入相同范围的数据。:高并发下插入相同唯一键数据,事务A和事务B同时尝试插入,触发唯一约束冲突。:更新操作未命中索引,导致全表扫描,锁住所有记录(甚至间隙锁)。:双方各持有一把锁,同时请求对方持有的锁,形成循环等待。部分,分析锁类型(行锁、间隙锁)和事务操作路径。:监控并拆分执行时间过长的事务,减少锁持有时间。:无索引时,行锁可能升级为表锁,增大死锁概率。:间隙锁阻塞插入操作,导致互相等待。:减少事务内操作,尽快提交释放锁。

2025-02-27 11:00:04 783

原创 ReentrantLock 底层实现

CAS(Compare-And-Swap,比较并交换)操作是一种无锁的原子操作,它在多线程环境下能够保证线程安全,主要是通过硬件级别的原子性以及乐观锁的思想来实现的。以下详细介绍 CAS 操作保证线程安全的原理:CAS 操作包含三个操作数:内存位置(V)、预期原值(A)和新值(B)。其操作过程如下:在 Java 中, 类提供了一些基于 CAS 的操作方法,例如 、 等, 等原子类就是基于这些方法实现的。CAS 操作的原子性是由硬件保证的。在现代 CPU 中,CAS 操作是一个原子指令,这意味着在执行 CAS

2025-02-26 19:59:09 577

原创 Springboot 启动过程

• 它会扫描启动类所在包及其子包下的所有组件,包括带有@Component、@Service、@Repository、@Controller等注解的类,将它们注册为Spring Bean,放入Spring容器中进行管理。• 当应用接收到关闭信号(如通过命令行输入停止命令或系统关闭事件)时,Spring Boot会执行关闭流程,包括关闭嵌入式服务器、释放资源、销毁Spring容器中的Bean等操作,确保应用安全、有序地关闭。• 当所有的配置和初始化工作完成后,Spring Boot应用就成功启动了。

2025-02-26 08:28:38 147

原创 Springboot 事件通知监听

首先,创建一个自定义事件类,继承自// 自定义事件类1 - 配置多事件发布器,并配置多线程处理多事件发布。

2025-02-25 11:29:27 660

原创 Springboot 熔断,穿透,雪崩

缓存穿透是指客户端请求的数据在缓存中不存在,同时在数据库中也不存在,这样每次请求都会穿透缓存直接访问数据库,给数据库带来巨大的压力。熔断机制类似于电路中的保险丝,当某个服务出现问题(如响应时间过长、频繁报错等)时,为了避免整个系统被拖垮,会暂时切断对该服务的调用,直接返回一个默认的响应结果。缓存雪崩是指在某一时刻,大量的缓存同时过期失效,或者缓存服务器发生故障,导致大量请求直接涌向数据库,使数据库瞬间承受巨大的压力,甚至可能导致数据库崩溃,进而引发整个系统的雪崩效应。属性指定熔断策略的名称,

2025-02-24 16:39:43 474

原创 Springboot AOP 详解

当开启 Spring AOP 功能后,Spring 会在容器初始化时为需要增强的目标对象创建代理对象。在客户端调用这些目标对象的方法时,实际上调用的是代理对象的对应方法。代理对象会根据 AOP 配置的切面逻辑,在目标方法执行前后插入相应的通知(如前置通知、后置通知等),然后再调用真实对象的方法,从而实现对真实对象方法的增强。通过使用代理对象,Spring AOP 可以在不修改目标对象代码的情况下,灵活地在目标方法执行前后插入自定义的增强逻辑,实现诸如日志记录、事务管理、权限验证等功能。

2025-02-24 11:48:28 548

原创 AnnotationConfigApplicationContext 函数作用

/ 配置类// 定义一个 Bean@Bean// 自定义服务类。

2025-02-21 17:24:03 247

原创 Springboot 高频面试题

Spring Boot本质上是一个建立在Spring框架之上的快速应用开发框架。

2025-02-21 14:24:47 974

原创 JVM篇:内存分区及作用及各部分可能发生的异常

记录当前线程执行字节码的地址(行号),保证线程切换后能恢复到正确位置。:线程私有,唯一无内存溢出的区域。。由 JVM 规范严格管理,不会发生内存溢出。:存储方法调用的栈帧(局部变量表、操作数栈、动态链接、方法出口等)。:线程私有,栈帧的入栈/出栈对应方法的调用/结束。:当栈深度超过 JVM 允许的阈值(如无限递归)。:当栈尝试动态扩展但内存不足(少见,通常由操作系统限制导致)。:为 Native 方法(如 C/C++ 实现的方法)服务,功能类似虚拟机栈。:线程私有,具体实现依赖 JVM 厂商。

2025-02-19 18:29:28 1099

原创 Java Spring boot 篇:常用注解

Java Spring boot 篇:常用注解

2025-02-18 20:59:14 282

原创 Spring Bean的生命周期和作用域

Spring Bean的生命周期和作用域

2025-02-18 10:36:33 138

原创 java 基础:线程篇

【代码】java 基础:线程篇。

2025-02-17 18:52:27 220

空空如也

空空如也

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

TA关注的人

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