当前位置: 首页 > news >正文

软件工程中数据一致性的探讨

软件工程中数据一致性的探讨

  • 引言
  • 数据一致性:软件工程中的业务正确性与性能的权衡
  • 数据一致性为何重要
    • 业务正确性:事务的原子性与一致性
    • ACID原则的基石
    • 分布式事务的挑战
    • 一致性级别:从强一致到最终一致
  • 实践中的一致性权衡
    • 金融系统:强一致优先
    • 社交网络:最终一致优先
    • 电商系统:混合策略
  • 现代分布式系统的创新方案
    • Google Spanner:全球强一致
    • 事件溯源(Event Sourcing)
    • 共识算法的演进
  • 总结与建议

引言

软件工程中,常常涉及数据一致性这个概念。刚接触这个概念的时候,脑中的最初理解就是“两个对象/数据保持一样,或者一个对象/数据前后要保持一样”。

带着这样的理解来认识关系型数据库事务四大特性ACID中的"C": 指事务执行结束后,数据库的完整性约束没有被破坏,事务执行的前后都是合法的数据状态。便有不知所云之感。

随着工作经验的累积,渐渐对数据一致性产生了两个方面的理解:
一是业务正确性,例如甲向乙转账100,甲的账户必须减少100,乙的账户必须增加100,保证数据的一致,也就是业务正确性(业务完整性),这一点是基于事务的原子性的。
二是强一致和弱一致性,如果甲向乙转账100,乙在极端时间间隔内收到,这是强一致性,时间间隔越短,强度越大。时间间隔越大,强度越低,便是弱一致性。
关系型数据库中的ACID的一致性应该指的是强一致性。

根据以上理解,结合AI和网络进一步细化并补充一些关键概念,结合真实案例和现代分布式系统设计,探讨数据一致性的核心逻辑、技术实现及实践权衡。


数据一致性:软件工程中的业务正确性与性能的权衡

在数字化时代,数据是系统的血液。无论是银行转账、电商购物,还是社交媒体的点赞互动,每一次操作背后都是数据在流动。然而,数据流动并非总是一帆风顺——数据一致性问题就像暗流,若处理不当,轻则用户体验受损,重则引发资金损失甚至法律纠纷。


数据一致性为何重要

想象这样一个场景:用户A向用户B转账100元,系统提示“转账成功”,但用户B的账户余额并未变化。此时用户A的信任会瞬间崩塌,而系统背后的技术团队可能需要通宵排查问题。

这类问题的本质是数据一致性的缺失:

  1. 业务正确性:转账操作必须保证A扣款和B收款同时生效(原子性),且总金额守恒(一致性)。
  2. 一致性级别:用户是否需要“立即”看到结果(强一致性),还是允许短暂延迟(弱一致性)。

业务正确性:事务的原子性与一致性

ACID原则的基石

在单机数据库中,事务通过ACID特性保证业务正确性:

  • 原子性(Atomicity):事务中的操作要么全部成功,要么全部失败(例如转账的扣款和收款必须同时生效)。
  • 一致性(Consistency):事务执行后,数据必须满足预定义的业务规则(例如转账后总金额不变)。

代码示例(MySQL事务):

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 'A';
UPDATE accounts SET balance = balance + 100 WHERE user_id = 'B';
COMMIT;

如果执行过程中发生错误(如A余额不足),事务将回滚(ROLLBACK),保证原子性。

分布式事务的挑战

在微服务架构中,扣款服务和收款服务可能属于不同的数据库,传统单机事务不再适用。此时需引入分布式事务方案:

  • 2PC(两阶段提交):协调者(Coordinator)分两阶段询问参与者(Participant)是否可提交,全部同意后提交。
    缺点:同步阻塞、协调者单点故障。
  • Saga模式:将事务拆分为多个本地事务,通过补偿操作回滚(例如先扣款,失败后调用补偿接口退款)。
  • TCC(Try-Confirm-Cancel):分三阶段实现(Try预留资源,Confirm提交,Cancel释放资源)。

适用场景:

  • 2PC适合一致性要求极高的金融场景(如银行核心系统)。
  • Saga适合长事务(如电商订单的创建、支付、物流)。

一致性级别:从强一致到最终一致

  1. 强一致性(Strong Consistency)
    定义:写入后,所有后续读操作都能立即读到最新值。
    实现技术:
  • 同步复制:主库写入后需等待所有从库确认(如ZooKeeper)。
  • 分布式锁:通过Redis RedLock或etcd保证全局互斥访问。

代价:

  • 高延迟:跨节点同步增加响应时间。
  • 低可用性:网络分区时可能无法写入(CAP定理中的CP系统)。

案例:

  • 支付宝余额变动需强一致,用户无法接受余额更新延迟,12306购票时库存扣减必须强一致,避免超卖。
  1. 最终一致性/弱一致性(Eventual Consistency/Weak Consistency)
    定义:允许数据在一段时间内不一致,但最终趋于一致。
    常见子类型:
  • 读写一致性(Read-Your-Writes):用户能立即读到自己的写入(如朋友圈发帖后自己可见)。
  • 因果一致性(Causal Consistency):有因果关系的事件需按顺序可见(如先发帖后评论)。

实现技术:

  • 异步复制:主库写入后异步同步到从库(如MySQL Binlog)。
  • 冲突解决:使用CRDT(无冲突复制数据类型)或时间戳合并冲突。

代价:

  • 短暂不一致:用户可能看到旧数据(如商品详情页的库存显示)(CAP定理中的AP系统)。

案例:

  • 微博的点赞数统计允许短暂不一致,优先保障高并发性能。
  • 电商商品详情页的浏览量统计通常采用最终一致。

实践中的一致性权衡

金融系统:强一致优先

  • 需求:转账、支付等操作必须实时一致。
  • 技术方案:
    • 基于Raft/Paxos的分布式数据库(如TiDB)。
    • 使用TCC模式实现跨服务事务。

社交网络:最终一致优先

  • 需求:点赞、评论等操作可容忍短暂延迟。
  • 技术方案:
    • Redis缓存计数,异步批量落库。
    • 消息队列(如Kafka)解耦写入与处理逻辑。

电商系统:混合策略

  • 核心数据强一致:订单状态、支付结果。
  • 非核心数据最终一致:商品浏览量、用户行为日志。

现代分布式系统的创新方案

Google Spanner:全球强一致

  • 核心技术:
    • 通过原子钟和GPS实现TrueTime API,精确同步全球节点时间。
    • 基于Paxos协议实现跨地域数据复制。

事件溯源(Event Sourcing)

  • 核心思想:记录事件流(如“用户A转账100元给用户B”),而非最终状态。
  • 架构实现:
    • 使用Kafka存储事件流。
    • 通过CQRS(命令查询职责分离)重建数据视图。
      适用场景:审计追踪、对账系统(如区块链交易记录)。

共识算法的演进

  • Raft:以易理解性著称,用于etcd、Consul等系统。
  • Paxos:理论完备但实现复杂,是分布式一致性的理论基础。

总结与建议

数据一致性是系统设计的永恒课题:

  1. 正确性优先:金融、政务等场景必须强一致,通过分布式事务和共识算法保障。
  2. 性能优先:高并发场景(如社交、电商)可接受最终一致,通过异步化和缓存提升吞吐。
  3. 兜底机制:监控、日志审计、定期对账是最后防线。

开发中需要考虑:

  • 在需求阶段明确一致性要求(SLA)。
  • 避免过度设计,优先满足业务核心需求。
  • 通过混沌工程(Chaos Engineering)测试系统的一致性容错能力。

在技术的天平上,数据一致性是砝码,而业务需求是刻度。唯有理解其本质,方能在正确性与性能的博弈中找到最优解。

愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!

相关文章:

软件工程中数据一致性的探讨

软件工程中数据一致性的探讨 引言数据一致性:软件工程中的业务正确性与性能的权衡数据一致性为何重要业务正确性:事务的原子性与一致性ACID原则的基石分布式事务的挑战一致性级别:从强一致到最终一致 实践中的一致性权衡金融系统:…...

在服务器上安装redis

1.安装所需插件gcc 查看gcc版本 gcc -v 没有安装的话,安装命令如下 yum -y install gcc 2.安装 下载安装包 https://download.redis.io/releases/ 将安装包上传到/opt/software目录下 解压安装包 cd /opt/software tar -zxvf redis-6.2.6.tar.gz 编译并安装redis到指…...

如何选择适合您的过程控制器?

在现代工业中,过程控制器是确保生产效率、质量和安全性的关键设备。它们可以精准监测温度、湿度等变量,优化制造流程,减少人工干预,从而降低错误率和运营成本。但您是否清楚,哪种过程控制器更适合您的企业?…...

C#/.NET/.NET Core拾遗补漏合集(25年4月更新)

前言 在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。 ✍C#/.NET/.N…...

闲来无事,用HTML+CSS+JS打造一个84键机械键盘模拟器

今天闲来无聊,突发奇想要用前端技术模拟一个机械键盘。说干就干,花了点时间搞出来了这么一个有模有样的84键机械键盘模拟器。来看看效果吧! 升级版的模拟器 屏幕录制 2025-04-18 155308 是不是挺像那么回事的?哈哈! 它…...

极狐GitLab 项目导入导出设置介绍?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 导入导出设置 (BASIC SELF) 导入和导出相关功能的设置。 配置允许的导入源 在从其他系统导入项目之前,必须为该…...

极狐GitLab 项目 API 的速率限制如何设置?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 项目 API 的速率限制 (BASIC SELF) 引入于 15.10 版本,功能标志为rate_limit_for_unauthenticated_projects_api_…...

electron 渲染进程按钮创建新window,报BrowserWindow is not a constructor错误;

在 Electron 中,有主进程和渲染进程 主进程:在Node.js环境中运行—意味着能够使用require模块并使用所有Node.js API 渲染进程:每个electron应用都会为每个打开的BrowserWindow(与每个网页嵌入)生成一个单独的渲染器进…...

【前沿】成像“跨界”测量——扫焦光场成像

01 背景 眼睛是人类认识世界的重要“窗口”,而相机作为眼睛的“延伸”,已经成为生产生活中最常见的工具之一,广泛应用于工业检测、医疗诊断与影音娱乐等领域。传统相机通常以“所见即所得”的方式记录场景,传感器捕捉到的二维图像…...

基于C++(MFC)图形编辑界面工具

MFC 图形编辑界面工具 一、背景 喔,五天的实训终于结束了,学校安排的这次实训课名称叫高级程序设计实训,但在我看来,主要是学习了 Visual C .NET 所提供的 MFC(Microsoft Foundation Class)库所提供的类及其功能函数…...

Linux网络通信核心机制解析与层级架构探秘

作为现代操作系统的神经网络,Linux网络通信系统通过多层协作架构实现高效的数据传输机制。本文将从模块化设计、报文处理路径、核心组件交互等多个维度,解析Linux网络通信系统的实现原理与优化策略,并结合内核源码示例与性能调优实践&#xf…...

Tensorflow实现用接口调用模型训练和停止训练功能

语言:Python 框架:Flask、Tensorflow 功能描述:存在两个接口,一个接口实现开始训练模型的功能,一个接口实现停止训练的功能。 实现:用一个全局变量存储在训练中的模型。 # 存储所有训练任务 training_task…...

HTTP测试智能化升级:动态变量管理实战与效能跃迁

在Web应用、API接口测试等领域,测试场景的动态性和复杂性对测试数据的灵活管理提出了极高要求。传统的静态测试数据难以满足多用户并发、参数化请求及响应内容验证等需求。例如,在电商系统性能测试中,若无法动态生成用户ID、订单号或实时提取…...

PyTorch 浮点数精度全景:从 float16/bfloat16 到 float64 及混合精度实战

PyTorch 在深度学习中提供了多种 IEEE 754 二进制浮点格式的支持,包括半精度(float16)、Brain‑float(bfloat16)、单精度(float32)和双精度(float64),并通过统…...

《软件设计师》复习笔记(14.2)——统一建模语言UML、事务关系图

目录 1. UML概述 2. UML构造块 (1) 事物(Things) (2) 关系(Relationships) 真题示例: 3. UML图分类 (1) 结构图(静态) (2) 行为图(动态) 4. 核心UML图详解 5.…...

基于C++(MFC)的细胞识别程序

基于 mfc 的细胞识别程序 一、图像处理课程设计目标 1.1 课题与技术指标 课题:利用图像处理技术设计细胞识别程序。 技术指标: 实验 VS2019 MFC 开发平台待识别图像为 24bit 的真彩色细胞图像进行处理要求识别出细胞,并且保证准确度情况下…...

【前端HTML生成二维码——MQ】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前端HTML生成二维码——MQ 前言本文将介绍前端HTML如何更具用户输入的内容生成对应的二维码,附页面代码、实现函数、js脚本。一、自定义显示页面1、效果图二、使用步骤1、引入库2、实现函数3、页面及函数代…...

Spring Boot自动配置原理深度解析:从条件注解到spring.factories

大家好!今天我们来深入探讨Spring Boot最神奇的特性之一——自动配置(Auto-configuration)。这个功能让Spring Boot如此受欢迎,因为它大大简化了我们的开发工作。让我们一起来揭开它的神秘面纱吧!👀 🌟 什么是自动配置…...

【unity实战】Animator启用root motion根运动动画,实现完美的动画动作匹配

文章目录 前言1、动画分类2、如何使用根位移动画? 一、根位移动画的具体使用1、导入人形模型2、导入动画3、配置动画参数4、配置角色Animator动画状态机5、使用代码控制人物前进后退 二、问题分析三、Humanoid动画中的Root Motion机制及相关配置1、Humanoid动画中的…...

(51单片机)LCD显示数据存储(DS1302时钟模块教学)(LCD1602教程)(独立按键教程)(延时函数教程)(I2C总线认识)(AT24C02认识)

目录 演示视频: 源代码 main.c LCD1602.c LCD1602.h AT24C02.c AT24C02.h Key.c Key.h I2C.c I2C.h Delay.c Delay.h 代码解析与教程: Dealy模块 LCD1602模块 Key模块 I2C总线模块 AT24C02模块 /E2PROM模块 main模块 演示视频: &…...

2d深度预测

Depth anything v1 相对深度估计,要用绝对深度估计需要微调 概要: 1 使用大量的未标注图像信息 2 采用优化策略—数据增强工具(作用在未标注图像) 3 进行辅助监督—继承语义分割知识(作用在未标注图像) 数据层面: …...

Android12 ServiceManager::addService源码解读

源码 Status ServiceManager::addService(const std::string& name, const sp<IBinder>& binder, bool allowIsolated, int32_t dumpPriority) {auto ctx mAccess->getCallingContext();// apps cannot add servicesif (multiuser_get_app_id(ctx.uid) >…...

【HDFS入门】HDFS性能调优实战:从基准测试到优化策略

目录 引言 1 HDFS性能评估体系 1.1 性能评估体系架构 1.2 基准测试工具对比 2 TestDFSIO基准测试实战 2.1 TestDFSIO工作原理 2.2 测试执行步骤 2.3 结果分析指标 3 TeraSort基准测试实战 3.1 TeraSort测试流程 3.2 测试执行命令 3.3 关键性能指标 4 HDFS性能调优…...

Linux 内核开发/测试工具对比 Windows 驱动验证工具 (Driver Verifier)

Windows 的 Driver Verifier 是一个用于测试和验证驱动程序的强大工具。在 Linux 内核开发中&#xff0c;虽然没有一个完全等价的单一工具&#xff0c;但有多种工具和框架可以提供类似或更专业的功能。 Linux 内核开发和测试工具 1. KASAN (Kernel Address Sanitizer) 功能&…...

通信算法之269 : OFDM信号的循环自相关特性用于无人机图传信号识别

OFDM信号的循环自相关特性是其循环平稳性的核心体现,如下: [相关仿真代码,联系,提供] 一、循环自相关特性来源 ‌循环前缀引入周期性‌ OFDM符号通过添加循环前缀(CP)形成符号周期结构,导致信号具有循环平稳性‌26。每个符号的CP与尾部数据重复,在时延等于FFT长度(N…...

【无人机】电子速度控制器 (ESC) 驱动电机,常见的电调协议,PWM协议,Oneshot协议,DShot协议

目录 1、ESCs & 电机 #1.1、ESC 协议 --ESC Protocols #1.1.1、PWM协议&#xff0c;需要校准 #1.1.2、One Shot 125协议&#xff0c;速率更快 #1.1.3、DShot &#xff0c;减少延迟&#xff0c;无需校准 #1.1.4、无人机CAN 2、PWM 伺服系统和 ESC&#xff08;电机控…...

LeadeRobot具身智能应用标杆:无人机X柔韧具身智能,空中精准作业游刃有余

当前,具身智能已成为全球科技领域的前沿焦点,更受到国家战略级重视,吸引科技产业巨头抢滩布局。但同时,具身智能的商业化路径、规模化应用场景、技术成本等难题也开始在资本界与产业圈引起广泛讨论。 目前,万勋科技基于Pliabot 柔韧技术已推出多款具身智能柔韧机器人产品,在柔…...

WebSocket:实现实时双向通信的技术

WebSocket是一种网络通信协议&#xff0c;它在单个TCP连接上提供全双工通信。WebSocket协议在2011年被IETF&#xff08;互联网工程任务组&#xff09;标准化为RFC 6455&#xff0c;并由W3C&#xff08;万维网联盟&#xff09;制定了WebSocket API标准&#xff0c;使得客户端&am…...

探索 HumanoidBench:类人机器人学习的新平台

在科技飞速发展的当下&#xff0c;类人机器人逐渐走进我们的视野&#xff0c;它们有着和人类相似的外形&#xff0c;看起来能像人类一样在各种环境里完成复杂任务&#xff0c;潜力巨大。但实际上&#xff0c;让类人机器人真正发挥出实力&#xff0c;还面临着重重挑战。 这篇文…...

「数据可视化 D3系列」入门第十一章:力导向图深度解析与实现

D3.js 力导向图深度解析与实现 力导向图核心概念 力导向图是一种通过物理模拟来展示复杂关系网络的图表类型&#xff0c;特别适合表现社交网络、知识图谱、系统拓扑等关系型数据。其核心原理是通过模拟粒子间的物理作用力&#xff08;电荷斥力、弹簧引力等&#xff09;自动计…...

「数据可视化 D3系列」入门第八章:动画效果详解(让图表动起来)

动画效果详解 一、D3.js动画核心API1. d3.transition()2. transition.duration()3. transition.delay()4. 其他重要API 二、动画实现原理三、完整动画示例解析1. 柱状图生长动画2. 文本跟随动画 四、动画效果优化技巧1. 缓动函数选择&#xff1a;2. 组合动画&#xff1a;3. 动画…...

index: 自动化浏览器智能体

GitHub&#xff1a;https://github.com/lmnr-ai/index 更多AI开源软件&#xff1a;https://www.aiinn.cn/ 在做浏览器自动化脚本时&#xff0c;我们常常需要编写大量代码来处理复杂的网页交互&#xff0c;不仅耗时耗力&#xff0c;还难以调试和优化&#xff0c;要是出错更是难以…...

网页端调用本地应用打开本地文件(PDF、Word、excel、PPT)

一、背景原因 根据浏览器的安全策略&#xff0c;在网页端无法直接打开本地文件&#xff0c;所以需要开发者曲线救国。 二、实现步骤 前期准备&#xff1a; 确保已安装好可以打开文件的应用软件&#xff0c;如&#xff0c;WPS&#xff1b; 把要打开的文件统一放在一个文件夹&am…...

如何批量在多个 Word 文档末尾添加广告页面

Word是我们日常使用非常频繁的文档编辑软件&#xff0c;凭借其强大的文本处理功能&#xff0c;如文字输入、格式设置、段落排版、图片插入等&#xff0c;可以帮助我们轻松创建专业且美观的文档。不过呢当我们需要将这些文档分享给他人时&#xff0c;往往需要在每个文档的末尾添…...

JavaScript原生实现简单虚拟列表

旧笔记&#xff0c;最近使用时做了点新优化&#xff0c;之前只发在了个人博客上 地址&#xff1a;JavaScript原生实现简单虚拟列表 背景 在公司项目中&#xff0c;需要给商品配置大量的属性值&#xff0c;可能其中一个属性的值数量就有成百上千条。 一个商品会有很多属性&…...

安心联车辆管理平台应用前景分析

安心联车辆管理平台凭借其技术创新与行业适配能力&#xff0c;展现出广阔的应用前景。以下从技术驱动、行业覆盖、实际效益、市场策略及未来潜力五个维度进行分析&#xff1a; 一、技术驱动的核心竞争力 高精度定位与多传感器融合 安心联采用北斗/GPS双模定位技术&#xff0c;实…...

力扣每日打卡 2176. 统计数组中相等且可以被整除的数对(简单)

力扣 2176. 统计数组中相等且可以被整除的数对 简单 前言一、题目内容二、解题方法1. 暴力解法2.官方题解官方也是暴力解法 前言 这是刷算法题的第十三天&#xff0c;用到的语言是JS 题目&#xff1a;力扣 2176. 统计数组中相等且可以被整除的数对(简单) 一、题目内容 给你一…...

OpenStack Yoga版安装笔记(22)Swift笔记20250418

一、官方文档 https://docs.openstack.org/swift/yoga/admin/objectstorage-components.html#https://docs.openstack.org/swift/yoga/admin/objectstorage-components.html# 二、对象存储简介&#xff08;Introduction to Object Storage&#xff09; OpenStack 对象存储&a…...

Linux 线程互斥

目录 Linux线程互斥 进程线程间的互斥相关背景概念 互斥量的接口 初始化互斥量 互斥量加锁和解锁 锁的封装 ​编辑 互斥量加锁的非阻塞版本 互斥量实现原理探究 可重入VS线程安全 概念 常见的线程不安全的情况 常见的线程安全的情况 常见的不可重入的情况 常见的…...

webgl入门实例-12WebGL 投影矩阵 (Projection Matrix)基本概念

WebGL 投影矩阵 (Projection Matrix) 投影矩阵是将3D场景从视图空间(相机空间)转换到裁剪空间的关键矩阵&#xff0c;它决定了3D物体如何投影到2D屏幕上。 投影矩阵的作用 定义3D空间到2D平面的映射方式确定视景体(view frustum)的形状和范围实现透视效果(近大远小)或正交投…...

《实战AI智能体》——邮件转工单的AI自动化

💡 为什么使用 邮件转工单(AI自动化)模板 想象一下,您的邮箱像是一个繁忙的宇宙港口,每封邮件都是一艘载着信息的飞船。当这些飞船抵达时,我们的自动化系统就像是一位高效的宇宙调度员,迅速将每艘飞船(邮件)转化为一艘艘探索号(工单),并为它们分配勇敢的宇航员(…...

YOLOv8 Bug 及解决方案汇总 【2024.1.24更新】【环境安装】【训练 断点续训】OMPError / KeyError

YOLOv8 Bug 及解决方案汇总&#xff1a;深入解析与应对 引言 YOLOv8作为一款高性能的目标检测算法&#xff0c;在实际应用中难免会遇到各种各样的问题。本文将对YOLOv8常见的Bug进行汇总&#xff0c;并提供相应的解决方案&#xff0c;旨在帮助开发者更好地使用和优化YOLOv8。…...

健康养生:开启活力生活新篇章

在当代社会&#xff0c;熬夜加班、久坐不动、外卖快餐成为许多人的生活常态&#xff0c;随之而来的是各种亚健康问题。想要摆脱身体的疲惫与不适&#xff0c;健康养生迫在眉睫&#xff0c;它是重获活力、拥抱美好生活的关键。​ 应对不良饮食习惯带来的健康隐患&#xff0c;饮…...

Yocto项目实战教程 · 第4章:4.3小节-层

&#x1f50d; B站相应的视频教程&#xff1a; &#x1f4cc; Yocto项目实战教程-第4章-4.3小节-层 记得三连&#xff0c;标为原始粉丝。 在 Yocto 项目中&#xff0c;元数据&#xff08;Metadata&#xff09;不仅是构建系统的核心驱动力&#xff0c;更是实现高度定制化、可移植…...

小红书爬虫,小红书api,小红书数据挖掘

背景&#xff1a; 小红书&#xff08;Xiaohongshu&#xff09;是一款结合社交、购物和内容分享的移动应用&#xff0c;近年来在中国以及全球范围内拥有大量的用户群体。小红书上的内容包括用户的消费体验、生活方式、旅行分享、时尚搭配等。通过这些内容&#xff0c;用户可以了…...

选择 iOS 按键精灵无根有根越狱辅助工具的理由

节省成本​ 使用 iOS 按键精灵&#xff0c;每台设备可为你减少 5 - 10 元的签名成本。对于需要使用大量脚本或者多设备操作的用户来说&#xff0c;长期下来能够节省一笔可观的费用。​ 不断更新优化​ 按键精灵团队始终致力于产品的更新与优化。新版本不断增加新功能&#x…...

电脑里的AI帮手:Open Interpreter智能助手食用指南

Open Interpreter简介如下&#xff1a; interpreter是一个使用python开发的命令行工具&#xff0c;可以让你在终端中使用类似AI对话的方式&#xff0c;只需简单输入指令要求&#xff0c;即可自动编写程序、执行代码&#xff0c;实现各种自动化操作interpreter有自动检测输出结…...

Windows软件界面分析软件-控件识别工具

Inspect.exe 这是微软提供的一款 UI 自动化检查工具&#xff0c;主要用于开发和测试应用程序的辅助功能&#xff08;Accessibility&#xff09;及 UI 自动化。 主要功能&#xff1a; 查看界面元素的属性&#xff08;如名称、角色、状态、位置等&#xff09;。 支持 UIA&…...

iOS 冷启动时间监控:启动起点有哪些选择?

⏱️ iOS 冷启动时间监控&#xff1a;启动起点有哪些选择&#xff1f; 作者&#xff1a;侯仕奇 来源&#xff1a;sqi.io 在监控 iOS 冷启动性能时&#xff0c;一个关键问题是&#xff1a;如何精确记录 App 冷启动的开始时间&#xff1f; 本文将对不同的“冷启动起点”监控方式…...

MacOS怎么显示隐藏文件

现象描述&#xff1a; 有些文件比如git的配置文件会作为隐藏文件存在。 Mac os默认是不显示隐藏文件的。 但是很多场合下我们需要查看或者编辑这些隐藏文件。 解决方法&#xff1a; 如下图所示&#xff0c;在Finder中使用Shift⇧Command⌘.快捷键 显示和隐藏都是同样的按…...