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

Redis入门第一步:认识Redis与快速安装配置

认识Redis与快速安装配置🍃

Redis是什么🐲

1.Redis的背景🎍

       Redis(Remote Dictionary Server)译为"远程字典服务",它是一款基于内存实现的键值型 NoSQL 数据库, 通常也被称为数据结构服务器,这是因为它可以存储多种数据类型,比如 string(字符串),hash(哈希散列),list(列表),set(集合)和 sorted set(有序集合)等

        Redis 是由意大利人 Salvatore Sanfilippo 使用 C语言编写,它遵守 BSD 开源协议,并且对多种编程语言提供了良好的 API 支持,比如 Java,C/C++,C#,PHP,JavaScript,Perl,Python,Ruby 等

        Redis是常见的内存型数据库,除 Redis 之外,还有 Oracle Berkeley DB(甲骨文旗下的一款产品)、SQlite(轻量级内存数据库)、Memcache(键值型分布式缓存数据库)、Altibase(基于内存的高性能数据库)

2.Redis的特点🎍

与其他内存型数据库相比,Redis 具有以下特点:

  • Redis 不仅可以将数据完全保存在内存中,还可以通过磁盘实现数据的持久存储;

  • Redis 支持丰富的数据类型,包括 string、list、set、zset、hash 等多种数据类型,因此它也被称为"数据结构服务器";

  • Redis 支持主从同步,即 master-slave 主从复制模式。数据可以从主服务器向任意数量的从服务器上同步,有效地保证数据的安全性;

  • Redis 支持多种编程语言,包括 C、C++、Python、Java、PHP、Ruby、Lua 等语言

       与 SQL 型数据库截然不同,Redis 没有提供新建数据库的操作,因为它自带了 16 (0—15)个数据库(默认使用 0 库)。在同一个库中,key 是唯一存在的、不允许重复的,它就像一把密钥,只能打开一把。键值存储的本质就是使用 key 来标识 value,当想要检索 value 时,必须使用与 value 相对应的 key 进行查找

       Redis 数据库没有的概念,它通过不同的数据类型来实现存储数据的需求,不同的数据类型能够适应不同的应用场景,从而满足开发者的需求

3.Redis的架构🎍

Redis体系架构主要分为两个部分:

  • Redis服务端

  • Redis客户端

客户端和服务端可以位于同一台计算机上,也可以位于不同的计算机上。服务端是整个架构的"大脑",能够把数据存储到内存中,并且起到管理数据的作用

4.Redis的优劣势🎍

下面对 Redis 的优势进行了简单总结:

  • 性能极高:Redis 基于内存实现数据存储,它的读取速度是 110000次/s,写速度是 81000次/s;

  • 多用途工具: Redis 有很多的用途,比如可以用作缓存、消息队列、搭建 Redis 集群等;

  • 命令提示功能:Redis 客户端拥有强大的命令提示功能,使用起来非常的方便,降低了学习门槛;

  • 可移植性:Redis 使用用标准 C语言编写的,能够在大多数操作系统上运行,比如 Linux,Mac,Solaris 等

  • 数据结构丰富:除了支持string类型的value外还支持hash,set,zset,list等数据结构

  • 支持主从复制:主机会自动将数据同步到从机,可以进行读写分离

下面对 Redis 的劣势进行了简单总结:

  • 数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上

  • Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复

  • 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性

  • Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费

5.Redis的应用场景🎍

        Redis 用来缓存一些经常被访问的热点数据、或者需要耗费大量资源的内容,通过把这些内容放到 Redis 中,可以让应用程序快速地读取它们。例如,网站的首页需要经常被访问,并且在创建首页的过程中会消耗的较多的资源,此时就可以使用 Redis 将整个首页缓存起来,从而降低网站的压力,减少页面访问的延迟时间。

        我们知道,数据库的存储方式大体可分为两大类,基于磁盘存储和基于内存存储。磁盘存储的数据库,因为磁头机械运动以及系统调用等因素导致读写效率较低。Redis 基于内存来实现数据存取,相对于磁盘来说,其读写速度要高出好几个数量级。下表将 Redis 数据库与其他常用数据库做了简单对比:

名称类型数据存储选项附加功能
Redis基于内存存储的键值非关系型数据库字符串、列表、散列、有序集合、无序集合发布与订阅、主从复制、持久化存储等
Memcached基于内存存储的键值缓存型数据库键值之间的映射为提升性能构建了多线程服务器
MySQL基于磁盘的关系型数据库每个数据库可以包含多个表,每个表可以包含多条记录; 支持第三方扩展。支持 ACID 性质、主从复制和主主复制
MongoDB基于磁盘存储的非关系文档型数据库每个数据库可以包含多个集合,每个集合可以插入多个文档支持聚合操作、主从复制、分片和空间索引

       Redis 基于内存来实现数据的存储,因此其速度非常快。但是我们知道,计算机的内存是非常珍贵的资源,所以 Redis 不适合存储较大的文件或者二进制数据,否则会出现错误,Redis 适合存储较小的文本信息。理论上 Redis 的每个 key、value 的大小不超过 512 MB

6.Redis为什么这么快🎍
  1. 完全基于内存,绝大部分请求是纯粹的内存操作,非常迅速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的事件复杂度都是O(I)

  2. 数据结构简单,对数据的操作也简单,Redis中的数据结构是专门进行设计的

  3. 采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有出现死锁而导致的性能消耗的情况

  4. 使用多路I/O复用模型,非阻塞IO

  5. 使用的底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间去请求

Redis的安装搭建🐲

1.Windows操作系统的安装搭建🐙

Redis 官方网站没有提供 Windows 版的安装包,但可以通过 GitHub 来下载 Windows 版 Redis 安装包

下载地址:https://github.com/tporadowski/redis/releases

注意:Windows 安装包是某位民间“大神”根据 Redis 源码改造的,并非 Redis 官方网站提供

下载完成后,打开相应的文件夹,您会看到如下图所示的文件目录:

创建Redis临时服务

1) 启动服务端程序

如上图所示,双击 Redis 服务端启动程序 redis-server.exe,您会看到以下界面:

上图中显示一些 Redis 的相关信息,比如 Redis 的版本号以及默认端口号(6379)。注意,为了实现后续操作,请您保持服务端开启状态,否则客户端无法正常工作

2) 启动客户端程序

启动服务端后,双击客户端启动程序 redis-cli.exe,得到如下界面:

得到如上界面,说明 Redis 本地客户端与服务端连接成功

命令创建Redis服务

上述方式虽然简单快捷,但是显然不是程序员的操作,下面介绍,通过命令启动 Redis 服务端,并将 Redis 服务添加到 Windows 资源管理器,实现开机后自动启动。

1) 注册Redis服务

通过 CMD 命令行工具进入 Redis 安装目录,将 Redis 服务注册到 Windows 服务中,执行以下命令:

# redis-server.exe --service-install redis.windows.conf --loglevel verbose

执行完后,得到以下输出,说明注册成功。

[1868] 07 Jan 15:00:08.223 # Granting read/write access to 'NT AUTHORITY\NetworkService' on: "D:\Redis-x64-5.0.10" "D:\Redis-x64-5.0.10\"
[1868] 07 Jan 15:00:08.230 # Redis successfully installed as a service.

2) 启动Redis服务

执行以下命令启动 Redis 服务,命令如下:

# redis-server --service-start

如下图所示:

注意:此时 Redis 已经被添加到 Windows 服务中,因此不会再显示 Redis 服务端的相应的信息,如下图所示:

3) 启动Redis客户端

在 CMD 命令行输出 redis-cli 命令启动客户端,如下所示:

4) 检查是否连接成功

测试客户端和服务端是否成功连接。输出PING命令,若返回PONG则证明成功连接。如下所示:

通过上面的操作,我们完成了 Redis 的安装。当然,您也可以将 Redis 加入到环境变量中,如下所示:

注意:根据自己的安装路径添加环境变量。

总结

下面对安装过程中涉及到的命令进行总结,主要包括以下命令:

安装服务:redis-server --service-install 
卸载服务:redis-server --service-uninstall 
开启服务:redis-server --service-start 
停止服务:redis-server --service-stop 
服务端启动时重命名:redis-server --service-start --service-name Redis1
2.Linux操作系统的安装搭建🐙
Yum源方式安装
[root@localhost ~]# yum -y install update  # 更新yum源
[root@localhost ~]# yum -y install redis.x86_64 # 下载redis
[root@localhost ~]# redis-server # 启动redis服务端
[root@localhost ~]# ps aux | grep redis | grep -v "grep" # 查看redis的进程
 
`Redis客户端启动语法:
#若设置了密码,使用如下格式启动
# redis-cli -h [ip] -p [port] -a [password] 
#简单格式
# redis-cli
[root@localhost ~]# redis-cli
127.0.0.1:6379> ping  # 验证是否成功安装
PONG
127.0.0.1:6379> 

源码方式安装
[root@localhost ~]# wget https://download.redis.io/releases/redis-5.0.14.tar.gz
[root@localhost ~]# tar xvzf redis-5.0.14.tar.gz
[root@localhost ~]# cd redis-5.0.14/
[root@localhost redis-5.0.14]# make && make install
[root@localhost redis-5.0.14]# cd
[root@localhost ~]#sed -i 's/daemonize no/daemonize yes/g' redis.conf # 开启后台模式将on改为yes
[root@localhost ~]# redis-server &  #放入后台执行
[root@localhost ~]# redis-cli
redis> set name www.biancheng.net
OK
127.0.0.1:6379> get name
"www.baidu.com"
 
[root@localhost ~]# mv redis-5.0.14 /usr/bin/redis
[root@localhost ~]# cd /usr/bin/redis/
[root@localhost redis]# mkdir -p /data/log/redis # 创建日志文件的存放路径
[root@localhost redis]# mkdir -p /data/redis/  # 本地数据库存放持久化数据的目录
`修改配置文件
[root@localhost redis]# sed -i 's/logfile ""/logfile \/data\/log\/redis\/redis.log/g' redis.conf   # 定义log文件
[root@localhost redis]# cat redis.conf | grep logfile
logfile /data/log/redis/redis.log
# 修改登录redis密码
[root@localhost redis]# sed -i 's/# requirepass foobared/requirepass redis/g' redis.conf 
# 定义本地数据库存放持久化数据的目录
[root@localhost redis]# sed -i 's/dir .\//dir \/data\/redis\//g' redis.conf

Redis配置文件🐲

`配置文件名称
Windows--->redis.windows.conf
Linux  --->redis.conf
1.查看配置项
`使用 Redis 的CONFIG命令来查看或者更改 Redis 的配置信息.语法格式如下:
127.0.0.1:6379> CONFIG GET 配置名称
​
eg:
# 获取日志等级的配置项
127.0.0.1:6379> CONFIG GET loglevel 
# 查看所有的配置项
127.0.0.1:6379> CONFIG GET *

2.更改配置项
`如果想要重新设置配置项,语法格式为:
127.0.0.1:6379> CONFIG SET 配置项名称 配置项参数值
​
eg:
127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"

扩展: Redis的日志等级为:

1.debug:会打印出很多信息,适用于开发和测试阶段

2.verbose:包含很多不太常用的信息,但是比debug简短

3.notice:适用于生产场景

4.warning:警告信息

3.配置项说明
配置项参数说明
daemonizeno/yes默认为 no,表示 Redis 不是以守护进程的方式运行,通过修改为 yes 启用守护进程
pidfile文件路径当 Redis 以守护进程方式运行时,会把进程 pid 写入自定义的文件中
port6379指定 Redis 监听端口,默认端口为 6379
bind127.0.0.1绑定的主机地址
timeout0客户端闲置多长秒后关闭连接,若指定为 0 ,表示不启用该功能
loglevelnotice指定日志记录级别,支持四个级别:debug、verbose、notice、warning,默认为 notice
logfilestdout日志记录方式,默认为标准输出
databases16设置数据库的数量(0-15个)共16个,Redis 默认选择的是 0 库,可以使用 SELECT 命令来选择使用哪个数据库储存数据
save[seconds] [changes]可以同时配置三种模式: save 900 1 save 300 10 save 60 10000表示在规定的时间内,执行了规定次数的写入或修改操作,Redis 就会将数据同步到指定的磁盘文件中。比如 900s 内做了一次更改,Redis 就会自动执行数据同步
rdbcompressionyes/no当数据存储至本地数据库时是否要压缩数据,默认为 yes
dbfilenamedump.rdb指定本地存储数据库的文件名,默认为 dump.rdb
dir./指定本地数据库存放目录
slaveof <masterip> <masterport>主从复制配置选项当本机为 slave 服务时,设置 master 服务的 IP 地址及端口,在 Redis 启动时,它会自动与 master 主机进行数据同步。
requirepassfoobared 默认关闭密码配置项,默认关闭,用于设置 Redis 连接密码。如果配置了连接密码,客户端连接 Redis 时需要通过<password> 密码认证。
maxmemory <bytes>最大内存限制配置项指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会尝试清除已到期或即将到期的 Key,当此方法处理 后,若仍然到达最大内存设置,将无法再进行写入操作,但可以进行读取操作。
appendfilenameappendonly.aof指定 AOF 持久化时保存数据的文件名,默认为 appendonly.aof。
glueoutputbufyes设置向客户端应答时,是否把较小的包合并为一个包发送,默认开启状态

4.常见配置案例
  1. NETWORK网络

    bind 127.0.0.1  #绑定的 IP
    protected-mode no   #保护模式
    port 6379   #端口设置
  2. GENERAL通用

    daemonize yes # 以守护进程的方式运行,默认是no
    pidfile /var/run/redis_6379.pid # 如果是后台启动,需要指定pid文件
    ​
    # 日志级别
    # debug(调试日志,大量的信息)
    # verbose(许多不太有用的信息,但是不是debug级别)
    # notice(适度信息,可能是您在生产中想要的)
    # warning(警告信息)
    ​
    loglevel notice
    logfile ""  # 日志文件的位置
    databases 16 # 数据库的数量,默认是 16
    always-show-logo yes  # 是否总是显示 LOG

  3. SNAPSHOTTING快照

    # 持久化,在规定的时间内,执行了多少次操作则会持久化到磁盘
    # Redis是内存数据库,如果没有持久化,那么数据断电即丢失
    ​
    ……
    # 如果 900s 内,至少有 1 个 key 进行了修改,进行持久化操作
    save 900 1
    # 如果 300s 内,至少有10个key进行了修改,进行持久化操作
    save 300 10
    save 60 10000
    ​
    stop-writes-on-bgsave-error yes # 如果持久化出错,是否还要继续工作
    rdbcompression yes # 是否压缩rdb文件,需要消耗一些cpu资源
    rdbchecksum yes # 保存rdb文件的时候,进行错误的检查校验
    dir ./ # rdb文件保存的目录

  4. SECURITY 安全

    `可以设置Redis密码,默认是没有密码
    [root@localhost ~]# redis-cli
    127.0.0.1:6379> ping
    PONG
    127.0.0.1:6379> config get requirepass  # 获取 redis 密码
    1) "requirepass"
    2) ""
    127.0.0.1:6379> config set requirepass "123456"  # 设置 redis 密码
    OK
    127.0.0.1:6379> ping
    (error) NOAUTH Authentication required.  # 发现所有的命令都没有权限了
    127.0.0.1:6379> auth 123456   # 使用密码登录
    OK
    127.0.0.1:6379> config get requirepass
    1) "requirepass"
    2) "123456"
    127.0.0.1:6379> 
  5. CLUENTS 限制

    # maxclients 10000 设置能连接上redis的最大客户端数量
    # maxmemory <bytes> redis设置最大的内存容量
    maxmemory-policy noeviction # 内存达到上限之后的处理策略- noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错- allkeys-lru:在所有键中采用lru算法删除键,直到腾出足够内存为止- volatile-lru:在设置了过期时间的键中采用lru算法删除键,直到腾出足够内存为止- allkeys-random:在所有键中采用随机删除键,直到腾出足够内存为止- volatile-random:在设置了过期时间的键中随机删除键,直到腾出足够内存为止- volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除
  6. APPEND ONLY 模式 AOF 配置

    appendonly no  # 默认是不开启 AOF 模式的,默认使用 rdb 方式持久化,大部分情况下,rdb 完全够用
    ​
    appendfilename "appendonly.aof"  # 持久化的文件的名字
    # appendfsync always  # 每次修改都会 sync 消耗性能
    appendfsync everysec  # 每秒执行一次 sync 可能会丢失这 1s 的数据。
    # appendfsync no      # 不执行 sync 这个时候操作系统自己同步数据,速度最快

相关文章:

Redis入门第一步:认识Redis与快速安装配置

认识Redis与快速安装配置&#x1f343; Redis是什么&#x1f432; 1.Redis的背景&#x1f38d; Redis&#xff08;Remote Dictionary Server&#xff09;译为"远程字典服务"&#xff0c;它是一款基于内存实现的键值型 NoSQL 数据库&#xff0c; 通常也被称为数据结…...

ES postman操作全量修改,局部修改,删除

全量修改 修改需要调用的url 地址是http://192.168.1.108:9200/shopping/_doc/1001&#xff0c;调用方法使用put 只修改指定的需求的内容的请求方式 post方式就是局部修改 http://192.168.1.108:9200/shopping/_update/1001&#xff0c;请求方式post 上图是只修改id 为1001数…...

社区交流礼仪 | 提问的艺术

唠唠闲话 2021 年通过 Julia 社区了解到开源&#xff0c;自此开始融入开源社区&#xff0c;学习和体验这种独特的协作模式与交流文化&#xff0c;受益良多。本篇文章为开源新手必读&#xff0c;文章中探讨的交流模式&#xff0c;不仅对参与开源项目的协作有所帮助&#xff0c;…...

极客兔兔Gee-Cache Day5

HTTPPool 既可以是服务端&#xff0c;也可以是客户端&#xff0c;这取决于特定的使用场景和上下文&#xff1a; 作为客户端&#xff1a;当本地缓存没有找到需要的数据时&#xff0c;HTTPPool 需要作为客户端&#xff0c;通过 httpGetter &#xff08;实现了 PeerGetter 接口&am…...

【IPv6】IPv6地址格式及地址分类(组播、单播、任播)整理

IPv6地址格式 IPv6 地址从 IPv4 地址的 32 bits 扩展到 128 bits&#xff0c;IPv6 地址的表示、书写方式也从 IPv4 的点分十进制&#xff0c;修改16进制的冒号分割 IPv4 点分格式(.) 192.168.11.11 IPv6 冒号分割(:) 2408:8459:3032:0000:0000:0000:0001:a9fd IPv6 的规范…...

Linux数据备份

1、Linux服务器中哪些数据需要备份 1&#xff09;Linux系统重要数据&#xff1a; ①/root/目录&#xff0c;管理员家目录 ②/home/目录&#xff0c;普通用户家目录 ③/etc/目录 &#xff0c;系统重要的配置文件保存目录 2&#xff09;安装服务的数据&#xff1a;例apache①…...

回到原点再出发

原文What Goes Around Comes Around作者Michael Stonebraker & Joseph M. Hellerstein其他译文https://zhuanlan.zhihu.com/p/111322429 1. 摘要 本文总结了近35年来的数据模型方案&#xff0c;分成9个不同的时代&#xff0c;讨论了每个时代的方案。我们指出&#xff0c;…...

SimpleFoc以及SVPWM学习补充记录

SimpleFoc SimpleFOC移植STM32&#xff08;一&#xff09;—— 简介 FOC控制的过程是这样的&#xff1a; 对电机三相电流进行采样得到 Ia,Ib,Ic。将 Ia,Ib,Ic 经过Clark变换得到 I_alpha I_beta。将 I_alpha I_beta 经过Park变换得到 Id,Iq。计算 Id,Iq 和其设定值 Id_ref 和…...

免费 Oracle 各版本 离线帮助使用和介绍

文章目录 Oracle 各版本 离线帮助使用和介绍概要在线帮助下载离线文档包&#xff1a;解压离线文档&#xff1a;访问离线文档&#xff1a;导航使用&#xff1a;目录介绍Install and Upgrade&#xff08;安装和升级&#xff09;&#xff1a;Administration&#xff08;管理&#…...

刷题 二叉树

二叉树的核心思想 - 递归 - 将问题分解为子问题 题型 递归遍历迭代遍历层序遍历 bfs&#xff1a;队列各种递归题目&#xff1a;将问题分解为子问题二叉搜索树 - 中序遍历是递增序列 TreeNode* &prev 指针树形dp 面试经典 150 题 - 二叉树 104. 二叉树的最大深度 广度优…...

操作系统 | 学习笔记 | 王道 | 4.1 文件系统基础

4.文件管理 4.1 文件系统基础 4.1.1 文件的基本概念 定义 文件是以计算机硬盘为载体的存储在计算机上的信息集合&#xff0c;在用户进行的输入、输出中&#xff0c;以文件位基本单位。 文件管理系统是实现的文件的访问、修改和保存&#xff0c;对文件维护管理的系统。 文件的…...

var let const 之间的区别

在JavaScript中&#xff0c;var、let 和 const 是用于声明变量的三种关键字。它们之间有几个重要的区别&#xff1a; 1. 作用域 var: 声明的变量具有函数作用域&#xff0c;即在整个函数内都可以访问。如果在代码块内&#xff08;如if或for&#xff09;使用var&#xff0c;该…...

【springboot】简易模块化开发项目整合Swagger2

接上一项目【springboot】简易模块化开发项目整合MyBatis-plus&#xff0c;进行拓展项目 1.新建模块 右键项目→New→Module&#xff0c;新建一个模块 父项目选择fast-demo&#xff0c;命名为fast-demo-config&#xff0c;用于存放所有配置项 添加后&#xff0c;项目结构如图…...

【Linux第五课-进程概念下】环境变量、程序地址空间

目录 环境变量main参数 --- 命令行参数环境变量环境变量特性 --- 命令行操作main函数的参数获取环境变量environ获取环境变量getenv()获取环境变量unset移除本地变量或环境变量set显示本地变量 代码获取和设置环境变量 本地变量 程序地址空间什么是进程地址空间为什么有地址空间…...

mysql学习教程,从入门到精通,SQL 临时表(37)

1、SQL 临时表 在SQL中&#xff0c;临时表&#xff08;Temporary Table&#xff09;是一种在会话或连接期间临时存储数据的表。它们对于存储中间结果、简化复杂查询以及提高性能非常有用。以下是一个创建和使用临时表的示例。 假设我们有一个名为 employees 的表&#xff0c;…...

算法闭关修炼百题计划(四)

仅供个人复习 1.两数相加2.寻找峰值6.岛屿的最大面积3.最大数4.会议室5.最长连续序列6.寻找两个正序数组的中位数 1.两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请…...

头歌实践教学平台 大数据编程 实训答案(二)

第三阶段 Spark算子综合案例 Spark算子综合案例 - JAVA篇 第1关:WordCount - 词频统计 任务描述 本关任务:使用 Spark Core 知识编写一个词频统计程序。 相关知识 略 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下: …...

路由交换实验指南

案例 01&#xff1a;部署使用 eNSP 平台实验需求&#xff1a; 安装华为 eNSP 网络模拟平台打开 eNSP 平台&#xff0c;新建拓扑并绘制网络能够成功启动交换机、计算机设备 实验步骤&#xff1a; 安装华为 eNSP 网络模拟平台启动安装程序 配置安装内容 防护墙允许 eNSP 程序的…...

了解网页 blob 链接

blob 链接 自从 HTML5 提供了 video 标签&#xff0c;在网页中播放视频变得非常简单&#xff0c;只要在代码中插入一个 video 标签&#xff0c;再将 video 标签的 src 属性设置为视频的链接就可以了。由于 src 指向的是视频文件真实的地址&#xff0c;所以当我们通过浏览器的调…...

OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离

OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离 —— 2024-10-02 下午 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离1.代码图片2.分析3.UML4.代码 1.代码图片 运行 Mouse button 1 pressed at (1…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...