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

redis--持久化

redis持久化

在 Redis 中,持久化是一种将数据从内存写入到磁盘的机制,以便在服务器重启或崩溃时能够恢复数据。Redis 提供了两种主要的持久化方式:RDB(Redis Database Snapshot)和AOF(Append-Only File)。

RDB

RDB是Redis的一种持久化方式,用于将内存中的数据保存到硬盘,以防止数据在重启时丢失。它通过在指定的时间间隔内创建一个数据集的快照(或者快照文件),将其保存到磁盘上的二进制文件中。RDB持久化的主要目标是提供一种紧凑、高效、可靠的数据备份和恢复方式。

RDB 持久化流程

  1. 生成快照触发
    手动触发: 可以使用SAVE或BGSAVE命令手动触发RDB快照生成。

    • SAVE命令:阻塞主线程,直到快照生成完成,期间Redis无法响应其他请求,不推荐使用。
    • BGSAVE命令:在后台异步生成快照,不阻塞其他操作,更常用。
      自动触发: 可以通过配置文件自动设置生成快照的时间间隔和阈值,当满足条件时自动触发生成快照。
  2. 生成快照过程
    在如BGSAVE命令触发时,Redis会创建一个子进程(fork),该子进程将负责生成快照。子进程将内存中的数据复制到一个临时文件(临时RDB文件)中,以保证不干扰主进程的正常操作。

  3. 快照文件替换:
    子进程完成快照生成后,快照文件会被重命名并替换上次生成的持久化文件。新生成的快照文件(dump.rdb)将备份在redis.conf中dir 配置项所指定的目录。如果默认开启了rdb,加载是也是从该路径加载快照文件,可以在redis.conf中修改dir路径。

  4. 数据恢复
    使用备份的快照文件替换现有的RDB文件,当Redis服务器需要恢复数据时(比如重启后),它会加载最新的RDB文件。

RDB 持久化优缺点

RDB 持久化方式有以下几个优点:

  • RDB 文件是一个紧凑且完整的数据集备份,可以用于灾难恢复或迁移。
  • RDB 文件是一个二进制文件,加载速度比 AOF 文件更快。
  • RDB 文件占用更少的磁盘空间,因为它只保存当前数据库状态,并且使用了压缩算法。
  • RDB 文件对服务器性能影响较小,因为它只需要 fork 一个子进程来生成快照,并且不需要频繁地写入磁盘。

RDB 持久化方式也有以下几个缺点:

  • RDB 文件不能保证数据完全不丢失,在两次生成快照之间发生故障时,可能会导致部分数据丢失。
  • RDB 文件生成需要 fork 一个子进程,这会消耗一定的内存和CPU资源,如果数据集很大,可能会影响服务器的响应速度。
  • RDB 文件恢复时,需要清空内存中的数据,然后重新加载 RDB 文件,这会导致服务器在一段时间内无法提供服务。

RDB 持久化适用场景

RDB 持久化方式适用于以下场景:

  1. 数据的完整性要求不高,可以容忍一定程度的数据丢失。
  2. 数据集较小,生成快照的时间和资源消耗较低。
  3. 数据备份和恢复的频率较低,不需要实时地同步数据。

AOF

AOF是 Redis 提供的一种持久化机制,用于将写操作追加到一个日志文件中,以便在服务器重启或崩溃时能够恢复数据。AOF 持久化方式记录了所有写操作命令,因此可以更可靠地保护数据。AOF 和 RDB 同时开启,系统默认取 AOF 的数据(数据不会存在丢失)。

AOF 持久化的生成流程

默认情况下,AOF持久化是关闭的,可以通过修改redis.conf文件中的appendonly参数来开启或关闭AOF持久化。开启后,服务器会在启动时加载AOF文件,并在每次执行写命令后将命令追加到AOF文件中。

命令追加: 当客户端发送写操作命令(例如 SET、INCRBY 等)给 Redis 服务器时,这些写操作命令会被追加到 AOF 文件中,以 Redis 命令的形式。

追加顺序: 写操作命令按照它们发生的顺序被追加到 AOF 文件的末尾。这确保了写操作的顺序性。

同步选项: Redis 提供了不同的同步策略来将写操作命令同步到磁盘上的 AOF 文件。可以使用 always(始终同步)、everysec (每秒同步)或 no(不主动进行同步) 来设置同步频率。

重写机制: 为了避免 AOF 文件变得过大,Redis 提供了 AOF 重写机制。AOF 重写可以生成一个新的 AOF 文件,其中只包含与当前数据库状态一致的写操作命令。这个过程可以通过执行 BGREWRITEAOF 命令手动触发,也可以根据配置自动触发。

AOF 恢复流程

启动 Redis: 当 Redis 服务器启动时,它会检查是否启用了 AOF 持久化,如果启用了,则尝试加载 AOF 文件。

AOF 文件加载: Redis 会将 AOF 文件中的写操作命令逐一执行,以恢复数据库的状态。这个过程可以保证数据的完整性。

执行顺序: AOF 文件中的写操作命令会按照它们在 AOF 文件中的顺序被执行,确保了写操作的顺序性。

AOF重写原理

AOF重写的原理是根据Redis进程内的数据生成一个新的AOF文件,只包含当前有效和存在的数据的写入命令,而不是历史上所有的写入命令。这样可以减少AOF文件的大小,提高数据恢复的速度,以及节省磁盘空间。

AOF重写是通过fork出一个子进程来完成的,子进程会扫描Redis的数据库,并将每个键值对转换为相应的写入命令,然后写入到一个临时文件中。例如,如果一个列表键包含了五个元素,那么子进程会将这五个元素合并为一条LPUSH命令,而不是保留原来的五条RPUSH命令。这样可以有效地压缩AOF文件的内容。

在子进程进行AOF重写的过程中,主进程会继续处理客户端的请求,并将执行过的写命令追加到旧的AOF文件和一个缓冲区中。当子进程完成AOF重写后,它会向主进程发送一个信号,主进程收到信号后会将缓冲区中的写命令追加到临时文件中,然后用临时文件替换旧的AOF文件,完成AOF重写。

AOF重写可以手动触发,也可以自动触发。手动触发可以通过执行bgrewriteaof命令来实现。自动触发可以通过设置redis.conf文件中的auto-aof-rewrite-percentage和auto-aof-rewrite-min-size参数来实现。当AOF文件的大小比上一次重写后的大小增长了一定百分比,并且超过了一定字节数时,就会自动触发AOF重写。

AOF 持久化优缺点

AOF 持久化方式有以下几个优点:

  • AOF 文件可以保证数据不丢失,即使服务器发生故障,也可以通过重放 AOF 文件中的命令来恢复数据。
  • AOF 文件是一个纯文本文件,每一行记录了一个 Redis 写命令,格式简单易懂,便于人工查看和编辑。
  • AOF 文件可以通过重写机制来减少文件大小,并且可以根据配置自动触发重写。
  • AOF 文件对服务器性能影响较小,因为它可以根据需要设置不同的同步策略,并且不需要fork一个子进程来生成快照。

AOF 持久化方式也有以下几个缺点:

  • AOF 文件可能会比 RDB 文件更大,因为它记录了所有的写操作命令,而不是只保存当前的数据状态。
  • AOF 文件加载速度比 RDB 文件更慢,因为它需要逐一执行 AOF 文件中的命令,而不是直接加载二进制文件。
  • AOF 文件可能会出现损坏或不完整的情况,如果在写入或同步过程中发生故障,可能会导致部分命令丢失或格式错误。为了避免这种情况,可以使用 redis-check-aof 工具来检查和修复 AOF 文件。

AOF 持久化适用场景

AOF 持久化方式适用于以下场景:

  1. 数据的完整性要求很高,不能容忍任何程度的数据丢失。
  2. 数据集较大,生成快照的时间和资源消耗较高。
  3. 数据备份和恢复的频率较高,需要实时地同步数据。

RDB 和 AOF 的选择

RDB 和 AOF 是两种不同的持久化方式,它们各有优缺点和适用场景。在实际应用中,我们可以根据具体的业务需求和场景来选择合适的持久化方式。

以下是一些常见的选择原则:

  • 如果数据的完整性要求很高,不能容忍任何程度的数据丢失,那么可以选择 AOF 持久化方式,并且设置 always 或 everysec 的同步策略。
  • 如果数据的完整性要求不高,可以容忍一定程度的数据丢失,那么可以选择 RDB 持久化方式,并且设置合理的生成快照的时间间隔和阈值。
  • 如果既想要保证数据的完整性,又想要提高数据恢复的速度,那么可以同时开启 RDB 和 AOF 持久化方式,并且设置 everysec 的同步策略。这样,在正常情况下,可以通过重放 AOF 文件来恢复数据;在异常情况下(比如 AOF 文件损坏或不完整),可以通过加载 RDB 文件来恢复数据。
  • 如果想要提高服务器性能和降低资源消耗,那么可以关闭持久化功能,并且定期将数据备份到其他存储介质上。这样,在服务器发生故障时,可以通过手动恢复数据。

相关文章:

redis--持久化

redis持久化 在 Redis 中,持久化是一种将数据从内存写入到磁盘的机制,以便在服务器重启或崩溃时能够恢复数据。Redis 提供了两种主要的持久化方式:RDB(Redis Database Snapshot)和AOF(Append-Only File&am…...

管理外部表

官方文档地址:Managing Tables 关于外部表 Oracle 数据库允许您对外部表中的数据进行只读访问。外部表定义为不驻留在数据库中的表,通过向数据库提供描述外部表的元数据,数据库能够公开外部表中的数据,就好像它是驻留在常规数据…...

数字图像处理-AWB跳变

1、自动白平衡(AWB)算法是相机中常用的图像处理技术,它能够自动调整图像中的白平衡,使得图像中的颜色更加真实、自然。然而,在实际应用中,AWB算法也存在着一些问题,例如AWB跳变(Whit…...

DNNGP、DeepGS 和 DLGWAS模型构成对比

一、DNNGP DNNGP 是基于深度卷积神经网络,这个结构包括一个输入层,三个卷积层,一个批标准化层,两个dropout层,一个平坦化层,一个 dense层。 dropout层:在神经网络中,dropout层是一个非常有效的正…...

postgresSQL 配置文件设置

postgres.conf 是 PostgreSQL 数据库的主要配置文件,其中包含了许多关于数据库行为的设置。以下是一些常见的配置项: listen_addresses: 这个参数定义了 PostgreSQL 服务监听的网络地址。默认值是 ‘localhost’,这意味着只有本机的客户端才能…...

【bug】Unity无法创建项目

bug UnityHub无法创建项目 UnityHub无法创建项目 出现的问题:在创建新项目时弹出来一个 无法创建项目 尝试的方法: 刷新许可证 ❌没用退出账号重新登陆 ❌没用重启电脑 ❌没用 最后发现是什么问题呢? 2021.3.3这个版本我之前在资源管理器中…...

跨境外贸业务,选择动态IP还是静态IP?

在跨境业务中,代理IP是一个关键工具。它们提供了匿名的盾牌,有助于克服网络服务器针对数据提取设置的限制。无论你是需要经营管理跨境电商店铺、社交平台广告投放,还是独立站SEO优化,代理IP都可以让你的业务程度更加丝滑&#xff…...

Hlang社区-社区导航栏实现

文章目录 前言项目结构导航实现创作中心移动小球消息提示完整代码前言 okey,这里的话是我们社区导航栏的实现: 废话不多说,看看效果: 我甚至为此用New Bing生成了一个Logo。 项目结构 废话不多说,先来看到我们的项目结构: 在这里导航栏是一个组件。 在App.vue里面直…...

Kestrel和ISS服务器下的配置

一、Kestrel服务器 Kestrel是ASP.NET Core框架中的一个跨平台的Web服务器。它是ASP.NET Core应用程序默认的HTTP服务器,并且可作为独立的Web服务器来托管ASP.NET Core应用程序。 Kestrel具有以下特点和功能 1、跨平台 Kestrel是完全跨平台的,可以在Wind…...

uniapp选择只选择月份demo效果(整理)

<template><view style"margin-top: 200rpx;"><!-- mode"multiSelector" 多列选择器 --><view><picker :range"years" :value"echoVal" change"yearChange" mode"multiSelector">{…...

微信ipad协议8.0.40 加好友功能

友情链接 geweapi.com 点击即可访问&#xff01; 好友请求验证 小提示&#xff1a; v_3 v_4 可以参考 搜索接口 请求URL&#xff1a; http://域名地址/api/contacts/verifyuser 请求方式&#xff1a; POST 请求头&#xff1a; Content-Type&#xff1a;application/js…...

如何通过本地搭建wamp服务器并实现无公网IP远程访问

文章目录 前言1.Wamp服务器搭建1.1 Wamp下载和安装1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册2.1 本地网页发布2.2 Cpolar云端设置2.3 Cpolar本地设置 3. 公网访问测试4. 结语 前言 软件技术的发展日新月异&#xff0c;各种能方便我们生活、工作和娱乐的新软件层出不穷&…...

matlab使用教程(19)—曲线拟合与一元方程求根

1.多项式曲线拟合 此示例说明如何使用 polyfit 函数将多项式曲线与一组数据点拟合。您可以按照以下语法&#xff0c;使用 polyfit 求出以最小二乘方式与一组数据拟合的多项式的系数 p polyfit(x,y,n), 其中&#xff1a; • x 和 y 是包含数据点的 x 和 y 坐标的向量 …...

【Go 基础篇】Go语言关键字和预定义标识符解析:探索编程的基石与核心要素

介绍 在计算机编程中&#xff0c;关键字&#xff08;Keywords&#xff09;和预定义标识符&#xff08;Predefined Identifiers&#xff09;是编程语言的核心要素&#xff0c;它们在语法结构和语言功能中起到重要作用。在Go语言&#xff08;Golang&#xff09;中&#xff0c;关…...

微服务与Nacos概述-6

RBAC 模型 RBAC 基于角色的访问控制是实施面向企业安全策略的一种有效的访问控制方式。 基本思想是&#xff0c;对系统操作的各种权限不是直接授予具体的用户&#xff0c;而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当…...

不是说嵌入式是风口吗,那为什么工作还那么难找?

最近确实有很多媒体、机构渲染嵌入式可以拿高薪&#xff0c;这在行业内也是事实&#xff0c;但前提是你有足够的竞争力&#xff0c;真的懂嵌入式。 时至今日&#xff0c;能做嵌入式程序开发的人其实相当常见&#xff0c;尤其是随着树莓派、Arduino等开发板的普及&#xff0c;甚…...

【二叉树】114. 二叉树展开为链表

114. 二叉树展开为链表 解题思路 后序遍历思路将root的左子树和右子树展平将root的右子树接到左子树下方 然后将整个左子树作为右子树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* Tree…...

docker的安装与基础使用

一.docker简介 1&#xff09;什么是docker Docker是一种用于构建、打包和运行应用程序的开源平台。它基于操作系统级虚拟化技术&#xff0c;可以将应用程序和其依赖的库、环境等资源打包到一个可移植的容器中&#xff0c;形成一个轻量级、独立的可执行单元。 开发者在本地编…...

python+django+mysql高校校园外卖点餐系统--计算机毕设项目

本文的研究目标是以高校校园外卖点餐为对象&#xff0c;使其高校校园外卖点餐为目标&#xff0c;使得高校校园外卖点餐的信息化体系发展水平提高。论文的研究内容包括对个人中心、美食分类管理、用户管理、商家管理、美食信息管理、工作人员管理、安全检查管理、系统管理、订单…...

获取excel中的图片(包含wps中嵌入单元格图片)

项目中有excel导入功能,并且需要导入excel中的图片;模板如图: 已知office中插入的图片为浮动形式;如图: wps中可以插入浮动图片,也可以插入嵌入单元格图片;如图: 并且在wps嵌入单元格形式的图片可以看到使用的是公式;如图: 问题来了,如何获取图片 并且将图片与单元格进行对应 …...

Git命令详解

1 常用命令 1&#xff09;初始化本地仓库 git init <directory> 是可选的&#xff0c;如果不指定&#xff0c;将使用当前目录。 2&#xff09;克隆一个远程仓库 git clone <url> 3&#xff09;添加文件到暂存区 git add <file> 要添加当前目录中的所…...

【STM32RT-Thread零基础入门】 4. 线程介绍(理论)

文章目录 前言一、线程的概念二、线程的调度三、上下文切换四、线程的重要属性1. 线程栈2. 线程的状态3. 线程优先级4. 线程时间片5. 线程的入口函数 五、RT-Thread命令查看系统线程信息总结 前言 前文中的最后一个任务发现&#xff0c;一个main()函数很难同时实现按键功能和闪…...

css学习3(三种样式表与样式控制优先级)

1、外部样式表&#xff1a;当样式需要应用于很多页面时&#xff0c;外部样式表将是理想的选择。在使用外部样式表的情况下&#xff0c;你可以通过改变一个文件来改变整个站点的外观。每个页面使用 <link> 标签链接到样式表&#xff0c;也要放到<head>中。 2、外部…...

【JS深层解析】内存

前言 接触过 C 语言的小伙伴应该了解:C语言拥有底层最原始的内存管理办法,例如:malloc() 和 free()方法,它们被开发者用来从操作系统中分配和释放内存。 然而在JavaScript这门语言中,当我们创建了一个东西(可以被读写、传递的数据),浏览器中的 js 引擎会根据创建这个…...

第二章:25+ Python 数据操作教程(第十四节NUMPY 教程与练习)

NumPy(“Numerical Python”或“Numeric Python”的缩写)是 Python 中对数组和矩阵进行快速数学计算的最基本的软件包之一。在处理多维数据时它也非常有用。集成C、C++和FORTRAN工具是一件幸事。它还提供了许多傅里叶变换 (FT) 和线性代数函数。 为什么使用 NumPy 而不是列…...

Pycharm与Anaconda Python的开发环境搭建

目录 一&#xff1a;下载 二&#xff1a;安装python 三&#xff1a;设置Pycharm 一&#xff1a;下载 下载Anaconda&#xff1a; Anaconda | The World’s Most Popular Data Science Platform 安装好以后&#xff0c;设置一下环境变量&#xff1a; 打开命令行&#xff0c…...

2.创建小程序

创建 在开发工具中,选择小程序,点击加号 填写小程序信息,模板使用的是TS+Sass 编辑器的工作区 目录结构 项目使用的是ts的模板,目录结构和js的有一点差异,目录结构如下: miniprogram:小程序根目录 —pages:小程序页面目录 ——xxx:页面目录,一个页面对应一个目…...

XenDesktop5.6如何连接数据库

Citrix在数据库的连接方式上一直不统一&#xff0c;但是也还是有迹可循的。 经过了好长时间的下载以后&#xff0c;今天终于有时间来测试一下最新版本的XenDesktop 5 SP1&#xff0c;由于结合了其他组件和环境的需要&#xff0c;所以&#xff0c;选择了独立部署数据库&#xf…...

OAuth2.0一 Spring Security OAuth2.0

这里主讲OAuth2.0 学习OAuth2前提&#xff1a; 掌握Spring Security Spring Security学习 一 OAuth2.0介绍 OAuth&#xff08;Open Authorization&#xff09;是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;允许用户授权第三方应用访问他们…...

【linux】kernel编译时相关报错

文章目录 1. 问题现象及解决方式1. cc1: error: code model kernel does not support PIC mode 1. 问题现象及解决方式 1. cc1: error: code model kernel does not support PIC mode 问题&#xff1a;编译module时报错 原因&#xff1a;未指定交叉编译器&#xff0c;导致默认…...

C语言 功能型API --------------------strcat()

NAME strcat, strncat - concatenate two strings 头文件 SYNOPSIS #include <string.h> 函数原型&#xff1a; char *strcat(char *dest, const char *src); 功能&#xff1a; 在字符串dest的末尾将字符串src拼接上去 #include <stdio.h> #inc…...

企业展示小程序搭建指南

如今&#xff0c;移动互联网的快速发展&#xff0c;为企业展示提供了更多元化的方式。除了传统的宣传手段&#xff0c;企业还可以借助小程序来展示自己的实力和产品。本文将为大家介绍一种简单的DIY小程序的方法&#xff0c;让企业能够快速打造自己的展示平台。 首先&#xff0…...

大模型技术实践(一)|ChatGLM2-6B基于UCloud UK8S的创新应用

近半年来&#xff0c;通过对多款主流大语言模型进行了调研&#xff0c;我们针对其训练方法和模型特点进行逐一分析&#xff0c;方便大家更加深入了解和使用大模型。本文将重点分享ChatGLM2-6B基于UCloud云平台的UK8S实践应用。 01各模型结构及特点 自从2017年6月谷歌推出Transf…...

Flink状态和状态管理

1.什么是状态 官方定义&#xff1a;当前计算流程需要依赖到之前计算的结果&#xff0c;那么之前计算的结果就是状态。 这句话还是挺好理解的&#xff0c;状态不只存在于Flink&#xff0c;也存在生活的方方面面&#xff0c;比如看到一个认识的人&#xff0c;如何识别认识呢&am…...

【3Ds Max】布料命令的简单使用

简介 在3ds Max中&#xff0c;"布料"&#xff08;Cloth&#xff09;是一种模拟技术&#xff0c;用于模拟物体的布料、织物或软体的行为&#xff0c;例如衣物、帆布等。通过应用布料模拟&#xff0c;您可以模拟出物体在重力、碰撞和其他外力作用下的变形和动态效果。…...

用 VB.net,VBA 两种方式 读取单元格内的 换行数据,并出力到 CSV文件

用 VB.net&#xff0c;VBA 两种方式 读取单元格内的 换行数据&#xff0c;并出力到 CSV文件 需求 如下图所示&#xff0c;为了生成csv文件导入数据库&#xff0c;需要将下图 的 1 和 2 拼接成 如下 3 所示的一行数据&#xff0c; 开头为 1 &#xff0c;往后为 2 的换行数据 将换…...

kafka线上问题优化

如何防止消息丢失 生产者&#xff1a; 使用同步发送把ack设成1或者all&#xff08;非0&#xff0c;0可能会出现消息丢失的情况&#xff09;&#xff0c;并且设置同步的分区数>2 消费者&#xff1a;把自动提交改成手动提交 如何防止重复消费 在防止消息丢失的方案中&#…...

FifthOne:用于矢量搜索的计算机视觉接口

一、说明 数据太多了。数据湖和数据仓库;广阔的像素牧场和充满文字的海洋。找到正确的数据就像大海捞针一样&#xff01;如果你喜欢开源机器学习库 FiftyOne&#xff0c;矢量搜索引擎通过将复杂数据&#xff08;图像的原始像素值、文本文档中的字符&#xff09;转换为称为嵌入矢…...

认识Axios

axios中文网 一. 为什么会诞生Axios 最初浏览器页面向服务器请求数据时&#xff0c;返回的是整个页面&#xff0c;整个页面都会刷新ajax的出现&#xff0c;它可以在页面无刷新的情况下请求数据原生的XMLHttpRequest&#xff0c;jQuery封装的ajax&#xff0c;以及axios都可以实…...

系统架构设计专业技能 · 信息安全技术

系列文章目录 系统架构设计专业技能 网络技术&#xff08;三&#xff09; 系统架构设计专业技能 系统安全分析与设计&#xff08;四&#xff09;【系统架构设计师】 系统架构设计高级技能 软件架构设计&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 …...

kafka晋升之路-理论+场景

kafka晋升之路 一&#xff1a;故事背景二&#xff1a;核心概念2.1 系统架构2.2 生产者&#xff08;Producer&#xff09;2.2.1 生产者分区2.2.2 生产者分区策略 2.3 经纪人&#xff08;Broker&#xff09;2.3.1 主题&#xff08;Topic&#xff09;2.3.2 分区&#xff08;Partit…...

(牛客网)链表相加(二)

嗯哼~ 题目 描述 假设链表中每一个节点的值都在 0 - 9 之间&#xff0c;那么链表整体就可以代表一个整数。 给定两个这种链表&#xff0c;请生成代表两个整数相加值的结果链表。 数据范围&#xff1a;0 ≤ n,m ≤ 1000000&#xff0c;链表任意值 0 ≤ val ≤ 9 要求&#x…...

Vs code 使用中的小问题

1.Java在Vs code 中使用单元测试失败或者如何使用单元测试 创建Java项目&#xff0c;或者将要测试的文件夹添加进工作区 要出现lib包&#xff0c;并有两个测试用的jar包 编写测试文件 public class TestUnit{ public static void main(String[] args) {String str "…...

vue2和vue3

1. 双向数据绑定原理发生了改变 vue2的双向数据绑定是利用了es5 的一个API Object.definepropert() 对数据进行劫持 结合发布订阅模式来实现的。vue3中使用了es6的proxyAPI对数据进行处理。 相比与vue2&#xff0c;使用proxy API 优势有&#xff1a;defineProperty只能监听某个…...

火山引擎ByteHouse:一套方案,让OLAP引擎在精准投放场景更高效

由于流量红利逐渐消退&#xff0c;越来越多的广告企业和从业者开始探索精细化营销的新路径&#xff0c;取代以往的全流量、粗放式的广告轰炸。精细化营销意味着要在数以亿计的人群中优选出那些最具潜力的目标受众&#xff0c;这无疑对提供基础引擎支持的数据仓库能力&#xff0…...

【论文阅读】SHADEWATCHER:使用系统审计记录的推荐引导网络威胁分析(SP-2022)

SHADEWATCHER: Recommendation-guided CyberThreat Analysis using System Audit Records S&P-2022 新加坡国立大学、中国科学技术大学 Zengy J, Wang X, Liu J, et al. Shadewatcher: Recommendation-guided cyber threat analysis using system audit records[C]//2022 I…...

Mac 使用 rar 命令行工具解压和压缩文件

在 Mac 中常遇到的压缩文件有 zip 和 rar 格式的&#xff0c;如果是 zip 格式的 Mac 系统默认双击一下文件就能直接解压了&#xff0c;但 rar 文件就不行。 需要额外下载 rar 工具了实现。 第一步&#xff1a;下载 rar 工具 工具网址&#xff1a;https://www.rarlab.com/dow…...

7.maven

1 初始Maven 1.1 什么是Maven Maven是Apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具。 官网&#xff1a;https://maven.apache.org/ Apache 软件基金会&#xff0c;成立于1999年7月&#xff0c;是目前世界上最大的最受欢迎的开源软件基金会&…...

MySQL 主从复制遇到 1590 报错

作者通过一个主从复制过程中 1590 的错误&#xff0c;说明了 MySQL 8.0 在创建用户授权过程中的注意事项。 作者&#xff1a;王祥 爱可生 DBA 团队成员&#xff0c;主要负责 MySQL 故障处理和性能优化。对技术执着&#xff0c;为客户负责。 本文来源&#xff1a;原创投稿 爱可生…...

games101-windows环境配置(CMake+vcpkg+VS2019)

下载工具 安装CMake 安装vcpkg 安装vs2019 安装 eigen3 opencv 在vcpkg安装目录下&#xff0c;使用Windows Power Shell运行下面脚本 .\vcpkg.exe install eigen3:x64-windows .\vcpkg.exe install opencv:x64-windows安装过程中可能会用红色字体提示&#xff1a;Failed to…...