Linux部署Redis哨兵集群 一主两从三哨兵(这里使用Redis6,其它版本类似)

news2024/11/18 3:40:36

目录

    • 一、哨兵集群架构介绍
    • 二、下载安装Redis
      • 2.1、选择需要安装的Redis版本
      • 2.2、下载并解压Redis
      • 2.3、编译安装Redis
    • 三、搭建Redis一主两从集群
      • 3.1、准备配置文件
        • 3.1.1、准备主节点6379配置文件
        • 3.1.2、准备从节点6380配置文件
        • 3.1.3、准备从节点6381配置文件
      • 3.2、启动Redis主从复制集群
      • 3.3、查看Redis集群信息和主从复制效果
      • 3.4、关闭Redis
    • 四、搭建Redis三哨兵集群
      • 4.1、准备配置文件
        • 4.1.1、准备节点26379配置文件
        • 4.1.2、准备节点26380配置文件
        • 4.1.3、准备节点26381配置文件
      • 4.2、启动sentinel集群
      • 4.3、查看三个哨兵节点信息
      • 4.4、测试哨兵容灾切换效果
      • 4.5、关闭Redis哨兵
    • 五、注意事项
      • 5.1、远程连接问题
      • 5.2、Redis节点注册到哨兵的IP问题
    • 六、SpringBoot集成Redis主从架构实现读写分离(哨兵模式)

一、哨兵集群架构介绍

      Redis-Sentinel是redis官方推荐的高可用性解决方案,sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能,而redis-sentinel就是一个独立运行的进程,用于监控多个master-slave集群, 自动发现master宕机,进行自动切换slave > master,类似Java这类客户端会通过sentinel发现redis主节点并与其建立连接,也可以实现读写分离。

在这里插入图片描述

PS:本文使用一台主机部署,会使用不同端口区分。

二、下载安装Redis

2.1、选择需要安装的Redis版本

在官网发行版中选择一个自己需要的版本,我这里使用Redis6.2.0,小版本区别不大。
Redis发行版本列表:https://download.redis.io/releases
在这里插入图片描述

2.2、下载并解压Redis

  • 下载redis到/usr/local/redis目录中
wget -P /usr/local/redis http://download.redis.io/releases/redis-6.2.0.tar.gz
  • 进入/usr/local/redis目录解压redis
cd /usr/local/redis
tar -xzf redis-6.2.0.tar.gz

在这里插入图片描述

2.3、编译安装Redis

  • 安装gcc
# redis是c语言编写的,编译Redis需要gcc环境
yum -y install gcc
# 安装好后查看gcc信息
gcc -v

在这里插入图片描述

  • 编译
# 进入redis-6.2.0目录
cd redis-6.2.0
# 执行make开始编译 因为我们下载的是源码需要编译成可执行文件
make

在这里插入图片描述

  • 安装
# 编译成功后,执行make PREFIX=/usr/local/redis/redis-6.2.0 install 安装redis
# 这里指定目录之后,方便后续卸载,直接rm -rf /usr/local/redis/redis-6.2.0 即可删除redis
make PREFIX=/usr/local/redis/redis-6.2.0 install
PREFIX 这个关键字的作用是安装的时候用于指定程序存放的路径,假设不添加该关键字Linux会将:
	可执行文件存放在/usr/local/bin目录;
	库文件会存放在/usr/local/lib目录;
	配置文件会存放在/usr/local/etc目录;
	其他的资源文件会存放在usr/local/share目录

在这里插入图片描述

三、搭建Redis一主两从集群

本文使用一台主机部署,会使用不同端口区分,主节点6379、从节点分别使用6380和6381。

3.1、准备配置文件

先进入Redis解压目录,后续都在该目录下操作

cd /usr/local/redis/redis-6.2.0
3.1.1、准备主节点6379配置文件
  • 创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/node/6379
  • 拷贝一份redis.conf到./node/6379目录中作为主节点配置文件。
cp redis.conf ./node/6379/redis.conf
  • 修改几个配置
# 编辑拷贝的配置文件,,修改几个配置信息
vi ./node/6379/redis.conf
# 绑定的主机地址,建议填redis安装服务器的业务私网地址
# 这里为了方便直接找到这个配置注释了
#bind 127.0.0.1 -::1

# redis进程的端口号 默认是6379
port 6379

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问,这里关闭保护模式设置为no。
protected-mode no

# redis进程是否以守护进程的方式运行,yes为是(后台运行),no为否(不以守护进程的方式运行会占用一个终端,终端关闭redis服务也会关闭)。
daemonize yes

# 指定redis进程的PID文件存放位置
pidfile /var/run/redis_6379.pid

# log文件输出位置
logfile /usr/local/redis/redis-6.2.0/node/6379/redis.log

# 指定持久化存放目录(默认当前启动时所在目录),因为我这里是一台机器部署的要区分开每个节点持久化文件存放的目录
dir /usr/local/redis/redis-6.2.0/node/6379

# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH<password>命令提供密码,默认关闭
requirepass 123456

# 当master设置了密码保护时,slave服务连接master的密码
# 主节点中也要配置,如果不配置在主节点宕机后,哨兵选择了其它从节点作为主节点,如果不配置主节点授权密码,那么在这个节点重新加入集群时无法同步新的主节点数据,因为没有主节点授权密码
masterauth 123456
3.1.2、准备从节点6380配置文件
  • 创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/node/6380
  • 拷贝一份redis.conf到./node/6380目录中作为主节点配置文件。
cp redis.conf ./node/6380/redis.conf
  • 修改几个配置
# 编辑拷贝的配置文件,,修改几个配置信息
vi ./node/6380/redis.conf
# 绑定的主机地址,建议填redis安装服务器的业务私网地址
# 这里为了方便直接找到这个配置注释了
#bind 127.0.0.1 -::1

# redis进程的端口号 默认是6379
port 6380

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问,这里关闭保护模式设置为no。
protected-mode no

# redis进程是否以守护进程的方式运行,yes为是(后台运行),no为否(不以守护进程的方式运行会占用一个终端,终端关闭redis服务也会关闭)。
daemonize yes

# 指定redis进程的PID文件存放位置
pidfile /var/run/redis_6380.pid

# log文件输出位置
logfile /usr/local/redis/redis-6.2.0/node/6380/redis.log

# 指定持久化存放目录(默认当前启动时所在目录),因为我这里是一台机器部署的要区分开每个节点持久化文件存放的目录
dir /usr/local/redis/redis-6.2.0/node/6380

# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH<password>命令提供密码,默认关闭
requirepass 123456

# 当master设置了密码保护时,slave服务连接master的密码
masterauth 123456

# 设置主机的 ip+ 端口,来指明主机的redis
replicaof 10.0.20.13 6379

# 配置从节点读写权限,支持参数[yes,no],yes:只读 no:支持读写操作,从节点默认yes
replica-read-only yes
3.1.3、准备从节点6381配置文件
  • 创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/node/6381
  • 拷贝一份redis.conf到./node/6381目录中作为主节点配置文件。
cp redis.conf ./node/6381/redis.conf
  • 修改几个配置
# 编辑拷贝的配置文件,,修改几个配置信息
vi ./node/6381/redis.conf
# 绑定的主机地址,建议填redis安装服务器的业务私网地址
# 这里为了方便直接找到这个配置注释了
#bind 127.0.0.1 -::1

# redis进程的端口号 默认是6379
port 6381

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问,这里关闭保护模式设置为no。
protected-mode no

# redis进程是否以守护进程的方式运行,yes为是(后台运行),no为否(不以守护进程的方式运行会占用一个终端,终端关闭redis服务也会关闭)。
daemonize yes

# 指定redis进程的PID文件存放位置
pidfile /var/run/redis_6381.pid

# log文件输出位置
logfile /usr/local/redis/redis-6.2.0/node/6381/redis.log

# 指定持久化存放目录(默认当前启动时所在目录),因为我这里是一台机器部署的要区分开每个节点持久化文件存放的目录
dir /usr/local/redis/redis-6.2.0/node/6381

# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH<password>命令提供密码,默认关闭
requirepass 123456

# 当master设置了密码保护时,slave服务连接master的密码
masterauth 123456

# 设置主机的 ip+ 端口,来指明主机的redis
replicaof 10.0.20.13 6379

# 配置从节点读写权限,支持参数[yes,no],yes:只读 no:支持读写操作,从节点默认yes
replica-read-only yes

3.2、启动Redis主从复制集群

  • 启动Redis
# 携带配置启动主节点6379
./bin/redis-server ./node/6379/redis.conf

# 携带配置启动从节点6380
./bin/redis-server ./node/6380/redis.conf
# 携带配置启动从节点6381
./bin/redis-server ./node/6381/redis.conf
  • 查看各节点启动状态
# 查看redis进程,这里可以看到启动了三个进程
# 如果有进程没有启动成功可以去每个节点信息存储目录查看日志,分析异常原因
ps -aux | grep redis

在这里插入图片描述

3.3、查看Redis集群信息和主从复制效果

  • 1、使用Redis自带redis-cli工具连接主节点查看集群信息
# 使用密码连接本机端口号为6379的redis
./bin/redis-cli -p 6379 -a 123456

# 查看集群信息
127.0.0.1:6379> info replication

在这里插入图片描述

  • 2、在主节点写入数据
127.0.0.1:6379> set names kerwin
127.0.0.1:6379> get names

在这里插入图片描述

  • 3、登录从节点查看集群信息和主节点写入的数据
# 使用密码连接本机端口号为6379的redis
./bin/redis-cli -p 6380 -a 123456

# 查看集群信息
127.0.0.1:6380> info replication
# 获取key为names的数据
127.0.0.1:6380> get names

在这里插入图片描述

3.4、关闭Redis

# 普通关闭,通过redis-cli的shutdown关闭
./bin/redis-cli -p 6379 -a 123456 shutdown

# 强制关闭
## 查看redis的进程pid,通过kill -9强制关闭
ps -aux | grep redis 
kill -9 pid

四、搭建Redis三哨兵集群

本文使用一台主机部署,会使用不同端口区分哨兵,分别使用26379、26380、26381。

4.1、准备配置文件

先进入Redis解压目录,后续都在该目录下操作

cd /usr/local/redis/redis-6.2.0
4.1.1、准备节点26379配置文件
  • 1、创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/sentinel/26379
  • 2、拷贝一份sentinel.conf到./sentinel/26379中
cp sentinel.conf ./sentinel/26379/sentinel.conf
  • 3、修改几个配置
vi ./sentinel/26379/sentinel.conf
#端口默认为26379。
port 26379

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问,这里关闭保护模式设置为no。
protected-mode no

# redis进程是否以守护进程的方式运行,yes为是(后台运行),no为否(不以守护进程的方式运行会占用一个终端,终端关闭redis服务也会关闭)。
daemonize yes

#守护进程pid存储文件(默认位置 /var/run/redis-sentinel.pid)
pidfile /var/run/redis-sentinel_26379.pid

#日志文件
logfile /usr/local/redis/redis-6.2.0/sentinel/26379/sentinel.log

#sentinel工作目录(默认/tmp)
dir  /usr/local/redis/redis-6.2.0/sentinel/26379

# 指定Redis主节点主机IP地址和端口,ip根据实际情况调整,mymaster这个名称随便取,下面配置时也需要指定这个名称,客户端连接时也会使用
# 最后的2是指需要有2个以上sentinel节点认为redis主节点失效,才是真的失效,一般为(sentinel总数/2+1)
sentinel monitor mymaster 10.0.20.13 6379 2

# 配置连接密码,此处的密码需要与 redis.conf里面配置的连接密码一致
sentinel auth-pass mymaster 123456

# 这里设置了主机多少毫秒无响应,则认为挂了,,默认:30000毫秒
sentinel down-after-milliseconds mymaster 30000

# 主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1
sentinel parallel-syncs mymaster 1

#故障转移的超时时间毫秒,默认:180000毫秒
sentinel failover-timeout mymaster 180000
4.1.2、准备节点26380配置文件
  • 1、创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/sentinel/26380
  • 2、拷贝一份26379的sentinel.conf到./sentinel/26380中,方便修改
cp ./sentinel/26379/sentinel.conf ./sentinel/26380/sentinel.conf
  • 3、修改几个配置,这里因为是从26379拷贝过来的只需要修改端口和一些文件存储地址即可
vi ./sentinel/26380/sentinel.conf
#端口默认为26379。
port 26380

#守护进程pid存储文件(默认位置 /var/run/redis-sentinel.pid)
pidfile /var/run/redis-sentinel_26380.pid

#日志文件
logfile /usr/local/redis/redis-6.2.0/sentinel/26380/sentinel.log

#sentinel工作目录(默认/tmp)
dir  /usr/local/redis/redis-6.2.0/sentinel/26380
4.1.3、准备节点26381配置文件
  • 1、创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/sentinel/26381
  • 2、拷贝一份26379的sentinel.conf到./sentinel/26381中,方便修改
cp ./sentinel/26379/sentinel.conf ./sentinel/26381/sentinel.conf
  • 3、修改几个配置,这里因为是从26379拷贝过来的只需要修改端口和一些文件存储地址即可
vi ./sentinel/26381/sentinel.conf
#端口默认为26379。
port 26381

#守护进程pid存储文件(默认位置 /var/run/redis-sentinel.pid)
pidfile /var/run/redis-sentinel_26381.pid

#日志文件
logfile /usr/local/redis/redis-6.2.0/sentinel/26381/sentinel.log

#sentinel工作目录(默认/tmp)
dir  /usr/local/redis/redis-6.2.0/sentinel/26381

4.2、启动sentinel集群

  • 启动sentinel
# 携带配置启动哨兵26379节点
./bin/redis-sentinel ./sentinel/26379/sentinel.conf
# 携带配置启动哨兵26380节点
./bin/redis-sentinel ./sentinel/26380/sentinel.conf
# 携带配置启动哨兵26381节点
./bin/redis-sentinel ./sentinel/26381/sentinel.conf
  • 查看各节点启动状态
# 查看redis-sentinel进程,这里可以看到启动了三个进程
# 如果有进程没有启动成功可以去每个节点信息存储目录查看日志,分析异常原因
ps -aux | grep redis-sentinel

在这里插入图片描述

4.3、查看三个哨兵节点信息

# 使用redis-cli连接哨兵
./bin/redis-cli -p 端口
# 连接上后查看哨兵节点信息
127.0.0.1:26379> info sentinel

可以看到一个master主节点,两个salve节点状态,三个哨兵节点都正常
在这里插入图片描述

sentinel集群都启动完毕后,会将哨兵集群的元数据信息写入所有sentinel的配置文件里去(追加在文件的
最下面),可以打开一个查看一下。

vi ./sentinel/26379/sentinel.conf

在这里插入图片描述

4.4、测试哨兵容灾切换效果

  • 1、模拟主节点宕机
# 通过redis-cli的shutdown关闭Redis主节点
./bin/redis-cli -p 6379 -a 123456 shutdown
# 确认主节点6379进程已经下线
ps -aux | grep redis-server

在这里插入图片描述

  • 2、查看是否将从节点切换成主节点
# 查看6380和6381主从复制信息
./bin/redis-cli -p 6380 -a 123456 info replication
./bin/redis-cli -p 6381 -a 123456 info replication

这里可以看到主节点6379下线后,哨兵将6381切换成了主节点。
在这里插入图片描述

4.5、关闭Redis哨兵

# 普通关闭,通过redis-cli的shutdown关闭
./bin/redis-cli -p 端口号 shutdown

# 强制关闭
## 查看redis的进程pid,通过kill -9强制关闭
ps -aux | grep redis-sentinel
kill -9 pid

五、注意事项

5.1、远程连接问题

虽然Redis的配置中都开启了远程连接,但是服务器的端口可能没有开放远程连接,需要将Redis服务和哨兵的端口打开外部才能连接上,或者将防火墙关闭,这里是本地操作,如果是云服务器则需要设置对应安全组。

# 开放指定端口号
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

#检测防火墙状态 active (running),就是运行状态
systemctl status firewalld
# 停止防火墙
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld

5.2、Redis节点注册到哨兵的IP问题

在这里插入图片描述
我们可以查看哨兵中Redis节点的IP,我这里使用的云服务器,哨兵中注册的Redis会使用到内网IP,可以自己ip addr查看一下,就是我们的内网卡,内网通过这个IP连接是没有问题的,但是外网肯定不能使用这个IP,会使用一个云服务给我们提供的外网IP,如果我们直接连接Redis服务,通过外网加6379端口肯定是没有问题的,但是我们外网别的应用中会通过连接到哨兵,然后通过哨兵获取Redis集群信息,也就是说我们通过哨兵获取到的Redis服务IP是服务器的内网IP,例如我这里获取到master节点IP就会是10.0.20.13这样一个内网地址,在外部网络是无法访问的。

六、SpringBoot集成Redis主从架构实现读写分离(哨兵模式)

跳转:https://blog.csdn.net/weixin_44606481/article/details/134017117

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

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

相关文章

【Kotlin精简】第6章 反射

1 反射简介 反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff0c;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性。 1.1 Kotlin反射 我们对比Kotlin和Java的反射类图。 1.1.1 Kotlin反射常用的数据结…

【反悔贪心】2022ICPC南京 G

Problem - G - Codeforces 题意 思路 首先容易发现&#xff0c;合并操作对平均攻击力有贡献&#xff0c;但是加一个1就没有贡献&#xff0c;因此首先考虑每次遇到0的时候都合并 但是很快发现如果这样的话&#xff0c;遇到-1就不一定有足够的1给你合并&#xff0c;因此在遇到…

Vite创建vue3+ts+pinia+vant项目起步流程

pnpm介绍&安装 本质上他是一个包管理工具&#xff0c;和npm/yarn没有区别&#xff0c;主要优势在于 包安装速度极快磁盘空间利用效率高 安装&#xff1a; npm i pnpm -g使用&#xff1a; npm命令pnpm等效npm installpnpm installnpm i axiospnpm add axiosnpm i webpa…

springboo单机多线程高并发防止重复消费的redis方案

springboo单机多线程高并发防止重复消费的redis方案 仅提供方案与测试。 想法&#xff1a;第一次收到userCode时&#xff0c;检查是否在redis中有&#xff0c;如果有&#xff0c;就表明已经消费了&#xff0c;返回抢单失败&#xff1b;否则&#xff0c;就去消费&#xff0c;顺…

EfficientFormerV2:全新的轻量级视觉Transformer

期刊&#xff1a;2023 IEEE/CVF International Conference on Computer Vision (ICCV) 标题&#xff1a;Rethinking&#xff08;重新审视&#xff09; Vision Transformers&#xff08;ViT&#xff09; for MobileNet Size and Speed&#xff08;MobileNet的规模和速度&#xf…

计算机组成原理-存储器概念

计算机组成原理-存储器 存储系统的基本概念 1.层次结构 可以直接被CPU读取: 高速缓存:cache主存储器: 主存和内存 辅助存储器: 辅存和外存 2.分类 1.按层次结构划分 如上面所示 2.按存储介质 半导体存储器磁表面存储器光存储器 3.按信息可更改性 r/w存储器ROM(只读存储器) 4…

Vue2 + Echarts实现3D地图下钻

一、npm安装组件&#xff1a; "echarts": "5.4.0","echarts-gl": "^2.0.9","element-china-area-data": "^5.0.2", 二、Vue页面 <template><div class"Map3D" id"Map3D" ref"…

Python基础入门例程9-NP9 十六进制数字的大小

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 解答&#xff1a; 说明&#xff1a; 描述 计算的世界&#xff0c;除了二进制与十进制&#xff0c;使用最多的就是十六进制了&#xff0c;现在使用input读入一个十六进制的数字&#xff0c;输出它的十进制数字…

30 个常用的 Linux 命令!

作者&#xff1a;JackTian 来源&#xff1a;公众号「杰哥的IT之旅」 ID&#xff1a;Jake_Internet 链接&#xff1a;30 个常用的 Linux 命令&#xff01; 命令 1&#xff1a;last用于显示用户最近登录信息&#xff0c;包括用户名、登录时间、登录来源等信息 单独执行last命令&…

开发直播带货APP:用户体验设计策略

在当今数字化时代&#xff0c;直播带货APP已经成为了电子商务领域的一股重要力量。这种形式的电子商务结合了实时直播和购物&#xff0c;吸引了数百万用户。然而&#xff0c;为了确保直播带货APP的成功&#xff0c;关键在于提供出色的用户体验。本文将探讨开发直播带货APP的用户…

iframe嵌入报表滚动条问题

当在iframe中嵌入报表时&#xff0c;可能会遇到滚动条的问题。下面是一个详细的介绍 1. 了解iframe&#xff1a; - iframe是HTML中的元素&#xff0c;用于在当前页面中嵌入另一个页面。 - 嵌入报表时常使用iframe&#xff0c;以便将报表以独立的方式展示&#xff0c;并与其他页…

MT4教程新手指南:一步步开启你的金融交易之旅!

本文将为您详细介绍如何使用MT4(MetaTrader 4)平台进行金融交易。MT4是全球最受欢迎的在线交易平台之一&#xff0c;它拥有强大的功能&#xff0c;包括图表分析工具、交易执行、订单管理等&#xff0c;可以帮助你更好地理解和参与金融市场。那么&#xff0c;让我们开始吧! **步…

基于正余弦算法的无人机航迹规划-附代码

基于正余弦算法的无人机航迹规划 文章目录 基于正余弦算法的无人机航迹规划1.正余弦搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用正余弦算法来优化无人机航迹规划。 1.正余弦…

31一维信号滤波(限幅滤波、中值滤波、均值滤波、递推平均滤波),MATLAB程序已调通,可直接运行。

一维信号滤波&#xff08;限幅滤波、中值滤波、均值滤波、递推平均滤波&#xff09;&#xff0c;MATLAB程序已调通&#xff0c;可直接运行。 31matlab、中值滤波、信号处理 (xiaohongshu.com)

structs2 重构成SpringBoot架构

# 目录 structs2 重构成SpringBoot架构 1.1 structs2架构&#xff1a; 1.2 springboot 架构 1.3 演化要点&#xff1a; 1.基于前端的展示层不需要修改 2.HttpServlet 将会有SpringBoot annotation 来处理 3.构建前置的Structs url 转发器&#xff0c;适配 4.ActionSupport将由…

9篇论文速览股票预测高分经典方案

作为一直以来的烫门&#xff0c;股票预测因其非线性、高度波动性和复杂性等原因&#xff0c;成为了金融量化领域的一大难题。以往的解决方案主要围绕机器学习展开&#xff0c;如今&#xff0c;基于深度学习的股票预测方法有了许多新的突破。 为了帮助大家更深入地了解股票预测…

防止消息丢失与消息重复——Kafka可靠性分析及优化实践

系列文章目录 上手第一关&#xff0c;手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么&#xff0c;以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 Kafka存取原理与实现分析&#xff0c;打破面试难关 防止消息丢失与消息重复——Kafka可…

ToDesk等远程软件连接主机无法更改分辨率 - 解决方案

问题 使用ToDesk等远程软件连接自己的Linux或Windows主机时&#xff0c;若主机已连接显示器&#xff0c;则可通过系统设置更改显示分辨率。但如果主机没有连接显示器或显示器的电源关闭&#xff0c;则无法正常调整分辨率。下文介绍解决方案。 解决方案 方案1&#xff1a;连接…

多跳推理真的可解释吗?10.24

多跳推理真的可解释吗 摘要1 引言2 相关工作2.1 多跳推理2.2 基于规则的推理2.3 可解释性评估 3 基础知识4 基准测试4.1 数据集构建4.2 评估框架4.3 近似可解释性评分4.4 Benchmark with Manual Annotation4.5 使用挖掘规则的基准 实验 摘要 近年来&#xff0c;多跳推理在获取…

BUUCTF wireshark 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 黑客通过wireshark抓到管理员登陆网站的一段流量包&#xff08;管理员的密码即是答案) 密文&#xff1a; 下载附件&#xff0c;解压后得到一个.pcap文件。 解题思路&#xff1a; 1、双击文件&#xff0c;在wires…