CAP分布式理论
CAP分布式理论
文章目录
- CAP分布式理论
- 事务
- 本地事务
- 定义
- 适用场景
- 优点
- 缺点
- 分布式事务
- 一、分布式事务的定义
- 二、分布式事务的标准与 CAP 理论的关系
- 1. CAP 理论的核心内容
- 2. CAP 理论对分布式事务的指导意义
- 3. 分布式事务的其他关键标
- 三、总结:CAP 理论与分布式事务的关系
- 四、分布式 BASE 理论:(基于 CAP 理论)
- 1. BASE 理论的核心定位
- 2. BASE 理论的三大核心要素
- 3. BASE 理论的核心思想
- 4. BASE 理论与 ACID 的对比
- 5. BASE 理论的实践场景
- 6. BASE 理论的优缺点
- 7. 总结:BASE 与 CAP 的关系
- 五、一致性补充
- 一、强一致性
- 定义
- 核心特点
- 适用场景
- 典型方案
- 二、弱一致性
- 定义
- 核心特点
- 适用场景
- 典型规则与方案
- 三、最终一致性
- 定义
- 核心特点
- 适用场景
- 典型实现方案
- 四、三者对比总结
- 五、如何选择一致性模型?
- 六、总结
事务
我们经常说的事务就是数据库操作的基本单元,用于保证数据的一致性、完整性和可靠性。它具有ACID 特性:
- 原子性(Atomicity):事务中的操作要么全部成功,要么全部失败回滚。
- 一致性(Consistency):事务执行前后,数据从一个合法状态转换为另一个合法状态。
- 隔离性(Isolation):多个事务并发执行时,相互之间互不干扰。
- 持久性(Durability):事务提交后,对数据的修改会永久保存。
本地事务
主要还是实现了数据库的ACID特性
定义
在单个数据库实例中执行的事务,通过数据库自身的事务机制(如 MySQL 的 InnoDB 引擎的事务)实现。
适用场景
- 单数据库实例下的业务场景(如单体应用)。
- 对一致性要求高、逻辑简单的场景(如订单状态更新)。
优点
- 简单高效:直接依赖数据库自身机制,实现成本低。
- 强一致性:通过锁机制(如行锁、表锁)保证隔离性。
缺点
- 局限性:无法解决跨数据库、跨服务的事务问题(如微服务架构下的分布式场景)。
分布式事务
一、分布式事务的定义
分布式事务是指涉及多个分布式节点(如跨数据库、跨服务、跨数据中心)的事务操作,需要协调这些节点以达成一致的事务状态(要么全部成功提交,要么全部回滚)。
其核心挑战在于分布式环境下的网络延迟、节点故障、数据一致性等问题,例如:
- 电商场景中,用户下单时需同时扣减库存(数据库 A)和冻结支付金额(数据库 B)。
- 金融场景中,跨行转账需协调两个银行的核心系统完成资金转移。
二、分布式事务的标准与 CAP 理论的关系
分布式事务的设计与实现需遵循分布式系统的核心理论,其中 CAP 理论是其底层设计的基石和指导原则。
1. CAP 理论的核心内容
CAP 理论指出,分布式系统中 一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance) 三者不可兼得,需根据场景权衡取舍:最多只能满足两个。
属性 | 含义 |
---|---|
一致性(C) | 所有节点在同一时刻看到相同的数据(强一致性)或按顺序看到更新(弱一致性)。 |
可用性(A) | 系统在正常请求下能够持续响应,不出现故障节点不可用的情况。(不能出现响应超时等情况,允许数据旧) |
分区容错性(P) | 系统在网络分区(部分节点通信中断)时仍能正常运行。(具备网络中断时可提供服务的能力) |
2. CAP 理论对分布式事务的指导意义
-
分布式事务必须满足分区容错性(P):
分布式系统中网络分区不可避免(如交换机故障、跨机房断网),因此设计分布式事务时必须优先保证系统在分区故障下仍能运行,即必须舍弃 C 或 A。 -
根据业务场景选择 CP 或 AP 模式
-
CP 模式(一致性 + 分区容错性)
牺牲部分可用性,确保数据强一致性。适用于金融交易、账务系统等场景(如银行转账必须保证两边账户金额一致)。
- 典型方案:基于 2PC(两阶段提交)、3PC(三阶段提交)、Paxos、Raft 等强一致性算法。
- 典型项目:redis、Hbase、Zookeeper
-
AP 模式(可用性 + 分区容错性)
牺牲强一致性,换取高可用性和最终一致性。适用于电商秒杀、社交 Feed 等场景(如允许用户短暂看到旧库存,但最终库存扣减一致)。
- 典型方案:基于 TCC(Try - Confirm - Cancel)、本地消息表、可靠消息队列(如 RocketMQ)、SAGA 事务模型 等最终一致性方案。
- 典型项目:淘宝商城退款
-
3. 分布式事务的其他关键标
除 CAP 理论外,分布式事务还需遵循以下标准:
- 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部回滚。
- 隔离性(Isolation):事务之间相互隔离,避免脏读、幻读等问题(分布式场景下隔离性实现更复杂,需结合锁、版本号等机制)。
- 持久性(Durability):事务提交后,数据变更永久保存(需结合日志持久化、副本机制等)。
- 性能与可扩展性:在保证一致性的前提下,尽可能降低协调成本(如减少锁粒度、异步化处理),支持高并发场景。
三、总结:CAP 理论与分布式事务的关系
CAP 理论是分布式事务设计的底层约束和核心指导思想,它揭示了分布式系统的本质矛盾:在分区容错性不可避免的情况下,必须在一致性和可用性之间做出取舍。
- 强一致性事务(如金融场景)选择 CP 模式,通过牺牲部分可用性换取数据一致性;
- 高可用性事务(如互联网业务)选择 AP 模式,通过最终一致性平衡可用性和数据一致性。
理解 CAP 理论是设计高效、可靠分布式事务方案的前提,也是解决分布式系统复杂性的关键切入点。
四、分布式 BASE 理论:(基于 CAP 理论)
1. BASE 理论的核心定位
BASE 理论是CAP 理论在分布式系统中的实践延伸,它放弃了对强一致性(Consistency)和完全可用性(Availability)的追求,转而强调在分布式场景下通过柔性机制实现系统的可用性和最终一致性,是 AP 模式(可用性 + 分区容错性)的典型体现。
2. BASE 理论的三大核心要素
要素 | 全称 | 含义解析 | 与 CAP 的映射 |
---|---|---|---|
BA | Basically Available | 基本可用: 系统在出现故障时,允许损失部分可用性(如服务降级、延迟响应),但保证核心功能可用。 例:电商大促时,暂时关闭非核心的 “用户评论” 功能,优先保证 “下单支付” 可用。 | 对应 CAP 中的可用性(A),允许可用性的 “柔性降级”。 |
S | Soft State | 软状态: 允许系统存在中间状态(数据暂时不一致),只要该状态在未来某个时刻能通过异步机制消除。 例:分布式锁的 “释放延迟” 导致不同节点短暂看到锁的不同状态,但最终会同步。 | 对应 CAP 中放弃强一致性(C),允许临时不一致。 |
E | Eventually Consistent | 最终一致性: 在没有新更新的一段时间后,所有节点数据最终达到一致。 例:微服务架构中通过消息队列异步同步数据,确保订单状态最终一致。 | 对应 CAP 中弱一致性的终极目标,牺牲实时一致换取最终一致。 |
3. BASE 理论的核心思想
- 牺牲强一致性,换取高可用性和分区容错性:
在分布式系统中,面对网络分区(P)时,优先保证系统可用(A),而非强制所有节点实时一致(C)。 - 柔性事务替代刚性事务:
放弃传统数据库事务的 ACID 特性(如强一致性的锁机制),采用柔性事务机制(如异步消息、补偿机制)实现最终一致性。 - 业务适配优先:
根据业务场景的一致性需求分级(如核心交易强一致、非核心数据最终一致),避免 “一刀切” 的强一致性带来的性能瓶颈。
4. BASE 理论与 ACID 的对比
维度 | ACID(传统事务) | BASE(分布式事务) |
---|---|---|
一致性(C) | 强一致性(实时同步,如数据库锁) | 最终一致性(异步同步,允许中间状态) |
可用性(A) | 高可用性(但可能因锁竞争降低) | 基本可用(允许降级,优先保证核心功能) |
实现场景 | 单机事务、金融级实时交易 | 分布式系统、高并发互联网业务 |
典型技术 | 2PC、数据库事务日志 | 消息队列、SAGA 模式、乐观锁 |
5. BASE 理论的实践场景
- 电商订单系统:
下单时先在本地数据库记录订单(保证基本可用),再通过消息队列异步同步库存和支付状态(最终一致)。 - 社交平台动态:
用户发布动态后,允许不同地区的服务器节点延迟展示(软状态),通过后台同步机制确保最终所有用户可见(最终一致)。 - 分布式配置中心:
配置更新时允许部分节点延迟获取(基本可用),通过心跳机制或定时任务强制同步(最终一致)。
6. BASE 理论的优缺点
- 优点
- 提升系统吞吐量和可用性,适应分布式高并发场景。
- 降低实现复杂度,避免强一致性带来的性能损耗。
- 缺点
- 存在数据不一致窗口,可能导致业务逻辑处理复杂(需处理中间状态)。
- 需额外实现异步同步机制(如对账、补偿),增加系统设计成本。
7. 总结:BASE 与 CAP 的关系
- CAP 理论是基础:定义了分布式系统的三难困境(C、A、P 不可兼得)。
- BASE 理论是实践:在 AP 模式下,通过 “基本可用 + 软状态 + 最终一致” 的组合,给出了分布式系统的设计指南。
- 核心本质:承认分布式系统的局限性,通过牺牲强一致性实现可用性和扩展性,是互联网业务 “柔性容错” 的关键理论支撑。
五、一致性补充
一、强一致性
定义
所有节点在同一时刻看到的数据完全一致,即读操作总能获取到最新的写操作结果。
- 举例:若节点 A 写入数据
X=1
,则任何节点(包括 A 自身)后续的读操作必须返回X=1
,无论数据复制到其他节点的延迟如何。
核心特点
- 实时性:写操作完成后,所有节点立即可见最新数据。
- 高可靠性:数据始终一致,但可能牺牲可用性和性能。
- 实现代价高:需通过分布式锁、共识算法(如 Paxos、Raft)等强同步机制保证,存在单点瓶颈或网络延迟问题。
适用场景
- 金融交易:如银行转账,必须保证账户余额实时一致。
- 分布式锁:如 Redis 的 RedLock,确保同一时刻只有一个节点持有锁。
- 关键配置管理:如分布式系统的全局配置,需所有节点实时感知变更。
典型方案
- 2PC(两阶段提交):通过协调者强制所有参与者达成一致。
- Raft/Paxos 算法:通过多数派投票确保数据副本一致。
二、弱一致性
定义
不保证所有节点实时看到最新数据,允许存在短暂的不一致窗口,但读操作会遵循特定规则(如 “读自己的写”)。
- 举例:节点 A 写入
X=1
后,节点 B 可能读到旧值X=0
,但节点 A 自身后续读操作必须返回X=1
(满足 “读己之所写” 规则)。
核心特点
- 规则性:通过 “因果一致性”“读己之所写” 等规则约束一致性边界。
- 性能较高:无需强同步,允许异步复制,提升系统吞吐量。
- 存在不一致窗口:数据最终会趋于一致,但中间状态可能不一致。
适用场景
- 实时通信:如聊天应用的消息同步,允许用户 A 发送消息后,用户 B 短暂延迟看到。
- 计数器场景:如点赞数统计,允许不同节点返回略有差异的计数,但最终一致。
- 读多写少系统:如新闻 feed、商品浏览记录,优先保证读性能。
典型规则与方案
- 因果一致性:保证有因果关系的操作顺序(如先写后读)。
- 读己之所写一致性:用户只能读到自己已提交的写操作。
- 异步复制:主节点写入后,从节点异步同步数据(如 MySQL 主从复制)。
三、最终一致性
定义
在没有新的写操作一段时间后,所有节点数据最终会达到一致。它是弱一致性的一种特殊情况,强调 “最终” 状态一致,不保证中间过程。
- 举例:节点 A 写入
X=1
后,节点 B 可能暂时读到X=0
,但经过一段时间的异步同步,B 最终会读到X=1
。
核心特点
- 最终性:不保证实时一致,但保证系统在 “静止状态” 下数据一致。
- 高可用性与分区容错性:牺牲强一致性,换取 AP 模式下的高可用性(如 Cassandra、DynamoDB)。
- 依赖异步机制:通过复制、对账、补偿等机制实现最终一致。
适用场景
- 电商库存:允许下单时先扣减本地库存,再通过异步任务同步到其他节点。
- 分布式缓存:如 Redis 集群,允许分片间数据暂时不一致,通过定期同步修复。
- 社交平台:如用户粉丝数、动态点赞数,允许短暂延迟但最终正确。
典型实现方案
- 乐观锁(版本号 / 时间戳):通过比对版本号解决冲突(如 MySQL 的
WHERE version = ?
)。 - 对账与补偿:定期扫描不一致数据,通过重试或人工干预修复(如银行日终对账)。
- SAGA 模式:通过事务补偿机制解决跨服务的最终一致性(如微服务架构中的异步事务)。
四、三者对比总结
维度 | 强一致性 | 弱一致性 | 最终一致性 |
---|---|---|---|
一致性强度 | 最高(实时一致) | 中等(按规则约束) | 最低(最终一致) |
可用性 | 低(需等待所有节点确认) | 中等(允许部分节点响应) | 高(允许异步处理) |
性能 | 低(同步阻塞) | 中等(部分异步) | 高(完全异步) |
典型场景 | 金融交易、分布式锁 | 实时通信、读多写少系统 | 电商库存、分布式缓存 |
代表技术 | 2PC、Raft | 异步复制 + 读己写规则 | 乐观锁、SAGA、可靠消息队列 |
五、如何选择一致性模型?
- 优先强一致性:
- 场景:数据准确性要求极高,不允许任何不一致(如资金交易、用户认证)。
- 代价:牺牲可用性和性能,需接受可能的阻塞或延迟。
- 选择弱一致性:
- 场景:需要一定规则约束(如用户只能看到自己的更新),同时提升性能(如社交 APP 的用户操作日志)。
- 关键:明确定义一致性规则(如因果一致性),避免逻辑漏洞。
- 采用最终一致性:
- 场景:允许短暂不一致,追求高可用和扩展性(如互联网业务的非核心数据)。
- 设计要点:
- 确保异步同步机制可靠(如消息队列持久化、重试机制)。
- 提供数据校验和修复手段(如定时对账、人工干预接口)。
六、总结
一致性模型的选择本质是 CAP 理论的落地体现:
- 强一致性对应 CP 模式(牺牲可用性,如 ZooKeeper);
- 最终一致性对应 AP 模式(牺牲强一致性,如 Eureka)。
理解三者的差异与适用场景,是设计高效、可靠分布式系统的关键。实际应用中常采用 “混合模式”(如核心数据强一致,非核心数据最终一致),以平衡业务需求与技术成本
相关文章:
CAP分布式理论
CAP分布式理论 文章目录 CAP分布式理论事务本地事务定义适用场景优点缺点 分布式事务一、分布式事务的定义二、分布式事务的标准与 CAP 理论的关系1. CAP 理论的核心内容2. CAP 理论对分布式事务的指导意义3. 分布式事务的其他关键标 三、总结:CAP 理论与分布式事务…...
如何管理和优化内核参数
Linux 系统中的内核参数(Kernel Parameters)对系统的性能、安全性和稳定性有很大影响。通过调整内核参数,可以优化系统性能、增强网络能力、调整内存管理等。管理和优化内核参数通常涉及以下几个步骤: 1. 查看当前内核参数 在 L…...
sgRNA的靶基因基因组如何获得? for 下游的 T7E1验证
愿武艺晴小朋友一定得每天都开心! 1)在基因组,靶标区域上下游,设计引物(以Zfp532基因为例): a. NCBI(Home - Gene - NCBI)Gene 页面上输入:Zfp532。 b. 在新…...
人工智能+:职业价值的重构与技能升级
当“人工智能”成为产业升级的标配时,一个令人振奋的就业图景正在展开——不是简单的岗位替代,而是职业价值的重新定义。这场变革的核心在于,AI并非抢走工作机会,而是创造了人类与技术协作的全新工作范式。理解这一范式转换的逻辑…...
【前端开发】Uniapp日期时间选择器:实现分钟动态步长设置
技术栈 Uniapp Vue3 uView年份显示前后一年,分钟动态设置间隔 效果图 主体显示 <view class"uni-row selector" click"openPicker"><uni-icons color"#c0c4cc" type"calendar" size"22"></uni-…...
目标检测DN-DETR(2022)详细解读
文章目录 gt labels 和gt boxes加噪query的构造attention maskIS(InStability)指标 在DAB-Detr的基础上,进一步分析了Detr收敛速度慢的原因:二分图匹配的不稳定性(也就是说它的目标在频繁地切换,特别是在训…...
榕壹云上门家政系统:基于Spring Boot+MySQL+UniApp的全能解决方案
一、项目背景:家政服务行业的数字化升级需求 随着城市化进程加快,居民对上门家政服务的需求持续增长。传统家政行业存在服务效率低、信息不透明、管理成本高的问题,亟需通过数字化工具实现服务标准化、流程自动化。榕壹云上门家政系统应运而…...
目标检测DINO-DETR(2023)详细解读
文章目录 对比去噪训练混合查询选择look forward twice 论文全称为:DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection 提出了三个新的方法: 首先,为了改进一对一的匹配效果,提出了一种对比去噪训练方法…...
LLM笔记(十)vLLM(1)PagedAttention论文笔记
文章目录 PagedAttention论文笔记论文摘要概览1. 引言问题背景提出的解决方案主要贡献和成果 2. 背景2.1 基于Transformer的大语言模型2.2 LLM服务与自回归生成2.3 LLM的批处理技术 3. LLM服务中的内存挑战3.1 现有系统中的内存管理 4. 方法: PagedAttention 和 vLLMvLLM 系统概…...
5.20 note
不用if else实现递归 原代码 class Solution { public: int mechanicalAccumulator(int target) { if (target 0) return 0; // 终止条件:基准情况 return target mechanicalAccumulator(target - 1); // 递归累加 } }; 变形 class Solution { public: int…...
vuejs处理后端返回数字类型精度丢失问题
标题问题描述 后端返回数据有5.00和3.30这种数据,但是前端展示的时候返回对应分别为5和3.0,小数点后0都丢失了。 接口返回数据展示network-Response: 接口返回数据展示network-Preview: 错误数据效果展示 发现问题 浏览器接口…...
指令烧录ORIN NANO操作系统
1 概述 模组为ORIN NANO 4GB版本 Ubuntu系统为18.04虚拟机 说明:刷机过程会有重新连接USB的操作,烧写过程需要注意虚拟机提示,官方不建议使用虚拟机,建议直接使用ubuntu操作系统的机器。 2 下载烧录所需文件 进入到下载网址&am…...
每日算法刷题Day11 5.20:leetcode不定长滑动窗口求最长/最大6道题,结束不定长滑动窗口求最长/最大,用时1h20min
6. 1695.删除子数组的最大得分(中等) 1695. 删除子数组的最大得分 - 力扣(LeetCode) 思想 1.给你一个正整数数组 nums ,请你从中删除一个含有 若干不同元素 的子数组**。**删除子数组的 得分 就是子数组各元素之 和 。 返回 只删除一个 子…...
List介绍
什么是List 在集合框架中,List是一个接口,继承自Collection Collection也是一个接口,该接口中规范了后序容器中常用的一些方法 Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下࿱…...
List更简洁的编码构建
List的链式构建需求 jdk1.8,编码时需要手动构建一个List 传统List构建方式 - 声明列表,依次添加元素; - 利用Arrays.asList方法声明并添加元素 //1 先声明创建 List<String> createList new ArrayList<>();//2 逐个添加元素 c…...
Java 单元测试框架比较:JUnit、TestNG 哪个更适合你?
Java 单元测试框架比较:JUnit、TestNG 哪个更适合你? 在 Java 开发领域,单元测试是保证代码质量的重要环节。而选择一个合适的单元测试框架,对于提升测试效率和代码可靠性至关重要。本文将深入比较 JUnit 和 TestNG 这两个主流的…...
变频器如何通过Profibus DP主站转Modbus RTU/TCP接入到上位机
变频器如何通过Profibus DP主站转Modbus RTU/TCP接入到上位机 在工业自动化领域,Profibus DP和Modbus RTU是两种常见的通信协议。Profibus DP广泛应用于工厂自动化,而Modbus RTU则常用于串行通信。当需要将支持Profibus DP的设备(如变频器&a…...
ElasticSearch性能优化
ES基础概念介绍: 索引:类似于MySQL中的表,它是具有相同特征的一个数据集。文档:格式为JSON格式,类似于MySQL中的一条数据,它是数据存储的基本数据单元,每一条文档都有一个唯一的ID。查询&#x…...
pom.xml中的runtime
在 Maven 的 pom.xml 文件中,<scope> 元素可以指定依赖项的作用范围,而 runtime 是其中的一个作用范围值。以下是 runtime 作用范围的含义: 定义:runtime 作用范围表示该依赖项在编译时不需要,但在运行时需要。…...
第一章走进java世界
第一章 走进 java 世界 1.1 java 语言的特点(小面经) 使用简单、高效 去掉了 C 和 C++中的指针和多重继承技术通过垃圾自动回收机制简化了程序内存管理对于数据类型在不同字长的计算机上实现统一字节数占用完全面向对象 抽象、封装、继承、多态自动内存管理(Auto Garbage C…...
tigase源码学习笔记-事件总线EventBus
前言 最近看到了一些tigase关于异步事件解耦的地方的设计,做一个笔记记录一下。什么是事件总线,我自己对于事件总线的理解是,事件总线是一个对事件(Event)进行集中处理的基于发布订阅模式的一种处理机制。个人拙见&am…...
GO语言学习(六)
GO语言学习(六) 各位支持我的友友们我们现在不知不觉的已经进入第六期了,在上一期我们学习了一些简单的HTTP相关知识,还带大家基本的了解了web的深层原理及实现过程,相信大家应该都有自己的收获了,现在我就带领大家学习一下本期的…...
25.5.20学习总结
做题思路 数列分段 Section IIhttps://www.luogu.com.cn/problem/P1182正如题目所说,我们需要得到一个最小的最大段的值,可能有人将注意力放在分段上,事实上,我们更多的应该关注结果。这是一道二分答案的题,你可以先确…...
山东大学软件学院项目实训-基于大模型的模拟面试系统-Vditor编辑器上传图片
Vditor编辑器图片上传功能 使用Vditor进行图片上传时,会返回图片在后端的相对路径,这在前端是无法进行显示的(如下图) 于是为了将图片正常显示,我采取了和头像上传一样的解决方案,使用阿里云图床进行存储…...
在 Kotlin 中,什么是内联函数?有什么作用?
在 Kotlin 中,内联函数是一种通过 inline 关键字声明的函数,其主要目的是优化高阶函数(即以函数作为参数或返回值的函数)的性能。 内联函数的函数体会在编译时直接插入到调用处,从而避免函数调用的开销,并…...
leetcode hot100:四、解题思路大全:滑动窗口(无重复字符的最长子串、找到字符串中所有字母异位词)、子串(和为k的子数组、)
滑动窗口 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 思路 滑动窗口哈希表。 从左到右遍历字符串,以当前字符的下标为右边界,并不断试图往左扩宽左边界。滑动窗口内维护的就是当前字符下标…...
JAVA EE(进阶)_HTML
思如云烟,行若磐石。 ——陳長生. ❀主页:陳長生.-CSDN博客❀ 📕上一篇:JAVA EE(进阶)_进阶的开端-CSDN博客 1.HTML HTML(HyperText Mark…...
【[特殊字符] Vue 3 实现动态加载子组件并缓存状态完整指南】
文章目录 🧩 Vue 3 实现动态加载子组件并缓存状态完整指南💡 需求背景🎯 最终实现效果效果图 🛠️ 技术栈🧱 文件结构示例🔧 实现流程详解1. 定义组件映射关系2. 子组件定义并暴露方法3. 父组件逻辑处理✅ …...
从零开始的抽奖系统创作(2)
我们接着进行抽奖系统的完善。 前面我们完成了 1.结构初始化(统一结果返回之类的,还有包的分类) 2.加密(基于Hutool进行的对称与非对称加密) 3.用户注册 接下来我们先完善一下结构(统一异常处理&#…...
【计算机方向海外优质会议推荐】第二届图像处理、机器学习与模式识别国际学术会议(IPMLP 2025)
重要信息 大会官网:www.ipmlp.net 会议主页【点击参会/投稿/了解会议详情】:第二届图像处理、机器学习与模式识别国际学术会议(IPMLP 2025)_艾思科蓝_学术一站式服务平台 截稿时间:详见官网 接受/拒稿通知:投稿后1…...
进程之IPC通信二
4.共享内存 共享内存是进程间通信一种方式,多个进程共享一段内存,“ 共享内存 ”。由于多个进程共享了同一段内 存,这个段内存既是你的也是我的。也就是你往这个内存里面写入数据,实际上就相当于往我的内存里 面写入数据。比起其…...
打造高效数据处理利器:用Python实现Excel文件智能合并工具
有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析。今天,我想分享一个使用Python开发的小工具,它可以帮助我们轻松实现Excel文件的智能合并。C:\pythoncode\new\xlsx_merger.…...
使用注解动态映射:根据实体List列表动态生成Excel文件
我们一般通过POI来生成对应的Excel文件,绝大多数情况是需要手动编写单元格内容,然后顺序填充值,今天我们将动态根据实体来生成Excel表头,同时自动填充内容。 文章目录 1. 定义注解2. 实体类应用注解3. 动态导出工具类 1. 定义注解…...
【ISP算法精粹】什么是global tone mapping和local tone mapping?
1. 简介 全局色调映射(Global Tone Mapping)和局部色调映射(Local Tone Mapping)是高动态范围(HDR)图像处理中的两种关键技术,用于将高动态范围图像的亮度值映射到标准动态范围(LDR…...
uniapp生成的app,关于跟其他设备通信的支持和限制
以下内容通过AI生成,这里做一下记录。 蓝牙 移动应用(App)通过蓝牙与其他设备通信,是通过分层协作实现的。 一、通信架构分层 应用层(App) 调用操作系统提供的蓝牙API(如Android的BluetoothA…...
C++ Pimpl(Pointer to Implementation)设计思想
一、C Pimpl(Pointer to Implementation)设计思想 1. 核心思想 Pimpl(Pointer to Implementation)是一种通过将类的实现细节隐藏在一个私有指针背后的设计模式,旨在实现接口与实现的解耦。其核心思想是: …...
便捷的Office批量转PDF工具
软件介绍 本文介绍的软件是一款能实现Office批量转换的工具,名为五五Excel word批量转PDF。 软件小巧 这款五五Excel word批量转PDF软件大小不到2M。 操作步骤一 使用该软件时,只需把软件和需要转换的Word或Excel文件放在同一个文件夹里。 操作步骤…...
2025年渗透测试面试题总结-华顺信安[实习]安全服务工程师(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 华顺信安[实习]安全服务工程师 1. 自我介绍 2. 红蓝队经验 3. Shiro漏洞知识体系 4. APP渗透测试方法…...
Mermaid 使用快速入门
使用AI 生成Mermaid 代码,导入Vscode, 安装Mermaid Preview 插件 --- title: config:theme: forest --- graph TDA[开始] --> B{条件判断}B -->|是| C[执行操作1]B -->|否| D[执行操作2] theme可改变主题,可选主题: default - 这是…...
Windows系统下MySQL 8.4.5压缩包安装详细教程
一、MySQL 8.4.5新特性概览 相较于旧版本,MySQL 8.4.5在性能与功能上实现了显著提升: 性能优化:官方测试显示,在高并发场景下,其读写性能较5.7版本提升近2倍,尤其在处理热点数据竞争问题时表现更为出色。…...
机器学习10-随机森林
随机森林学习笔记 一、随机森林简介 随机森林(Random Forest)是一种集成学习算法,基于决策树构建模型。它通过组合多个决策树的结果来提高模型的准确性和稳定性。随机森林的核心思想是利用“集成”的方式,将多个弱学习器组合成一…...
【缺陷】GaN和AlN中的掺杂特性
1997 年 5 月 9 日,北卡罗来纳州立大学的 P. Bogusławski 和 J. Bernholc 等人在《Physical Review B》期刊发表了题为《Doping properties of C, Si, and Ge impurities in GaN and AlN》的文章,基于量子分子动力学方法,研究了碳(C)、硅(Si)和锗(Ge)杂质在氮化镓(G…...
游戏引擎学习第298天:改进排序键 - 第1部分
关于向玩家展示多个房间层所需的两种 Z 值 我们在前一天基本完成了为渲染系统引入分层 Z 值的工作,但还没有完全完成所有细节。我们开始引入图形渲染中的分层概念,即在 Z 轴方向上拥有多个独立图层,每个图层内部再使用一个单独的 Z 值来实现…...
AI大模型从0到1记录学习 大模型技术之数学基础 day26
高等数学 导数 导数的概念 导数(derivative)是微积分中的一个概念。函数在某一点的导数是指这个函数在这一点附近的变化率(即函数在这一点的切线斜率)。导数的本质是通过极限的概念对函数进行局部的线性逼近。 当函数f的自变量在…...
计算机视觉与深度学习 | matlab实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据)
以下是一个基于MATLAB的ARIMA-WOA-CNN-LSTM时间序列预测框架。由于完整代码较长,此处提供核心模块和实现思路,完整源码和数据可通过文末方式获取。 1. 数据准备(示例数据) 使用MATLAB内置的航空乘客数据集: % 加载数据 data = readtable(airline-passengers.csv); data …...
【C++】vector模拟实现
实现以下功能: 构造函数:a.无参默认构造 b.n个val构造 c.迭代器区间构造 d.initializer_list构造,类似于数组 e.拷贝构造 赋值重载 [ ]重载 实现reserve接口 实现size(),capacity()接口 实现push_bakc接口&#…...
门店管理五大痛点解析:如何用数字化系统实现高效运营
实体店竞争白热化,五大管理痛点正悄悄吞噬利润:客户资源流失、数据决策滞后、员工效率模糊、合同风险暗藏、利润核算混乱。本文直击核心问题,拆解数字化系统如何精准破局。 一、传统管理模式的五大核心痛点 1. 客户资源管理粗放化 老…...
双指针法高效解决「移除元素」问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 双指针法高效解决「移除元素」问题 双指针法高效解决「移除元素」问题一、问题描述二、解法解析:双指针法1. 核心思想2. 算法步骤3. 执行过程示例 三、关键点分析…...
【Linux笔记】——线程同步信号量与环形队列生产者消费者模型的实现(PV操作)
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux笔记】——线程同步条件变量与生产者消费者模型的实现 🔖流水不争,争的是滔滔不…...