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

甘肃自助建站系统怎么用/免费发帖平台

甘肃自助建站系统怎么用,免费发帖平台,wordpress安装音乐插件,备案域名做的网站别人用来诈骗一、什么是Redis分布式缓存 Redis分布式缓存是指使用Redis作为缓存系统来存储和管理数据的分布式方案。在分布式系统中,多台服务器共同对外提供服务,为了提高系统的性能和可扩展性,通常会引入缓存来减轻数据库的压力。Redis作为一种高性能的…

一、什么是Redis分布式缓存

  • Redis分布式缓存是指使用Redis作为缓存系统来存储和管理数据的分布式方案。在分布式系统中,多台服务器共同对外提供服务,为了提高系统的性能和可扩展性,通常会引入缓存来减轻数据库的压力。Redis作为一种高性能的内存数据库,具备快速读写和高并发处理能力,非常适合用作分布式缓存。

二、Redis分布式缓存的特点

特点描述
分布式架构使用主从复制和集群模式实现数据的分布式存储和管理
内存存储数据存储在内存中,提供快速读写和高并发处理能力
支持多种数据结构提供字符串、哈希、列表、集合和有序集合等多种数据结构
缓存淘汰策略支持多种缓存淘汰策略,如LRU、LFU和随机等
缓存穿透防止使用布隆过滤器等技术,防止缓存穿透
高并发处理能力使用单线程和非阻塞IO等机制,处理大量并发请求
高可用性支持主从复制和集群模式,保证数据的高可用性和可扩展性
灵活的缓存策略可根据业务需求选择合适的缓存策略
提升系统性能和可扩展性减轻数据库负载压力,提升系统的性能和可扩展性
支持丰富的数据处理功能提供丰富的数据结构和数据操作命令,支持灵活的数据处理需求
提供缓存监控和管理功能提供监控和管理工具,方便管理和维护分布式缓存系统
安全稳定Redis具备持久化机制,支持数据备份和恢复,保证数据的安全稳定性
易于使用和部署Redis具有简单的配置和易于使用的接口,方便部署和集成到系统中
社区活跃Redis拥有庞大的开源社区,持续不断地发布新版本和解决问题

三、Redis分布式缓存的多种实现方式及区别

实现方式描述主要区别
主从复制通过配置主节点(Master)和从节点(Slave)实现数据复制- 主节点负责写入操作,从节点用于读取操作和备份
- 可以通过配置多个从节点实现负载均衡与高可用性
哨兵模式使用哨兵节点(Sentinel)监控主节点状态并进行故障转移- 哨兵节点负责监控主节点的状态
- 当主节点失效时,自动选举从节点为新的主节点
- 支持高可用性
Redis Cluster使用多个Redis实例以集群的方式共同管理一个数据集- 数据被分割为多个哈希槽,存储在不同节点上
- 自动进行数据复制与故障转移
- 支持负载均衡与高可用性

四、主从复制模式

1. 什么是主从复制模式

  • 主从复制模式是指在分布式系统中,通过设置一个主节点(Master)和多个从节点(Slave)来实现数据的复制和同步。主节点负责接收和处理所有的写操作,而从节点则负责复制主节点的数据,并用于读取操作和备份。

2. 主要实现步骤

  1. 配置主节点:
    首先选择一个节点作为主节点,在主节点的配置文件中,开启主从复制功能,设置好监听端口和网络地址,并开启对外提供服务。

  2. 配置从节点:
    选择服务器作为从节点,在从节点的配置文件中,设置好主节点的网络地址和端口,并开启对主节点的连接。

  3. 启动主节点:
    在主节点上启动数据库服务,并确保数据库服务正常运行。

  4. 启动从节点:
    在从节点上启动数据库服务,并确保数据库服务正常运行。

  5. 主节点授权:
    在主节点上设置一个授权密码,并将密码配置到从节点中,以实现从节点对主节点的连接。

  6. 从节点连接主节点:
    从节点会通过向主节点发送SYNC命令来建立与主节点的连接,并发送复制命令。

  7. 主节点接受从节点:
    主节点接受从节点的连接请求,并验证从节点的身份。

  8. 数据同步:
    主节点将自己的数据同步到从节点。初始同步可以通过全量复制,即将主节点的全部数据复制到从节点;增量同步则是主节点将新写入的数据实时传输给从节点。

  9. 数据更新和读取:
    所有写入操作都要在主节点上进行,主节点会将更新的数据同步到所有从节点。读取操作可以在主节点或从节点上进行,从节点可以提供读取服务以减轻主节点的负载。

  10. 监控和故障切换:
    监控主节点的状态和性能,当主节点发生故障时,可以通过手动或自动的方式将一个从节点提升为新的主节点,以保证服务的可用性和连续性。

3. 重要机制

重要机制描述
1. 全量复制主节点接收到SYNC命令后,会开启一个后台线程,将自己的整个数据集发送给从节点。
2. 增量复制主节点会将新的写命令发送给从节点,并通过每秒发送一个心跳包来保持与从节点的连接。从节点接收到新的写命令后,会对数据进行更新。
3. 心跳检测主节点会通过发送心跳包来检测与从节点的连接是否正常。如果连接断开,主节点会尝试重新连接。
4. 断线重连从节点如果与主节点的连接断开,会尝试重新连接。主节点会检测到从节点的重新连接,并继续发送增量复制的命令。
5. 故障转移当主节点发生故障时,Redis集群会从从节点中选举一个新的主节点,然后将其他从节点切换到新的主节点上。
6. 同步延迟由于网络原因或主节点负载过高,从节点可能会出现同步延迟的情况。这会导致从节点的数据不是实时更新。

五、Redis Cluster模式

1. 什么是Redis Cluster模式

  • Redis Cluster模式是Redis官方提供的一种分布式数据存储解决方案,用于支持在多个节点上分片和复制数据。它的设计目标是提供高可用性、可扩展性和数据一致性。

  • 在Redis Cluster模式中,数据被分布在多个节点上,并且每个节点都负责处理一部分数据。为了实现数据的均匀分布和高可用性,Redis Cluster使用了一致性哈希算法,将数据映射到一个固定数量的槽位上。每个节点负责管理一些槽位和相应的数据。

  • 除了数据的分片,Redis Cluster还提供了数据的复制功能,通过将数据复制到其他节点上来保证数据的冗余和故障恢复。每个节点可以有多个副本节点,其中一个节点是主节点,负责处理写操作,其他是从节点,负责复制主节点的数据。

  • Redis Cluster通过使用Gossip协议来实现节点之间的通信和故障检测。每个节点会周期性地与其他节点进行通信,交换关于自己和其他节点的信息,从而达到故障检测、故障转移和数据迁移的目的。

总体来说,Redis Cluster模式是一种可扩展、高可用的分布式数据存储方案,适用于需要处理大量数据和高并发的场景。

2. 主要实现步骤

  1. 配置文件:
    为每个节点创建一个配置文件。配置文件中需要指定节点的IP地址、端口号、节点类型(主节点/从节点)等信息。

  2. 启动节点:
    启动每个节点的Redis服务器,可以通过命令行启动或者使用配置文件来启动。启动时需要指定节点的配置文件。

  3. 创建集群:
    选择一个节点作为初始节点,通过命令行工具redis-cli或者Redis提供的脚本redis-trib.rb来创建集群。使用命令行工具时,可以执行命令redis-cli --cluster create <node1> <node2> ... <nodeN> --cluster-replicas <replicas>,其中<node1> <node2> ... <nodeN>是所有节点的IP地址和端口号,<replicas>是每个主节点对应的从节点数量。

  4. 添加节点:
    在集群创建完成后,可以通过命令行工具或者脚本来添加新的节点到集群中。使用命令行工具时,可以执行命令redis-cli --cluster add-node <new_node> <existing_node>,其中<new_node>是要添加的节点IP地址和端口号,<existing_node>是已存在的节点IP地址和端口号。

  5. 扩容:
    如果需要扩容集群,可以在已经添加的节点上执行命令redis-cli --cluster reshard <node>,其中<node>是一个已存在的节点。该命令会引导你完成数据迁移和槽位重分配的操作。

  6. 故障转移:
    如果某个节点发生故障或者下线,Redis Cluster会自动进行故障转移操作,选择一个从节点提升为主节点,保证数据的可用性。

需要注意的是,在Redis Cluster中,每个节点都需要运行一个Redis服务器实例,而且每个节点都需要使用相同的配置文件(或者至少具有相同的集群配置)。另外,Redis Cluster节点之间通过Gossip协议进行通信和故障检测,所以确保网络正常运行是很重要的。

3. 重要机制

重要机制描述
1. 集群槽分配集群将整个数据集分成16384个槽,每个槽可以存储一个键值对。每个节点负责管理一部分槽的数据。
2. 节点互连节点通过互相发送PING和PONG命令来建立互连关系。节点会维护一个集群状态,包含其他节点的信息。
3. 槽迁移当节点加入或离开集群时,槽的分配会发生变化。集群会通过将槽从一个节点迁移到另一个节点来完成槽的重新分配。
4. 数据传播当一个主节点接收到一个写命令时,它会将该命令发送给对应的从节点,并等待从节点确认。如果从节点没有确认,主节点会将命令发送给其他从节点。
5. 故障转移当一个主节点不可用时,集群会通过选举过程将一个从节点升级为新的主节点。其他从节点会重新分配槽,并将数据从旧的主节点复制到新的主节点。
6. 客户端请求路由客户端发送一个命令到任意一个节点,节点会根据命令的键值计算槽,并将请求路由到负责该槽的节点。
7. 节点状态监控集群会定期检测节点的健康状态,包括节点是否可达、是否正常工作等。如果节点不可达或出现异常,集群会进行相应的处理。

Redis Cluster模式实现了数据的分布存储、故障转移和负载均衡的功能。集群中的每个节点都是平等的,可以接收客户端的读写请求,提高了系统的可用性和扩展性。

六、主从复制模式与Redis cluster的区别

主从复制数据分片
部署方式一主多从多节点
写操作主节点处理分布在多节点
读操作主节点和从节点都可处理分布在多节点
可用性主节点故障时,需要手动进行故障切换单节点故障不影响整体可用性
扩展性读操作可以扩展到多个从节点数据分布在多个节点,可以横向扩展
数据一致性主节点会将数据同步到从节点,有一定的延迟数据分散在多个节点,可能会出现一致性问题
数据备份从节点可用作数据备份数据存储在多个节点,提供数据冗余
部署规模适合小规模集群适合大规模集群
场景适用读写分离的场景,读多写少数据规模大,需要横向扩展的场景

七、Redis分布式缓存的Java使用示例

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class RedisCache {private static final String REDIS_HOST = "localhost";private static final int REDIS_PORT = 6379;private static JedisPool jedisPool;static {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();jedisPoolConfig.setMaxTotal(100); // 设置最大连接数jedisPoolConfig.setMaxIdle(10); // 设置最大空闲连接数// 创建连接池jedisPool = new JedisPool(jedisPoolConfig, REDIS_HOST, REDIS_PORT);}public static void put(String key, String value) {try (Jedis jedis = jedisPool.getResource()) {jedis.set(key, value);}}public static String get(String key) {try (Jedis jedis = jedisPool.getResource()) {return jedis.get(key);}}public static void remove(String key) {try (Jedis jedis = jedisPool.getResource()) {jedis.del(key);}}
}

在上面的示例中,首先创建了一个JedisPool对象,用于连接Redis服务器。然后,在put方法中使用try-with-resources语句获取Jedis实例,并使用set方法将键值对存储到Redis中。在get方法中同样使用try-with-resources语句获取Jedis实例,并使用get方法从Redis中获取值。在remove方法中使用try-with-resources语句获取Jedis实例,并使用del方法删除键值对。

这只是一个简单的示例,可以根据自己的需求进行扩展和优化,例如添加缓存过期时间、添加对象序列化和反序列化等。

八、Redis分布式缓存的SpringBoot实现示例

  1. 首先,在pom.xml文件中添加Redis和Spring Boot的相关依赖:
<dependencies><!-- Redis依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- Spring Boot依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
  1. 在application.properties文件中配置Redis连接信息:
# Redis连接信息
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
  1. 创建一个缓存工具类RedisCacheUtil.java,用于操作Redis缓存:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;import java.util.concurrent.TimeUnit;@Component
public class RedisCacheUtil {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// 存储缓存数据public void setCacheObject(String key, Object value, long timeout, TimeUnit timeUnit) {redisTemplate.opsForValue().set(key, value, timeout, timeUnit);}// 获取缓存数据public Object getCacheObject(String key) {return redisTemplate.opsForValue().get(key);}// 删除缓存数据public boolean deleteCacheObject(String key) {return redisTemplate.delete(key);}
}
  1. 创建一个Controller类,用于测试缓存的读写操作:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.TimeUnit;@RestController
@RequestMapping("/cache")
public class CacheController {@Autowiredprivate RedisCacheUtil redisCacheUtil;@GetMapping("/get/{key}")public Object getCache(@PathVariable String key) {// 从缓存中获取数据Object value = redisCacheUtil.getCacheObject(key);if (value != null) {return value;}// 如果缓存中不存在,则从数据库中获取数据,并存入缓存value = fetchDataFromDatabase(key);redisCacheUtil.setCacheObject(key, value, 5, TimeUnit.MINUTES);return value;}@GetMapping("/delete/{key}")public boolean deleteCache(@PathVariable String key) {// 删除缓存数据return redisCacheUtil.deleteCacheObject(key);}// 模拟从数据库中获取数据的方法private Object fetchDataFromDatabase(String key) {// ...return "Data from database for key: " + key;}
}

通过访问/cache/get/{key}可以从缓存中获取数据,如果缓存中不存在,则从数据库中获取数据并存入缓存;通过访问/cache/delete/{key}可以删除缓存数据。

相关文章:

【分布式】Redis分布式缓存

一、什么是Redis分布式缓存 Redis分布式缓存是指使用Redis作为缓存系统来存储和管理数据的分布式方案。在分布式系统中&#xff0c;多台服务器共同对外提供服务&#xff0c;为了提高系统的性能和可扩展性&#xff0c;通常会引入缓存来减轻数据库的压力。Redis作为一种高性能的…...

Ubuntu——extrepo添加部分外部软件源

extrepo 是一个用于 Ubuntu 和其他基于 Debian 的系统的工具&#xff0c;它的主要作用是简化和管理外部软件源&#xff08;repositories&#xff09;的添加和更新。通过使用 extrepo&#xff0c;用户可以方便地添加、删除和管理第三方软件源&#xff0c;而不需要手动编辑源列表…...

评估大语言模型(LLM)在分子预测任务能够理解分子几何形状性能

摘要 论文地址&#xff1a;https://arxiv.org/pdf/2403.05075 近年来&#xff0c;机器学习模型在各个领域越来越受欢迎。学术界和工业界都投入了大量精力来提高机器学习的效率&#xff0c;以期实现人工通用智能&#xff08;AGI&#xff09;。其中&#xff0c;大规模语言模型&a…...

如何查看电脑刷新率

Windows 系统 通过显示设置查看&#xff1a; 右键点击桌面空白处&#xff0c;选择 “显示设置”。在打开的窗口中&#xff0c;找到 “高级显示设置”。点击 “显示适配器属性”。在弹出的窗口中&#xff0c;选择 “监视器” 选项卡&#xff0c;即可看到当前的屏幕刷新率。使用 …...

mysql集群MHA方式部署

1. 基本信息 部署机器角色部署路径192.168.242.71MySQL-Mater MHA-NodeMySQL: /alidata1/mysql-8.0.28192.168.242.72MySQL-Slave MHA-NodeMHA-Node: /alidata1/admin/tools/mha4mysql-node-0.58192.168.242.73MySQL-Slave MHA-Node192.168.242.74MHA-ManagerMHA-Manager: …...

第十七章 使用 MariaDB 数据库管理系统

1. 数据库管理系统 数据库是指按照某些特定结构来存储数据资料的数据仓库。在当今这个大数据技术迅速崛起的年代&#xff0c;互联网上每天都会生成海量的数据信息&#xff0c;数据库技术也从最初只能存储简单的表格数据的单一集中存储模式&#xff0c;发展到了现如今存储海量…...

rabbitmq 安装延时队列插件rabbitmq_delayer_message_exchange(linux centOS 7)

1.插件版本 插件地址&#xff1a;Community Plugins | RabbitMQ rabbitmq插件需要对应的版本&#xff0c;根据插件地址找到插件 rabbitmq_delayer_message_exchange 点击Releases 因为我rabbitmq客户端显示的版本是&#xff1a; 所以我选择插件版本是&#xff1a; 下载 .ez文…...

Unity性能优化---动态网格组合(一)

网格组合是将 Unity 中的多个对象组合为一个对象的技术。因此&#xff0c;在多物体的场景中&#xff0c;使用网格组合&#xff0c;会有效的减少小网格的数量&#xff0c;最终将得到一个包含许多小网格的大网格游戏对象&#xff0c;这将提高游戏或模拟器的性能。在Unity 的 “St…...

Appium:安装uiautomator2失败

目录 1、通过nmp安装uiautomator2&#xff1a;失败 2、通过 Appium 的平台直接安装驱动程序 3、通过pip 来安装 uiautomator2 1、通过nmp安装uiautomator2&#xff1a;失败 我先是通过npm安装的uiautomator2&#xff0c;也显示已经安装成功了&#xff1a; npm install -g …...

电子信息工程自动化 单片机彩灯控制

摘要 随着社会经济和科学技术的不断进步&#xff0c;人们在保持发展的同时&#xff0c;环境带给人类的影响已经不足以让我们忽视&#xff0c;所以城市的美化问题慢慢的进入了人们的眼帘&#xff0c;PLC的产生给带电子产品带来了巨大变革&#xff0c;彩灯的使用在城市的美化中变…...

word poi-tl 表格功能增强,实现表格功能垂直合并

目录 问题解决问题poi-tl介绍 功能实现引入依赖模版代码效果图 附加&#xff08;插件实现&#xff09;MergeColumnData 对象MergeGroupData 类ServerMergeTableData 数据信息ServerMergeTablePolicy 合并插件 问题 由于在开发功能需求中&#xff0c;word文档需要垂直合并表格&…...

LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型 Matlab代码注释清晰。 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型&#xff08;Matlab&#…...

《鸿蒙开发-答案之书》 怎么设置Json字段的别名

《鸿蒙开发-答案之书》 怎么设置Json字段的别名 Android设置别名用的是SerializedName(“msg”)&#xff0c;那鸿蒙用的是啥&#xff0c;有点懵不知道。 鸿蒙得引入第三方库&#xff1a;ohpm install class-transformer 然后用Expose({ name: ‘first-name’ }) 示例代码&…...

ftp服务器搭建-安装、配置及验证

ftp服务器搭建-安装、配置及验证 #安装 sudo apt-get install vsftpd #配置文件 cat > /etc/vsftpd.conf << "EOF" listenNO listen_ipv6YES anonymous_enableNO local_enableYES write_enableYES dirmessage_enableYES use_localtimeYES xferlog_enable…...

鸿蒙应用获取wifi连接的ip地址(官方文档获取的格式转换成192.168.1.xxx格式)

目录 一.背景 二.官网流程 wifiManager.getLinkedInfo9+ 三.转换成192.168.xxx.xxx格式 一.背景 本次来学习如何获取到鸿蒙设备连接wifi后的ip地址,由于官网文档中获取的ip地址和我们平时看到的192:168:xxx:xxx有所不同,需要进行下转换,所以记录下,如下的流程是在OpenH…...

c++数据结构算法复习基础--11--高级排序算法-快速排序-归并排序-堆排序

高阶排序 1、快速排序 冒泡排序的升级算法 每次选择一个基准数&#xff0c;把小于基准数的放到基准数的左边&#xff0c;把大于基准数的放到基准数的右边&#xff0c;采用 “ 分治算法 ”处理剩余元素&#xff0c;直到整个序列变为有序序列。 最好和平均的复杂度&#xff1a…...

人工智能学习路线详细规划

一、引言 在当今科技飞速发展的时代&#xff0c;人工智能已成为引领未来的关键技术之一。无论是为了追求职业发展的新机遇&#xff0c;还是出于对这一前沿领域的浓厚兴趣&#xff0c;深入学习人工智能都是一个极具价值的选择。本文将为大家精心规划一条人工智能学习路线&#…...

深度学习之视觉处理

CNN 视觉处理三大任务&#xff1a;分类、目标检测、图像分割上游&#xff1a;提取特征&#xff0c;CNN下游&#xff1a;分类、目标、分割等&#xff0c;具体的任务 概述 卷积神经网络是深度学习在计算机视觉领域的突破性成果。在计算机视觉领域, 往往我们输入的图像都很大&am…...

遇到问题:hive中的数据库和sparksql 操作的数据库不是同一个。

遇到的问题&#xff1a; 1、hive中的数据库和sparksql 操作的数据库不同步。 观察上面的数据库看是否同步 &#xff01;&#xff01;&#xff01; 2、查询服务器中MySQL中hive的数据库&#xff0c;发现创建的位置没有在hdfs上&#xff0c;而是在本地。 这个错误产生的原因是&…...

Spring Boot与Spring Security集成:前后分离认证流程的优化实践

在当前的Web开发领域&#xff0c;前后分离架构已经成为一种流行趋势。这种架构将前端和后端进行解耦&#xff0c;前端负责用户界面和交互逻辑&#xff0c;后端则负责数据处理和业务逻辑。在前后分离的项目中&#xff0c;如何安全、高效地实现用户认证是一个关键问题。本文将深入…...

设计模式——Chain(责任链)设计模式

摘要 责任链设计模式是一种行为设计模式&#xff0c;通过链式调用将请求逐一传递给一系列处理器&#xff0c;直到某个处理器处理了请求或所有处理器都未能处理。它解耦了请求的发送者和接收者&#xff0c;允许动态地将请求处理职责分配给多个对象&#xff0c;支持请求的灵活传…...

HarmonyOS(63) ArkUI 自定义占位组件NodeContainer

NodeContainer 1、前言2、NodeContainer和NodeController3、示例代码3.1、创建@Builder3.2、 创建NodeController3.3、 使用NodeCtroller4、NodeContainer的作用5、FrameNode简介6、BuilderNode简介7、参考资料1、前言 在HarmonyOS(62) ArkUI @Reusable组件复用原理讲了组件复…...

Python深度强化学习对冲策略:衍生品投资组合套期保值Black-Scholes、Heston模型分析...

全文链接&#xff1a;https://tecdat.cn/?p38463 本文提出了一个在存在交易成本、市场冲击、流动性约束或风险限制等市场摩擦的情况下&#xff0c;使用现代深度强化学习方法对衍生品投资组合进行套期保值的框架。我们讨论了标准强化学习方法如何应用于非线性奖励结构&#xff…...

【opencv入门教程】2. Point()类用法

文章选自&#xff1a; void Samples::PointFunc() {//输入二维点Point2f point2f(6, 2);cout << "【2维点】p " << point2f << ";\n" << endl;// 输入三维点Point3f point3f(8, 2, 0);cout << "【3维点】p3f "…...

前端导出excel实战(xlsx库和exceljs库)

一. 概览 前端导出excel是比较常见的需求&#xff0c;比如下载excel模板和批量导出excel。目前比较常用的库有xlsx和excel&#xff0c;接下来就着两种方式进行梳理。 二. 下载模板 xlsx库实现&#xff1a; 示例核心代码如下&#xff1a; const excelColumn {details: {ma…...

【附源码】基于环信鸿蒙IM SDK实现一个聊天Demo

项目背景 本项目基于环信IM 鸿蒙SDK 打造的鸿蒙IM Demo&#xff0c;完全适配HarmonyOS NEXT系统&#xff0c;实现了发送消息&#xff0c;添加好友等基础功能。代码开源&#xff0c;功能简洁&#xff0c;如果您有类似开发需求可以参考。 源码地址&#xff1a;https://github.c…...

Python库常用函数-数据分析

Python库常用函数 1.pandas库 &#xff08;1&#xff09;数据读取与写入 读取 CSV 文件&#xff1a; data pd.read_csv(file.csv)读取 Excel 文件&#xff1a; data pd.read_excel(file.xlsx, sheet_nameSheet1)写入 CSV 文件&#xff1a; data.to_csv(new_file.csv, ind…...

汽车EEA架构:架构的简介

1.架构的定义 汽车领域谈论的架构一词&#xff0c;来源于英文单词Architecture。在《系统架构:复杂系统的产品设计与开发》一书中对架构的定义如下:系统架构是一种概念的具象化&#xff0c;是物理或信息功能到形式元素的分配&#xff0c;是系统之内的元素之间的关系与周边环境…...

渗透测试--数据库攻击

这篇文章瘾小生其实想了很久&#xff0c;到底是放在何处&#xff0c;最终还是想着单拎出来总结&#xff0c;因为数据库攻击对我们而言非常重要&#xff0c;而且内容众多。本篇文章将讲述在各位获取数据库权限的情况下&#xff0c;各个数据库会被如何滥用&#xff0c;以及能够滥…...

反向路径转发(RPF)

本文介绍了反向路径转发&#xff08;RPF&#xff09;是如何在FortiGate上实现的。 它还解释了特定于VDOM的CLI设置“config system settings -> set strict-src-check”如何修改RPF行为。 测试场景中使用了以下设置 反向路径过滤器&#xff08;又名RPF&#xff09;是一种安…...