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

Redis 持久化及集群架构

Redis 持久化及集群架构

本篇技术博文将深入探讨 Redis 持久化机制的原理、配置和使用方式。我们将介绍两种常用的持久化方式:RDB 持久化和 AOF 持久化。您将了解到它们的工作原理、优缺点以及如何根据需求选择合适的持久化方式。

通过深入学习 Redis 持久化及集群架构,您将能够构建稳定、可靠并具备高可用性的 Redis 存储解决方案。这有助于提升系统的性能和稳定性,确保数据安全并能够应对高并发和大规模应用的需求。

1 Redis 持久化

1.1 持久化的概念和原因

Redis 持久化是指将 Redis 服务器中的数据保存到磁盘上,以便在服务器重启后可以重新加载数据。持久化是为了解决 Redis 内存数据库的数据丢失问题。

持久化的原因有以下几点:

  1. 数据安全:通过将数据保存到磁盘上,即使发生服务器故障或断电等情况,数据也能够得到保护,避免数据的永久性丢失。
  2. 数据恢复:当服务器重启时,可以从磁盘上加载已经持久化的数据,使得数据可以快速恢复,提高系统的可用性。
  3. 数据迁移:持久化数据可以方便地进行数据迁移和备份操作,例如将数据从一个服务器迁移到另一个服务器或者创建数据的备份。

Redis 提供了两种主要的持久化方式:RDB(Redis Database)和 AOF(Append Only File)。这两种方式可以单独使用,也可以同时使用。

RDB 持久化通过生成数据库的快照来实现数据的持久化。它会定期将内存中的数据以二进制格式写入到磁盘文件中。RDB 持久化适合用于数据备份、灾难恢复等场景。

AOF 持久化则通过记录所有对 Redis 服务器进行写操作的命令来实现数据的持久化。AOF 日志文件以文本格式保存,每个写操作都会追加到 AOF 文件的末尾。当服务器重启时,可以通过重新执行 AOF 日志中的命令来恢复数据。AOF 持久化适合用于实时性要求较高的场景。

根据具体的需求和应用场景,可以选择使用 RDB、AOF 或者两者同时使用来进行持久化。

1.2 RDB 持久化

1.2.1 RDB 的工作原理和优缺点

RDB 持久化的工作原理如下:

  1. Redis 通过 fork 一个子进程来执行持久化操作,这样可以避免阻塞主进程。
  2. 子进程将当前时刻的数据库状态保存到一个临时文件中。
  3. 当临时文件创建完毕后,Redis 将其重命名为指定的 RDB 文件,替换掉旧的 RDB 文件。

RDB 持久化的优点包括:

  • 性能高:RDB 是将整个数据库状态保存到磁盘文件中,恢复速度相对较快。
  • 文件紧凑:RDB 文件采用二进制格式,占用空间相对较小。
  • 容易备份:RDB 文件可以直接复制到其他服务器进行备份。

然而,RDB 持久化也存在一些缺点:

  • 需要 fork 子进程:当数据量较大时,fork 子进程可能会导致性能问题。
  • 不适合实时性要求高的场景:RDB 持久化是定期执行的,如果 Redis 服务器在持久化之间发生故障,则可能会丢失部分数据。

1.2.2 RDB 的配置和使用方式

要启用 RDB 持久化,需要在 Redis 配置文件中进行相应设置。可以通过以下配置项来控制 RDB 持久化的行为:

save <seconds> <changes>

其中 <seconds> 表示自上次成功保存 RDB 文件以来经过的秒数,<changes> 表示自上次成功保存 RDB 文件以来所发生的修改数量。当两个条件同时满足时,Redis 将执行一次 RDB 持久化操作。

另外,还可以使用命令 SAVEBGSAVE 来手动触发 RDB 持久化操作。SAVE 命令将阻塞 Redis 服务器直到持久化完成,而 BGSAVE 命令则会派生出一个子进程来执行持久化操作,不会阻塞主进程。

1.2.3 RDB 的备份和恢复操作

对于 RDB 文件的备份,只需简单地将其复制到其他位置即可。可以使用如下命令来查找 Redis 配置文件中指定的 RDB 文件路径:

CONFIG GET dir

然后,在该目录下找到名为 dump.rdb 的文件即可。

要恢复 RDB 文件,只需将备份的文件复制到 Redis 服务器的指定位置,并重启 Redis 服务即可。在重新启动时,Redis 会自动加载最新的 RDB 文件并恢复数据。

请注意,在使用 RDB 持久化时,需要确保 Redis 配置文件中 save 配置项已经设置合理,以避免过长时间的数据丢失。

1.3 AOF 持久化

1.3.1 AOF 的工作原理和优缺点

AOF(Append Only File)持久化是 Redis 中常用的一种持久化方式。它的工作原理是将 Redis 服务器执行的所有写操作以追加的方式写入到一个文件中,当 Redis 重启时,可以通过重新执行 AOF 文件中的写操作来还原数据。

AOF 持久化的主要优点包括:

  • 可以提供更高的数据安全性,因为 AOF 文件记录了每个写操作,数据不容易丢失;
  • 可以在重启时快速还原数据;
  • AOF 文件是一个简单的文本文件,可以方便地进行备份、迁移和恢复。

AOF 持久化的一些缺点包括:

  • AOF 文件通常比 RDB(Redis Database)文件大,因为它记录了每个写操作,对于大型数据集来说,AOF 文件可能会很大;
  • AOF 文件需要在服务器重启时重新执行,如果 AOF 文件很大,重新执行可能会消耗较长的时间;
  • 在高负载下,AOF 持久化可能会影响 Redis 的性能。

1.3.2 AOF 的配置和使用方式

要启用 AOF 持久化,可以在 Redis 的配置文件(redis.conf)中设置"appendonly"参数为"yes":

appendonly yes

启用 AOF 后,Redis 开始将所有写操作追加到 AOF 文件中。

此外,还可以通过设置"appendfsync"参数来控制何时将写操作刷写到磁盘。有三个选项可供选择:

  • “always”:每个写操作都会立即刷写到磁盘,最安全但性能较差;
  • “everysec”:每秒刷写一次,折衷方案,一定程度上保证了安全性和性能;
  • “no”:完全依赖操作系统缓存,性能最好但安全性较差。

配置示例:

appendfsync everysec

1.3.3 AOF 重写和压缩

由于 AOF 文件可能会变得很大,Redis 提供了 AOF 重写功能,可以通过重写来减小 AOF 文件的体积。

AOF 重写的原理是将当前数据集重新写入一个新的 AOF 文件,新文件只包含可以还原当前数据集的最小操作集,通过删除冗余的写操作来压缩 AOF 文件的体积。

要执行 AOF 重写,可以使用 Redis 提供的 BGREWRITEAOF 命令,它会在后台异步执行重写操作,不会阻塞 Redis 的正常操作。

执行命令示例:

BGREWRITEAOF

AOF 重写是一个相对耗时的操作,特别对于较大的 AOF 文件和高负载的环境,可能会影响 Redis 的性能。因此,建议在低峰期执行 AOF 重写操作。

另外,可以通过设置"auto-aof-rewrite-percentage"和"auto-aof-rewrite-min-size"参数来配置 AOF 自动重写的条件。当 AOF 文件的体积超过"auto-aof-rewrite-min-size"并且增长量超过上一次重写后的文件体积的"auto-aof-rewrite-percentage"时,Redis 会自动触发 AOF 重写操作。

配置示例:

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

需要注意的是,在执行 AOF 重写时,Redis 仍会继续将新的写操作追加到原 AOF 文件中,重写完成后会将新的写操作追加到重写后的 AOF 文件中。因此,在 AOF 重写期间,新的写操作可能会导致新旧 AOF 文件之间的数据不一致,所以在重写完成前,数据的完整性可能无法得到保证。

此外,Redis 还提供了 AOF 文件的压缩功能,可以通过执行 AOF 文件的压缩操作来进一步减小 AOF 文件的体积。压缩操作会将 AOF 文件中的冗余写操作删除,从而减小文件的大小。

要执行 AOF 压缩,可以使用 Redis 提供的 AOF 压缩命令,该命令会在后台异步执行压缩操作,不会阻塞 Redis 的正常操作。

执行命令示例:

AOF REWRITE

需要注意的是,AOF 压缩操作可能会对服务器产生一定的负载,特别是对于大型 AOF 文件和高负载的环境。因此,建议在低峰期执行 AOF 压缩操作。

Redis 的 AOF 持久化在数据安全性和灾难恢复方面提供了很好的支持。通过配置适当的 AOF 参数,可以在安全性和性能之间进行权衡。使用 AOF 重写和压缩功能可以减小 AOF 文件的体积,提高性能和存储效率。但是需要注意,在执行这些操作时,可能会对 Redis 的性能产生一定的影响,因此建议在合适的时间执行这些操作。

1.4 选择合适的持久化方式

1.4.1 RDB 和 AOF 的比较

RDB 和 AOF 是 Redis 中两种不同的持久化方式,它们各自有一些特点和适用场景。

RDB 持久化的优点包括:

  • 性能高:由于 RDB 是将整个数据库状态保存到磁盘上,恢复速度相对较快。
  • 文件紧凑:RDB 文件采用二进制格式,占用空间相对较小。
  • 备份方便:可以直接复制 RDB 文件进行备份。

而 AOF 持久化的优点包括:

  • 更好的数据安全性:AOF 记录了所有写操作命令,可以通过重新执行这些命令来恢复数据。因此,在发生故障时,只会丢失最后一次持久化之后的数据。
  • 更好的实时性:AOF 以追加的方式记录写操作命令,可以实现每个写操作都被持久化,更适合对数据实时性要求较高的场景。

1.4.2 如何根据需求选择合适的持久化方式

选择合适的持久化方式取决于具体的需求和应用场景。以下是一些建议:

  • 如果对数据的实时性要求较高,并且可以承受一定的数据丢失,可以选择使用 AOF 持久化方式。
  • 如果对数据的安全性要求较高,并且可以接受稍微降低的性能,可以选择使用 RDB 持久化方式。
  • 如果同时对实时性和安全性有较高要求,可以将 RDB 和 AOF 持久化方式结合起来使用。可以先使用 AOF 进行持久化,以保证实时性,然后再定期执行 RDB 持久化以备份数据。

需要注意的是,在选择持久化方式时,还应考虑硬件成本、网络带宽等因素。例如,如果磁盘空间较为紧张,可以选择使用 AOF 持久化方式,因为 AOF 文件通常比 RDB 文件占用更多的磁盘空间。

1.5 持久化的性能优化和注意事项

在使用 Redis 持久化时,可以采取一些措施来优化性能并避免潜在问题:

  • 配置合理的保存策略:通过适当调整save配置项,可以控制 Redis 何时执行持久化操作,避免频繁地进行持久化而影响性能。
  • 合理设置 AOF 重写:AOF 日志文件会随着时间增长而变大,可以通过定期执行 AOF 重写(AOF Rewrite)来减小文件体积,提高性能。
  • 定期监测持久化性能:可以通过监控 Redis 的持久化操作耗时,及时发现性能问题并进行调整。
  • 注意磁盘 I/O 性能:持久化过程中涉及到大量的磁盘读写操作,因此需要确保磁盘 I/O 性能足够好,以避免成为性能瓶颈。

另外,还有一些注意事项:

  • 在执行 RDB 或 AOF 恢复操作前,应备份原始数据文件,以防止意外错误导致数据丢失。
  • 当使用 AOF 持久化时,要定期检查 AOF 文件的大小,并根据需要进行压缩和重写操作,以避免文件过大影响性能。
  • 持久化操作可能会对 Redis 服务器的性能产生一定的影响,特别是在保存大型数据库时。因此,在高负载情况下,需要合理安排持久化操作的时间,避免对正常的请求处理造成过多的延迟。

通过以上优化和注意事项,可以更好地利用 Redis 持久化功能,并提升系统的性能和可靠性。

2 Redis 集群架构

Redis 集群架构是为了解决单个 Redis 实例的性能和可用性限制而设计的。下面将介绍 Redis Sentinel 和 Redis Cluster 两种常见的集群架构。

2.1 集群架构的概念和必要性

集群架构是指将多个 Redis 节点组成一个逻辑上的整体,通过分布式技术来提供更高的性能、容错能力和可扩展性。它可以分散负载并确保系统在节点故障时仍然可用。

2.2 Redis Sentinel

Redis Sentinel 是一种监控和自动管理 Redis 主从复制集群的工具。它可以检测到 Redis 节点的故障,并自动执行故障转移操作。

2.2.1 Sentinel 的工作原理和角色

Sentinel 由多个独立运行的进程组成,每个进程都称为一个 Sentinel 节点。其中一个 Sentinel 节点会被选举为领导者,其他 Sentinel 节点则处于备用状态。Sentinel 节点通过定期向 Redis 节点发送 PING 命令来监控其健康状态。

2.2.2 Sentinel 的配置和使用方式

在配置文件中,您需要指定要监视的 Redis 节点以及其他相关设置,如故障转移的超时时间和 Quorum 值。启动 Sentinel 后,它会自动发现并监视 Redis 节点。

2.2.3 Sentinel 的故障检测和自动故障转移

当 Sentinel 节点检测到主节点不可用时,它会通过选举算法从备用的 Redis 节点中选择一个新的主节点,并将其他从节点重新配置为复制新的主节点。这个过程被称为自动故障转移。

2.3 Redis Cluster

Redis Cluster 是一种分布式集群架构,可以在多个节点之间分片存储数据并提供高可用性。

2.3.1 Cluster 的工作原理和数据分片

Redis Cluster 使用哈希槽(hash slot)来分片数据,每个节点负责处理一部分哈希槽。客户端根据键的哈希值将请求路由到正确的节点上。

2.3.2 Cluster 的配置和使用方式

要创建一个 Redis Cluster,您需要指定每个节点的 IP 地址和端口号,并设置一个集群名称。然后,启动各个节点,并使用redis-cli命令连接到任何一个节点进行集群配置。

2.3.3 Cluster 的故障处理和扩展性

Redis Cluster 具有自动故障转移和节点添加功能。当一个节点失败时,Cluster 会自动将该节点的哈希槽迁移到其他正常运行的节点上。而在扩展性方面,您可以通过增加更多的节点来扩展集群的容量。

Redis 集群架构提供了高性能、可用性和扩展性。通过使用 Redis Sentinel 和 Redis Cluster,您可以实现故障转移、负载均衡和数据分片等功能。根据具体需求和应用场景,选择合适的集群架构非常重要。

3 持久化与集群的结合应用

在持久化与集群的结合应用中,它们具有关联和互补作用。持久化主要负责将内存中的数据保存到磁盘上,以保证数据的持久性和可恢复性。而集群则通过将数据分布在多个节点上,提供高可用性、故障恢复和负载均衡等功能。

为了搭建可靠高效的 Redis 存储解决方案,需要考虑以下几个方面:

  1. 数据的持久化和备份:选择适合的持久化方式(RDB 或 AOF)来保证数据的持久性,并定期进行数据备份以防止数据丢失。

  2. 高可用性和故障恢复:使用 Redis 集群来实现数据的冗余备份和故障转移,当某个节点出现故障时,其他节点可以接管服务并继续提供服务。

  3. 高扩展性和负载均衡:通过添加更多的节点来扩展 Redis 集群的容量和吞吐量,并使用负载均衡器来平衡请求流量,确保每个节点都能够充分利用资源。

在配置持久化和集群架构时,可以根据需求选择合适的配置参数,例如设置 RDB 快照的频率、AOF 日志的同步策略和重写规则等。同时,还需要考虑节点之间的通信和数据同步方式,以及监控和管理集群的工具和方法。

在处理故障和扩展需求时,可以采取一些策略来应对,例如使用哨兵模式进行自动故障检测和切换、使用分片技术将数据分布到多个 Redis 实例中、定期监控系统性能并做出相应调整等。

最后,在持久化与集群的性能调优和安全注意事项方面,可以通过合理配置 Redis 参数、使用高效的网络和存储设备、避免过度使用内存和 IO 资源等方法来提升性能。而在安全方面,则需要设置访问权限、加密通信、限制命令执行等来保护 Redis 集群的安全。

持久化和集群是构建可靠高效的 Redis 存储解决方案的关键要素,根据具体需求和应用场景选择适合的配置和策略非常重要。

4 总结

Redis 持久化及集群架构是构建可靠高效的数据存储解决方案的重要组成部分。通过持久化机制,我们可以将内存中的数据写入磁盘,实现数据的长期存储和恢复。而通过集群架构,我们可以搭建高可用性、故障自动转移的系统,提高系统的稳定性和扩展能力。

在应用中,根据实际需求选择合适的持久化方式和集群架构非常重要。同时,我们也要注意性能优化和安全方面的考虑,避免单点故障和数据丢失等问题。

以 Redis 为基础,利用持久化和集群架构,我们能够构建出高效、可靠的数据存储解决方案。希望本篇博文能够向您介绍了这些概念和原理,并为您提供了实际应用的指导和经验分享。

如果您正在规划或使用 Redis 作为数据存储解决方案,持久化及集群架构是您不可忽视的重要环节。通过充分理解和合理应用这些技术,您将能够构建出满足高性能、高可用性和可扩展性需求的数据存储系统。

感谢您阅读本篇博文,希望其中的内容对您有所帮助。如果您有任何问题或想要了解更多相关知识,请随时留言或查阅更多资料。祝您在 Redis 持久化及集群架构的应用中取得成功!

相关文章:

Redis 持久化及集群架构

Redis 持久化及集群架构 本篇技术博文将深入探讨 Redis 持久化机制的原理、配置和使用方式。我们将介绍两种常用的持久化方式&#xff1a;RDB 持久化和 AOF 持久化。您将了解到它们的工作原理、优缺点以及如何根据需求选择合适的持久化方式。 通过深入学习 Redis 持久化及集群…...

FPGA + WS2812采灯控制

文章目录 一、WS2812C-2020-V11、产品概述2、引出端排列及功能3、数据传输时间4、数据传输方法 二、使用WS2812C显示图片1、静态显示2、动态显示 一、WS2812C-2020-V1 1、产品概述 WS2812C-2020-V1是一个集控制电路与发光电路于一体的智能外控LED光源&#xff1b;其外型采用最…...

【视频】使用OBS将MP4推流至腾讯云直播

1、下载OBS OBS官网:https://obsproject.com/ OBS支持Win、Mac、Linux,如果下载速度很慢,建议使用迅雷下载 2、OBS推流设置 2.1 添加场景 默认会有一个“场景”,如果想继续添加可以点击“+”按钮 2.2 添加媒体源 1)点击“来源”窗口中“+”按钮 2)支持的媒体源如…...

Vue基本知识

一、vue入门 Vue为前端的框架&#xff0c;免除了原生js的DOM操作。简化书写。 基于MVVM的思想&#xff0c;实现数据的双向绑定&#xff0c;使编程的重点放在数据上。 1、引入vue.js文件 2、定义vue核心对象&#xff0c;定义数据模型 3、编写视图 //1、引入vue.js <scr…...

item_get_sales-获取商品销量详情

一、接口参数说明&#xff1a; item_get_sales-获取商品销量详情&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_sales 名称类型必须描述keyString是调用key&#xff08…...

LangChain手记 Memory

整理并翻译自DeepLearning.AILangChain的官方课程&#xff1a;Memory Memory 使用open ai的API调用GPT都是单次调用&#xff0c;所以模型并不记得之前的对话&#xff0c;多轮对话的实现其实是将前面轮次的对话过程保留&#xff0c;在下次对话时作为输入的message数组的一部分&…...

linux下安装.run后缀名文件

1.文件传输 对于大文件&#xff0c;不能直接拖拽&#xff0c;可以借助工具&#xff0c;例如WinSCP 创建会话时&#xff0c;需要提供虚拟机的主机名&#xff0c;可以采取输入ifconfig的命令&#xff0c;如图所示&#xff1a; ifconfig&#xff08;接口配置&#xff09;命令在 …...

Angular 性能优化实战

Angular 性能优化实战 Angular 是一个非常强大的前端框架&#xff0c;但是如果不注意性能优化&#xff0c;应用程序可能会变得非常慢并增加加载时间。 以下是一些Angular性能优化经验的实战建议&#xff1a; 1. 使用 OnPush 变更检测策略 默认情况下&#xff0c;Angular检查…...

在vue项目使用数据可视化 echarts ,柱状图、折线图、饼状图使用示例详解及属性详解

官网地址&#xff1a;Apache ECharts ​一、下载插件并在页面中引入 npm install echarts --save 页面导入&#xff1a; import * as echarts from echarts 全局导入&#xff1a; main.js 中&#xff0c;导入并注册到全局 import echarts from echarts Vue.prototype.$echart…...

九耶丨阁瑞钛伦特-井字棋html5代码

你想了解关于井字棋&#xff08;Tic-Tac-Toe&#xff09;的HTML代码吗&#xff1f;以下是一个简单的井子棋的HTML代码示例&#xff1a; <!DOCTYPE html> <html> <head><title>Tic-Tac-Toe</title><style>.board {display: flex;flex-wrap…...

Linux服务器上配置HTTP和HTTPS代理

本文将向你分享如何在Linux服务器上配置HTTP和HTTPS代理的方法&#xff0c;解决可能遇到的问题&#xff0c;让你的爬虫项目顺利运行&#xff0c;畅爬互联网&#xff01; 配置HTTP代理的步骤 1. 了解HTTP代理的类型&#xff1a;常见的有正向代理和反向代理两种类型。根据实际需求…...

OpenZFS 2.2 发布 RC3,支持 Linux 6.4

导读之前的 OpenZFS 2.2 候选版本已致力于实现与 Linux 6.4 内核的兼容性&#xff0c;而在 2.2-rc3 中&#xff0c;Linux 6.4 支持的元跟踪器已标记为已完成。 OpenZFS 2.2 发布了第 3 个 RC 版本。 之前的 OpenZFS 2.2 候选版本已致力于实现与 Linux 6.4 内核的兼容性&#x…...

嵌入式 C 语言程序数据基本存储结构

一、5大内存分区 内存分成5个区&#xff0c;它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 1、栈区(stack)&#xff1a;FIFO就是那些由编译器在需要的时候分配&#xff0c;在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 ​…...

记录VS2022离线安装NuGet包的过程

离线安装NuGet包主要分为两个阶段&#xff1a;指定安装源及下载包及其依赖项。本文记录在VS2022中离线安装NuGet包的过程及注意事项。   离线安装NuGet包&#xff0c;主要有两种方式&#xff1a;1&#xff09;搭建局域网或本机NuGet服务器&#xff0c;将VS2022的源指定为NuGe…...

tomcat的多实例和动静分离

目录 多实例 安装tomcat 配置 tomcat 环境变量 修改server.xml文件 修改开关文件&#xff0c;添加环境变量 tomcat1 tomcat2 启动 浏览器访问测试 nginxtomcat实现动静分离 Nginx实现负载均衡的原理 部署nginx的负载器 搭建第三台tomcat 配置多实例服务器 Tomcat…...

点成案例丨比浊仪用于乳酸菌抑菌活性测定

乳酸菌概述 自1929年英国科学家弗莱明发现青霉素以来&#xff0c;抗生素为人类医学的进步做出了巨大贡献。然而&#xff0c;抗生素在临床上广泛且持续的使用导致病原微生物产生了耐药性。目前&#xff0c;病原微生物对抗生素的耐药性正在威胁人们的健康&#xff0c;寻找具有抑…...

总结synchronized

一.synchronized的特性 synchronized 是 Java 语言中内置的关键字&#xff0c;用于实现线程同步&#xff0c;以确保多线程环境下共享资源的安全访问。 互斥性&#xff1a;synchronized保证了同一时刻只有一个线程可以执行被synchronized修饰的代码块或方法。当一个线程进入sync…...

react实现模拟弹框遮罩的自定义hook

需求描述 点击按钮用于检测鼠标是否命中按钮 代码实现 import React from react; import {useState, useEffect, useRef} from react;// 封装一个hook用来检测当前点击事件是否在某个元素之外 function useClickOutSide(ref,cb) {useEffect(()>{const handleClickOutside…...

直接在html中引入Vue.js的cdn来实现一个简单的博客

摘要 其实建立一个博客系统是非常简单的&#xff0c;有很多开源的程序&#xff0c;如果你不喜欢博客系统&#xff0c;也可以自己开发&#xff0c;也可以自己简单做一个。我这次就是用Vue.js和php做后端服务实现一个简单的博客。 界面 代码结构 代码 index.html <!DOCTYP…...

Android Studio瀑布流实现

效果&#xff1a; ImageDetail class package com.example.waterfallflow; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.ImageView;public class ImageDetail extends Activity{Overrideprotected void …...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&&#xff1a;逻辑与 ||&#xff1a;逻辑或 &#xff01;&#xff1a;逻辑非 短路求值 位运算符 按位与&&#xff1a; 按位或 | 按位取反~ …...

大数据驱动企业决策智能化的路径与实践

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;数据驱动的企业竞争力重构 在这个瞬息万变的商业时代&#xff0c;“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...

深入理解 React 样式方案

React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…...

ubuntu中安装conda的后遗症

缘由: 在编译rk3588的sdk时&#xff0c;遇到编译buildroot失败&#xff0c;提示如下&#xff1a; 提示缺失expect&#xff0c;但是实测相关工具是在的&#xff0c;如下显示&#xff1a; 然后查找借助各个ai工具&#xff0c;重新安装相关的工具&#xff0c;依然无解。 解决&am…...