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

简述Redis备份策略以及对应的实现机制

在这里插入图片描述

引言

Redis作为高性能的内存数据库,数据的安全性至关重要。一旦数据丢失,可能会对业务造成重大影响。因此,备份Redis数据是每个Redis使用者都必须考虑的问题。本文将介绍Redis的备份策略以及对应的实现机制。

一、备份策略

1.1 定期备份

定期备份是一种重要的数据保护策略,它是指在固定的时间间隔内对Redis数据进行备份。这种策略适用于数据量不大且允许一定时间的数据丢失场景。定期备份的优点在于其简单易行,只需设置定时任务即可。然而,这种备份方式的缺点在于可能无法保证数据的实时完整性。
在实施定期备份策略时,需要考虑以下几个关键因素:

  1. 备份频率:根据数据的重要性和变化频率,确定合适的备份间隔。频繁的备份可以减少数据丢失的风险,但也会增加存储和计算资源的消耗。
  2. 备份存储:选择可靠的存储介质和设备来存储备份数据。确保存储设备具有足够的容量,并定期检查其可用性和性能。
  3. 恢复流程:制定详细的恢复流程,以便在需要时能够快速恢复数据。恢复流程应包括从备份中提取数据、验证数据的完整性和准确性,以及将数据恢复到Redis服务器等步骤。
  4. 安全性:确保备份数据的安全性,防止未经授权的访问和篡改。可以采用加密、访问控制和审计等措施来保护备份数据的安全。
    为了克服定期备份无法保证实时完整性的缺点,可以考虑结合其他备份策略,如增量备份或差异备份。这些策略可以在较短的时间间隔内只备份发生变化的数据部分,从而减少备份数据量并提高备份效率。
    总之,定期备份是一种实用的数据保护策略,但需要根据实际情况进行合理的配置和优化。通过综合考虑备份频率、存储、恢复流程和安全性等因素,可以有效地保护Redis数据的安全和完整性。

1.2. 实时备份

实时备份是一种重要的数据保护策略,它能够确保数据的实时性和完整性。在Redis等数据库系统中,实时备份被广泛应用,以应对数据丢失或损坏的风险。

实时备份的工作原理非常简单,即每当数据库写入一个数据,备份任务就会立即对该数据进行备份 。这种策略特别适用于数据量较大且要求数据实时可用的场景。
例如,金融交易系统、在线游戏、实时通信应用等都需要保证数据的实时性和可用性,因此实时备份策略在这些领域中具有非常重要的应用价值。

实时备份的优点主要表现在数据完整性方面。 由于数据是实时备份的,因此可以确保数据的完整性和一致性,避免因数据丢失或损坏而导致的问题。此外,实时备份还可以提高数据的可用性,因为即使在数据库发生故障时,也可以迅速恢复数据并保证服务的连续性。

然而,实时备份也存在一些挑战和限制。

  • 首先,由于需要实时备份数据,因此需要占用较高的系统资源和带宽。这可能会对数据库的性能产生一定的影响,尤其是在数据量较大或网络带宽有限的情况下。
  • 其次,实时备份需要有效的存储和管理机制,以确保备份数据的可靠性和安全性。
  • 此外,对于大规模的数据备份,还需要考虑数据存储的成本和可扩展性问题。

为了克服这些挑战和限制,可以考虑采用一些优化措施。例如,可以采用增量备份或差异备份策略,只备份自上次备份以来发生更改的数据,以减少备份数据量和带宽占用。
此外,还可以采用压缩和加密技术来降低存储成本和提高数据安全性。同时,还需要建立健全的备份管理和恢复机制,以确保在需要时可以快速恢复数据并保证服务的连续性。

实时备份是一种重要的数据保护策略,适用于需要保证数据实时性和完整性的场景。虽然存在一些挑战和限制,但通过采用优化措施和建立健全的管理机制,可以有效地克服这些问题并实现高效的数据备份和恢复。

1.3. 增量备份和全量备份

增量备份和全量备份是两种常见的备份策略 ,它们在数据恢复方面起着至关重要的作用。增量备份是指只备份自上次备份以来新增的数据,而全量备份则是备份整个数据库的数据。这两种策略适用于数据量较大且要求数据恢复速度快的情况。

增量备份的优点

  • 增量备份的优点在于备份速度快,因为它只备份新增的数据,所以备份过程不会受到整个数据库大小的影响。
  • 增量备份可以大大减少备份所需的存储空间,因为只备份了自上次备份以来新增的数据。这种策略对于大型数据库非常有效,因为它可以在较短的时间内完成备份,同时减少了对存储空间的占用。

增量备份的缺点

  • 首先,数据恢复可能需要较长时间。由于增量备份只包含了自上次备份以来新增的数据,因此,在数据丢失的情况下,需要先恢复上次全量备份的数据,然后再逐个恢复增量备份的数据。这可能需要较长的时间来完成。
  • 其次,增量备份可能导致数据不一致的风险增加。由于只备份了新增的数据,如果发生数据损坏或丢失,可能会导致数据的不一致性。

相比之下,全量备份可以避免上述问题。

  • 全量备份是指备份整个数据库的数据,这意味着可以在较短的时间内完成备份过程。
  • 此外,全量备份可以确保数据的完整性和一致性,因为它是整个数据库的完整镜像。

全量备份其缺点
由于它需要备份整个数据库的数据,因此可能会占用大量的存储空间,并且可能需要更长的时间来完成。此外,如果数据库非常大,全量备份可能会对系统性能产生负面影响。

增量备份和全量备份各有优缺点。在选择备份策略时,应该根据具体情况进行权衡。
如果数据量较大且要求数据恢复速度快,可以考虑使用增量备份和全量备份相结合的方式。这种方式可以结合增量备份的快速备份速度和全量备份的数据完整性和一致性优点。通过合理地设置增量备份和全量备份的频率和时间点,可以确保数据的可靠性和安全性。

在这里插入图片描述

二、Redis持久化机制

Redis作为高性能的内存数据库,其持久化机制是确保数据安全和可靠性的关键。通过持久化,我们可以将数据从内存保存到硬盘,以便在系统故障或重启后恢复数据。下面我们将深入探讨Redis的持久化机制,以及如何在Java中实现这些机制。

1. RDB(Redis DataBase)

RDB是Redis自带的一种持久化方式,通过定期或手动生成数据快照进行备份。在Redis中,RDB持久化可以在指定的时间间隔内生成数据快照,从而将数据保存到磁盘上。
这种方式的优点在于生成的数据文件较小,因此备份和恢复的速度都非常快。此外,由于数据是压缩存储的,因此可以节省大量的存储空间。

然而,RDB也存在一些缺点。 最主要的问题是可能会造成数据丢失。由于RDB是通过生成数据快照的方式进行持久化的,如果数据库在生成快照的过程中出现故障,可能会导致部分数据未能成功保存。此外,如果数据库的数据量非常大,生成的快照文件也可能会非常大,这会增加备份和恢复的难度。

为了解决这些问题,Redis提供了多种配置选项,可以让用户根据自己的需求进行调整。 例如,用户可以设置生成快照的频率、压缩方式等参数,以平衡数据持久化的可靠性和性能。此外,为了确保数据的完整性,建议在生成快照后进行校验,以确保数据的正确性。

RDB持久化示例
首先,确保你已经将Jedis库添加到项目中。你可以通过Maven或Gradle进行添加。

Maven依赖:

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version> <!-- 使用最新版本 -->
</dependency>

接下来,使用以下代码设置RDB持久化:

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.SaveParams;public class RedisRDBPersistence {public static void main(String[] args) {// 创建连接池配置JedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(128); // 设置最大连接数poolConfig.setMaxIdle(32); // 设置最大空闲连接数poolConfig.setMinIdle(8); // 设置最小空闲连接数poolConfig.setTestOnBorrow(true); // 获取连接时进行有效性检查poolConfig.setTestOnReturn(true); // 归还连接时进行有效性检查poolConfig.setTestWhileIdle(true); // 空闲时定期进行有效性检查// 创建连接池实例JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379); // 使用默认配置连接本地的Redis服务try (Jedis jedis = jedisPool.getResource()) { // 从连接池获取一个Jedis实例// 启用RDB持久化功能,并设置保存条件(例如:每5分钟无写操作则触发保存)jedis.save(SaveParams.saveParams().interval(300)); // 每5分钟保存一次数据快照// ... 进行Redis操作 ... // 在这里你可以执行各种Redis命令,例如设置键值对、执行事务等。数据将会被自动持久化到硬盘。} catch (Exception e) {e.printStackTrace();} finally {jedisPool.close(); // 关闭连接池并释放资源}}
}

RDB是一种高效的数据持久化方式,适用于需要快速备份和恢复Redis数据库的场景。但需要注意的是,在使用RDB时需要权衡数据持久化的可靠性和性能,并根据实际情况进行调整。

在这里插入图片描述

2. AOF(Append Only File)

AOF(Append Only File)是Redis的一种持久化机制,用于记录Redis的所有写操作命令。与RDB(Redis DataBase)不同,AOF采用追加方式将写操作命令写入一个文件,而不是周期性地生成数据快照。这种机制可以确保数据的完整性和一致性,因为即使发生故障或数据损坏,也可以通过重新执行AOF文件中的命令来重建数据。

AOF记录Redis的所有写操作命令,以追加方式写入一个文件。当Redis重启时,会通过回放AOF文件中的命令来重建数据。AOF的优点是数据完整性高,但恢复速度较慢。

AOF的优点主要体现在数据完整性上。由于AOF记录的是所有的写操作命令,因此即使在某些情况下数据损坏或丢失,也可以通过重新执行这些命令来恢复数据。相比之下,RDB虽然能够快速地生成数据快照,但在某些情况下可能会丢失最近一次快照之后的数据。
然而,AOF的恢复速度相对较慢。当Redis需要重启时,它会回放AOF文件中的所有写操作命令来重建数据。这可能需要较长的时间,尤其是在数据量很大或写操作很频繁的情况下。相比之下,RDB的恢复速度更快,因为它只需要加载预先生成的数据快照。
为了解决AOF恢复速度慢的问题,Redis提供了配置选项来控制AOF文件的写入策略。例如,可以通过设置适当的同步策略来控制写操作命令的写入频率,以平衡数据完整性和恢复速度的需求。此外,Redis还提供了AOF重写的功能,通过生成一个新的AOF文件来替换旧的AOF文件,以减少恢复时间。

AOF持久化示例
首先,你需要编辑Redis的配置文件(通常位于/etc/redis/redis.conf),并确保以下设置被启用:

  • appendonly yes:启用AOF持久化。
  • appendfilename "appendonly.aof":设置AOF文件的名称。你可以根据需要更改此名称。
  • appendfsync everysec:设置AOF同步到硬盘的时间间隔。everysec表示每秒同步一次。根据你的需求选择适当的同步策略。如果需要更高的数据完整性,可以选择always,但这样可能会降低性能。
  • no-appendfsync-on-rewrite:在AOF重写期间不进行同步。这可以提高性能,但需要注意可能的数据丢失风险。确保了解其影响并权衡利弊。
    保存并关闭配置文件后,重新启动Redis服务以使更改生效。然后,你可以使用以下Java代码进行AOF持久化的操作:
import redis.clients.jedis
.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class RedisAOFPersistence {public static void main(String[] args) {// 创建连接池配置JedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(128); // 设置最大连接数poolConfig.setMaxIdle(32); // 设置最大空闲连接数poolConfig.setMinIdle(8); // 设置最小空闲连接数poolConfig.setTestOnBorrow(true); // 获取连接时进行有效性检查poolConfig.setTestOnReturn(true); // 归还连接时进行有效性检查poolConfig.setTestWhileIdle(true); // 空闲时定期进行有效性检查// 创建连接池实例JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379); // 使用默认配置连接本地的Redis服务try (Jedis jedis = jedisPool.getResource()) { // 从连接池获取一个Jedis实例// 执行Redis操作...// ... 在这里你可以执行各种Redis命令,例如设置键值对、执行事务等。数据将会被持久化到硬盘。} catch (Exception e) {e.printStackTrace();} finally {jedisPool.close(); // 关闭连接池并释放资源}}
}

请注意 ,启用AOF持久化后,Redis将在后台异步地将写操作命令追加到AOF文件中。这意味着即使在数据写入内存后,数据也可能不会立即同步到硬盘。因此,AOF持久化提供了更高的数据完整性,但可能会稍微降低性能。为了保持最佳性能,建议在设计和部署系统时仔细权衡使用RDB和AOF持久化的优缺点。

AOF是一种保证数据完整性的持久化机制,但需要在恢复速度和写操作性能之间进行权衡。在选择持久化方式时,需要根据具体的应用场景和需求进行综合考虑。

3. 使用第三方工具

除了RDB和AOF这两种常见的Redis备份方式,我们还可以借助一些第三方工具来更高效地进行备份和恢复操作。这些工具通常具备更多的功能和灵活性,能够满足各种不同的需求。

Redis-dump是一个流行的第三方工具,它支持多种Redis版本和数据格式,可以轻松地完成备份和恢复操作。该工具还提供了多种备份策略,如全量备份、增量备份等,以满足不同的业务需求。通过Redis-dump,我们可以将备份数据存储在不同的存储介质上,如本地文件系统、远程FTP服务器等。

除了Redis-dump,还有许多其他的第三方工具可以帮助我们进行Redis的备份和恢复,如redis-backup等。这些工具通常都提供了友好的用户界面,使得备份和恢复操作更加简单易行。

在使用第三方工具进行Redis备份和恢复时,我们需要注意以下几点:

1. 选择可靠的第三方工具: 在选择工具时,我们需要考虑其可靠性、稳定性和安全性等方面,以确保备份数据的完整性和可用性。

2. 定期测试备份: 为了确保备份数据的可用性,我们需要定期进行备份数据的测试恢复,以确保在真正需要时可以顺利完成恢复操作。

3. 定期审查备份策略: 随着业务的发展和数据量的增长,我们需要定期审查备份策略,以确保其仍然能够满足实际需求。

通过使用这些第三方工具,我们可以更高效、更灵活地进行Redis的备份和恢复操作,从而更好地保障数据的安全性和可用性。

在这里插入图片描述

三、恢复策略

3.1.直接恢复

直接恢复是数据备份领域中的一种重要策略,尤其在处理像Redis这样的关键数据库时。当我们面临数据丢失或损坏的情况时,直接恢复成为我们的最后一道防线。
首先,我们来了解一下直接恢复的基本概念。直接恢复,顾名思义,就是直接将备份文件中的数据恢复到原始数据库中。这种方法通常在数据库服务不可用或数据损坏的情况下使用。为了确保数据的一致性和完整性,直接恢复通常需要在一个隔离的环境中进行,以避免数据冲突和损坏。

直接恢复步骤

  • 首先,你需要确保你有最新的备份文件。
    这是直接恢复的基础,没有备份文件,就无法进行数据恢复。因此,定期备份数据是至关重要的。
  • 其次,在执行恢复之前,你需要确保Redis服务已经停止或不可用。
    这是为了防止在恢复过程中发生数据冲突。如果你在恢复过程中Redis服务仍然在运行,那么可能会导致数据损坏或不一致。
  • 然后,你可以开始执行恢复操作。
    这个过程通常涉及将备份文件复制到Redis数据库的相应位置。这个过程可能会因为你的具体环境和配置而有所不同。
  • 最后,一旦恢复完成,你需要检查数据的完整性和一致性。
    这包括检查数据的准确性、检查Redis服务是否正常运行等。

直接恢复是一种有效的数据恢复策略,但需要谨慎操作以避免数据损坏或不一致。因此,在进行直接恢复之前,一定要充分了解你的环境和配置,并确保你已经做好了充分的准备。

3.2.增量恢复

增量恢复是一种数据恢复策略,它逐个应用增量备份进行恢复。这种策略适用于数据量大的情况,但恢复时间可能较长。增量备份是指只备份自上次全量备份以来发生变化的数据部分,因此增量备份所占用的存储空间相对较小。在数据丢失的情况下,增量恢复需要从最新的全量备份开始,然后依次应用所有可用的增量备份来逐步恢复数据。虽然这种策略在数据量大的情况下非常有效,但恢复时间可能会较长,因为需要处理大量的增量备份数据。另外,为了确保数据恢复的完整性,需要确保所有的增量备份都是可用的,并且它们的顺序和时间戳是正确的。因此,在进行增量恢复之前,需要仔细规划和管理备份策略,以确保数据的可靠性和完整性。

3.3.混合恢复

在数据保护领域,备份策略的选择至关重要。为了确保数据的完整性和可用性,我们通常采用多种备份方式。其中,混合恢复策略结合了全量备份、增量备份和差异备份,成为了一种高效且可靠的数据恢复方法。

全量备份:奠定基础

全量备份,顾名思义,是指对整个数据集进行完整的备份。这种备份方式的优势在于简单明了,能够快速地完成数据备份,但缺点是备份时间较长,占用的存储空间也较大。在混合恢复策略中,全量备份通常是第一步,为后续的增量和差异备份奠定基础。

增量备份:高效补充

增量备份是指只备份自上次全量或增量备份以来发生变化的文件。这种备份方式大大减少了备份时间,并且只占用少量的存储空间。然而,增量备份的恢复过程较为复杂,需要从最新的全量或增量备份开始,然后逐个应用所有的增量备份。在混合恢复策略中,增量备份是对全量备份的有效补充,确保了数据的完整性和一致性。

差异备份:平滑过渡

差异备份则是介于全量备份和增量备份之间的一种策略。它只备份自上次全量或差异备份以来发生变化的文件。与增量备份相比,差异备份的恢复过程更为简便,只需从最新的全量或差异备份开始恢复,然后逐个应用所有的差异备份。在混合恢复策略中,差异备份起到了平滑过渡的作用,使得数据恢复过程更加高效和可靠。

混合恢复的优势与应用场景

混合恢复策略结合了全量、增量和差异备份的优点,能够满足不同场景下的数据保护需求。在实际应用中,根据业务的重要性和数据量的大小,可以选择不同的备份组合方式。例如,对于关键业务数据,可以采用全量+增量+差异的组合方式;而对于非关键业务数据,则可以根据实际情况选择全量+增量的组合方式。

混合恢复策略是一种灵活且高效的数据保护方法。通过结合全量、增量和差异备份,能够确保数据的完整性和可用性,为企业的业务连续性提供有力保障。在实际应用中,需要根据实际情况选择合适的备份组合方式,并定期进行恢复演练,以确保在数据丢失的情况下能够迅速恢复业务运行。
在这里插入图片描述

四、最佳实践

  1. 定期检查和验证备份:确保备份文件的有效性和完整性。可以通过定期恢复部分数据或执行恢复演练来验证备份的有效性。
  2. 使用适当的存储介质:根据数据的重要性和可用性要求,选择适当的存储介质和配置,如SSD、RAID等,以提高数据恢复速度和可靠性。
  3. 监控和警报:监控Redis服务器的性能和健康状况,设置警报以便在出现问题时及时通知管理员。
  4. 限制写操作:在执行备份期间,限制对Redis服务器的写操作,以减少数据不一致的风险。
  5. 多副本部署:考虑部署Redis的主从副本架构,主节点用于读写操作,从节点用于数据备份和故障转移。这样可以在主节点出现故障时快速切换到从节点,保证服务的可用性。
  6. 安全性考虑:确保备份文件的安全性,防止未经授权的访问和篡改。可以考虑加密备份文件并存储在安全的地方。

通过遵循这些最佳实践,你可以确保Redis数据的完整性和安全性,并在出现问题时能够快速恢复数据。

总结

在选择Redis的备份策略时,需要根据实际业务需求和系统资源进行权衡。定期备份适用于数据量较小的情况,实时备份适用于对数据完整性要求高的场景,增量备份和全量备份适用于大数据量和高恢复速度的要求。在实现备份时,可以选择RDB、AOF或第三方工具进行操作,确保数据的安全性和完整性。

相关文章:

简述Redis备份策略以及对应的实现机制

引言 Redis作为高性能的内存数据库&#xff0c;数据的安全性至关重要。一旦数据丢失&#xff0c;可能会对业务造成重大影响。因此&#xff0c;备份Redis数据是每个Redis使用者都必须考虑的问题。本文将介绍Redis的备份策略以及对应的实现机制。 一、备份策略 1.1 定期备份 …...

【5G PHY】5G 物理层加速卡介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…...

lftp学习笔记

目录 0. ftp vs. lftp1. 安装2. 常用命令2.1 登录2.2 文件管理2.3 文件传输 3. 脚本编程4. 实践中的问题排查参考 0. ftp vs. lftp lftp是一款文件传输工具&#xff0c;支持FTP、HTTP、SFTP、FISH等多种协议。 功能ftplftp数据传输文件文件、文件夹多线程传输支持断点续传支持…...

idea 插件开发之 HelloWorld

前言 本文使用的 idea 2023.3 版本进行插件入门开发&#xff0c;首先要说明的是 idea 2023 版本及以后的 idea&#xff0c;对插件开发进行了一定程度的变动&#xff1a; 1、创建项目时不再支持 maven 选项 2、必须是 jdk17 及以后版本&#xff08;点击查看官网版本对应关系&…...

极速文件搜索工具Everything结合内网穿透实现远程搜索本地文件

文章目录 前言1.软件安装完成后&#xff0c;打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前言 要搭建一个在线资料库&#xff0c;我们需要两个软件的支持&#xff0c;分别是cpolar&#xff08;用于搭建内网穿透数据隧道…...

【PowerMockito:编写单元测试过程中采用when打桩失效的问题】

问题描述 正如上图所示&#xff0c;采用when打桩了&#xff0c;但是&#xff0c;实际执行的时候还是返回null。 解决方案 打桩时直接用any() 但是这样可能出现一个mybatisplus的异常&#xff0c;所以在测试类中需要加入以下代码片段&#xff1a; Beforepublic void setUp() …...

[蓝桥杯 2018省赛]回家路费

回家路费 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明被不明势力劫持。后莫名其妙被扔到 X 星站再无问津。小明得知每天都有飞船飞往地球&#xff0c;但需要 108108 元的船票&#xff0c;而他却身无分文。…...

学生管理系统(vue + springboot)

学生管理系统&#xff08;vuespringboot&#xff09;资源-CSDN文库 项目介绍 这是一个采用前后端分离开发的项目&#xff0c;前端采用 Vue 开发、后端采用 Spring boot Mybatis 开发。 项目部署 ⭐️如果你有 docker 的话&#xff0c;直接 docker compose up 即可启动&#…...

算法(3)——二分查找

一、什么是二分查找 二分查找也称折半查找&#xff0c;是在一组有序(升序/降序)的数据中查找一个元素&#xff0c;它是一种效率较高的查找方法。 二、二分查找的原理 1、查找的目标数据元素必须是有序的。没有顺序的数据&#xff0c;二分法就失去意义。 2、数据元素通常是数值…...

golang实现可中断的流式下载

golang实现可中断的流式下载 最近有一个需要实现下载功能&#xff1a; 从服务器上读取文件&#xff0c;返回一个ReadCloser在用户磁盘上创建文件&#xff0c;通过io.Copy实现文件下载&#xff08;io.Copy是流式的操作&#xff0c;不会出现因文件过大而内存暴涨的问题&#xff0…...

SpringBoot 医药咨询系统

概述 智慧医药系统&#xff08;smart-medicine&#xff09;是一个基于 SpringBoot 开发的Web 项目。整体页面简约大气&#xff0c;增加了AI医生问诊功能&#xff0c;功能设计的较为简单。 开源地址 https://gitcode.net/NVG_Haru/Java_04 界面预览 功能介绍 游客功能介绍 …...

C语言转WebAssembly的全流程,及Web端调用测试

第一步&#xff1a;安装环境 参考网址&#xff1a;https://emscripten.org/docs/getting_started/downloads.html 具体过程&#xff1a; 克隆代码&#xff1a;git clone https://github.com/emscripten-core/emsdk.git进入代码目录&#xff1a;cd emsdk获取最新远端代码&…...

前端--基础 目录文件夹和根目录 VScode打开目录文件夹

目录 目录文件夹和根目录 &#xff1a; 目录文件夹 &#xff1a; 根目录 &#xff1a; VScode 打开目录文件夹 &#xff1a; VScode 打开文件夹 &#xff1a; 拖拽目录文件夹 &#xff1a; 目录文件夹和根目录 &#xff1a; 我们都清楚&#xff0c;在实际的工作中会…...

传感器原理与应用复习--超声波、微波、红外及热电偶传感器

文章目录 上一篇超声波传感器微波传感器红外传感器热电偶传感器下一篇 上一篇 传感器原理与应用复习–光电式与半导体式传感器 超声波传感器 超过2万赫兹以上的波称为超声波 压电式超声波探头常用材料是压电晶体和压电陶瓷。它是利用压电材料的压电效应来工作的。 逆压电效…...

matlab概率论例子

高斯概率模型&#xff1a; [f,xi] ksdensity(x): returns a probability density estimate, f, for the sample in the vector x. The estimate is based on a normal kernel function, and is evaluated at 100 equally spaced points, xi, that cover the range of the da…...

Appium+python自动化(一)- 环境搭建—上(超详解)

简介 今天是高考各地由于降水&#xff0c;特别糟糕&#xff0c;各位考生高考加油&#xff0c;全国人民端午节快乐。最近整理了一下自动化的东西&#xff0c;先前整理的python接口自动化已经接近尾声。即将要开启新的征程和篇章&#xff08;Appium&python&#xff09;。那么…...

基于SpringBoot的精简博客系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的精简博客系统,java项目…...

STM32的在线升级(IAP)实现方法:BOOT+APP原理详解

0 工具准备 Keil uVision5 Cortex M3权威指南&#xff08;中文&#xff09; STM32参考手册 1 在线升级&#xff08;IAP&#xff09;设计思路 为了实现STM32的在线升级&#xff08;IAP&#xff09;功能&#xff0c;通常会将STM32的FLASH划分为BOOT和APP两个部分&#xff0c;BOO…...

【芯片DFX】Arm调试架构篇

【芯片DFX】万字长文带你搞懂JTAG的门门道道【芯片DFX】ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析...

ES应用_ES实战

依靠知识库使用es总结一些使用技巧。 1 快速入门 ES是将查询语句写成类似json的形式&#xff0c;通过关键字进行查询和调用。 1.1 创建 下面创建了一个主分片为5&#xff0c;副本分片为1的ES结构。ES本身是一种noschema的结构&#xff0c;但是可以通过指定mapping编程schema的…...

Ubuntu上如何找到设备,打印串口日志

dmesg 找设备 sudo mincom -s 配置minicom mincom 打印串口日志 PS: Windows上使用MobaXterm / putty / Xshell / SecureCRT等 ubuntu串口的安装和使用&#xff08;usb转串口&#xff09;_ubuntu上如何把usb设备映射到tty-CSDN博客...

本地映射测试环境域名,解决登录测试环境后,也可以使用本地域名访问,可以正常跑本地项目

问题&#xff1a;单点登录进入系统不使用token&#xff0c;是将token携带在cookie中&#xff0c;登录成功后每次调用接口&#xff0c;都会在cookie中自动携带&#xff0c;这样导致即使在本地使用proxy代理解决了跨域&#xff0c;但由于本地域名不一致&#xff0c;也无法进行本地…...

VSCode使用Remote SSH远程连接Windows 7

结论 VSCode Server不能启动&#xff0c;无法建立连接。 原因 .vscode-server 目录中的 node.exe 无法运行。 原因是Node.js仅在Windows 8.1、Windows Server 2012 R2或更高版本上受支持。 由于vscode基于node.js v14&#xff0c;不支持Windows 7操作系统。 另&#xff…...

uniapp中uview组件库丰富的Calendar 日历用法

目录 基本使用 #日历模式 #单个日期模式 #多个日期模式 #日期范围模式 #自定义主题颜色 #自定义文案 #日期最大范围 #是否显示农历 #默认日期 基本使用 通过show绑定一个布尔变量用于打开或收起日历弹窗。通过mode参数指定选择日期模式&#xff0c;包含单选/多选/范围…...

云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)

目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd) 5.master2节点迁移容器运行时(docker → containerd) 6.node1节点容器运行时迁移(docker → containerd) 7.升级集群计划&#xff08;v1.23.14 → v1.24.1&#…...

Redis 数据结构和常用命令

* 代表多个&#xff0c;&#xff1f;代表一个 &#xff08;不用全部敲出来&#xff0c;按住tab可以自动补全&#xff09; -2是无效&#xff0c;-1是永久有效 &#xff1b;贴心小提示&#xff1a;内存非常宝贵&#xff0c;对于一些数据&#xff0c;我们应当给他一些过期时间&a…...

Docker 容器命令总汇

目录 1、创建Docker容器&#xff08;不启动&#xff09; 2、创建Docker容器&#xff08;启动&#xff09; 3、列出正在运行的容器 4、停止和启动容器 5、重启容器 6、进入容器 7、查看容器信息 8、查看容器日志 9、删除容器和镜像 10、重命名容器 11、从旧容器复制数…...

react + redux 之 美团案例

1.案例展示 2.环境搭建 克隆项目到本地&#xff08;内置了基础静态组件和模版&#xff09; git clone http://git.itcast.cn/heimaqianduan/redux-meituan.git 安装所有依赖 npm i 启动mock服务&#xff08;内置了json-server&#xff09; npm run serve 启动前端服务 npm…...

【形式语言与自动机/编译原理】CFG-->Greibach-->NPDA(2)

本文将详细讲解《形式语言与自动机》&#xff08;研究生课程&#xff09;或《编译原理》&#xff08;本科生课程&#xff09;中的上下文无关文法&#xff08;CFG&#xff09;转换成Greibach范式&#xff0c;再转成下推自动机&#xff08;NPDA&#xff09;识别语言是否可以被接受…...

14.用户管理

目录 1、权限表 1、user表 1.用户列 2.权限列 3.安全列 4.资源控制列 2、db表和host 表 1.用户列 2.权限列 3. tables_priv 表和 columns _priv 表 4.procs_priv 表 2、账户管理 1. 登录和退出MySQL服务器 2、创建普通用户&#xff1a; 1.使用CREATE USER语创建…...

【交叉编译环境】安装arm-linux交叉编译环境到虚拟机教程(简洁版本)

就是看到了好些教程有些繁琐&#xff0c;我就写了一个 我这个解压安装的交叉编译环境是Linaro GCC的一个版本&#xff0c;可以用于在x86_64的主机上编译arm-linux-gnueabihf的目标代码 步骤来了 在你的Ubuntu系统中创建一个目录&#xff0c;例如/usr/local/arm&#xff0c;然后…...

感染了后缀为.[sqlback@memeware.net].2700勒索病毒如何应对?数据能够恢复吗?

导言&#xff1a; 近期&#xff0c;[sqlbackmemeware.net].2700 勒索病毒成为网络安全的一大威胁。该勒索病毒采用高度复杂的加密算法&#xff0c;将用户文件加密并勒索赎金。了解该病毒的特征对于有效恢复被加密数据以及预防进一步感染至关重要。如果受感染的数据确实有恢复的…...

[Linux开发工具]——vim使用

Linux编辑器——vim的使用 一、什么是集成开发环境&#xff1f;二、什么是vim&#xff1f;三、vim的概念四、vim的基本操作五、vim命令模式命令集5.1 移动光标5.2 删除文字5.3 复制粘贴5.4 其他操作 六、vim底行模式命令集6.1 首先在命令模式下shift&#xff1b;进入末行模式。…...

【教学类-43-11】 20231231 3*3宫格数独提取单元格坐标数字的通用模板(做成2*2=4套、3*2=6套)

背景需求&#xff1a; 1、以前做单元格填充&#xff0c;都是制作N个分开的单元格 &#xff08;表格8&#xff09; 2、这次做五宫格数独的Word模板&#xff0c;我图方便&#xff0c;就只用了一个大表格&#xff0c;第六行第六列隐藏框线&#xff0c;看上去就是分开的&#xff…...

Spring Boot日志:从Logger到@Slf4j的探秘

写在前面 Hello大家好&#xff0c;今日是2024年的第一天&#xff0c;祝大家元旦快乐&#x1f389; 2024第一篇文章从SpringBoot日志开始 文章目录 一、前言二、日志有什么用&#xff1f;三、日志怎么用&#xff1f;四、自定义日志打印&#x1f4ac; 常见日志框架说明4.1 在程序…...

英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置

英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置 1 GTM与ADC的接口2 GTM与VADC的连接2.1 VADC 到 GTM 的连接2.1.1 简要介绍2.1.2 应用举例2.2 EVADC到 GTM的连接2.2.1 应用举例3 总结本文介绍实现GTM与VADC的连接性的相关寄存器配置。 1 GTM与ADC的接口 由英…...

【基础】【Python网络爬虫】【6.数据持久化】Excel、Json、Csv 数据保存(附大量案例代码)(建议收藏)

Python网络爬虫基础 数据持久化&#xff08;数据保存&#xff09;1. Excel创建数据表批量数据写入读取表格数据案例 - 豆瓣保存 Excel案例 - 网易新闻Excel保存 2. Json数据序列化和反序列化中文指定案例 - 豆瓣保存Json案例 - Json保存 3. Csv写入csv列表数据案例 - 豆瓣列表保…...

王道考研计算机网络——应用层

如何为用户提供服务&#xff1f; CS/P2P 提高域名解析的速度&#xff1a;local name server高速缓存&#xff1a;直接地址映射/低级的域名服务器的地址 本机也有告诉缓存&#xff1a;本机开机的时候从本地域名服务器当中下载域名和地址的对应数据库&#xff0c;放到本地的高…...

Android MVVM 写法

前言 Model&#xff1a;负责数据逻辑 View&#xff1a;负责视图逻辑 ViewModel&#xff1a;负责业务逻辑 持有关系&#xff1a; 1、ViewModel 持有 View 2、ViewModel 持有 Model 3、Model 持有 ViewModel 辅助工具&#xff1a;DataBinding 执行流程&#xff1a;View &g…...

LeetCode 热题 100——283. 移动零

283. 移动零 提示 简单 2.3K 相关企业 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,…...

neovim调试xv6-riscv过程中索引不到对应头文件问题

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com&#xff0c;github地址为https://github.com/jintongxu。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家访问。 和这篇文章neovim调试linux内核过程中索…...

轻量应用服务器与云服务器CVM对比——腾讯云

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…...

骑砍战团MOD开发(31)-游戏AI控制

一.骑砍单机模式下AI控制 骑砍战团中野外战斗,训练场中小兵和地方小兵的行为统称为场景AI. 骑砍大地图中敌军追踪和遭遇追击统称为大地图AI. 二.骑砍场景AI 骑砍引擎通过header_mission_templates,py定制AI常量控制小兵位置,动作和朝向.可实现自定义阵型和攻击动作。 # Agen…...

flutter学习-day21-使用permission_handler进行系统权限的申请和操作

文章目录 1. 介绍2. 环境准备2-1. Android2-2. iOS 3. 使用 1. 介绍 在大多数操作系统上&#xff0c;权限不是在安装时才授予应用程序的。相反&#xff0c;开发人员必须在应用程序运行时请求用户的许可。在 flutter 开发中&#xff0c;则需要一个跨平台(iOS, Android)的 API 来…...

虹科方案丨L2进阶L3,数据采集如何助力自动驾驶

来源&#xff1a;康谋自动驾驶 虹科方案丨L2进阶L3&#xff0c;数据采集如何助力自动驾驶 原文链接&#xff1a;https://mp.weixin.qq.com/s/qhWy11x_-b5VmBt86r4OdQ 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 12月14日&#xff0c;宝马集团宣布&#xff0c;搭载…...

Kubernetes 学习总结(42)—— Kubernetes 之 pod 健康检查详解

Kubernetes 入门 回想 2017 年刚开始接触 Kubernetes 时&#xff0c;碰到 Pod一直起不来的情况&#xff0c;就开始抓瞎。后来渐渐地掌握了一些排查方法之后&#xff0c;这种情况才得以缓解。随着时间推移&#xff0c;又碰到了问题。有一天在部署某个 springboot 微服务时&…...

【后端】Docker学习笔记

文章目录 Docker一、Docker安装&#xff08;Linux&#xff09;二、Docker概念三、Docker常用命令四、数据卷五、自定义镜像六、网络七、DockerCompose Docker Docker是一个开源平台&#xff0c;主要基于Go语言构建&#xff0c;它使开发者能够将应用程序及其依赖项打包到一个轻…...

UE5.1_Gameplay Debugger启用

UE5.1_Gameplay Debugger启用 重点问题&#xff1a; Gamplay Debugger启用不知道&#xff1f; Apostrophe、Tilde键不知道是哪个&#xff1f; Gameplay调试程序 | 虚幻引擎文档 (unrealengine.com) Gameplay Debugger...

【论文阅读+复现】SparseCtrl: Adding Sparse Controls to Text-to-Video Diffusion Models

SparseCtrl:在文本到视频扩散模型中添加稀疏控制。 &#xff08;AnimateDiff V3&#xff0c;官方版AnimateDiffControlNet&#xff0c;效果很丝滑&#xff09; code&#xff1a;GitHub - guoyww/AnimateDiff: Official implementation of AnimateDiff. paper&#xff1a;htt…...

速盾cdn:ddos防护手段

速盾CDN采用多种手段来进行DDoS防护&#xff0c;以确保网络和网站的正常运行。以下是速盾CDN可能采用的一些主要DDoS防护手段&#xff1a; 实时监测和分析&#xff1a; 速盾CDN实时监测网络流量&#xff0c;通过分析流量模式来检测异常行为&#xff0c;以迅速发现潜在的DDoS攻击…...