linux安装Redis且搭建主从、哨兵、集群以及使用(超详细)

一.Redis简介

1.NoSQL简介

​ 目前市场主流数据存储都是使用关系型数据库。每次操作关系型数据库时都是I/O操作,I/O操作是主要影响程序执行性能原因之一,连接数据库关闭数据库都是消耗性能的过程。尽量减少对数据库的操作,能够明显的提升程序运行效率。

​ 针对上面的问题,市场上就出现了各种NoSQL(Not Only SQL,不仅仅可以使用关系型数据库)数据库,它们的宣传口号:不是什么样的场景都必须使用关系型数据库,一些特定的场景使用NoSQL数据库更好。

常见NoSQL数据库:

​ memcached :键值对,内存型数据库,所有数据都在内存中。

​ Redis:和Memcached类似,还具备持久化能力。

​ HBase:以列作为存储。

​ MongoDB:以Document做存储。

2.Redis简介

​ Redis是以Key-Value形式进行存储的NoSQL数据库。

​ Redis是使用C语言进行编写的。

​ 平时操作的数据都在内存中,效率特高,读的效率110000/s,写81000/s,所以多把Redis当做缓存工具使用。

​ Redis以solt(槽)作为数据存储单元,每个槽中可以存储N多个键值对。Redis中固定具有16384。理论上可以实现一个槽是一个Redis。每个向Redis存储数据的key都会进行crc16算法得出一个值后对16384取余就是这个key存放的solt位置。

3.Redis持久化策略

​ Redis不仅仅是一个内存型数据库,还具备持久化能力。

1. RDB

​ rdb模式是默认模式,可以在指定的时间间隔内生成数据快照(snapshot),默认保存到dump.rdb文件中。当redis重启后会自动加载dump.rdb文件中内容到内存中。

​ 用户可以使用SAVE(同步)或BGSAVE(异步)手动保存数据。

​ 可以设置服务器配置的save选项,让服务器每隔一段时间自动执行一次BGSAVE命令,可以通过save选项设置多个保存条件,但只要其中任意一个条件被满足,服务器就会执行BGSAVE命令。

例如:

save 900 1   
save 300 10   
save 60 10000

那么只要满足以下三个条件中的任意一个,BGSAVE命令就会被执行
服务器在900秒之内,对数据库进行了至少1次修改
服务器在300秒之内,对数据库进行了至少10次修改
服务器在60秒之内,对数据库进行了至少10000次修改

1.1 优点

​ rdb文件是一个紧凑文件,直接使用rdb文件就可以还原数据。

​ 数据保存会由一个子进程进行保存,不影响父进程。

​ 恢复数据的效率要高于aof

1.2 缺点

​ 每次保存点之间导致redis不可意料的关闭,可能会丢失数据。

​ 由于每次保存数据都需要fork()子进程,在数据量比较大时可能会比较耗费性能。

2.AOF

​ AOF默认是关闭的,需要在配置文件中开启AOF。Redis支持AOF和RDB同时生效,如果同时存在,AOF优先级高于RDB(Redis重新启动时会使用AOF进行数据恢复)

​ 监听执行的命令,如果发现执行了修改数据的操作,同时直接同步到数据库文件中。

2.1 优点

​ 相对RDB数据更加安全。

2.2 缺点

​ 相同数据集AOF要大于RDB。

​ 相对RDB可能会慢一些。

2.3 开启办法

​ 修改redis.conf中

# 默认no
appendonly yes
# aof文件名
appendfilename "appendonly.aof"

二. Redis单机版安装

1.安装依赖C语言依赖

redis使用C语言编写,所以需要安装C语言库

yum install -y gcc-c++ automake autoconf libtool make tcl

2.上传并解压

​ 把redis-5.0.5.tar.gz上传到/usr/local/tmp中

# cd /usr/local/tmp

解压

# tar zxf redis-5.0.5.tar.gz

3.编译并安装

​ 进入解压文件夹

# cd /usr/local/tmp/redis-5.0.5/

​ 编译

# make

​ 安装

# make install PREFIX=/usr/local/redis

4.开启守护进程

​ 复制cd /usr/local/tmp/redis-5.0.5/中redis.conf配置文件

# cp redis.conf /usr/local/redis/bin/

​ 修改配置文件

# cd /usr/local/redis/bin/

修改

# vim redis.conf

​ 把daemonize的值由no修改为yes

在这里插入图片描述

5.修改外部访问

​ 在redis5中需要修改配置文件redis.conf允许外部访问。需要修改两处。

​ 注释掉bind 127.0.0.1

#bind 127.0.0.1

​ 受保护模式,改成no : protected-mode yes 改成 no

protected-mode yes

在这里插入图片描述

6.启动并测试

​ 启动redis

​ # ./redis-server redis.conf

关闭redis命令

​ # ./redis-cli shutdown

​ 启动客户端工具

​ #./redis-cli

​ 在redis5中客户端工具对命令会有提供功能。

三. Redis主从复制

​ Redis支持集群功能。为了保证单一节点可用性,redis支持主从复制功能。每个节点有N个复制品(replica),其中一个复制品是主(master),另外N-1个复制品是从(Slave),也就是说Redis支持一主多从。

​ 一个主可有多个从,而一个从又可以看成主,它还可以有多个从。

在这里插入图片描述

1. 主从优点

​ 增加单一节点的健壮性,从而提升整个集群的稳定性。(Redis中当超过1/2节点不可用时,整个集群不可用)

​ 从节点可以对主节点数据备份,提升容灾能力。

​ 读写分离。在redis主从中,主节点一般用作写(具备读的能力),从节点只能读,利用这个特性实现读写分离,写用主,读用从。

1.1 一主多从搭建

​ 在已经搭建的单机版redis基础上进行操作。

​ 并且关闭redis单机版

./redis-cli shutdown
1.2 新建目录
# mkdir /usr/local/replica
1.3 复制目录

​ 把之前安装的redis单机版中bin目录复制三份,分别叫做:master、slave1、slave2

cp -r /usr/local/redis/bin /usr/local/replica/master
cp -r /usr/local/redis/bin /usr/local/replica/slave1
cp -r /usr/local/redis/bin /usr/local/replica/slave2
1.4 修改slave1从的配置文件

​ 修改2个从的redis.conf,指定主节点ip和端口。并修改自身端口号防止和其他redis冲突。

vim /usr/local/replica/slave1/redis.conf

​ 指定主节点ip和端口

replicaof 192.168.93.10 6379

​ 修改自己端口

port 6380
1.5.修改slave2从的配置文件
vim /usr/local/replica/slave2/redis.conf

​ 指定主节点ip和端口

replicaof 192.168.93.10 6379

​ 修改自己端口

port 6381
1.6 启动三个redis实例

​ 注意:一定要关闭单机的redis,否则端口冲突。

进入到指定目录

cd /usr/local/replica

创建文件

vim startup.sh

内容如下

cd /usr/local/replica/master/
./redis-server redis.conf
  cd /usr/local/replica/slave1
./redis-server redis.conf
  cd /usr/local/replica/slave2
./redis-server redis.conf

赋予权限

chmod a+x startup.sh

​ 开启

./startup.sh
1.7 查看启动状态
# ps aux|grep redis

在这里插入图片描述

1.8查看主节点信息

如下图有两个从节点,分别为6380、6381
在这里插入图片描述

1.9 测试

进入到指定目录

# cd /usr/local/replica/master/

进入到redsi

 ./redis-cli -p 6379

在客户端命令行模式下,添加一条数据:

set testname testvalue

在这里插入图片描述

进去slave查看数据是否同步。

# cd /usr/local/replica/slave1
# ./redis-cli -p 6380

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四. 哨兵(Sentinel)

​ 在redis主从默认是只有主具备写的能力,而从只能读。如果主宕机,整个节点不具备写能力。但是如果这是让一个从变成主,整个节点就可以继续工作。即使之前的主恢复过来也当做这个节点的从即可。

​ Redis的哨兵就是帮助监控整个节点的,当节点主宕机等情况下,帮助重新选取主。

​ Redis中哨兵支持单哨兵和多哨兵。单哨兵是只要这个哨兵发现master宕机了,就直接选取另一个master。而多哨兵是根据我们设定,达到一定数量哨兵认为master宕机后才会进行重新选取主。我们以多哨兵演示。

1. 没有哨兵下主从效果

​ 只要杀掉主,整个节点无法在写数据,从身份不会变化,主的信息还是以前的信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.搭建多哨兵

​ 前提:安装了单机的redis

2.1 新建目录

# mkdir /usr/local/sentinel

2.2 复制redis

# cp -r /usr/local/redis/bin/* /usr/local/sentinel

2.3 复制配置文件

​ 从redis解压目录中复制sentinel配置文件

# cd /usr/local/tmp/redis-5.0.5/

复制

# cp sentinel.conf /usr/local/sentinel/

2.4 修改配置文件

cp sentinel.conf sentinel-26380.conf

2、修改
# vim sentinel-26379.conf
3、修改端口
port 26379
4、修改守护进程
daemonize yes
5、修改日志文件
logfile “/usr/local/sentinel/26379.log”
6、指定主节点地址
sentinel monitor mymaster 192.168.93.10 6379 2

复制sentinel.conf,命名为sentinel-26380.conf

cp sentinel.conf sentinel-26380.conf

2、修改
# vim sentinel-26380.conf
3、修改端口
port 26380	
4、修改守护进程
daemonize yes
5、修改日志文件
logfile “/usr/local/sentinel/26380.log”
6、指定主节点地址
sentinel monitor mymaster 192.168.93.10 6379 2

复制sentinel.conf,命名为sentinel-26381.conf

cp sentinel.conf sentinel-26381.conf

2、修改
# vim sentinel-26381.conf
3、修改端口
port 26381
4、修改守护进程
daemonize yes
5、修改日志文件
logfile “/usr/local/sentinel/26381.log”
6、指定主节点地址
sentinel monitor mymaster 192.168.93.10 6379 2

2.5 启动主从

​ 如果已经启动状态,忽略下面命令。如果启动部分,全部kill后重新启动。

​ 使用kill杀死全部redis

# ps aux|grep redis
# kill -9 进程号

​ 启动redis主从

# cd /usr/local/replica
# ./startup.sh

2.6 启动三个哨兵

进入到指定目录

cd /usr/local/sentinel

新建文件

vim startup.sh

内容如下:

  • List item
cd /usr/local/sentinel
./redis-sentinel sentinel.conf
cd /usr/local/sentinel
./redis-sentinel sentinel-26380.conf
cd /usr/local/sentinel
./redis-sentinel sentinel-26381.conf

赋予权限

# chmod a+x startup.sh

开启

./startup.sh

2.7 查看日志

cat 26379.log

此时6381变为了主节点,具备读写能力
在这里插入图片描述

2.8查看启动状态

ps aux|grep redis

在这里插入图片描述

2.9 查看主节点是否配置成功

进入到master目录

cd /usr/local/replica/master

执行命令:

./redis-cli

查看信息:

info replication
在这里插入图片描述

2.10 查看从节点

cd /usr/local/replica/slave1

进入6380redis

./redis-cli -p 6380

//查看信息

info replication
在这里插入图片描述

2.11 测试宕机

​ 查看redis进程号

ps aux|grep redis

在这里插入图片描述

杀死主进程号

kill -9 进程号

​ 查看日志,短暂延迟后会发现,出现新的主。

cat 26379.log

进入到从节点

/usr/local/replica/slave2

进入到内部

./redis-cli -p 6381

查看信息

info replication

可以看到此时6381的从节点变为了主节点,且还有个从节点为6380
在这里插入图片描述
进行操作,6380也会同步数据:
在这里插入图片描述

2.12 重启master后,会变成从节点

cd /usr/local/replica/master

重启

./redis-server redis.conf

查看主节点信息情况
在这里插入图片描述

哨兵完成

五. 集群(Cluster)

​ 前提:已经安装好redis单机版。

​ 当集群中超过或等于1/2节点不可用时,整个集群不可用。为了搭建稳定集群,都采用奇数节点。

1 .复制redis配置文件

​ 从/usr/local/redis/bin下把redis.conf复制到当前目录中,命名为redis-7001.conf

cp /usr/local/redis/bin/redis.conf /usr/local/redis/bin/redis-7001.conf

2. 修改redis-7001.conf

cd /usr/local/redis/bin

修改命令

vim redis-7001.conf

​ 需要修改如下

1、修改端口 7001-7006
port 7001
2、开启集群
cluster-enabled yes
3、配置集群文件
cluster-config-file nodes-7001.conf
4、连接超时
cluster-node-timeout 15000
# appendonly yes 如果开启aof默认,需要修改为yes。如果使用rdb,此处不需要修改
daemonize yes
protected-mode no
5、修改线程的pid
pidfile /var/run/redis_7001.pid

3 .复制配置文件,并修改内容

​ 把redis-7001.conf 复制5份,分别叫做redis-7002.conf、redis-7003.conf、redis-7004.conf、redis-7005.conf、redis-7006.conf

# cp redis-7001.conf redis-7002.conf
# cp redis-7001.conf redis-7003.conf
# cp redis-7001.conf redis-7004.conf
# cp redis-7001.conf redis-7005.conf
# cp redis-7001.conf redis-7006.conf
新复制的5个配置文件都需要需改三处。

​ 例如nodes-7002.conf中需要把所有7001都换成7002。

改如下三个地方:

1、修改端口
port 7002
2、修改配置
cluster-config-file nodes-7002.conf
3、修改线程的pid
pidfile /var/run/redis_7002.pid

4 .启动6个redis

​ 可以使用redis-server结合6个配置文件进行启动6个实例。

​ 执行之前一定要先删除dump.rdb,不然集成的发布有有影响。

删除

# rm -f dump.rdb

创建文件命令

# vim startup.sh

创建脚本启动

./redis-server redis-7001.conf
./redis-server redis-7002.conf
./redis-server redis-7003.conf
./redis-server redis-7004.conf
./redis-server redis-7005.conf
./redis-server redis-7006.conf

赋予权限

# chmod a+x startup.sh

启动

# ./startup.sh

5. 查看启动状态

ps aux|grep redis
在这里插入图片描述

6. 建立集群

​ 在redis3的时候需要借助ruby脚本实现集群。在redis5中可以使用自带的redis-cli实现集群功能,比redis3的时候更加方便了。

​ 建议配置静态ip,ip改变集群失效

./redis-cli --cluster create 192.168.93.10:7001 192.168.93.10:7002 192.168.93.10:7003 192.168.93.10:7004 192.168.93.10:7005 192.168.93.10:7006 --cluster-replicas 1

是否三主三从:yes

在这里插入图片描述

如果出现一直等待, 遇到这种情况大部分是因为集群总线的端口没有开放 ,

例如:redis的端口为6379,那么另外一个需要开通的端口是:6379 + 10000, 即需要开启 16379用于集群总线
在这里插入图片描述

建立成功

5Ctypora-user-images%5C1710835189847.png&pos_id=img-QuxKVIQT-1710837712259)

7. 测试

​ 集群测试时,千万不要忘记最后一个-c参数。

# ./redis-cli -p 7001 -c
# set age 18

7001写数据自动跳到7002去了,证明集群搭建成功。

为何数据到7002了?

因为Redis集群是根据key做crc16运算,然后对16384做取余操作,确认hash槽的,而这个槽可能是其他节点管理的,就自然去其他节点查询了

在这里插入图片描述

8 .编写关闭脚本

# vim stop.sh
# chmod a+x stop.sh

./redis-cli -p 7001 shutdown
./redis-cli -p 7002 shutdown
./redis-cli -p 7003 shutdown
./redis-cli -p 7004 shutdown
./redis-cli -p 7005 shutdown
./redis-cli -p 7006 shutdown

六. 使用SpringBoot整合SpringDataRedis操作redis

Spring Data是Spring公司的顶级项目,里面包含了N多个二级子项目,这些子项目都是相对独立的项目。每个子项目是对不同API的封装。

​ 所有Spring Boot整合Spring Data xxxx的启动器都叫做spring-boot-starter-data-xxxx

​ Spring Data 好处很方便操作对象类型。

​ 把Redis不同值得类型放到一个opsForXXX方法中。

​ opsForValue : String值

​ opsForList : 列表List

​ opsForHash: 哈希表Hash

​ opsForZSet: 有序集合Sorted Set

​ opsForSet : 集合

1. 添加依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.2.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
</dependencies>

2. 配置配置文件

​ spring.redis.host=localhost 默认值

​ spring.redis.port=6379 端口号默认值

spring:
  redis:
    database: 0
    password:
    timeout: 10s
    cluster:
      nodes: 192.168.93.10:7001,192.168.93.10:7002,192.168.93.10:7003,192.168.93.10:7004,192.168.93.10:7005,192.168.93.10:7006

3.编写配置类

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory 		  factory){
        RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(factory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
        return redisTemplate;
    }
}

4. 编写代码

在这里插入图片描述

编写对象新增

@RestController
public class RedisController {

    @Resource
    private RedisTemplate<String, Object> redisTemplate;

    @PostMapping("set")
    public void set(@RequestParam String v) {
        redisTemplate.opsForValue().set("name", v);
    }

    @GetMapping("get")
    public Object get(String k) {
        return redisTemplate.opsForValue().get(k);
    }

}

在这里插入图片描述

key为name的新增到7002了
在这里插入图片描述

七. 使用Redis效果

​ 使用缓存流程

​ 1. 先判断缓存中是否存在。如果存在直接从缓存中取出数据。不执行2,3步骤

​ 2. 如果不存在,从mysql中获取数据

​ 3. 获取数据后,把数据缓存到redis中

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/469951.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nodejs 第五十八章(大文件上传)

在现代网站中&#xff0c;越来越多的个性化图片&#xff0c;视频&#xff0c;去展示&#xff0c;因此我们的网站一般都会支持文件上传。 文件上传的方案 大文件上传&#xff1a;将大文件切分成较小的片段&#xff08;通常称为分片或块&#xff09;&#xff0c;然后逐个上传这…

体育运动直播中的智能运动跟踪和动作识别系统 - 视频分析如何协助流媒体做出实时决策

AI-Powered Streaming Vision: Transforming Real-Time Decisions with Video Analytics 原著&#xff1a;弗朗西斯科冈萨雷斯&#xff5c;斯特朗&#xff08;STRONG&#xff09;公司首席ML科学家 翻译&#xff1a;数字化营销工兵 实时视频分析通过即时处理实时视频数据&…

【故障排查】10分钟解决Quartz重复调度的疑难杂症

我司使用Apache DolphinScheduler作为调度框架很久了&#xff0c;感兴趣的小伙伴可以看看这些干货文章&#xff1a; 因为之前监控到会出现重复的调度的问题&#xff0c;所以此文记录排查重复调度问题的全过程&#xff0c;希望对社区其他的小伙伴能够起到抛砖引玉的作用&#x…

1.中医学习-总论

目录 1.为什么要学中医 2.什么是中医 介绍 中医例子1&#xff1a; 中医例子2: 中医最高境界“大道至简” 中医讲究的是本质 中医核心&#xff1a;阴阳、表里、寒热、虚实 ​编辑医不叩门 3.阴阳 1.一天中的阴阳 2.一年中的阴阳 3.阴阳之间的关系 4.阴阳四季的变化 …

JetBrains学生包续期

Pycharm进入显示your license has expired 这个意思是你的许可过期了&#xff0c;重新输入最新的激活码就可以了。 1. 说明我的JetBrains学生包需要进行续期了。首先登录JetBrains官网打开个人主页&#xff0c;点击Renew my Education Pack 2. 然后填写一系列信息&#xff0c;…

户用光伏OA管理系统——光伏企业管理的新利器

随着全球对可再生能源的重视和推广&#xff0c;光伏行业得到了快速的发展&#xff0c;为人们提供了清洁、可再生能源。户用光伏作为光伏行业中应用最为广泛的发电系统&#xff0c;可以安装在居民住宅等地。越来越多的人们对户用光伏的发展给予支持&#xff0c;给光伏企业管理带…

PHP+MySQL开发组合:多端多商户DIY商城源码系统 带完整的搭建教程以及安装代码包

近年来&#xff0c;电商行业的迅猛发展&#xff0c;越来越多的商户开始寻求搭建自己的在线商城。然而&#xff0c;传统的商城系统往往功能单一&#xff0c;无法满足商户个性化、多样化的需求。同时&#xff0c;搭建一个功能完善的商城系统需要专业的技术团队和大量的时间成本&a…

OpenCV4.9.0在windows系统下的安装

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一章&#xff1a;将 OpenCV 与 Eclipse 结合使用&#xff08;插件 CDT&#xff09; 下一章&#xff1a;未发表 警告&#xff1a; 本教程可以包含过时的信息. 此处的描述已在 Windows 7 SP1 上…

FMQL45 XADC

通过PL自带的XADC可以读写温度&#xff0c;电压等&#xff0c;但是总是读的不对。开始查找FM_QL_bsp里面少了一个部分就是pl&#xff01;添加&#xff0c;在ewp已经修改了&#xff0c;但是文件不存在&#xff0c;现在给补上了&#xff0c;有点奇怪&#xff0c;有的项目会自动生…

ConKI: Contrastive Knowledge Injection for Multimodal Sentiment Analysis

文章目录 ConKI&#xff1a;用于多模态情感分析的对比知识注入文章信息研究目的研究内容研究方法1.总体结构2.Encoding with Knowledge Injection2.1 Pan-knowledge representations2.2 Knowledge-specific representations 3.Hierarchical Contrastive Learning4.损失函数5.训…

发布镜像到阿里云仓库

发布上一篇Dockerfile实战-自定义的centos镜像。 1、登录阿里云 2、找到容器镜像服务 3、创建命令空间 4、创建镜像仓库 5、点击进入这个镜像仓库&#xff0c;可以看到所有的信息 6、根据操作指南测试推送发布 6.1登录阿里云 [rootzhoujunru home]# docker login --usernam…

【问题记录】自定义Prometheus exporter收集数据,Prometheus显示收集到数据,grafana未显示数据出来

问题背景&#xff1a; 使用golang编写Prometheus exporter&#xff0c;获取指定API Url返回值中的data值&#xff0c;把它做为自定义指标。 1、exporter 500ms自动更新一次data值 2、Prometheus的Graph界面输入自定义指标可以查询到值的变化 3、自定义指标最小时间是ms级别&…

es 集群安全认证

参考文档&#xff1a;Configure security for the Elastic Stack | Elasticsearch Guide [7.17] | Elastic ES敏感信息泄露的原因 Elasticsearch在默认安装后&#xff0c;不提供任何形式的安全防护不合理的配置导致公网可以访问ES集群。比如在elasticsearch.yml文件中,server…

数据在内存中的的存储

1.数据类型介绍 内置类型 char , short , int , long , float , double , long long (C99) long 类型的大小是 4 / 8 个字节&#xff0c;元素C语言规定 sizeof&#xff08;long&#xff09;> sizeof&#xff08;int&#xff09;就行。在32位平台上&#xff0c;long为4个字…

完整指南:如何使用 Stable Diffusion API

Stable Diffusion 是一个先进的深度学习模型&#xff0c;用于创造和修改图像。这个模型能够基于文本描述来生成图像&#xff0c;让机器理解和实现用户的创意。使用这项技术的关键在于掌握其 API&#xff0c;通过编程来操控图像生成的过程。 在探索 Stable Diffusion API 的世界…

循环链表的用法

7.设 数 组 data[m] 作 为 循 环 队 列 SQ 的 存 储 空 间 &#xff0c;front 为 队 头 指 针 &#xff0c;rear 为 队 尾 指 针 &#xff0c;则 执 行 出 队 操 作 后 其 头 指 针 front 值 为 &#xff08; &#xff09; A&#xff0e;frontfront1 B&#xff0e;front(front1…

上位机图像处理和嵌入式模块部署(qmacvisual自己编写算法插件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说过&#xff0c;qmacvisual本身支持52个控件&#xff0c;但是指望这52个控件可以cover所有的应用场景&#xff0c;这也不太现实。另外&am…

【DBC专题】-11-使用Cantools将CAN/CANFD DBC自动生成C语言代码

目录 1 安装Python和Cantools 1.1 查看Python已安装的Package包 1.2 在Python中安装Cantools插件包 1.3 获取更多Cantools工具的更新动态 2 经典CAN/CANFD DBC自动生成C语言代码 2.1 批处理文件CAN_DBC_To_C.bat内容说明 2.2 经典CAN/CANFD DBC文件要求 2.3 如何使用生…

腾讯云k8s容器服务

1、新建一个集群 这个网址&#xff1a; 登录登录 - 腾讯云 2、选择第一个 3、名字随便起一个&#xff0c;然后基本默认就行 4、 组件配置直接跳过&#xff0c;信息确认&#xff0c;等待集群初始化&#xff0c;等10分钟左右&#xff08;容器服务需要充点钱才行&#xff09; 5…

瑞_JVM虚拟机_类的生命周期_初始化阶段 <clinit>

文章目录 1 JVM虚拟机概述2 类的生命周期2.1 加载阶段2.2 连接阶段2.3 初始化阶段\<client> ★★★★★2.3.1 案例一2.3.1.1 案例描述2.3.1.2 解析字节码指令 2.3.2 案例二2.3.3 小结2.3.4 代码中触发类的初始化的方式2.3.4.0 设置打印出加载并初始化的类2.3.4.1 方式一2…
最新文章