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

redis 各个模式的安装

一、Redis单机安装

1、安装gcc依赖

Redis是C语言编写的,编译需要GCC。

Redis6.x.x版本支持了多线程,需要gcc的版本大于4.9,但是CentOS7的默认版本是4.8.5。
升级gcc版本:

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ 
devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile

确认gcc的版本(在同一个窗口中!):

gcc -v

2、下载解压文件

下载地址:https://redis.io/download/#redis-downloads

解压文件

[root@localhost src]# tar -xzf redis-6.0.16.tar.gz

2、修改redis.config文件

daemonize yes   //更改为后台启动#bind 127.0.0.1  //注释protected-mode no  //允许外部网络直接访问

4、启动redis

如果src没有redis-server,在redis目录执行make指令

[root@localhost src]# ./redis-server ../redis.conf   //启动服务
[root@localhost src]# ./redis-cli    //进入客户端

二、Redis主从安装

1、修改redis.config文件

daemonize yes   //更改为后台启动
#bind 127.0.0.1  //注释
protected-mode no  //允许外部网络直接访问    
replicaof 192.168.8.129 6379   //添加是哪台机器的从节点 主节点IP 主节点端口

2、启动redis

如果src没有redis-server,在redis目录执行make指令

[root@localhost src]# ./redis-server ../redis.conf   //启动服务    
[root@localhost src]# ./redis-cli    //进入客户端

查看是否配置了主节点配置

127.0.0.1:6379> config get replicaof1) "replicaof"2) "192.168.8.129 6379"

查看从节点信息

127.0.0.1:6379> info replication
# Replication
role:slave  //角色master_host:192.168.8.129  //主节点IPmaster_port:6379  //主节点端口master_link_status:up  //连接状态 up是正常同步连接状态 down表
示复制端口master_last_io_seconds_ago:1  //主库多少秒没有发送数据到从库 0-
10master_sync_in_progress:0  //是否正在跟主服务同步slave_repl_offset:163  //从节点偏移量slave_priority:100  //选举时成为主节点的优先级   越大优先级越高 0 不会成为主节点slave_read_only:1  //是否为只读从库connected_slaves:0  //连接的从库实例master_replid:04f4969ab63ce124e870fa1e4920942a5b3448e7 //master启动时生成的40位16进制的随机字符串,用来标识master节点master_replid2:0000000000000000000000000000000000000000 //slave切换master之后,会生成了自己的master标识,之前的master节
点的标识存到了master_replid2的位置master_repl_offset:163 //已写入偏移量second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576  //复制积压的缓存区大小repl_backlog_first_byte_offset:1repl_backlog_histlen:163

3、查看主节点信息

127.0.0.1:6379> info replication
# Replication
role:master  //角色connected_slaves:1 //从节点数量slave0:ip=192.168.8.127,port=6379,state=online,offset=7889
9,lag=1  //从节点的信息 状态 偏移量master_replid:04f4969ab63ce124e870fa1e4920942a5b3448e7 //# master启动时生成的40位16进制的随机字符串,用来标识master节点master_replid2:0000000000000000000000000000000000000000master_repl_offset:78899 //mater已写入的偏移量second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576  //缓冲区大小repl_backlog_first_byte_offset:1repl_backlog_histlen:78899 //缓冲区的数据已有大小(是个环形,跟RedoLog一样会覆盖)

4、运行时变成主的从库

解除主从关系

127.0.0.1:6379> slaveof no one
OK

添加从节点

127.0.0.1:6379> slaveof 192.168.8.129 6379OK

三、 Redis哨兵安装

1、修改sentinel.cfg文件

配置文件跟redis.cfg一个路径,都在redis根目录,如果要监控多套主服务,配置多个即可

port 26379  //sentinel服务端口
daemonize yes //是否后台启动
//sentinel monitor <master-group-name> <ip> <port> <quorum>
sentinel monitor mymaster 192.168.8.129 6379 2  
//mymaster主服务的名称   192.168.8.129 6379 master的ip与端口 quornum 认为master不可用的sentinel数量
sentinel down-after-milliseconds mymaster 30000  //30s后联系不到 认为关闭
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

2、启动sentinel服务

[root@localhost src]# ./redis-sentinel ../sentinel.conf   //启动sentinel服务

3、连接sentinel服务

[root@localhost src]# ./redis-cli -p 26379
127.0.0.1:26379>

4、查看master的信息

127.0.0.1:26379> sentinel master mymaster    //mymaster为自定义的名称1) "name"2) "mymaster"3) "ip"4) "192.168.8.129"5) "port"6) "6379"7) "runid" 8) "75fb165dd59b82d1154d11939a0b9a45211bf68a"9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "256"
19) "last-ping-reply"
20) "256"
21) "down-after-milliseconds"
22) "30000"
23) "info-refresh"
24) "5553"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "156216"
29) "config-epoch"
30) "0"
31) "num-slaves"  //从节点数量
32) "2"
33) "num-other-sentinels"  //其他的哨兵数量
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"

5、sentinel查询主库地址

1.连接sentinel客户端

[root@localhost src]# ./redis-cli -p 26379

2.查询主库地址

127.0.0.1:26379> sentinel get-master-addr-by-name mymaster
1) "192.168.8.128"
2) "6379"

6、sentinel主要指令

该SENTINEL命令是 Sentinel 的主要 API。以下是其子命令的列表(在适用的情况下注明了最小版本):

  • SENTINEL CONFIG GET ( >= 6.2 ) 获取全局 Sentinel 配置参数的当前值。指定的名称可以是通配符,类似于 Redis CONFIG GET 命令。
  • SENTINEL CONFIG SET ( >= 6.2 ) 设置全局Sentinel 配置参数的值。
  • SENTINEL CKQUORUM 检查当前的 Sentinel 配置是否能够达到故障转移主服务器所需的法定人数,以及授权故障转移所需的多数。此命令应用于监控系统以检查 Sentinel 部署是否正常。
  • SENTINEL FLUSHCONFIG强制 Sentinel 在磁盘上重写其配置,包括当前 Sentinel 状态。通常,Sentinel 会在每次状态发生变化时重写配置(在重启后保留在磁盘上的状态子集的上下文中)。然而,有时配置文件可能会因为操作错误、磁盘故障、软件包升级脚本或配置管理器而丢失。在这些情况下,强制 Sentinel 重写配置文件的方法很方便。即使先前的配置文件完全丢失,此命令也有效。
  • SENTINEL FAILOVER 强制进行故障转移,就好像主服务器不可访问一样,并且无需征求其他 Sentinel 的同意(但是将发布新版本的配置,以便其他 Sentinel 更新其配置)。
  • SENTINEL GET-MASTER-ADDR-BY-NAME 返回具有该名称的主机的 ip 和端口号。如果此主服务器正在进行故障转移或成功终止,它将返回提升副本的地址和端口。
  • SENTINEL INFO-CACHE ( )从主服务器和副本服务器>= 3.2 返回缓存的输出。INFO
  • SENTINEL IS-MASTER-DOWN-BY-ADDR从当前 Sentinel 的角度检查ip:port 指定的主服务器是否已关闭。该命令主要供内部使用。
  • SENTINEL MASTER 显示指定主站的状态和信息。
  • SENTINEL MASTERS显示受监控的主控列表及其状态。
  • SENTINEL MONITOR启动 Sentinel 的监控。有关详细信息,请参阅运行时重新配置 Sentinel部分。
  • SENTINEL MYID ( >= 6.2 ) 返回 Sentinel 实例的 ID。
  • SENTINEL PENDING-SCRIPTS此命令返回有关未决脚本的信息。
  • SENTINEL REMOVE停止 Sentinel 的监控。有关详细信息,请参阅在运行时重新配置 Sentinel部分。
  • SENTINEL REPLICAS ( >= 5.0 ) 显示此主服务器的副本列表及其状态。
  • SENTINEL SENTINELS 显示该 master 的哨兵实例列表及其状态。
  • SENTINEL SET设置 Sentinel 的监控配置。有关详细信息,请参阅在运行时重新配置 Sentinel部分。
  • SENTINEL SIMULATE-FAILURE (crash-after-election|crashafter-promotion|help)( >= 3.2 ) 此命令模拟不同的 Sentinel 崩溃场景。
  • SENTINEL RESET 此命令将重置所有具有匹配名称的主机。模式参数是一个全局样式的模式。重置过程会清除 master 中的任何先前状态(包括正在进行的故障转移),并删除已发现并与 master关联的每个副本和哨兵。

7、出于连接管理和管理目的,Sentinel 支持以下 Redis 命令子集:

  • ACL ( >= 6.2 ) 此命令管理 Sentinel 访问控制列表。有关详细信息,请参阅ACL文档页面和Sentinel 访问控制列表身份验证。
  • AUTH ( >= 5.0.1 ) 验证客户端连接。有关详细信息,请参阅AUTH命令和使用身份验证配置 Sentinel 实例部分。
  • CLIENT此命令管理客户端连接。有关更多信息,请参阅其子命令页面。
  • COMMAND ( >= 6.2 ) 此命令返回有关命令的信息。有关详细信息,请参阅该COMMAND命令及其各种子命令。
  • HELLO ( >= 6.0 ) 切换连接的协议。有关详细信息,请参阅HELLO命令。
  • INFO返回有关 Sentinel 服务器的信息和统计信息。有关更多信息,请参阅INFO命令。
  • PING这个命令只返回 PONG。
  • ROLE此命令返回字符串“sentinel”和受监控的主机列表。有关详细信
    息,请参阅ROLE命令。
  • SHUTDOWN关闭 Sentinel 实例。

8、模拟主服务器挂掉

  • 模拟主服务器关闭 192.168.8.129
[root@localhost src]# ./redis-cli
127.0.0.1:6379> info replication // 查看
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.8.127,port=6379,state=online,offset=232310,lag=0
slave1:ip=192.168.8.128,port=6379,state=online,offset=232310,lag=1master_replid:d1274cc57aa3a2f1fed3068a429b972d6268453d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:232310
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:232310
127.0.0.1:6379> shutdown  //执行服务关闭
  • 我们再查看另外的2个实例的信息(由于切换需要时间,所以不会马上变更)192.168.8.128的信息,我们发现128升级为主了。
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.8.127,port=6379,state=online,offset=278214,lag=1
master_replid:b32f0f1140789e7d0e30c88e717730cbd93dd3d8
master_replid2:d1274cc57aa3a2f1fed3068a429b972d6268453d
master_repl_offset:278355
second_repl_offset:233876
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:278355

192.168.8.127的信息,我们发现127变成了128的主

127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.8.128
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:274802
slave_priority:100
slave_read_only:0
connected_slaves:0
master_replid:b32f0f1140789e7d0e30c88e717730cbd93dd3d8
master_replid2:d1274cc57aa3a2f1fed3068a429b972d6268453d
master_repl_offset:274802
second_repl_offset:233876
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:274802

我们基于Sentinel就能实现主从的自动切换。

四、RedisCluster集群安装

1、安装

RedisCluster至少得三主三从 6个节点

6节点分别以127、128、129 3台机器的 6380、6381端口

2、复制原有安装文件,把原有文件改成6380

cp -r redis-6.0.16 redis-6.0.16-6381 
mv redis-6.0.16 redis-6.0.16-6380

3、更改redis.config配置文件

#bind 127.0.0.1
protected-mode no
daemonize yes 
cluster-enabled yes  开启集群
cluster-config-file nodes-6380.conf   //不同的端口实例不同 比如6381就是nodes-6381.conf 
pidfile /var/run/redis_6380.pid     //不同的端口实例不同 比如6381就是redis_6381.pid

4、开启Cluster集群

[root@localhost src]# ./redis-cli --cluster create 192.168.8.129:6380 192.168.8.129:6381 192.168.8.128:6381 192.168.8.128:6380 192.168.8.127:6380 192.168.8.127:6381 --cluster-replicas 1

如果报非空,删除相关节点的数据,以及cluster-config-file配置的文件

5、查看集群信息

127.0.0.1:6380> cluster nodes
ed1d6852839ea0f4eccb3231d9230a701a079783 
192.168.8.129:6380@16380 myself,master - 0 1657818165000 1 
connected 0-5460
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 
192.168.8.128:6381@16381 master - 0 1657818166000 3 
connected 5461-10922
f639ac4eee5d79f82e27d7a5b038eeff9d6a4ca8 
192.168.8.127:6381@16381 slave 
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 0 1657818165784 3 
connected
8df23b5a556a32c4b65d228250f6cbddb18bfaf4 
192.168.8.128:6380@16380 slave 
ed1d6852839ea0f4eccb3231d9230a701a079783 0 1657818166788 1 
connecte
abe5ae19378385e1c8f9fb7c93a702343947e216 
192.168.8.127:6380@16380 master - 0 1657818162000 5 
connected 10923-1638
4d0fcb91f0afa7eaf6cba415249fe6f8baa4c2e8 
192.168.8.129:6381@16381 slave 
abe5ae19378385e1c8f9fb7c93a702343947e216 0 1657818167791 5 
connected

6、模拟服务器宕机

  • 模拟129的6380宕机,我们发现129:6380的slave 128:6380自动升为
    主。
127.0.0.1:6380> cluster nodes
4d0fcb91f0afa7eaf6cba415249fe6f8baa4c2e8 
192.168.8.129:6381@16381 slave 
abe5ae19378385e1c8f9fb7c93a702343947e216 0 1657819837000 5 
connecte
abe5ae19378385e1c8f9fb7c93a702343947e216 
192.168.8.127:6380@16380 master - 0 1657819833000 5 
connected 10923-16383
f639ac4eee5d79f82e27d7a5b038eeff9d6a4ca8 
192.168.8.127:6381@16381 slave 
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 0 1657819836183 3 
connecte
ed1d6852839ea0f4eccb3231d9230a701a079783 
192.168.8.129:6380@16380 master,fail - 1657819132867 
1657819129000 1 disconnected
8df23b5a556a32c4b65d228250f6cbddb18bfaf4 
192.168.8.128:6380@16380 myself,master - 0 1657819835000 7 
connected 0-5460
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 
192.168.8.128:6381@16381 master - 0 1657819837187 3 
connected 5461-10922

所以,cluster可以进行自动故障转移

7、添加节点(集群扩容)

我现在添加一个节点 192.168.8.137:6380实例,我希望加到cluster集群

在随便现有的clusternode节点中执行:
第一个参数是要添加的节点,第二个参数为已有的cluster集群随机一个节

./redis-cli --cluster add-node 192.168.8.137:6380 192.168.8.128:6380

8、查看nodes节点

127.0.0.1:6381> cluster nodes
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 
192.168.8.128:6381@16381 myself,master - 0 1657903080000 3 
connected 5461-10922
abe5ae19378385e1c8f9fb7c93a702343947e216 
192.168.8.127:6380@16380 master - 0 1657903081336 5 
connected 10923-1638
4d0fcb91f0afa7eaf6cba415249fe6f8baa4c2e8 
192.168.8.129:6381@16381 slave 
abe5ae19378385e1c8f9fb7c93a702343947e216 0 1657903081000 5 
connected
8df23b5a556a32c4b65d228250f6cbddb18bfaf4 
192.168.8.128:6380@16380 master - 0 1657903082000 7 
connected 0-5460
f639ac4eee5d79f82e27d7a5b038eeff9d6a4ca8 
192.168.8.127:6381@16381 slave 
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 0 1657903079000 3 
connected
143bb59351740be6087766df8af135d22679c7f9 
192.168.8.137:6380@16380 master - 0 1657903082339 0 
connecte
ed1d6852839ea0f4eccb3231d9230a701a079783 
192.168.8.129:6380@16380 slave 
8df23b5a556a32c4b65d228250f6cbddb18bfaf4 0 1657903080333 7 
connected

我们发现,137的6380节点已经到了cluster集群。但是是没有分配虚拟槽的,所以要进行槽的分配

9、Cluster其他指令

官网地址:https://redis.io/commands/?group=cluster集群相关命令(需要进入客户端)

  • cluster info :打印集群的信息
  • cluster nodes :列出集群当前已知的所有节点(node),以及这些节点的相关信息。
  • cluster meet :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
  • cluster forget <node_id> :从集群中移除 node_id 指定的节点(保证空槽道)。
  • cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的从节点。
  • cluster saveconfig :将节点的配置文件保存到硬盘里面。

10、槽slot命令

  • cluster addslots [slot …] :将一个或多个槽(slot)指派(assign)给当前节点。
  • cluster delslots [slot …] :移除一个或多个槽对当前节点的指派。
  • cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。cluster setslot node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
  • cluster setslot migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
  • cluster setslot importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
  • cluster setslot stable :取消对槽 slot 的导入(import)或者迁移(migrate)。

11、键命令

  • cluster keyslot :计算键 key 应该被放置在哪个槽上。
  • cluster countkeysinslot :返回槽 slot 目前包含的键值对数量。
  • cluster getkeysinslot :返回 count 个 slot 槽中的键

12、数据迁移

12.1 扩容

扩容(添加新节点)过程中,数据迁移的主要步骤包含以下几个部分:

12.1.1、启动新节点

启动新的 Redis 实例作为集群的节点:

redis-cli --cluster add-node 127.0.0.1:6380 127.0.0.1:6379
12.1.2、将新节点加入集群

使用 redis-cli 命令将新的节点加入现有集群:

redis-cli --cluster add-node 127.0.0.1:6380 127.0.0.1:6379
12.1.3、重新分配槽(resharding)

使用 redis-cli 工具重新分配哈希槽,这会触发槽和数据的迁移:

redis-cli --cluster reshard 127.0.0.1:6379

交互过程中,指定将一定数量的哈希槽从现有节点迁移到新节点。

12.1.4、迁移数据:

redis-cli 自动处理哈希槽的迁移,并在后台进行数据的移动。此迁移是渐进式的,不会中断服务。

12.2 缩容

缩容(移除节点)过程中,数据迁移的主要步骤包含以下几个部分:

12.2.1、触发哈希槽转移:

首先,确定需要移除的节点ID,获取节点信息:

redis-cli --cluster nodes 127.0.0.1:6379
12.2.2、移动哈希槽到其他节点:

使用 redis-cli 工具将指定节点的槽迁移到其他节点:

redis-cli --cluster reshard 127.0.0.1:6379 --slots SLOT_NUMBER --from NODE_ID_TO_REMOVE --to TARGET_NODE_ID
12.2.3、关闭并移除节点:

当所有哈希槽和数据迁移完成后,安全地关闭并移除节点:

redis-cli --cluster del-node 127.0.0.1:6379 NODE_ID_TO_REMOVE

相关文章:

redis 各个模式的安装

一、Redis单机安装 1、安装gcc依赖 Redis是C语言编写的&#xff0c;编译需要GCC。 Redis6.x.x版本支持了多线程&#xff0c;需要gcc的版本大于4.9&#xff0c;但是CentOS7的默认版本是4.8.5。 升级gcc版本&#xff1a; yum -y install centos-release-scl yum -y install d…...

《王者荣耀》皮肤爬虫源码

1.爬取网页 https://pvp.qq.com/web201605/herolist.shtml 2.python代码 import requests from bs4 import BeautifulSoup import os import threading from queue import Queuedef mul(x):if not os.path.exists(x):os.mkdir(x)print("目录创建成功")else:pass h…...

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证8)

为进一步测试通过请求头传递token进行身份验证&#xff0c;在main.htm中增加layui的数据表格组件&#xff0c;并调用后台服务分页显示数据&#xff0c;后台分页查询数据接口如下所示&#xff08;测试时&#xff0c;直接将数据写死到代码中&#xff0c;没有查询数据库&#xff0…...

PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别

torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件&#xff0c;但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别&#xff1a; 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…...

React的应用级框架推荐——Next、Modern、Blitz等,快速搭建React项目

在 React 企业级应用开发中&#xff0c;Next.js、Modern.js 和 Blitz 是三个常见的框架&#xff0c;它们提供了不同的特性和功能&#xff0c;旨在简化开发流程并提高应用的性能和扩展性。以下是它们的详解与比较&#xff1a; Next、Modern、Blitz 1. Next.js Next.js 是由 Ve…...

基于GRU实现股价多变量时间序列预测(PyTorch版)

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对抗网络、门控循环单元、长短期记…...

Java创建对象有几种方式?

大家好&#xff0c;我是锋哥。今天分享关于【Java创建对象有几种方式&#xff1f;】面试题。希望对大家有帮助&#xff1b; Java创建对象有几种方式&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Java中&#xff0c;创建对象主要有以下几种方式&…...

Vue3初学之Element Plus Dialog对话框,Message组件,MessageBox组件

Dialog的使用&#xff1a; 控制弹窗的显示和隐藏 <template><div><el-button click"dialogVisible true">打开弹窗</el-button><el-dialogv-model"dialogVisible"title"提示"width"30%":before-close&qu…...

基于Python机器学习的双色球数据分析与预测

python统计分析2003-2024年所有的中奖记录,通过人工智能机器学习预测双色球,个人意见,仅供参考. 声明&#xff1a;双色球具有随机性&#xff0c;任何工具无法预测。本文章仅作为技术交流&#xff0c;提供学习参考。本文所涉及的代码均为python之机器学习的代码。双色球为公益事…...

微软Win10 RP 19045.5435(KB5050081)预览版发布!

系统之家1月20日最新报道&#xff0c;微软面向Release Preview频道的Windows Insider项目成员&#xff0c;发布了适用于Windows10 22H2版本的KB5050081更新&#xff0c;更新后系统版本号将升至19045.5435。本次更新增加了对GB18030-2022标准的支持&#xff0c;同时新版日历将为…...

使用 Parcel 和 NPM 脚本进行打包

使用 Parcel 和 NPM 脚本进行打包 Parcel Parcel 是一个零配置的网页应用程序打包工具&#xff0c;主要用于快速构建现代 JavaScript 应用。 我们可以使用npm直接安装它 npm install --save-dev parcel //这将把 Parcel 添加到 devDependencies 中&#xff0c;表明它是一个…...

HTML<center>标签

HTML5不支持。 <center>标签在HTML4中用于使文本居中对齐。 用什么来代替呢&#xff1f; 例子 居中对齐文本&#xff08;使用 CSS&#xff09;&#xff1a; <html> <head> <style> h1 {text-align: center;} p {text-align: center;} div {text-a…...

LatentSync本地部署教程:基于音频精准生成唇形高度同步视频

LatentSync 是字节跳动联合北京交通大学推出的一个端到端的唇形同步框架&#xff0c;以下是对其的详细介绍&#xff1a; 一、技术基础 LatentSync 基于音频条件的潜在扩散模型&#xff0c;无需任何中间的 3D 表示或 2D 特征点。它利用了 Stable Diffusion 的强大生成能力&…...

ES使用笔记,聚合分组后再分页,探索性能优化问题

之前分享过一篇文档,也是关于聚合分组后再分页的具体实现,当时只想着怎么实现,没有去主要探索ES性能优化的问题, 这篇我会换一种方式,重新实现这个聚合分组后再分页的操作,并且指出能优化性能点,可能我们再使用的时候,并没有注意过的点,希望对你有帮助!大佬的话,请忽略! 上源码…...

VUE3 vite下的axios跨域

在使用 Vite 开发时&#xff0c;如果你的前端项目需要请求后端 API&#xff0c;且后端和前端不在同一个域上&#xff0c;可能会遇到跨域问题。跨域是指浏览器出于安全考虑&#xff0c;阻止了前端网页向不同源&#xff08;域名、协议、端口&#xff09;发送请求。 解决跨域问题…...

Mac下安装ADB环境的三种方式

参考网址&#xff1a; Mac下安装ADB环境的三种方式-百度开发者中心 ADB&#xff0c;即Android Debug Bridge&#xff0c;是Android开发过程中不可或缺的工具。通过ADB&#xff0c;开发者可以在计算机上管理设备或模拟器上的应用&#xff0c;提供了丰富的调试功能。然而&#…...

在Vue中,<img> 标签的 src 值

1. 直接指定 src 的值&#xff08;适用于网络图片&#xff09; 如果你使用的是网络图片&#xff08;即图片的URL是完整的HTTP或HTTPS链接&#xff09;&#xff0c;可以直接指定 src 的值&#xff1a; vue 复制 <template><div><img src"https://exampl…...

Kotlin基础知识学习(三)

函数使用 基本用法 函数声明变化 如果函数是公开的&#xff0c;则public关键字可以省略。用fun关键字表示函数的定义。如果函数没有返回值可以不用声明。如果函数表示重载&#xff0c;直接在fun同一行用override修饰。函数参数格式是变量名&#xff1a;变量类型。函数参数允…...

渗透测试之XEE[外部实体注入]漏洞 原理 攻击手法 xml语言结构 防御手法

目录 原理 XML语言解释 什么是xml语言&#xff1a; 以PHP举例xml外部实体注入 XML语言结构 面试题目 如何寻找xxe漏洞 XEE漏洞修复域防御 提高版本 代码修复 php java python 手动黑名单过滤(不推荐) 一篇文章带你深入理解漏洞之 XXE 漏洞 - 先知社区 原理 XXE&…...

店铺营业状态设置(day05)

Redis入门 Redis简介 Redis 是一个基于内存的 key-value 结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 Redis是一个基于内存的 key-value 结构数据库。 主要特点&#xff1a; 1、基于内存存储&#xff0c;读写性能高 2、适合存储热点数据&#xff08;热点…...

1-2 Linux-虚拟机(2025.6.7学习篇- win版本)

1、虚拟机 学习Linux系统&#xff0c;就需要有一个可用的Linux系统。 如何获得&#xff1f;将自己的电脑重装系统为Linux&#xff1f; NoNo。这不现实&#xff0c;因为Linux系统并不适合日常办公使用。 我们需要借助虚拟机来获得可用的Linux系统环境进行学习。 借助虚拟化技术&…...

总结HTML中的文本标签

总结HTML中的文本标签 文章目录 总结HTML中的文本标签引言一、标题标签&#xff08;h1 - h6&#xff09;语法示例使用建议 二、段落标签&#xff08;p&#xff09;语法示例使用建议 三、文本节点标签&#xff08;span&#xff09;语法示例使用建议 四、粗体标签&#xff08;b&a…...

【基础算法】枚举(普通枚举、二进制枚举)

文章目录 一、普通枚举1. 铺地毯(1) 解题思路(2) 代码实现 2. 回文日期(1) 解题思路思路一&#xff1a;暴力枚举思路二&#xff1a;枚举年份思路三&#xff1a;枚举月日 (2) 代码实现 3. 扫雷(2) 解题思路(2) 代码实现 二、二进制枚举1. 子集(1) 解题思路(2) 代码实现 2. 费解的…...

35 C 语言字符串转数值函数详解:strtof、strtod、strtold(含 errno 处理、ERANGE 错误)

1 strtof() 函数 1.1 函数原型 #include <stdlib.h> // 必须包含这个头文件才能使用 strtof() #include <errno.h> // 包含 errno 和 ERANGE #include <float.h> // 包含 FlOAT_MAX 和 FLOAT_MIN #include <math.h> // 包含 HUGE_VALF(inf)float…...

电脑同时连接内网和外网的方法,附外网连接局域网的操作设置

对于工作一般都设置在内网网段中&#xff0c;而同时由于需求需要连接外网&#xff0c;一般只能通过内网和外网的不断切换进行设置&#xff0c;如果可以同时连接内网和外网会更加便利&#xff0c;同时连接内网和外网方法具体如下。 一、电脑怎么弄可以同时连接内网和外网&#…...

微软PowerBI考试 PL300-使用适用于 Power BI 的 Copilot 创建交互式报表

微软PowerBI考试 PL300-使用适用于 Power BI 的 Copilot 创建交互式报表 Microsoft Power BI 可帮助您通过交互式报表准备数据并对数据进行可视化。 如果您是 Power BI 的新用户&#xff0c;可能很难知道从哪里开始&#xff0c;并且创建报表可能很耗时。 通过适用于 Power BI …...

【QT面试题】(三)

文章目录 Qt信号槽的优点及缺点Qt中的文件流和数据流区别&#xff1f;Qt中show和exec区别QT多线程使用的方法 (4种)QString与基本数据类型如何转换&#xff1f;QT保证多线程安全事件与信号的区别connect函数的连接方式&#xff1f;信号与槽的多种用法Qt的事件过滤器有哪些同步和…...

基于J2EE架构的在线考试系统设计与实现【源码+文档】

目录 摘要: Abstract: 1 引言 2 在线考试系统构架 2.1 在线考试系统一般需求分析 2.2 当前在线考试系统现状分析 2.3 基于J2EE的在线考试系统架构介绍及拥有的优势 2.3.1 结构总体介绍 2.3.2 客户层组件 2.3.2.1 Applets 2.3.2.2 应用程序客户端 2.3.3 …...

视觉SLAM基础补盲

3D Gaussian Splatting for Real-Time Radiance Field Rendering SOTA方法3DGS contribution传统重建基于点的渲染NeRF 基础知识补盲光栅化SFM三角化极线几何标准的双目立体视觉立体匹配理论与方法立体匹配的基本流程李群和李代数 李群和李代数的映射李代数的求导李代数解决求导…...

ajax学习手册

Ajax 通俗易懂学习手册 目录 Ajax 基础概念XMLHttpRequest 详解Fetch API (现代方式)处理不同数据格式错误处理和状态码Ajax 高级技巧实战项目案例最佳实践 Ajax 基础概念 什么是 Ajax&#xff1f; Ajax Asynchronous JavaScript And XML 通俗解释&#xff1a; Ajax 就像…...