Linux学习-Redis主从和哨兵

news/2024/5/18 21:45:34/文章来源:https://blog.csdn.net/xuwenpeng/article/details/133032941

主从复制

在这里插入图片描述

一主一从结构

# 配置host61为主服务器
[root@host61 ~]# yum -y install redis 
[root@host61 ~]# vim /etc/redis.conf
bind 192.168.88.61  #设置服务使用的Ip地址
port 6379 #设置服务使用的端口号 使用默认端口即可
[root@host61 ~]# systemctl  start redis
[root@host61 ~]# redis-cli  -h 192.168.88.61 -p 6379
192.168.88.61:6379> info replication  #查看复制信息
# Replication
role:master  #默认就是主服务器
connected_slaves:0  #没有从服务器
master_replid:0aebff37df915061ddf157cc33d8742f14e8773f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# 配置host62为host61的从服务器
[root@host62 ~]# yum -y install redis  #安装软件
[root@host62 ~]# vim /etc/redis.conf   #修改配置文件
bind 192.162.88.62 #设置服务的ip地址
port 6379 #设置服务的端口号 默认即可
:wq
[root@host62 ~]# systemctl  start redis  #启动服务
[root@host62 ~]# redis-cli  -h 192.162.88.62 -p 6379 #连接服务
192.162.88.62.:6379> replicaof 192.162.88.61 6379  #指定主服务器ip和端口
OK
192.162.88.62.:6379> config rewrite  #永久保存配置
OK
192.162.88.62.:6379> exit #退出服务
[root@host62 ~]# tail -1 /etc/redis.conf  #查看文件末尾
replicaof 192.162.88.61 6379
[root@host62 ~]# redis-cli  -h 192.162.88.62 -p 6379  #连接服务
192.162.88.62.:6379> info replication  #查看复制信息
# Replication
role:slave  #角色
master_host:192.162.88.61  #主服务器ip地址 
master_port:6379  #主服务器端口号
master_link_status:up  #与主服务器连接状态 (up 正常  down 连接失败)
master_last_io_seconds_ago:8
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
# 在主服务器host61查看复制信息
[root@host61 ~]# redis-cli  -h 192.168.88.61 -p 6379
192.168.88.61:6379> info replication
# Replication
role:master #角色
connected_slaves:1  #一个从
slave0:ip=192.168.88.62,port=6379,state=online,offset=322,lag=0 #从服务器信息
master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:322
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:322
192.168.88.61:6379> mset x 1 y 2 z 3 #存储数据
OK
192.168.88.61:6379> keys *  #查看变量
1) "z"
2) "y"
3) "x"
# 在从服务器查看是否同步数据
[root@host62 ~]# redis-cli  -h 192.168.88.62 -p 6379
192.168.88.62.:6379> keys *
1) "y"
2) "x"
3) "z"

一主多从结构

[root@host63 ~]# yum -y install redis  #安装软件
[root@host63 ~]# vim /etc/redis.conf   #修改配置文件
bind 192.168.88.63
port 6379
[root@host63 ~]# systemctl  start redis  #启动服务
[root@host63 ~]# redis-cli  -h 192.168.88.63 -p 6379 #连接服务
192.168.88.63:6379> replicaof 192.168.88.61 6379 #指定主服务器ip和端口
OK
192.168.88.63:6379> config rewrite  #永久保存配置
OK
192.168.88.63:6379> exit
[root@host63 ~]# tail -1 /etc/redis.conf   #保存到文件末尾
replicaof 192.168.88.61 6379
[root@host63 ~]# redis-cli  -h 192.168.88.63 -p 6379  #连接服务
192.168.88.63:6379> info replication  #查看复制信息
# Replication
role:slave #角色
master_host:192.168.88.61 #主服务器IP
master_port:6379  #主服务器端口
master_link_status:up #与主服务器连接状态 up 正常连接状态 
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:1171
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1171
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1158
repl_backlog_histlen:14
192.168.88.63:6379> keys *  #查看是否同步数据
1) "x"
2) "z"
3) "y"
# 在host61 查看到有2台从服务器
[root@host61 ~]# redis-cli -h 192.168.88.61 -p 6379
192.168.88.61:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.88.62,port=6379,state=online,offset=3027,lag=0
slave1:ip=192.168.88.63,port=6379,state=online,offset=3013,lag=1
master_replid:209b3b7ce20c708ab1b6b95a5d1becb2454b0941
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3027
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3027

主从从结构

# 将host63恢复为独立的redis服务器,然后配置为host62的从服务器
[root@host63 ~]# redis-cli  -h 192.168.88.63 -p 6379
192.168.88.63:6379> replicaof no one  #恢复为独立的数据库服务器
OK
192.168.88.63:6379> replicaof 192.168.88.62 6379  #指定主服务器为62
OK
192.168.88.63:6379> config rewrite  #保存配置
OK
192.168.88.63:6379> exit #断开连接
[root@host63 ~]# tail -1 /etc/redis.conf  #查看是否保存
replicaof 192.168.88.62 6379
[root@host63 ~]# redis-cli  -h 192.168.88.63 -p 6379  #连接服务
192.168.88.63:6379> info replication  #查看复制信息
# Replication
role:slave #角色
master_host:192.168.88.62 #主服务器IP
master_port:6379 #主服务端口
master_link_status:up #与主服务器连接状态
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:4545
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4545
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:4420
repl_backlog_histlen:126
# 在host62查看复制信息
[root@host62 ~]# redis-cli  -h 192.168.88.62 -p 6379
192.168.88.62.:6379> info replication  #查看复制信息
# Replication
role:slave       #本身是从服务器
master_host:192.168.88.61 #主服务器ip
master_port:6379 #主服务器redis服务端口
master_link_status:up #与主服务器连接状态
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:4769
slave_priority:100
slave_read_only:1
connected_slaves:1  #本身有一个从服务器
slave0:ip=192.168.88.63,port=6379,state=online,offset=4769,lag=0 #从服务器信息
master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4769
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:4769# 配置带验证的主从复制
- 配置主机host61,redis服务连接密码为123456
- 主机host62设置连接host61的redis服务密码
# 给host61主机的Redis服务设置连接密码,如果从服务器不指定连接密码无法同步数据。
# 配置主机host61,redis服务连接密码为123456
[root@host61 ~]# redis-cli  -h 192.168.88.61 -p 6379
192.168.88.61:6379> config get requirepass  #查看密码,默认服务没有密码
1) "requirepass"
2) ""
192.168.88.61:6379> config set requirepass 123456  #设置密码
OK
192.168.88.61:6379> auth 123456  #输入密码
OK
192.168.88.61:6379> config rewrite #保存配置
OK
192.168.88.61:6379> exit  #退出
[root@host61 ~]# tail -1 /etc/redis.conf   #保存到文件的末尾
requirepass "123456"
[root@host61 ~]# redis-cli  -h 192.168.88.61 -p 6379  #连接服务
192.168.88.61:6379> auth 123456 #输入密码
OK
192.168.88.61:6379> info replication #查看复制信息
# Replication
role:master
connected_slaves:0   # 没有从服务器了 因为从没有输入连接密码连接不上主服务器
master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:5763
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:5763
# 主机host62设置连接host61的redis服务密码
[root@host62 ~]# redis-cli  -h 192.168.88.62 -p 6379  连接服务
192.168.88.62.:6379> info replication #查看复制信息
# Replication
role:slave
master_host:192.168.88.61
master_port:6379
master_link_status:down  #没设置密码 与master主机是断开状态
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:1
master_link_down_since_seconds:274
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:7803
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:7803
192.168.88.62:6379> config set masterauth 123456  #指定主服务器密码
OK
192.168.88.62:6379> config rewrite #保存配置
OK
192.168.88.62:6379> info replication #查看复制信息
# Replication
role:slave
master_host:192.168.88.61
master_port:6379
master_link_status:up  #设置连接密码后  状态为up 
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:5847
slave_priority:100
slave_read_only:1
connected_slaves:1
slave0:ip=192.168.88.63,port=6379,state=online,offset=5847,lag=1
master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:5847
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:5764
repl_backlog_histlen:84

哨兵服务

在这里插入图片描述

- 配置主机Host67为master服务器
- 配置主机host68为Host67的slave服务器
- 配置主机host69运行哨兵服务
---
说明:
1)可以使用一主一从或 一主多从 或 主从从 + 哨兵服务 做服务的高可用 和 数据自动备份
2)如果主从结构中的redis服务设置连接密码的话必须全每台数据库都要设置密码且密码要一样,要么全都不设置密码。
3)如果Redis服务有密码宕机的服务器启动服务后,要人为指定主服务器的连接密码。
---
# 配置主机Host67为master服务器
[root@host67 ~]# yum -y install redis  安装redis服务软件
[root@host67 ~]# vim /etc/redis.conf  修改配置文件
bind 192.168.88.67 #设置redis服务使用IP地址
port 6379 #设置redis服务使用端口
[root@host67 ~]# systemctl  start redis   启动服务
[root@host67 ~]# redis-cli  -h 192.168.88.67 -p 6379 连接服务
192.168.88.67:6379> info replication  #查看角色
# Replication
role:master #默认是master角色
connected_slaves:0 #没有从服务器
master_replid:0aebff37df915061ddf157cc33d8742f14e8773f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# 配置主机host68为Host67的slave服务器
[root@host68 ~]# yum -y install redis  #安装软件
[root@host68 ~]# vim /etc/redis.conf   #修改配置文件
bind 192.168.88.68 #设置服务使用Ip地址
port 6379 #设置服务监听端口 默认即可
[root@host68 ~]# systemctl  start redis  #启动服务
[root@host68 ~]# redis-cli  -h 192.168.88.68 -p 6379 #连接服务
192.168.88.68:6379> replicaof 192.168.88.67 6379 #指定主服务器ip和端口
OK
192.168.88.68:6379> config rewrite  #永久保存配置
OK
192.168.88.68:6379> exit #断开
[root@host68 ~]# tail -1 /etc/redis.conf   #保存到文件末尾
replicaof 192.168.88.67 6379
[root@host68 ~]# redis-cli  -h 192.168.88.68 -p 6379  #连接服务
192.168.88.68:6379> info replication  #查看复制信息
# Replication
role:slave  #角色 从服务器
master_host:192.168.88.67  #主服务器Ip
master_port:6379 #主服务端口
master_link_status:up  #与主连接状态 
master_last_io_seconds_ago:8
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:476ae25abdb72c60a4ada0dcc73910a7455ecac1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
# 配置主机host69运行哨兵服务
]# yum -y install  redis #安装软件
]# vim /etc/redis-sentinel.conf   #创建并编辑主配置文件
bind 192.168.88.69  #指定哨兵服务使用ip地址
port 26379  #指定哨兵服务监听端口
daemonize yes  #以守护进程方式运行服务
sentinel monitor mymaster 192.168.88.67 6379 1   #监视master服务器Host67
[root@host69 ~]# systemctl  start redis-sentinel #启动哨兵服务
[root@host69 ~]# netstat  -utnlp  | grep 26379  #查看端口号
tcp    0   0 192.168.88.69:26379     0.0.0.0:*  LISTEN      1651/redis-sentinel
# 查看日志获取监视信息
[root@host69 ~]# tail -f /var/log/redis/sentinel.log   
1651:X 03 Jun 2023 21:42:49.523 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1651:X 03 Jun 2023 21:42:49.523 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=1651, just started
1651:X 03 Jun 2023 21:42:49.523 # Configuration loaded
1651:X 03 Jun 2023 21:42:49.523 * supervised by systemd, will signal readiness
1651:X 03 Jun 2023 21:42:49.525 * Running mode=sentinel, port=26379.
1651:X 03 Jun 2023 21:42:49.525 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1651:X 03 Jun 2023 21:42:49.530 # Sentinel ID is f9475074a53444ee81765646c105e04e73ac9ec8
1651:X 03 Jun 2023 21:42:49.530 # +monitor master mymaster 192.168.88.67 6379 quorum 1
1651:X 03 Jun 2023 21:42:49.533 * +slave slave 192.168.88.68:6379 192.168.88.68 6379 @ mymaster 192.168.88.67 6379
# 测试配置
# 停止master主机的redis 服务,原slave角色会升级为主,哨兵服务会自动监视新的master服务,宕机的master 主机恢复后自动配置为当前主的从服务器。停止master主机的redis 服务
[root@host67 ~]# systemctl  stop redis 
# 原slave升为主
[root@host68 ~]# redis-cli  -h 192.168.88.68 -p 6379
192.168.88.68:6379> info replication
# Replication
role:master  #角色
connected_slaves:0  #没从服务器
master_replid:e4d9399cdf19c724b032859e77316019735d391e
master_replid2:bd1b8d193de170bedd8b40780ee3fb45f9590a5b
master_repl_offset:35343
second_repl_offset:32642
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:183
repl_backlog_histlen:35161
# 哨兵服务会自动监视新的master服务
[root@host69 ~]# tail -f /var/log/redis/sentinel.log  查看日志文件 
1651:X 03 Jun 2023 21:50:23.603 # +failover-state-select-slave master mymaster 192.168.88.67 6379
1651:X 03 Jun 2023 21:50:23.694 # +selected-slave slave 192.168.88.68:6379 192.168.88.68 6379 @ mymaster 192.168.88.67 6379
1651:X 03 Jun 2023 21:50:23.695 * +failover-state-send-slaveof-noone slave 192.168.88.68:6379 192.168.88.68 6379 @ mymaster 192.168.88.67 6379
1651:X 03 Jun 2023 21:50:23.796 * +failover-state-wait-promotion slave 192.168.88.68:6379 192.168.88.68 6379 @ mymaster 192.168.88.67 6379
1651:X 03 Jun 2023 21:50:24.452 # +promoted-slave slave 192.168.88.68:6379 192.168.88.68 6379 @ mymaster 192.168.88.67 6379
1651:X 03 Jun 2023 21:50:24.452 # +failover-state-reconf-slaves master mymaster 192.168.88.67 6379
1651:X 03 Jun 2023 21:50:24.502 # +failover-end master mymaster 192.168.88.67 6379
1651:X 03 Jun 2023 21:50:24.502 # +switch-master mymaster 192.168.88.67 6379 192.168.88.68 6379
1651:X 03 Jun 2023 21:50:24.502 * +slave slave 192.168.88.67:6379 192.168.88.67 6379 @ mymaster 192.168.88.68 6379
1651:X 03 Jun 2023 21:50:54.586 # +sdown slave 192.168.88.67:6379 192.168.88.67 6379 @ mymaster 192.168.88.68 6379
# 宕机的master 主机恢复后自动配置为当前主的从服务器
[root@host67 ~]# systemctl  start redis  启动服务
[root@host67 ~]# redis-cli  -h 192.168.88.67 -p 6379 连接服务
192.168.88.67:6379> info replication    #查看角色
# Replication
role:slave  #从服务器
master_host:192.168.88.68  #主服务器ip
master_port:6379 #主服务器端口
master_link_status:up  #连通状态
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:54542
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:e4d9399cdf19c724b032859e77316019735d391e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:54542
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:54379
repl_backlog_histlen:164

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

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

相关文章

三、开发工具

开发工具 开发工具1.1.熟悉IDEA1.2.下载IDEA1.3.IDEA中文插件1.4.IDEA输出中文乱码1.5.使用IDEA —————————————————————————————————————————————————— —————————————————————————————————…

国内低代码开发平台有哪些?低代码真的好用吗?

“低代码”这一概念在近几年异常火爆,也吸引了国内大厂纷纷加入,像腾讯、阿里、华为、网易、百度等科技巨头都自研了自己的低代码产品,并同时在该领域投资了不少厂商。就比如阿里,其先是在2018年投资了一家低代码平台,…

C语言指针,深度长文全面讲解

指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。 为什么需要指针? 指针解决了一些编程中基本的问题。…

嵌入式和 Java 走哪条路?

今日话题,嵌入式和 Java 走哪条路?嵌入式对软件感兴趣,走java嵌入式行业薪资并不算低,比上不足,比下有余。特别是从2020年开始,嵌入式也借上了芯片行业的东风火了起来。能拿多少薪资,受多方面因素影响。下…

激光焊接汽车PP塑料配件透光率测试仪

随着汽车主机厂对车辆轻量化的需求越来越强烈,汽车零部件轻量化设计、制造也成为汽车零部件生产厂商的重要技术指标。零部件企业要实现产品的轻量化,在材料指定的情况下,要通过产品设计优化、产品壁厚减小和装配方式的优化来解决。使用PP材料…

服务网格的面临挑战:探讨服务网格实施中可能遇到的问题和解决方案

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

【案例教学】华为云API图引擎服务 GES的便捷性—AI帮助快速处理图片小助手

云服务、API、SDK,调试,查看,我都行 阅读短文您可以学习到:人工智能AI快速处理图片 1 IntelliJ IDEA 之API插件介绍 API插件支持 VS Code IDE、IntelliJ IDEA等平台、以及华为云自研 CodeArts IDE,基于华为云服务提供…

Java8 Stream 数据流,大数据量下的性能效率

Stream 是 Java SE 8 类库中新增的关键抽象&#xff0c;它被定义于 java.util.stream &#xff08;这个包里有若干流类型&#xff1a; Stream<T> 代表对象引用流&#xff0c;此外还有一系列特化流&#xff0c;如 IntStream&#xff0c;LongStream&#xff0c;DoubleStrea…

动画制作如何选择动作捕捉动画制作服务

近日&#xff0c;长宁ART PARK 大融城迎来了首位虚拟代言人“光艺”&#xff0c;拥有着极具感染力的笑容、数字人形象辨识度极高&#xff0c;在裸眼3D巨屏中&#xff0c;为市民带来虚实交互体验。而这种数字人动画的背后&#xff0c;大多以动作捕捉动画制作技术为主。 *素材源于…

LeetCode算法动态规划—剑指 Offer 10- II. 青蛙跳台阶问题

目录 剑指 Offer 10- II. 青蛙跳台阶问题 题解&#xff1a; 代码&#xff1a; 运行结果&#xff1a;​编辑 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97&#xff08;1000000007&#xff…

MATLAB APP纯小白入门 两数相加

万事开头难&#xff0c;最怕第一次。使用matlab APP 实现两数求和&#xff0c;如下图所示&#xff0c;c a b&#xff0c;输入数字后&#xff0c;按 “” 就计算。 步骤 拖拽三个 Edit Field(Numeric) 过来&#xff0c;并且双击名字分别改为 a,b,c。注意修改名字后右边会有点变…

Python日志处理器,同时打印到控制台和保存到文件中,并保证格式一致

使用logging模块的时候&#xff0c;默认是输出到控制台的&#xff0c;当然也可以配置输出到文件中&#xff0c;但是当你配置了文件后&#xff0c;控制台的输出就消失了&#xff0c;所以&#xff0c;需要一个策略即能保存到文件中&#xff0c;又能输出到控制台中。 下面是我做的…

【计算机毕业设计】基于SpringBoot+Vue的流浪猫狗救助救援网站的设计与实现

博主主页&#xff1a;一季春秋博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容&#xff1a;毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题…

求链表的倒数第k个节点

思路&#xff1a;利用快慢指针空间差 代码&#xff1a; struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {// write code herestruct ListNode* slow pListHead;struct ListNode* fast pListHead;while(k--){if(fastNULL){return NULL;}fastfast->…

linux常用命令(4):mkdir命令(创建目录)

文章目录 一、命令简介二、命令格式三、常用示例 一、命令简介 mkdir&#xff08;make directories&#xff09;创建目录。 若指定目录不存在则创建目录。若指定目录已存在&#xff0c;则会提示已存在而不继续创建。 touch与mkdir的区别? 很多人可能会把这个搞混淆&#xff…

主动写入流对@ResponseBody注解的影响 | 京东云技术团队

问题回溯 2023年Q2某日运营反馈一个问题&#xff0c;商品系统商家中心某批量工具模板无法下载&#xff0c;导致功能无法使用&#xff08;因为模板是动态变化的&#xff09; 商家中心报错&#xff08;JSON串&#xff09;&#xff1a; {"code":-1,"msg":&…

如何成为一名“受欢迎”的数据科学家和机器学习工程师

《机器学习项目交付实战》将介绍如何从模型和数据中获取最佳性能&#xff0c;帮助你构建稳定的数据管道。通过高效的可复用技术集合&#xff0c;来确保应用程序工作流程的顺利执行&#xff0c;以及提高模型的可维护性。基于数十年的良好软件工程实践&#xff0c;机器学习工程可…

如何防盗版软件

有多少公司&#xff0c;至今都无法摆脱被盗版软件支配的恐惧&#xff1f; 其实大多数时候&#xff0c;企业都是被动当了大冤种&#xff0c;因为他们也并不会主动要求员工使用破解软件。实在是架不住有些不懂版权的、心存侥幸的员工私下里使用。只要公司联网&#xff0c;就一定…

【QT开发(5)】0919-QT里面新增ui类,新增使用opencv读取图片的普通类,在ui类中显示图片

参考资料 1、Qt Creator快速入门_第三版__霍亚飞编著 2、《QtOpenCV显示图片&#xff08;Mat转QImage然后显示在QLabel上&#xff09;》 输出材料 https://gitee.com/hiyanyx/qt5.14-cpp_-empty_-project/tree/508435b09ff1f794e650cba859b0db2323ec333a/ 新增文件布局 新…

API接口采集电商平台阿里巴巴中国站获得1688商品评论数据货品评分、评价内容接口调用指南

淘宝API商品评论接口&#xff0c;主要用于获取某个商品的评价信息。通过该接口&#xff0c;我们可以获取到商品的所有评价内容、评价时间、评价等级等相关信息&#xff0c;帮助我们更好地了解用户对商品的反馈&#xff0c;进而进行数据分析和业务优化。 1688.item_review-获得…