Redis【性能 02】Redis-5.0.14伪集群和Docker集群搭建及延迟和性能测试(均无法提升性能)

news2024/11/20 8:48:42

伪集群及Docker集群搭建测试流程

  • 1.伪集群搭建
    • 1.1 环境
    • 1.2 搭建
      • 1.2.1 集群配置
      • 1.2.2 生成其他5个节点配置
      • 1.2.3 启动并验证节点状态
      • 1.2.4 创建集群
      • 1.2.5 集群信息
    • 1.3 测试
  • 2.Docker集群
    • 2.1 环境
    • 2.2 搭建
      • 2.2.1 创建专用网络
      • 2.2.2 生成配置文件
      • 2.2.3 容器启动及验证
      • 2.2.4 创建集群
      • 2.2.5 删除容器及配置文件
    • 2.3.测试
  • 3.总结

1.伪集群搭建

1.1 环境

使用的是腾讯的云服务器1核心2G内存50G存储,系统信息如下:

[root@tcloud ~]# rpm -qi centos-release
Name        : centos-release
Version     : 7
Release     : 9.2009.1.el7.centos
Architecture: x86_64
Install Date: Tue 19 Jan 2021 06:23:16 PM CST
Group       : System Environment/Base
Size        : 44787
License     : GPLv2
Signature   : RSA/SHA256, Thu 03 Dec 2020 12:35:28 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : centos-release-7-9.2009.1.el7.centos.src.rpm
Build Date  : Mon 23 Nov 2020 11:08:41 PM CST
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
Summary     : CentOS Linux release file
Description :
CentOS Linux release files

1.2 搭建

  • 每个Redis节点必须要有一个备机,例如搭建3个节点的集群就要有6个Redis实例。
  • 数据按照slots分布式存储在不同的Redis节点上,节点中的数据可共享,可以动态调整数据的分布。
  • 可扩展性强,可以动态增删节点 ,最多可扩展1000+节点。

1.2.1 集群配置

使用相对性能较好的5.0.14版本进行搭建:

# 1.复制单机版并修改配置
cp -r ./redis-5.0.14 ./redis-5.0.14-0

# 修改【redis-5.0.14-0】的配置信息如下
################################## NETWORK #####################################
protected-mode no
port 6370
################################# GENERAL #####################################
daemonize yes
################################ REDIS CLUSTER  ###############################
cluster-enabled yes
cluster-config-file nodes-6370.conf
cluster-node-timeout 15000

1.2.2 生成其他5个节点配置

# 2.复制5个节点并修改配置
cp -r ./redis-5.0.14-0 ./redis-5.0.14-1
cp -r ./redis-5.0.14-0 ./redis-5.0.14-2
cp -r ./redis-5.0.14-0 ./redis-5.0.14-3
cp -r ./redis-5.0.14-0 ./redis-5.0.14-4
cp -r ./redis-5.0.14-0 ./redis-5.0.14-5

# 修改每个节点的配置
sed 's/6370/6371/g' ./redis-5.0.14-1/redis.conf > ./redis-5.0.14-1/redis-6371.conf
sed 's/6370/6372/g' ./redis-5.0.14-2/redis.conf > ./redis-5.0.14-2/redis-6372.conf
sed 's/6370/6373/g' ./redis-5.0.14-3/redis.conf > ./redis-5.0.14-3/redis-6373.conf
sed 's/6370/6374/g' ./redis-5.0.14-4/redis.conf > ./redis-5.0.14-4/redis-6374.conf
sed 's/6370/6375/g' ./redis-5.0.14-5/redis.conf > ./redis-5.0.14-5/redis-6375.conf

1.2.3 启动并验证节点状态

# 3.启动6个节点并验证启动状态
./redis-5.0.14-0/bin/redis-server ./redis-5.0.14-0/redis.conf
./redis-5.0.14-1/bin/redis-server ./redis-5.0.14-1/redis-6371.conf
./redis-5.0.14-2/bin/redis-server ./redis-5.0.14-2/redis-6372.conf
./redis-5.0.14-3/bin/redis-server ./redis-5.0.14-3/redis-6373.conf
./redis-5.0.14-4/bin/redis-server ./redis-5.0.14-4/redis-6374.conf
./redis-5.0.14-5/bin/redis-server ./redis-5.0.14-5/redis-6375.conf

[root@tcloud local]# ps -ef | grep redis
root      1866     1  0 17:12 ?        00:00:00 ./redis-5.0.14-0/bin/redis-server 127.0.0.1:6370 [cluster]
root      1871     1  0 17:12 ?        00:00:00 ./redis-5.0.14-1/bin/redis-server 127.0.0.1:6371 [cluster]
root      1876     1  0 17:12 ?        00:00:00 ./redis-5.0.14-2/bin/redis-server 127.0.0.1:6372 [cluster]
root      1881     1  0 17:12 ?        00:00:00 ./redis-5.0.14-3/bin/redis-server 127.0.0.1:6373 [cluster]
root      1886     1  0 17:12 ?        00:00:00 ./redis-5.0.14-4/bin/redis-server 127.0.0.1:6374 [cluster]
root      1896     1  0 17:12 ?        00:00:00 ./redis-5.0.14-5/bin/redis-server 127.0.0.1:6375 [cluster]
root      1957  1522  0 17:12 pts/0    00:00:00 grep --color=auto redis

1.2.4 创建集群

# 4.创建集群
[root@tcloud redis-5.0.14-0]# ./bin/redis-cli --cluster create 127.0.0.1:6370 127.0.0.1:6371 127.0.0.1:6372 127.0.0.1:6373 127.0.0.1:6374 127.0.0.1:6375 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:6374 to 127.0.0.1:6370
Adding replica 127.0.0.1:6375 to 127.0.0.1:6371
Adding replica 127.0.0.1:6373 to 127.0.0.1:6372
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 60772cf691608a8ae8e6f519b1a95b52c84b2457 127.0.0.1:6370
   slots:[0-5460] (5461 slots) master
M: ffe9663d3fd1fc55c74c7bea6c70069fb742a69f 127.0.0.1:6371
   slots:[5461-10922] (5462 slots) master
M: 6bb4e92cec0464c9969397eccaf1de1ce54b3e56 127.0.0.1:6372
   slots:[10923-16383] (5461 slots) master
S: e793d2b868dbcd0b701bae10ea4d689b13a1c650 127.0.0.1:6373
   replicates ffe9663d3fd1fc55c74c7bea6c70069fb742a69f
S: baae7ed422dc563bbbd22e1ac2d859ba4835dd63 127.0.0.1:6374
   replicates 6bb4e92cec0464c9969397eccaf1de1ce54b3e56
S: 2fddd068ad1ae78d816d2932f012fae025e4e1f8 127.0.0.1:6375
   replicates 60772cf691608a8ae8e6f519b1a95b52c84b2457
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 127.0.0.1:6370)
M: 60772cf691608a8ae8e6f519b1a95b52c84b2457 127.0.0.1:6370
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 6bb4e92cec0464c9969397eccaf1de1ce54b3e56 127.0.0.1:6372
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: ffe9663d3fd1fc55c74c7bea6c70069fb742a69f 127.0.0.1:6371
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: baae7ed422dc563bbbd22e1ac2d859ba4835dd63 127.0.0.1:6374
   slots: (0 slots) slave
   replicates 6bb4e92cec0464c9969397eccaf1de1ce54b3e56
S: 2fddd068ad1ae78d816d2932f012fae025e4e1f8 127.0.0.1:6375
   slots: (0 slots) slave
   replicates 60772cf691608a8ae8e6f519b1a95b52c84b2457
S: e793d2b868dbcd0b701bae10ea4d689b13a1c650 127.0.0.1:6373
   slots: (0 slots) slave
   replicates ffe9663d3fd1fc55c74c7bea6c70069fb742a69f
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

1.2.5 集群信息

# 5.集群并查看节点数据
[root@tcloud redis-5.0.14-0]# ./bin/redis-cli -c -p 6370
127.0.0.1:6370> cluster nodes
6bb4e92cec0464c9969397eccaf1de1ce54b3e56 127.0.0.1:6372@16372 master - 0 1683192656954 3 connected 10923-16383
ffe9663d3fd1fc55c74c7bea6c70069fb742a69f 127.0.0.1:6371@16371 master - 0 1683192657956 2 connected 5461-10922
60772cf691608a8ae8e6f519b1a95b52c84b2457 127.0.0.1:6370@16370 myself,master - 0 1683192655000 1 connected 0-5460
baae7ed422dc563bbbd22e1ac2d859ba4835dd63 127.0.0.1:6374@16374 slave 6bb4e92cec0464c9969397eccaf1de1ce54b3e56 0 1683192655951 5 connected
2fddd068ad1ae78d816d2932f012fae025e4e1f8 127.0.0.1:6375@16375 slave 60772cf691608a8ae8e6f519b1a95b52c84b2457 0 1683192655000 6 connected
e793d2b868dbcd0b701bae10ea4d689b13a1c650 127.0.0.1:6373@16373 slave ffe9663d3fd1fc55c74c7bea6c70069fb742a69f 0 1683192653000 4 connected

1.3 测试

# 延迟测试
./bin/redis-cli -c -p 6370 --intrinsic-latency 10
# 性能测试
./bin/redis-benchmark -h 127.0.0.1 -p 6370 -q
  • 延迟测试结果
# 1
150971628 total runs (avg latency: 0.0662 microseconds / 66.24 nanoseconds per run).
Worst run took 117245x longer than the average latency.
# 2
149243181 total runs (avg latency: 0.0670 microseconds / 67.00 nanoseconds per run).
Worst run took 155735x longer than the average latency.
# 3
150936098 total runs (avg latency: 0.0663 microseconds / 66.25 nanoseconds per run).
Worst run took 87950x longer than the average latency.
  • 性能测试结果
# 1
PING_INLINE: 62814.07
PING_BULK: 64143.68
SET: 61087.36
GET: 62344.14
INCR: 59665.87
LPUSH: 54945.05
RPUSH: 56785.91
LPOP: 55991.04
RPOP: 57208.24
SADD: 62932.66
HSET: 59347.18
SPOP: 63091.48
LPUSH (needed to benchmark LRANGE): 56211.35
LRANGE_100 (first 100 elements): 34614.05
LRANGE_300 (first 300 elements): 16131.63
LRANGE_500 (first 450 elements): 11568.72
LRANGE_600 (first 600 elements): 9214.89
MSET (10 keys): 54644.81
# 2
PING_INLINE: 61881.19
PING_BULK: 64267.35
SET: 61881.19
GET: 61804.70
INCR: 61387.36
LPUSH: 55555.56
RPUSH: 55370.98
LPOP: 56369.79
RPOP: 57736.72
SADD: 61614.29
HSET: 61387.36
SPOP: 63613.23
LPUSH (needed to benchmark LRANGE): 53792.36
LRANGE_100 (first 100 elements): 33681.38
LRANGE_300 (first 300 elements): 15637.22
LRANGE_500 (first 450 elements): 11828.72
LRANGE_600 (first 600 elements): 9221.69
MSET (10 keys): 52826.20
# 3
PING_INLINE: 63091.48
PING_BULK: 63572.79
SET: 61012.81
GET: 60569.35
INCR: 60459.49
LPUSH: 55463.12
RPUSH: 56850.48
LPOP: 55617.35
RPOP: 57570.52
SADD: 60790.27
HSET: 60168.47
SPOP: 62695.92
LPUSH (needed to benchmark LRANGE): 55679.29
LRANGE_100 (first 100 elements): 34435.26
LRANGE_300 (first 300 elements): 16064.26
LRANGE_500 (first 450 elements): 11496.90
LRANGE_600 (first 600 elements): 9180.21
MSET (10 keys): 53648.07

在这里插入图片描述

2.Docker集群

2.1 环境

[root@tcloud ~]# docker -v
Docker version 20.10.13, build a224086

Redis的官方Docker镜像地址:https://hub.docker.com/_/redis

2.2 搭建

2.2.1 创建专用网络

# 创建桥接网卡
docker network create redis --subnet 172.81.0.0/16

# 查看所有 网卡
docker network ls
# 查看网卡详情
docker network inspect NETWORKID

[
    {
        "Name": "redis",
        "Id": "79a62c1104195f5f077665fcdd8d4e1c92697af7db227c1fd1a92219f22c2501",
        "Created": "2023-05-05T10:38:24.604493511+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.81.0.0/16",
                    "Gateway": "172.81.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

2.2.2 生成配置文件

# 通过脚本创建6个Redis配置
# 这里一定要注意不要加 daemonize yes 否则无法启动
for port in $(seq 1 6); \
do \
mkdir -p /usr/local/redis-docker/node-${port}/conf
touch /usr/local/redis-docker/node-${port}/conf/redis.conf
cat << EOF >/usr/local/redis-docker/node-${port}/conf/redis.conf
bind 0.0.0.0
protected-mode no
port 637${port}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.81.0.1${port}
cluster-announce-port 637${port}
cluster-announce-bus-port 1637${port}
appendonly no
EOF
done

2.2.3 容器启动及验证

# 启动容器
for port in $(seq 1 6); \
do \
docker run -p 637${port}:637${port} -p 1637${port}:1637${port} --name redis-${port} \
-v /usr/local/redis-docker/node-${port}/data:/data \
-v /usr/local/redis-docker/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.81.0.1${port} redis:5.0.14 redis-server /etc/redis/redis.conf
done

# 查看启动状态
[root@tcloud local]# docker ps | grep redis
a4e70ff2d840   redis:5.0.14     "docker-entrypoint.s…"   48 seconds ago   Up 46 seconds       0.0.0.0:6376->6376/tcp, :::6376->6376/tcp, 0.0.0.0:16376->16376/tcp, :::16376->16376/tcp, 6379/tcp   redis-6
854f8e023ce1   redis:5.0.14     "docker-entrypoint.s…"   49 seconds ago   Up 47 seconds       0.0.0.0:6375->6375/tcp, :::6375->6375/tcp, 0.0.0.0:16375->16375/tcp, :::16375->16375/tcp, 6379/tcp   redis-5
5165d1e61a7f   redis:5.0.14     "docker-entrypoint.s…"   50 seconds ago   Up 48 seconds       0.0.0.0:6374->6374/tcp, :::6374->6374/tcp, 0.0.0.0:16374->16374/tcp, :::16374->16374/tcp, 6379/tcp   redis-4
f08dbda27366   redis:5.0.14     "docker-entrypoint.s…"   51 seconds ago   Up 50 seconds       0.0.0.0:6373->6373/tcp, :::6373->6373/tcp, 0.0.0.0:16373->16373/tcp, :::16373->16373/tcp, 6379/tcp   redis-3
e5e0feb9546a   redis:5.0.14     "docker-entrypoint.s…"   52 seconds ago   Up 51 seconds       0.0.0.0:6372->6372/tcp, :::6372->6372/tcp, 0.0.0.0:16372->16372/tcp, :::16372->16372/tcp, 6379/tcp   redis-2
d8fae67a40b2   redis:5.0.14     "docker-entrypoint.s…"   54 seconds ago   Up 52 seconds       0.0.0.0:6371->6371/tcp, :::6371->6371/tcp, 0.0.0.0:16371->16371/tcp, :::16371->16371/tcp, 6379/tcp   redis-1

2.2.4 创建集群

# 创建集群
docker exec -it redis-1 /bin/sh 

# 容器内操作
cd /usr/local/bin
redis-cli --cluster create 172.81.0.11:6371 172.81.0.12:6372 172.81.0.13:6373 172.81.0.14:6374 172.81.0.15:6375 172.81.0.16:6376 --cluster-replicas 1
# 打印出来的信息不再贴出

# 连接集群
cd /usr/local/redis-5.0.14
./bin/redis-cli -p 6371 -c
cluster nodes

# 退出容器
exit

2.2.5 删除容器及配置文件

# 停止
for port in $(seq 1 6); \
do \
docker stop redis-${port} 
done

# 删除停止的容器
docker rm $(docker ps -qa)

# 删除配置及数据文件
rm -rf ./redis-docker

2.3.测试

# 延迟测试
./bin/redis-cli -c -p 6371 --intrinsic-latency 10
# 性能测试
./bin/redis-benchmark -h 172.81.0.1 -p 6371  -q
  • 延迟测试结果
# 1
148915461 total runs (avg latency: 0.0672 microseconds / 67.15 nanoseconds per run).
Worst run took 172533x longer than the average latency.
# 2
148930804 total runs (avg latency: 0.0671 microseconds / 67.15 nanoseconds per run).
Worst run took 147203x longer than the average latency.
# 3
149999312 total runs (avg latency: 0.0667 microseconds / 66.67 nanoseconds per run).
Worst run took 119474x longer than the average latency.
  • 性能测试结果
# 1
PING_INLINE: 49212.60
PING_BULK: 50327.12
SET: 48590.86
GET: 47846.89
INCR: 48923.68
LPUSH: 44863.16
RPUSH: 45106.00
LPOP: 45599.63
RPOP: 44682.75
SADD: 50377.83
HSET: 48239.27
SPOP: 50479.56
LPUSH (needed to benchmark LRANGE): 44345.89
LRANGE_100 (first 100 elements): 29691.21
LRANGE_300 (first 300 elements): 14858.84
LRANGE_500 (first 450 elements): 11119.76
LRANGE_600 (first 600 elements): 8946.94
MSET (10 keys): 43859.65
# 2
PING_INLINE: 49975.02
PING_BULK: 51493.30
SET: 47664.44
GET: 49358.34
INCR: 49358.34
LPUSH: 44822.95
RPUSH: 45146.73
LPOP: 44404.97
RPOP: 45703.84
SADD: 50125.31
HSET: 45829.52
SPOP: 49701.79
LPUSH (needed to benchmark LRANGE): 42643.92
LRANGE_100 (first 100 elements): 30349.01
LRANGE_300 (first 300 elements): 14641.29
LRANGE_500 (first 450 elements): 11111.11
LRANGE_600 (first 600 elements): 8964.59
MSET (10 keys): 44642.86
# 3
PING_INLINE: 50075.11
PING_BULK: 49900.20
SET: 48971.59
GET: 49164.21
INCR: 49925.11
LPUSH: 44130.62
RPUSH: 40950.04
LPOP: 40338.84
RPOP: 44111.16
SADD: 48449.61
HSET: 47687.18
SPOP: 49455.98
LPUSH (needed to benchmark LRANGE): 45004.50
LRANGE_100 (first 100 elements): 30637.26
LRANGE_300 (first 300 elements): 14788.52
LRANGE_500 (first 450 elements): 11183.18
LRANGE_600 (first 600 elements): 9005.76
MSET (10 keys): 45167.12

在这里插入图片描述

3.总结

我们跟之前的单机版本进行对比,延迟对比结果:

在这里插入图片描述
性能比对结果:

在这里插入图片描述

  • 伪集群和在一台服务器上的Docker集群一样无法提升性能。

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

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

相关文章

NIST SP 800-193: BIOS 平台固件弹性指南

NIST SP 800-147&#xff0c;BIOS 保护指南 ( NIST SP 800-147 [1]、NIST SP 800-147B [2]&#xff09;解决了 BIOS 的保护问题 可从此处免费获得&#xff1a; https://doi.org/10.6028/NIST.SP.800-193 摘要 此文档提供了关于支持平台固件和数据对抗潜在地具有破坏性的攻…

python的 __init__.py文件中使用__all__变量

在Python的包&#xff08;Package&#xff09;中&#xff0c;init.py文件可以被用作初始化包的脚本。这个文件会在包被导入时自动执行。同时&#xff0c;init.py文件中的__all__变量也可以被用来限制包中可导入的模块、类或方法。具体来说&#xff0c;__all__变量应该是一个列表…

项目上线 | 兰精携手盖雅工场,数智驱动绿色转型

近年来&#xff0c;纺织纤维行业零碳行动如火如荼。作为低碳环保消费新时尚引领者&#xff0c;同时也是纤维领域隐形冠军&#xff0c;兰精在推进绿色发展的同时&#xff0c;也在不断向内探索企业数字化转型之道&#xff0c;以此反哺业务快速扩张。 数智转型&#xff0c;管理先…

计算机网络面试题(上)

1.TCP/IP 网络模型有哪几层&#xff1f; TCP/IP 网络通常是由上到下分成 4 层&#xff0c;分别是应用层&#xff0c;传输层&#xff0c;网络层和网络接口层。 每一层的封装格式&#xff1a; 网络接口层的传输单位是帧&#xff08;frame&#xff09;&#xff0c;IP 层的传输单位…

探究肺癌患者的CT图像的图像特征并构建一个诊断模型

目标效果图操作说明代码 目标 探究肺癌患者的CT图像的图像特征并构建一个诊断模型 效果图 操作说明 代码中我以建立10张图为例&#xff0c;多少你自己定 准备工作&#xff1a; 1.准备肺癌或非肺癌每个各10张图&#xff0c;在本地创建一个名为“data”的文件夹&#xff0c;用…

【Docker】什么是Dockerfile

文章目录 1、认识DockerFile2、DockerFile的构建过程3、DockerFile常用指令4、实战&#xff1a;构建自己的centos5、CMD和ENTRYPOINT的区别6、DockerFile制作tomcat镜像7、发布镜像到DockerHub8、发布镜像到阿里云 1、认识DockerFile Dockerfile是用来构建docker镜像的文件&am…

arduino stm32 开发环境 解决方案

用到工具 hfs.exe 做文件服务器 来模拟所有需要下载的文件 https://download.csdn.net/download/qq_32562225/87754346 其原理就相当于 本应arduinoIDE 下载的文件&#xff0c;先手动通过迅雷工具下载下来&#xff0c;然后再添加到文件服务器中&#xff0c;这样就可以快速…

爬虫想要的HTML

我的个人博客主页&#xff1a;如果’真能转义1️⃣说1️⃣的博客主页 关于Python基本语法学习---->可以参考我的这篇博客&#xff1a;《我在VScode学Python》 接下来回更新一个关于urllib的文章 爬虫一个新浪博客地址 import urllib.requestpage 1 url [" "] *…

如何在线录制视频?教您一个简单的方法!

案例&#xff1a;怎样实现在线录屏&#xff1f; 【听朋友说在线录屏更加便捷&#xff0c;我也想学习如何在线录制电脑屏幕。有没有小伙伴有在线录屏的经验&#xff0c;求好心人给一个简单的方法&#xff01;】 在今天的数字时代&#xff0c;我们经常需要录制电脑屏幕来制作教…

【C++】AVL树的插入实现(详解旋转机制)

✍作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;C 文章目录 AVL树的定义AVL树的旋转机制1.左旋操作 --- 新节点插入较高右子树的右侧---右右&#xff1a;左单旋2.右旋操作 --- 新节点插入较高左子树的左侧——左左&#xff1a;右单旋3.左右双旋 --- 新节点插入较高左…

JMeter开发自动化接口测试脚本练习

一、打开浏览器代理服务器设置 我这里用的是360浏览器&#xff0c;打开浏览器代理服务器设置&#xff0c;端口要与jmeter中的端口设置保持一致哦。 二、JMeter设置代理 JMeter设置代理&#xff08;jmeter中的端口要与360浏览器端口设置保持一致哦。&#xff09; 三、启动代理运…

BM6 判断链表中是否有环

判断链表中是否有环_牛客题霸_牛客网 (nowcoder.com) 双指针&#xff0c;快指针一次走两步&#xff0c;慢指针一次走一步&#xff0c;快指针不为空且快指针的下一个指针不为空的情况下 若快慢指针相遇即位有环。 /** * Definition for singly-linked list. * struct ListNode {…

基于RK3588的8K智能摄像机方案设计

设计了一款基于石墨烯散热的8 K智能摄像头&#xff0c;主控采用瑞芯微RK3588&#xff0c;传感器采用索尼IMX435&#xff0c; 通过HDMI2.1将传感器采集到的图像发送到8 K显示器&#xff0c;实现端到端的8 K呈现&#xff0c;为了确保摄像头性能稳定&#xff0c;本 设计采用石墨烯…

ETL到底是什么?

各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 前段时间和大家聊了一个话题&#xff0c;就是为什么要用构建数据仓库&#xff0c;而不是直连数据源的方式开发报表&#xff1f;通…

七、MyBatis自定义映射resultMap

文章目录 七、自定义映射resultMap7.1 resultMap处理字段和属性的映射关系7.2 多对一映射处理级联方式处理映射关系使用association处理映射关系分步查询 7.3 一对多映射处理collection分步查询 本人其他相关文章链接 七、自定义映射resultMap 注意&#xff1a;下面两行表看看…

公司新来的00后真是卷王,工作没2年,跳槽到我们公司起薪18K都快接近我了

说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。这不&#xff0c;前段时间我们公司来了个00后&#xff0c;工作都没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 …

分布式光伏发电大规模应用,运维难题如何解?

国家能源局数据显示&#xff0c;2022年我国光伏新增装机达 87.4GW&#xff0c;同比59%&#xff0c;其中&#xff1a;集中式装机达36.29GW&#xff0c;同比41.8%&#xff1b;分布式装机达51.11GW&#xff0c;同比207.9%&#xff0c;已连续两年超过集中式电站。 近年来&#xff…

如何在Windows系统中恢复丢失的分区?

有些时候&#xff0c;您突然发现自己的分区丢失&#xff0c;并且无法在Windows文件资源管理器中看到它&#xff0c;进入磁盘管理工具&#xff0c;丢失的分区也将被显示为额外的未分配空间&#xff0c;而不是原始分区。如果您遇到了与上述案例类似的情况&#xff0c;某个分区丢失…

AntDB数据库受邀参加第六届上海人工智能大会,分享AIGC时代核心交易系统升级方案

近日&#xff0c;第六届上海人工智能大会春季论坛圆满落幕。大会以“数智互联&#xff0c;瞰见未来”为主题&#xff0c;邀请了来自国内外十余个国家和地区的学术界顶级学者和业内知名企业的技术大咖&#xff0c;探讨人工智能的学术、人才、技术、行业发展痛点。亚信科技AntDB数…

新闻月刊 | GBASE 4月市场动态一览

产品动态 4月&#xff0c;GBASE南大通用大规模分布式并行数据库GBase 8a MPP Cluster中标人保财险“2022年基础软件产品及服务采购”项目。这是自2019年GBASE与人保财险达成合作以来支持建设的第三期项目。项目上线后&#xff0c;将极大满足人保财险大数据中心及研发中心的增量…