# Redis 入门到精通(五)-- redis 持久化(2)

Redis 入门到精通(五)-- redis 持久化(2)

一、redis 持久化–save 配置与工作原理

1、RDB 启动方式:反复执行保存指令,忘记了怎么办?不知道数据产生了多少变化,何时保存?

采用 redis 自动执行。

  • 谁:redis服务器发起指令(基于条件)。
  • 什么时间:满足条件。
  • 干什么事情:保存数据。

2、RDB 启动方式 ——save 配置

  • 1)配置: save second changes

  • 2)作用:满足限定时间范围内key的变化数量达到指定数量即进行持久化。

  • 3)参数:

    second:监控时间范围。
    changes:监控key的变化量。

  • 4)位置:在 conf 文件中进行配置。

  • 5)范例:

    save 900 1
    save 300 10
    save 60 10000

3、修改 /conf/redis-6379.conf 配置文件,添加 redis 自动执行 save 指令相关配置。指定配置文件,启动 redis 服务,


# 切换到 redis 安装目录 
cd /usr/local/redis/redis-4.0.0/# 查看 redis 服务是否后台启动成功:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
root     24153     1  0 01:03 ?        00:00:21 redis-server *:6379
root     24402  1538  0 08:41 pts/3    00:00:00 grep --color=auto redis-
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# # 杀死 redis 服务进程 
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# kill -s 9 24153
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# 
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
root     24404  1538  0 08:42 pts/3    00:00:00 grep --color=auto redis-
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# # 修改 conf/redis-6379.conf 配置文件,添加 redis 自动执行 save 指令相关配置。
vim conf/redis-6379.conf # 添加如下配置(每102个变化就自动保存):
save 10 2# 删除 data 目录下的其他 dump.rdb 文件 
rm -rf data/dump*# 指定配置文件,启动 redis 服务:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-server conf/redis-6379.conf# 客户端执行 save 后,再次查看 dump-6379.rdb 文件内容:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll dataroot@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# cat data/dump-6379.rdb 
REDIs0008dis-ver4.0.0edis-bitsctimefed-memf-preamblerepl-id(3807de8be5a58a80693a6a91fb91d33a68ce217ap1-offsetlname
redis-6379age 0;root@WIN-20240529B1A: /usr/local/redis/redis-4.0.0root@wIN-20240529BJA:/usr/1ocal/redis/redis-4.0.0## 当客户端 创建1个数据时,查询 data 下,只有日志文件。
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 20
drwxr-xr-x 2 root root 4096 Jul 16 08:43 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 6899 Jul 16 08:45 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# # 当客户端 创建2个数据时,再次查询data 下,多了一个 dump-6379.rdb 文件。
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 24
drwxr-xr-x 2 root root 4096 Jul 16 08:51 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 7224 Jul 16 08:51 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root  186 Jul 16 08:51 dump-6379.rdb
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# # 执行2次get,数据无变化,也不会自动保存
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 24
drwxr-xr-x 2 root root 4096 Jul 16 08:51 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 7224 Jul 16 08:51 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root  186 Jul 16 08:51 dump-6379.rdb
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# # 执行2次 get,数据无变化,也不会自动保存
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 24
drwxr-xr-x 2 root root 4096 Jul 16 08:51 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 7224 Jul 16 08:51 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root  186 Jul 16 08:51 dump-6379.rdb# 执行2次 del 和 set,数据有变化,自动保存
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 24
drwxr-xr-x 2 root root 4096 Jul 16 09:01 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 7549 Jul 16 09:01 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root  169 Jul 16 09:01 dump-6379.rdb
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# 

4、打开另一终端,连接 redis 客户端,创建的数据,测试是否自动保存。


# 启动另一客户端:# 切换到 redis 安装目录 
cd /usr/local/redis/redis-4.0.0/# 指定端口号,启动 redis 客户端:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-cli -p 6379# 查看所有 key 
127.0.0.1:6379> keys *# 创建一个数据,查看服务端,不会自动保存
127.0.0.1:6379> set name redis-6379
OK# 创建第2个数据,查看服务端,已经自动保存
127.0.0.1:6379> set age 38
OK # 执行2次 get,数据无变化,也不会自动保存
127.0.0.1:6379> get name
"redis-6379"
127.0.0.1:6379> get age
"38"# 执行2次 del 和 set,数据有变化,自动保存
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> set age 33
OK
127.0.0.1:6379> 

在这里插入图片描述

5、RDB启动方式 ——save 配置原理

38-RDB启动方式save配置原理.png

6、注意事项:

  • save 配置要根据实际业务情况进行设置,频度过高或过低都会出现性能问题,结果可能是灾难性的。
  • save 配置中对于 second 与 changes 设置通常具有互补对应关系,尽量不要设置成包含性关系。
  • save 配置启动后执行的是 bgsave 操作。

二、redis 持久化–RDB 三种启动方式对比与优缺点分析

1、RDB 三种启动方式对比

方式save指令bgsave指令
读写同步异步
阻塞客户端指令
额外内存消耗
启动新进程

2、rdb 特殊启动形式

  • 全量复制: 在主从复制中详细讲解。
  • 服务器运行过程中重启: debug reload。
  • 关闭服务器时指定保存数据:shutdown save。

默认情况下执行shutdown命令时,自动执行 bgsave(如果没有开启AOF持久化功能)。

3、RDB 优点:

  • RDB 是一个紧凑压缩的二进制文件,存储效率较高。
  • RDB 内部存储的是 redis 在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景。
  • RDB 恢复数据的速度要比 AOF 快很多。
  • 应用:服务器中每X小时执行 bgsave 备份,并将 RDB 文件拷贝到远程机器中,用于灾难恢复。

4、RDB 缺点:

  • RDB 方式无论是执行指令还是利用配置,无法做到实时持久化,具有较大的可能性丢失数据。
  • bgsave 指令每次运行要执行fork操作创建子进程,要牺牲掉一些性能。
  • Redis 的众多版本中未进行RDB文件格式的版本统一,有可能出现各版本服务之间数据格式无法兼容现象。

三、redis 持久化–AOF 简介

1、RDB 存储的弊端

 存储数据量较大,效率较低,基于快照思想,每次读写都是全部数据,当数据量巨大时,效率非常低。
 大数据量下的IO性能较低。
 基于fork创建子进程,内存产生额外消耗。
 宕机带来的数据丢失风险。

2、解决思路

 不写全数据,仅记录部分数据。
 降低区分数据是否改变的难度,改记录数据为记录操作过程。
 对所有操作均进行记录,排除丢失数据的风险。

3、AOF概念

 AOF(append only file)持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令
达到恢复数据的目的。与RDB相比可以简单描述为改记录数据为记录数据产生的过程。

 AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式。

四、redis 持久化–AOF 持久化策略基本操作

1、AOF 写数据过程

40-AOF写数据过程.png

2、AOF 写数据三种策略 (appendfsync)

  • always(每次)
    每次写入操作均同步到AOF文件中,数据零误差,性能较低,不建议使用。
  • everysec(每秒)
    每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能较高,建议使用,也是默认配置。
    在系统突然宕机的情况下丢失1秒内的数据。
  • no(系统控制)
    由操作系统控制每次同步到AOF文件的周期,整体过程不可控。

3、AOF 功能开启


- 配置:appendonly yes|no- 作用:是否开启AOF持久化功能,默认为不开启状态。- 配置appendfsync always|everysec|no- 作用:AOF 写数据策略。- 配置appendfilename filename。- 作用AOF持久化文件名,默认文件名未appendonly.aof,建议配置为 appendonly-端口号.aof。- 配置dir - 作用AOF持久化文件保存路径,与RDB持久化文件保持一致即可。	

4、修改 /conf/redis-6379.conf 配置文件,添加 AOF持久化策略。指定配置文件,启动 redis 服务,


# 切换到 redis 安装目录 
cd /usr/local/redis/redis-4.0.0/# 查看 redis 服务是否后台启动成功:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
root     24408     1  0 08:45 ?        00:00:04 redis-server *:6379
root     24426  1538  0 10:16 pts/3    00:00:00 grep --color=auto redis-# 杀死 redis 服务进程 
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# kill -s 9 24408
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# 
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
root     24428  1538  0 10:16 pts/3    00:00:00 grep --color=auto redis-# 修改 conf/redis-6379.conf 配置文件,添加 AOF持久化策略。
vim conf/redis-6379.conf # 添加如下配置
appendonly yes
appendfsync always
# appendfsync everysec
# appendfsync no# 删除 data 目录下的其他 dump.rdb 文件 
rm -rf data/dump*# 指定配置文件,启动 redis 服务:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-server conf/redis-6379.conf# 查看 data 文件夹下文件列表,多出一个 appendonly.aof 文件,容量0:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 28
drwxr-xr-x 2 root root 4096 Jul 16 10:21 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 8754 Jul 16 10:21 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root    0 Jul 16 10:21 appendonly.aof
-rw-r--r-- 1 root root  169 Jul 16 09:01 dump-6379.rdb# 客户端创建数据后,再次查看 data 文件夹下文件列表,appendonly.aof 文件,容量增大:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 32
drwxr-xr-x 2 root root 4096 Jul 16 10:21 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 8754 Jul 16 10:21 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root   63 Jul 16 10:26 appendonly.aof
-rw-r--r-- 1 root root  169 Jul 16 09:01 dump-6379.rdb
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# 
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 32
drwxr-xr-x 2 root root 4096 Jul 16 10:40 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 9079 Jul 16 10:40 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root   93 Jul 16 10:40 appendonly.aof
-rw-r--r-- 1 root root  186 Jul 16 10:40 dump-6379.rdb# 执行2次 get,数据无变化,appendonly.aof 文件大小无变化
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 32
drwxr-xr-x 2 root root 4096 Jul 16 10:40 ./
drwxrwxr-x 8 root root 4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 9079 Jul 16 10:40 6379.log
-rw-r--r-- 1 root root 1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root   93 Jul 16 10:40 appendonly.aof
-rw-r--r-- 1 root root  186 Jul 16 10:40 dump-6379.rdb# 查看 appendonly.aof 文件内容 
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# cat data/appendonly.aof 
*2
$6
SELECT
$1
0
*3
$3
set
$4
name
$10
redis-6379
*3
$3
set
$3
age
$2
38# 再次修改 conf/redis-6379.conf 配置文件,添加 AOF 持久化策略。重新测试。
vim conf/redis-6379.conf # 保存以下内容即可:
port 6379
daemonize yes
logfile "6379.log"# redis 持久化 -- RDB 相关配置
# data 目录为新建目录(设置存储.rdb文件的路径)
dir /usr/local/redis/redis-4.0.0/data# 设置本地数据库文件名:
dbfilename dump-6379.rdb
# 设置存储至本地数据库时是否压缩数据
rdbcompression yes
# 设置是否进行 RDB 文件格式校验
rdbchecksum yes# save配置(每10秒有2次数据变化就自动保存)
save 10 2# 添加如下配置(AOF存储功能)
# 开启AOF持久化功能
appendonly yes
# AOF写数据策略(每秒)
appendfsync everysec

5、打开另一终端,连接 redis 客户端,创建的数据,测试AOF持久化策略基本操作。


# 启动另一客户端:# 切换到 redis 安装目录 
cd /usr/local/redis/redis-4.0.0/# 指定端口号,启动 redis 客户端:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-cli -p 6379# 查看所有 key 
127.0.0.1:6379> keys *# 创建一个数据,查看服务端,appendonly.aof 有数据
127.0.0.1:6379> set name redis-6379
OK# 创建第2个数据,查看服务端,appendonly.aof 文件大小增加了
127.0.0.1:6379> set age 38
OK # 执行2次 get,数据无变化,appendonly.aof 文件大小无变化
127.0.0.1:6379> get name
"redis-6379"
127.0.0.1:6379> get age
"38"# 执行2次 del 和 set,数据有变化,自动保存
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> set age 33
OK
127.0.0.1:6379> 

41-AOF持久化策略基本操作.png

五、redis 持久化–AOF 重写概念与命令执行

1、AOF 写数据遇到的问题

42-AOF写数据遇到的问题.png

2、AOF 重写

随着命令不断写入 AOF,文件会越来越大,为了解决这个问题,Redis 引入了AOF重写机制压缩文件体积。AOF 文件重
写是将 Redis 进程内的数据转化为写命令同步到新AOF文件的过程。简单说就是将对同一个数据的若干个条命令执行结
果转化成最终结果数据对应的指令进行记录。

3、AOF重写作用

  • 降低磁盘占用量,提高磁盘利用率。
  • 提高持久化效率,降低持久化写时间,提高IO性能。
  • 降低数据恢复用时,提高数据恢复效率。

4、AOF 重写规则

  • 进程内已超时的数据不再写入文件
  • 忽略无效指令,重写时使用进程内数据直接生成,这样新的AOF文件只保留最终数据的写入命令。
    如 del key1、 hdel key2、srem key3、set key4 111、set key4 222 等。
  • 对同一数据的多条写命令合并为一条命令、
    如lpush list1 a、lpush list1 b、 lpush list1 c 可以转化为:lpush list1 a b c。 为防止数据量过大造成客户端缓冲区溢出,对list、set、hash、zset等类型,每条指令最多写入64个元素。

5、AOF 重写方式

  • 手动重写:
    bgrewriteaof
  • 自动重写:
    auto-aof-rewrite-min-size size
    auto-aof-rewrite-percentage percentage

6、redis 持久化操作–AOF 重写概念与命令执行

修改 /conf/redis-6379.conf 配置文件,添加 AOF持久化策略。指定配置文件,启动 redis 服务,


# 切换到 redis 安装目录 
cd /usr/local/redis/redis-4.0.0/# 查看 redis 服务是否后台启动成功:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
root     24436     1  0 10:21 ?        00:00:10 redis-server *:6379
root     25004  1538  0 14:14 pts/3    00:00:00 grep --color=auto redis-# 杀死 redis 服务进程 
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# kill -s 9 24436
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
root     25006  1538  0 14:15 pts/3    00:00:00 grep --color=auto redis-# 修改 conf/redis-6379.conf 配置文件,添加 AOF持久化策略。
vim conf/redis-6379.conf # 保存以下内容即可:
port 6379
daemonize yes
logfile "6379.log"# redis 持久化 -- RDB 相关配置
# data 目录为新建目录(设置存储.rdb文件的路径)
dir /usr/local/redis/redis-4.0.0/data# 设置本地数据库文件名:
dbfilename dump-6379.rdb
# 设置存储至本地数据库时是否压缩数据
rdbcompression yes
# 设置是否进行 RDB 文件格式校验
rdbchecksum yes# save配置(每10秒有2次数据变化就自动保存)
save 10 2# 添加如下配置(AOF存储功能)
# 开启AOF持久化功能
appendonly yes
# AOF写数据策略(每次)
appendfsync always
# 设置文件名
appendfilename appendonly-6379.aof# 删除 data 目录下的其他文件 
rm -rf data/dump*
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# rm -rf data/appendonly.aof# 指定配置文件,启动 redis 服务:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0#  redis-server conf/redis-6379.conf
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# 
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-    
root     25017     1  1 14:23 ?        00:00:00 redis-server *:6379
root     25022  1538  0 14:23 pts/3    00:00:00 grep --color=auto redis-# 查看 data 文件夹下文件列表,多出一个 appendonly-6379.aof 文件,容量0:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data             
total 24
drwxr-xr-x 2 root root  4096 Jul 16 14:23 ./
drwxrwxr-x 8 root root  4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 10284 Jul 16 14:23 6379.log
-rw-r--r-- 1 root root  1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root     0 Jul 16 14:23 appendonly-6379.aof# 客户端创建数据后,再次查看 data 文件夹下文件列表,appendonly.aof 文件,容量增大:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 32
drwxr-xr-x 2 root root  4096 Jul 16 14:30 ./
drwxrwxr-x 8 root root  4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 10609 Jul 16 14:30 6379.log
-rw-r--r-- 1 root root  1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root    95 Jul 16 14:30 appendonly-6379.aof
-rw-r--r-- 1 root root   176 Jul 16 14:30 dump-6379.rdb
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# 
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 32
drwxr-xr-x 2 root root  4096 Jul 16 14:30 ./
drwxrwxr-x 8 root root  4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 10609 Jul 16 14:30 6379.log
-rw-r--r-- 1 root root  1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root   131 Jul 16 14:30 appendonly-6379.aof
-rw-r--r-- 1 root root   176 Jul 16 14:30 dump-6379.rdb# 客户端执行重写操作后,查看服务端,appendonly-6379.aof 文件大小,发现减小了。
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ll data
total 32
drwxr-xr-x 2 root root  4096 Jul 16 14:32 ./
drwxrwxr-x 8 root root  4096 Jul 15 22:28 ../
-rw-r--r-- 1 root root 11350 Jul 16 14:32 6379.log
-rw-r--r-- 1 root root  1754 Jul 15 23:26 6380.log
-rw-r--r-- 1 root root    59 Jul 16 14:32 appendonly-6379.aof
-rw-r--r-- 1 root root   176 Jul 16 14:30 dump-6379.rdb

7、打开另一终端,连接 redis 客户端,创建的数据,测试AOF持久化策略基本操作。


# 启动另一客户端:# 切换到 redis 安装目录 
cd /usr/local/redis/redis-4.0.0/# 指定端口号,启动 redis 客户端:
root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-cli -p 6379# 查看所有 key 
127.0.0.1:6379> keys *
(empty list or set)# 创建一个数据,查看服务端,appendonly-6379.aof 有数据
127.0.0.1:6379> set name redis-1
OK# 更改name值,查看服务端,appendonly-6379.aof 文件大小增加了
127.0.0.1:6379> set name redis-2
OK # 更改name值,查看服务端,appendonly-6379.aof 文件大小增加了
127.0.0.1:6379> set name redis-3# 执行重写操作,查看服务端,appendonly-6379.aof 文件大小,发现减小了。
127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started

43-AOF持久化策略基本操作-重写操作.png

8、AOF手动重写 —— bgrewriteaof指令工作原理

 41-AOF持久化策略基本操作.png

上一节关联链接请点击:
# Redis 入门到精通(五)-- redis 持久化(1)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CNN之图像识别

Inception Inception网络是CNN发展史上一个重要的里程碑。在Inception出现之前,大部分流行CNN仅仅是把卷积层堆叠得越来越多,使网络越来越深,以此希望能够得到更好的性能。但是存在以下问题: 图像中突出部分的大小差别很大。由于信息位置的…

【typedb】例子:药物发现: studio运行

测试8:solution结果 测试1:获取名字为Q9NPB9的protein Let’s start by getting the names of the protein Q9NPB9:测试2:哪个基因编码了Q9NPB9 Now let’s see which gene encodes for protein Q9NPB9: 推理过程:

【Linux】基础I/O——FILE,用户缓冲区

1.FILE里的fd FILE是C语言定义的文件结构体,里面包含了各种文件信息。可以肯定的一点是,FILE结构体内一定封装了 fd 。为什么?来看接下来的思路分析: 1.使用系统接口的必然性   文件存储在磁盘上,属于外设。谁有权限访问…

RabbitMQ:基础篇

1.RabbitMQ是高性能的异步通讯组件 何为异步通讯 打电话就是同步通讯,微信聊天可以理解为异步通讯,不是实时的进行通讯:时效性差。 同步调用的缺点: 拓展性差(需求不尽提) 性能下降 级联失败 …

带你轻松玩转DevOps

一、DevOps详细介绍 软件开发最开始是由两个团队组成: 开发计划由**开发团队**从头开始设计和整体系统的构建。需要系统不停的迭代更新。**运维团队**将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。 这两个看似目标不同的团队,需要协同完…

HarmonyOS 开发者联盟高级认证最新题库

本篇文章包含 Next 版本更新后高级认证题库中95%的题目。 答案正确率 50-60%,答案仅做参考。 请在考试前重点看一遍题目,勿要盲目抄答案。 欢迎在评论留言正确答案和未整理的题目。 1、下面关于方舟字节码格式PREF_IMM16_v8_v8描述正确的是 16位前缀操作…

dp or 数学问题

看一下数据量&#xff0c;只有一千&#xff0c;说明这个不是数学问题 #include<bits/stdc.h> using namespace std;#define int long long const int mo 100000007; int n, s, a, b; const int N 1005;// 2 -3 // 1 3 5 2 -1 // 1 -2 -5 -3 -1 int dp[N][N]; int fun…

算法力扣刷题记录 四十九【112. 路径总和】和【113. 路径总和ii】

前言 二叉树篇继续。 记录 四十九【112. 路径总和】和【113. 路径总和ii】 一、【112. 路径总和】题目阅读 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 target…

django-ckeditor富文本编辑器

一.安装django-ckeditor 1.安装 pip install django-ckeditor2.注册应用 INSTALLED_APPS [...ckeditor&#xff0c; ]3.配置model from ckeditor.fields import RichTextFieldcontent RichTextField()4.在项目中manage.py文件下重新执行迁移&#xff0c;生成迁移文件 py…

R语言模型评估网格搜索

### 网格搜索 ### install.packages("gbm") set.seed(1234) library(caret) library(gbm) fitControl <- trainControl(method repeatedcv,number 10,repeats 5) # 设置网格搜索的参数池 gbmGrid <- expand.grid(interaction.depth c(3,5,9),n.trees (1:2…

轨道交通AR交互教学定制公司优选深圳华锐视点

在寻找上海AR开发制作公司作为合作伙伴的过程中&#xff0c;选择一家既技术深厚又具备丰富经验的AR开发企业&#xff0c;成为了众多客户与合作伙伴的共同追求。华锐视点上海AR开发制作公司作为业界的佼佼者&#xff0c;凭借其卓越的公司规模、丰富的行业案例以及顶尖的ar增强现…

Unity基础调色

叭叭叭 最近&#xff08;*这两天&#xff09;因为想做一些Unity的调色问题&#xff0c;尝试原文翻译一下&#xff0c;其实直接原文更好&#xff01;&#xff01; Color Grading 参考了&#xff0c;某大牛的翻译&#xff0c;实在忍不住了&#xff0c;我是不知道为什么能翻译成…

OpenSceneGraph学习笔记

目录 引言第一章&#xff1a;OSG概述一、前言&#xff08;1&#xff09;为什么要学习OSG?&#xff08;2&#xff09;OSG的组成&#xff08;3&#xff09;OSG的智能指针&#xff08;4&#xff09;OSG的安装编译 二、第一个OSG程序&#xff08;1&#xff09;Hello OSG程序&#…

美式键盘 QWERTY 布局的来历

注&#xff1a;机翻&#xff0c;未校对。 The QWERTY Keyboard Is Tech’s Biggest Unsolved Mystery QWERTY 键盘是科技界最大的未解之谜 It’s on your computer keyboard and your smartphone screen: QWERTY, the first six letters of the top row of the standard keybo…

Linux热键,shell含义及权限介绍

君子忧道不忧贫。 —— 孔丘 Linux操作系统的权限 1、几个常用的热键介绍1、1、[Tab]键1、2、[ctrl]-c1、3、[ctrl]-d1、4、[ctrl]-r 2、shell命令以及运行原理3、权限3、1、什么是权限3、2、权限的本质3、3、Linux中的用户3、4、Linux中文件的权限3、4、1、快速掌握修改权限的…

vue引用js html页面 vue引用js动态效果

要引用的index.html页面&#xff1a;&#xff08;资源来自网络&#xff09;在pubilc下建一个static文件放入js文件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>数字翻转</title><meta con…

速部署 HBase 测试环境

快速部署 HBase 测试环境 第一步&#xff1a;下载软件&#xff0c;在HBase官网下载最新版&#xff0c; 找到 bin&#xff0c;点击下载&#xff0c;比如我这里下载的是 hbase-2.5.6-bin.tar.gz 第二步&#xff1a;解压软件 $ tar -zxvf hbase-2.5.6-bin.tar.gz $ cd hbase-2.…

Lora模型训练的参数-学习笔记

任何一个lora都会有三重属性&#xff0c;易调用性、泛化性和还原性&#xff0c;任何一个lora只能完美满足其中的两项&#xff1b; 易调用性&#xff1a;在已调用lora后&#xff0c;还需要多少提示词才能让该lora完全生效&#xff1b; 泛化性&#xff1a;能不能还原lora训练素…

杜甫很 忙

我 我希望大家别再乱搞了

Windows终端远程登陆Linux服务器(SSH+VScode)

W i n d o w s 终端远程登陆 L i n u x 服务器&#xff08; S S H V S c o d e &#xff09; \huge{Windows终端远程登陆Linux服务器&#xff08;SSHVScode&#xff09;} Windows终端远程登陆Linux服务器&#xff08;SSHVScode&#xff09; 文章目录 写在前面通过SSH远程连接L…