Redis哨兵模式的搭建以及配置参数简介

原理

Redis哨兵模式是一种用于在Redis主从复制环境中进行高可用性监控和故障恢复的机制。该模式引入了一个或多个哨兵节点,这些节点负责监控Redis服务器的状态,并在主节点发生故障时切换为新的主节点。

哨兵节点的工作原理如下:
1、哨兵节点通过发送命令来监控Redis服务器的状态。它会定期向主节点和从节点发送PING命令,检查节点是否存活。
2、当主节点发生故障或不可用时,哨兵节点会进行故障检测。它会询问其他哨兵节点是否已经发现了主节点的故障,并尝试达成共识。
3、如果多数哨兵节点都认为主节点故障,那么它们会选举新的主节点。选举的原则是选择一个具有最高优先级的从节点,如果没有从节点则选择一个具有最高优先级的哨兵节点。
4、一旦新的主节点被选出,哨兵节点会更新所有其他从节点的配置信息,使它们成为新主节点的从节点。
5、当故障的主节点恢复时,哨兵节点会将其重新加入到主从复制环境中,并将其设置为新主节点的从节点。
6、通过哨兵模式,Redis可以实现高可用性和故障恢复。当主节点发生故障时,哨兵节点可以自动切换为新的主节点,使系统可以在故障期间继续提供服务。同时,哨兵节点可以监控并修复其他节点的故障,确保整个Redis集群处于可用状态。
在这里插入图片描述

搭建准备

服务器准备
在这里插入图片描述
关闭所有服务器防火墙

$ systemctl stop firewalld.service

修改所有服务器的hosts

$ vim /etc/hosts192.168.1.1 redis-01
192.168.1.2 redis-02
192.168.1.3 redis-03

资源准备
redis 下载地址:
http://download.redis.io/releases/

主从搭建

1、在所有服务器执行
注意: 新版本redis自带哨兵,不需要单独安装

$ mkdir /home/redis
$ mkdir /home/redis/data
$ mkdir /home/redis/logs
$ cd /home/redis
$ wget http://download.redis.io/releases/redis-7.2.4.tar.gz
$ tar -zxvf redis-7.2.4.tar.gz
$ cd redis-7.2.4/
$ make

2、配置redis.conf

$ vim /home/redis/redis-7.2.4/redis.conf

主配置

dir "/home/redis/data"
logfile "/home/redis/logs/redis.log"
requirepass "123456"
protected-mode no
port 6379
min-replicas-to-write 1
min-replicas-max-lag 10
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
maxmemory 2gb
maxmemory-policy allkeys-lru
pidfile "/var/run/redis_6379.pid"
loglevel notice
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
locale-collate ""
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
rdb-del-sync-files no
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-diskless-sync-max-replicas 0
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly yes
appendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
aof-timestamp-enabled no
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-listpack-entries 512
hash-max-listpack-value 64
list-max-listpack-size -2
list-compress-depth 0
set-max-intset-entries 512
set-max-listpack-entries 128
set-max-listpack-value 64
zset-max-listpack-entries 128
zset-max-listpack-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4kb
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes

从配置
1、masterauth: 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。“requirepass”配置项指定了当前server的密码。此配置项中值需要和master机器的“requirepass”保持一致。
2、slaveof : 将当前服务器转变为指定服务器的从属服务器(slave server)。

dir "/home/redis/data"
logfile "/home/redis/logs/redis.log"
requirepass "123456"
masterauth "123456"
protected-mode no
port 6379
min-replicas-to-write 1
min-replicas-max-lag 10
slaveof middleware-01 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
maxmemory 2gb
maxmemory-policy allkeys-lru
pidfile "/var/run/redis_6379.pid"
loglevel notice
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
locale-collate ""
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
rdb-del-sync-files no
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-diskless-sync-max-replicas 0
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly yes
appendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
aof-timestamp-enabled no
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-listpack-entries 512
hash-max-listpack-value 64
list-max-listpack-size -2
list-compress-depth 0
set-max-intset-entries 512
set-max-listpack-entries 128
set-max-listpack-value 64
zset-max-listpack-entries 128
zset-max-listpack-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4kb
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes

3、启动
依次启动所有服务器上的redis 服务

$ /home/redis/redis-7.2.4/src/redis-server /home/redis/redis-7.2.4/redis.conf

4、查看状态
启动所有服务器后,查看所有redis 节点状态

master节点信息

$ /home/redis/redis-7.2.4/src/redis-cli -a 123456(redis密码) info replicationWarning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:3
min_slaves_good_slaves:3
slave0:ip=192.168.1.2,port=6379,state=online,offset=812674869,lag=0
slave1:ip=192.168.1.3,port=6379,state=online,offset=812674869,lag=0
master_failover_state:no-failover
master_replid:ff565edfdaed8aba6cab1c39f70b8bcab2126c08
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:812674869
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:811607825
repl_backlog_histlen:1067045

slave节点信息

$ src/redis-cli -a 123456(redis密码) info replicationWarning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:redis-01
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_read_repl_offset:812708923
slave_repl_offset:812708923
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
min_slaves_good_slaves:0
master_failover_state:no-failover
master_replid:ff565edfdaed8aba6cab1c39f70b8bcab2126c08
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:812708923
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:811648705
repl_backlog_histlen:1060219

哨兵配置

在redis的安装目录下有个文件sentinel.conf,这就是哨兵的配置文件。它和redis.conf文件在同级目录。

1、sentinel.conf配置

$ vim /home/redis/redis-7.2.4/sentinel.confprotected-mode no
port 26379
daemonize yes
pidfile "/var/run/redis-sentinel.pid"
loglevel notice
logfile "/home/redis/logs/sentinel.log"
dir "/home/redis/data"
sentinel monitor mymaster 192.168.1.1 6379 3
sentinel auth-pass mymaster 123456
# 如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会主观地(单方面地)认为这个master已经不可用了# 如果在该时间(ms)内未能完成failover操作,则认为该failover失败
sentinel failover-timeout mymaster 30000
# 指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长# 编写redis节点切换通知,根据实际情况编写
sentinel client-reconfig-script mymaster /home/redis/redis-7.2.4/reconfig.shsentinel deny-scripts-reconfig yes
sentinel resolve-hostnames yes
sentinel announce-hostnames yes

2、reconfig.sh 节点切换企业微信发送脚本


#!/bin/bashcheck_time=$(date +"%F-%T")
master_name="$1"
from_ip="$4"
from_port="$5"
to_ip="$6"
to_port="$7"#填写自己正确的机器人链接
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=【自己的key】' \-H 'Content-Type: application/json' \-d '{"msgtype": "text","text": {"content": "【'$check_time' : '$master_name'】 \nmessage : \nredis主节点转移\nfrom : \n'$from_ip:$from_port'\nto: \n'$to_ip:$to_port'","mentioned_list":["@all"]}}'

3、哨兵启动

$ /home/redis/redis-7.2.4/src/redis-sentinel /home/redis/redis-7.2.4/sentinel.conf

4、查看启动状态

$ /home/redis/redis-7.2.4/src/redis-cli -p 26379  info Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.1.1:6379,slaves=3,sentinels=4

5、注意
redis 哨兵模式启动成功后,会自动在sentinel .conf 最下方生成以下配置

...# Generated by CONFIG REWRITE
latency-tracking-info-percentiles 50 99 99.9
user default on nopass sanitize-payload ~* &* +@all
sentinel myid a98121e7518d18336731dac83e1ef041152590f0
sentinel config-epoch mymaster 219
sentinel leader-epoch mymaster 0
sentinel current-epoch 219## 不包含自身
sentinel known-replica mymaster 192.168.1.1 6379
sentinel known-replica mymaster 192.168.1.2 6379
sentinel known-replica mymaster 192.168.1.3 6379## 不包含自身
sentinel known-sentinel mymaster 192.168.1.1 26379 ebf711bac3990a534fc068312b7622c849dc65e5
sentinel known-sentinel mymaster 192.168.1.2 26379 ec8837fb38d22daa9800b82006130fe625d959fd
sentinel known-sentinel mymaster 192.168.1.3 26379 ec8837fb38d22daa9800b82006130fe625d959fd

redis.conf 参数详解

Redis的配置文件redis.conf包含了多个参数,这些参数用于定义Redis服务器的行为、性能和安全设置。以下是一些常见参数的详细说明:

基本设置

  • daemonize:是否以后台进程运行。默认为no,如果设置为yes,则Redis将以守护进程的方式在后台运行。
  • pidfile:当Redis以后台进程运行时,需要指定一个PID文件以存储进程ID。默认为/var/run/redis.pid,但可以通过此参数进行修改。
  • bind:绑定主机IP地址。默认值为127.0.0.1,即只接受来自本地主机的连接。如果设置为0.0.0.0,则接受来自所有IP地址的连接。
  • port:监听端口号。默认为6379,但可以根据需要进行修改。
  • timeout:客户端连接超时时间(秒)。默认为300秒,即如果客户端在指定时间内没有发送任何请求,则服务器将关闭该连接。如果设置为0,则表示禁用此功能。

日志设置

  • loglevel:日志记录等级。有4个可选值:debug、verbose(默认值)、notice、warning。这些等级决定了日志信息的详细程度。
  • logfile:日志记录方式及路径。默认为stdout,即将日志输出到标准输出。如果设置为文件路径,则日志将被写入该文件。

数据库设置

  • databases:可用数据库的数量。默认值为16,但可以根据需要进行修改。数据库编号从0开始,可以使用SELECT命令来选择要使用的数据库。
  • dbfilename:本地数据库文件名。默认为dump.rdb,这是Redis用于存储数据的文件名。
  • dir:本地数据库存放路径。默认为当前目录(即redis.conf所在的目录),但可以通过此参数进行修改。

数据持久化

  • save:指定在多长时间内有多少次更新操作就将数据同步到数据文件。可以配置多个条件,如“save 900 1”表示在900秒内有1次更改时触发数据持久化。
  • rdbcompression:在存储至本地数据库时是否压缩数据。默认为yes,使用LZF压缩算法。如果为了节省CPU时间,可以设置为no,但会导致数据库文件变大。
  • appendonly:是否在每次更新操作后进行日志记录(AOF持久化)。默认为no。如果开启此功能,Redis将在每次写操作时追加日志到指定的文件中,以确保数据的持久性。但需要注意的是,这可能会影响性能。
  • appendfilename:更新日志文件名。默认为appendonly.aof。
  • appendfsync:更新日志条件。有3个可选值:no(等待操作系统进行数据缓存同步到磁盘)、always(每次更新操作后手动调用fsync()将数据写到磁盘)、everysec(每秒同步一次,默认值)。

主从复制

  • slaveof:设置从服务器的主服务器IP地址和端口号。当本机为从服务时,需要指定主服务的IP及端口。
  • masterauth:当本机为从服务时,设置主服务的连接密码。如果主服务器设置了密码保护,则从服务器在连接主服务器时需要进行身份验证。
  • slave-serve-stale-data:当从服务器与主服务器失去联系或复制正在进行时,从服务器的行为设置。如果设置为yes(默认值),从服务器将继续响应客户端请求,但返回的数据可能是过时的。如果设置为no,则除了INFO和SLAVEOF命令之外的任何请求都会返回一个错误信息“SYNC with master in progress”。

安全设置

  • requirepass:设置连接密码。如果配置了连接密码,客户端在连接Redis时需要通过AUTH命令提供密码。

其他设置

  • maxclients:最大客户端连接数。默认不限制,但可以根据服务器的性能和网络环境进行设置。如果达到最大连接数,Redis将关闭新的连接并向客户端返回错误信息。
  • maxmemory:设置Redis使用的最大内存量。当达到最大内存限制时,Redis会尝试清除已到期或即将到期的Key。如果仍然无法释放足够的内存,Redis将无法进行写入操作。
  • tcp-backlog:TCP监听的最大容纳数量。在高并发的环境下,需要把这个值调高以避免客户端连接缓慢的问题。
  • tcp-keepalive:指定ACKs的时间周期(秒)。如果设置为非0值,则表示将周期性地检测客户端是否可用。默认值为0,表示不进行检测。
  • protected-mode:Redis 3.2版本后新增的配置项。默认为yes,即开启保护模式。在保护模式下,如果Redis没有配置密码或绑定IP地址,它将只允许来自本地主机的连接。为了允许外部连接,可以关闭保护模式或配置密码和绑定IP地址。

sentinel.conf 参数详解

sentinel.conf 是 Redis Sentinel 的配置文件,用于定义 Sentinel 的行为、监控的主节点信息、故障转移策略等。以下是对 sentinel.conf 中一些关键参数的详细解释:

基本设置

  • port:Sentinel 实例运行的端口号。每个 Sentinel 实例都需要一个独立的端口号。例如:port 26379。
  • daemonize:是否以守护进程方式运行 Sentinel。默认为 no,如果设置为 yes,则 Sentinel 将在后台运行。
  • logfile:指定 Sentinel 的日志文件路径。如果为空,则日志将输出到标准输出。
  • dir:指定 Sentinel 的工作目录。用于存放 Sentinel 的配置文件、日志文件等。

监控设置

  • sentinel monitor:定义要监控的主节点信息。格式为 sentinel monitor 。其中, 是主节点的名称, 是主节点的 IP 地址, 是主节点的端口号, 是判定主节点最终不可达所需要的票数(即多少个 2、Sentinel 实例认为主节点不可达时,才认为主节点真正不可达)。例如:sentinel monitor mymaster 127.0.0.1 6379 2。
  • sentinel auth-pass:设置连接主节点和从节点的密码。如果主节点和从节点设置了密码保护,则需要通过此参数进行身份验证。格式为 sentinel auth-pass 。

故障转移设置

  • sentinel down-after-milliseconds:定义 Sentinel 认为主节点或从节点不可达的时间阈值(毫秒)。如果在这个时间内没有收到主节点或从节点的响应,则认为该节点不可达。格式为 sentinel down-after-milliseconds 。例如:sentinel down-after-milliseconds mymaster 30000。
  • sentinel parallel-syncs:定义在故障转移期间,可以同时向新主节点发起复制操作的从节点个数。这个值越大,意味着故障转移期间从节点同步新主节点数据的时间总和越长;这个值越小,则意味着在故障转移期间,多个从节点向客户端提供服务时可能仍然使用旧数据。格式为 sentinel parallel-syncs 。例如:sentinel parallel-syncs mymaster 1。
  • sentinel failover-timeout:定义故障转移的超时时间(毫秒)。如果在这个时间内故障转移没有完成,则认为此次故障转移失败。下次对该主节点进行故障转移的时间将是该设置的2倍。格式为 sentinel failover-timeout 。例如:sentinel failover-timeout mymaster 900000。

通知脚本设置

  • sentinel notification-script:定义在故障转移发生时执行的通知脚本。这个脚本可以用来告知系统管理员当前集群的情况。脚本被允许执行的最大时间为60秒,如果超时,脚本将会被终止。脚本执行的结果可以是1(稍后重试,最大重试次数为10)或2(执行结束,无需重试)。格式为 sentinel notification-script 。例如:sentinel notification-script mymaster /var/redis/notify.sh。

其他设置

  • protected-mode:保护模式设置。如果设置为 yes,则 Sentinel 只允许来自本地主机的连接(除非绑定了其他 IP 地址或关闭了保护模式)。默认为 yes。
  • bind:绑定 IP 地址。如果设置了此参数,则 Sentinel 只接受来自这些 IP 地址的连接。

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

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

相关文章

PDF阅读器工具集萃:满足你的多样需求

现在阅读书籍大部分都喜欢电子书的形式了吧,因为小小的一个设备就能存下上万本书。从流传程度来说PDF无疑是一个使用最广的格式。除了福昕PDF阅读器阅读之外还有哪些好用的阅读工具呢/?今天我们一起来探讨一下吧。 1.福昕阅读器 链接一下>>www.f…

MongoDB微服务部署

一、安装MongoDB 1.在linux中拉去MongoDB镜像文件 docker pull mongo:4.4.18 2. 2.创建数据挂载目录 linux命令创建 命令创建目录: mkdir -p /usr/local/docker/mongodb/data 可以在sshclient工具查看是否创建成功。 进入moogodb目录,给data赋予权限777 cd …

【算法】链表:21.合并两个有序链表(easy)

系列专栏 《分治》 《模拟》 《Linux》 目录 1、题目链接 2、题目介绍 3、解法(双指针) 4、代码 1、题目链接 21. 合并两个有序链表 - 力扣(LeetCode) 2、题目介绍 3、解法(双指针) 推荐一篇题解…

计算机毕业设计Python+Spark知识图谱高考分数线预测 高考志愿推荐系统 高考数据分析 高考可视化 高考大数据 大数据毕业设计

《PythonSpark知识图谱高考分数线预测与志愿推荐系统》开题报告 一、课题背景及意义 1. 背景 随着我国高考制度的不断完善以及大数据技术的快速发展,高考志愿推荐系统的需求日益增长。高考作为中国教育体系中的重要环节,其志愿填报直接关系到考生的未…

双指针--收尾的两道题

双指针 (封面起到吸引读者作用,和文章内容无关哈,但是文章也是用心写的) 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums…

Arduino UNO R3自学笔记13 之 Arduino使用LM35如何测量温度?

注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。 前言:学习使用传感器测温。 1.LM35介绍 一般来讲当知道需求,就可以 通过既定要求的条件来筛选需要的器件,多方面的因素最终选定了器件…

鸿蒙开发需要学什么语言

随着物联网(IoT)技术的发展,操作系统作为连接人与智能设备的关键桥梁变得尤为重要。鸿蒙系统(HarmonyOS),作为华为推出的一款面向全场景的分布式操作系统,不仅在国内引起了广泛关注,在国际上也逐渐崭露头角。对于开发者而言&#…

全新升级的GUI: Depthai Viewer 使用指南发布

DepthAIViewer是一个 GUI 应用程序,可让您通过实时输出可视化图像来使用相机。 DepthAIViewer 是 DepthAI 和 OAK 相机的可视化工具。它在默认情况下将运行一个演示应用程序,该应用程序将可视化所有steam在设备上运行推理。它还允许您更改设备的配置。当…

CTMO时代下的营销新力量:2+1链动模式AI智能名片商城小程序

在当今这个瞬息万变的商业世界里,营销领域正经历着一场深刻的变革。传统的CMO岗位似乎在时代的浪潮中逐渐失去了它的光芒,CTMO正在悄然取代传统CMO的岗位。 随着营销丛林现象的出现,企业面临着前所未有的挑战。许多企业发现,那些传…

自动驾驶系列—深度剖析自动驾驶芯片SoC架构:选型指南与应用实战

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

Vue+NestJS项目实操(图书管理后台)

一、项目搭建 前端基于vben进行二次开发 在Github下载vben框架,搜索vben即可 下载地址:https://github.com/vbenjs/vue-vben-admin 下载完成后,进行安装依赖,使用命令: // 下载依赖 pnpm install// 运行项目 pnpm …

数据分析-30-电影死亡笔记中的数据分析思维

文章目录 1 死亡笔记简介2 推理过程中的数据分析2.1 第一个问题2.2 第二个问题2.3 第三个问题3 数据分析的发展4 参考附录1 死亡笔记简介 《死亡笔记》改编自小畑健同名日本人气漫画《Death note》,故事描述拥有一本写上姓名就能将人置于死地笔记本的高中生夜神月与天才警部搜…

构建企业数字化转型的战略基石——TOGAF框架的深度解析

数字化时代的企业变革需求 在全球范围内,数字化转型已成为企业提高竞争力、优化运营流程、提升客户体验的核心战略。数字技术的迅猛发展,不仅改变了传统行业的运作模式,也迫使企业重新思考其业务架构和技术基础设施。TOGAF(The O…

8.数据结构与算法-双向链表

双向链表的结构定义 从第二个指针找到下一个元素 从第一个指针找到上一个元素 双向循环列表 从第二个指针找到下一个元素,第二个指针可以往前循环找到链表开头 从第一个指针找到上一个元素,第一个指针可以往前循环昭侯链表结尾 双向链表的插入 双向链…

自闭症孩子快乐成长之路:选择寄宿学校的理由

在探索自闭症孩子快乐成长之路的过程中,许多家长面临着一系列的选择与挑战。如何为孩子找到一个既能提供专业教育,又能保障他们身心健康的成长环境,成为了家长们共同关注的焦点。广州的星贝育园自闭症儿童寄宿制学校,正是这样一所…

Linux 万字入门教程

0. 前言 文章已经收录到 GitHub 个人博客项目,欢迎 Star: https://github.com/chenyl8848/chenyl8848.github.io或者访问网站,进行在线浏览: https://chenyl8848.github.io/1. Linux 介绍 1.1 引言 Linux 是一套免费使用和自由…

利用Spring Boot构建足球青训管理平台

2 相关技术简介 2.1 Java技术 Java是一门伟大的纯面向对象的编程语言和编程语言。同时,它还是Java语言从嵌入式开发到企业级开发的平台。Java凭借其一次编译,任何地方执行的优点,使得盛行的web应用程序有大量的Java编译,很好地支…

无人机科普研学基地建设技术详解

无人机科普研学基地的建设技术详解涉及多个方面,包括基地建设规划、主要功能区划分、配套设备与系统、课程设计与实施等。以下是对这些方面的详细阐述: 一、基地建设规划 1. 目标定位:无人机科普研学基地旨在通过实践和学习活动,…

CountDownlatch、CyclicBarrier、Semaphore使用介绍

一、CountDownlatch(多线程通信计数器实现多个线程的协同工作) import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class CountDownLatchTest {public static void main(String[] arg…

隐马尔可夫模型在股市预测中的应用

隐马尔可夫模型在股市预测中的应用 原创 QuantML QuantML 2024年09月29日 21:44 Content 摘要 股市因其复杂多变的特性,预测未来股价一直是一个挑战。然而,运用高级方法可以显著提高股价预测的准确性。隐马尔可夫模型(Hidden Markov Mode…