CHAPTER 2 Web HA集群部署 - Heartbeat
Web HA集群部署 - Heartbeat
- 1. Heartbeat 概述
- 1.1 Heartbeat主要组成部分
- 2. 环境依赖
- 2.1 环境及组件软件
- 2.2 关闭firewalld & selinux
- 2.3 配置双机互信,SSH密钥登录
- 2.4 同步时间(以主节点时间为准)
- 2.5 配置域名解析
- 3 安装软件
- 3.1 安装基础环境包
- 3.2 创建用户和组
- 3.3 组件软件下载
- 3.4 安装gule
- 3.5 安装Resource Agents
- 3.6 安装HeartBeat
- 3.7 配置网卡支持插件文件
- 4 配置heartbeat
- 4.1 配置ha.cf配置文件
- 4.2 配置authkeys配置文件
- 4.3 配置haresources配置文件
- 4.4 从节点上准备配置文件
- 4.5 安装httpd服务
- 4.6 启动heartbeat服务
- 5 验证
- 5.1 关闭主节点
- 5.2 使用自带的脚本切换主备节点
- 6 总结
1. Heartbeat 概述
Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。通过Heartbeat我们可以实现双机热备,以实现服务的持续性。
1.1 Heartbeat主要组成部分
Heartbeat最核心的功能是心跳监测部分和资源接管部分.心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务.Heartbea是基于主机名来切换节点,通过字符串加密来认证两台主机连接,与keepalived不同是它可以基于脚本资源切换,文件共享,是通过tcp协议对资源切换.
2. 环境依赖
2.1 环境及组件软件
- 服务器环境:
node1:192.168.71.183
node2:192.168.71.253
漂移Vip:192.168.71.254(即我们访问服务的ip) - 服务:apache
- 系统版本:CentOS Linux release 7.9.2009 (Core)
具体的实施工作在本章第三小节
2.2 关闭firewalld & selinux
关闭firewalld & selinux
[root@heartbeat-master ~]# systemctl stop firewalld
[root@heartbeat-master ~]# setenforce 0 #此为临时关闭
setenforce: SELinux is disabled
[root@heartbeat-master ~]# sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/sysconfig/selinux #此为永久关闭,下次重启机器后生效
2.3 配置双机互信,SSH密钥登录
主从节点均要配置双机互信
[root@node2 ~]# ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa
[root@node2 ~]# ssh-copy-id root@192.168.71.183
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.71.183's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@192.168.71.183'"
and check to make sure that only the key(s) you wanted were added.[root@node2 ~]# ssh root@192.168.71.183
Last login: Wed Mar 1 03:50:06 2023 from 192.168.20.252
[root@node1 ~]# exit
2.4 同步时间(以主节点时间为准)
所有节点安装ntp,可以选择任何一台机器当ntp时间服务器,其他的节点当时间服务器的客户端,同步服务器时间
这里我们选择node1作为时间服务器
① 所有节点安装ntp服务
[root@node1 ~]# yum install -y ntp
② node1服务器配置/etc/ntp.conf
#server 0.centos.pool.ntp.org iburst #注释内容
#server 1.centos.pool.ntp.org iburst #注释内容
#server 2.centos.pool.ntp.org iburst #注释内容
#server 3.centos.pool.ntp.org iburst #注释内容
server 127.127.1.0 #新增内容
fudge 127.127.1.0 stratum 10 #新增内容
③ node1服务器启动ntpd服务
[root@node1 ~]# systemctl start ntpd
[root@node1 ~]# systemctl status ntpd
[root@node1 ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
④ 其他节点
[root@node2 ~]# ntpdate 192.168.71.1831 Mar 04:08:35 ntpdate[16984]: step time server 192.168.71.183 offset -9.393691 sec
[root@node2 ~]# date
Wed Mar 1 04:08:40 EST 2023
2.5 配置域名解析
所有节点配置域名解析
[root@node2 ~]# tail -2 /etc/hosts
192.168.71.183 node1
192.168.71.253 node2
192.168.71.254 apache.org
[root@node2 ~]# ping node2
PING node2 (192.168.71.253) 56(84) bytes of data.
64 bytes from node2 (192.168.71.253): icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from node2 (192.168.71.253): icmp_seq=2 ttl=64 time=0.031 ms
3 安装软件
本节的安装及配置的内容,在所有节点都需要操作
3.1 安装基础环境包
yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc -y
3.2 创建用户和组
[root@node2 ha]# groupadd haclient
[root@node2 ha]# useradd -g haclient hacluster
[root@node2 ha]# tail -1 /etc/passwd
hacluster:x:1017:1017::/home/hacluster:/bin/bash
[root@node2 ha]# tail -1 /etc/group
haclient:x:1017:
3.3 组件软件下载
官网下载地址 http://www.linux-ha.org/wiki/Downloads
Heartbeat 3.0.6
Cluster Glue 1.0.12
Resource Agents
[root@node2 ~]# wget -O Heartbeat_3.0.6.tar.bz2 http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
--2023-03-01 04:20:57-- http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
Resolving hg.linux-ha.org (hg.linux-ha.org)... 78.142.182.100
Connecting to hg.linux-ha.org (hg.linux-ha.org)|78.142.182.100|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 551953 (539K) [application/x-bzip2]
Saving to: ‘Heartbeat_3.0.6.tar.bz2’100%[================================================================================================>] 551,953 233KB/s in 2.3s2023-03-01 04:21:04 (233 KB/s) - ‘Heartbeat_3.0.6.tar.bz2’ saved [551953/551953][root@node2 ~]# wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
[root@node2 ~]# wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz
[root@node1 ha]# ll
total 2492
-rw-r--r-- 1 root root 451432 Oct 22 2015 0a7add1d9996.tar.bz2
-rw-r--r-- 1 root root 551953 Feb 28 10:54 Heartbeat_3.0.6.tar.bz2
-rw-r--r-- 1 root root 617790 Mar 1 04:41 v3.9.6.tar.gz
3.4 安装gule
[root@node1 ~]# tar xf 0a7add1d9996.tar.bz2
[root@node1 ~]# cd Reusable-Cluster-Components-glue--0a7add1d9996/
[root@node1 Reusable-Cluster-Components-glue--0a7add1d9996]#./autogen.sh
[root@node1 Reusable-Cluster-Components-glue--0a7add1d9996]#./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@node1 Reusable-Cluster-Components-glue--0a7add1d9996]# make && make install
3.5 安装Resource Agents
[root@node1 ~]# tar xf v3.9.6.tar.gz
[root@node1 ~]# cd resource-agents-3.9.6/
[root@node1 resource-agents-3.9.6]# ./autogen.sh
[root@node1 resource-agents-3.9.6]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@node1 resource-agents-3.9.6]# make && make install
3.6 安装HeartBeat
[root@node1 ~]# tar xf Heartbeat_3.0.6.tar.bz2
[root@node1 ~]# cd Heartbeat-3-0-958e11be8686/
[root@node1 Heartbeat-3-0-958e11be8686]# ./bootstrap
[root@node1 Heartbeat-3-0-958e11be8686]# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
[root@node1 Heartbeat-3-0-958e11be8686]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@node1 Heartbeat-3-0-958e11be8686]# make && make install
3.7 配置网卡支持插件文件
[root@node1 ha]# mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
mkdir: created directory ‘/usr/local/heartbeat/usr’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib/ocf’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib/ocf/lib’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/’
[root@node1 ha]# cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/#注意:一般启动时会报错因为 ping和ucast这些配置都需要插件支持 需要将lib64下面的插件软连接到lib目录 才不会抛出异常[root@node1 ha]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
‘/usr/local/heartbeat/lib/heartbeat/plugins/RAExec/*’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/*’
[root@node1 ha]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
‘/usr/local/heartbeat/lib/heartbeat/plugins/HBauth’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/HBauth’
‘/usr/local/heartbeat/lib/heartbeat/plugins/HBcomm’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/HBcomm’
‘/usr/local/heartbeat/lib/heartbeat/plugins/quorum’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/quorum’
4 配置heartbeat
在主节点上配置
#拷贝三个模版配置文件到 /usr/local/heartbeat/etc/ha.d 目录下
[root@node1 ha]# cd Heartbeat-3-0-958e11be8686/
[root@node1 Heartbeat-3-0-958e11be8686]# cp doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/
4.1 配置ha.cf配置文件
该配置文件是心跳的核心配置
[root@heartbeat-master ~]# vim /usr/local/heartbeat/etc/ha.d/ha.cfdebugfile /var/log/ha-debug #表示调试的日志文件 一般测试建议开启
logfile /var/log/ha-log #表示系统的的日志文件路径
logfacility local0 #表示使用系统日志与上面只能开启一个
keepalive 2 #主备之间的心跳间隔时间单位:s
deadtime 30 #表示如果连接对方30s还无法连接,表示节点死亡需要考虑vip转移
warntime 10 #表示10s时间未收到心跳时发出警告日志
initdead 120 #有时机器启动后需要一段时间网卡才能正常工作 需要预留一定的时间后,再开始判断心跳检测
udpport 694 #多播的udp端口
#baud 19200 #串行端口的波特率
#serial /dev/ttyS0 # Linux #串口的接口名
#serial /dev/cuaa0 # FreeBSD
#serial /dev/cuad0 # FreeBSD 6.x
#serial /dev/cua/a # Solaris
#bcast eth0 # Linux #传播心跳的广播网卡信息
#bcast eth1 eth2 # Linux
#bcast le0 # Solaris
#bcast le1 le2 # Solaris
#mcast eth0 225.0.0.1 694 1 0 #多播传送心跳的网卡 多播组 端口 跃点数 是否回环内传送
ucast ens33 192.168.71.253 #设置单播心跳,设置对方的ip地址,此处使用单播
auto_failback on #表示如果主机停止后,从机接管设置为on当主机从新启动后,主机立即接管vip off从机不会释放vip给主机
node node1 #配置主从的节点信息,要与uname -n保持一致
node node2
#############################################
#使用ping模式 有时当主机挂掉或者heartbeat挂掉后vip才会转移 有时出现某个进程挂掉 切换需要使用脚本
#ping模式用于测试 如果网卡ping不同 某个主机 就认为当前断网 需要转移vip
#respawn root /usr/local/heartbeat/libexec/heartbeat/ipfail 表示当ping不通时 自动调用 ipfail这个脚本
#apiauth ipfail gid=haclient uid=hacluster 表示有权限操作ipfail脚本的组和用户
############################################
ping 192.168.71.254
#ping组的所有主机
#ping_group group1 10.10.10.254 10.10.10.253
#respawn userid /path/name/to/run
#指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。
#respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
#apiauth ipfail gid=haclient uid=hacluster
4.2 配置authkeys配置文件
该文件表示发送心跳时 机器用于验证的key的hash算法,节点之间必须配置成一致的密码
[root@node1 ha]# cat /usr/local/heartbeat/etc/ha.d/authkeys
...
#
auth 2 #表示使用id为2的验证 下边需要定义一个2的验证算法
#1 crc
2 sha1 1a2b3c #id为2的验证加密为sha1,并添加密码
#3 md5 Hello!
[root@node1 ha]# chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys #更改权限为600
4.3 配置haresources配置文件
该文件表示资源的管理,如果是主机,当主机启动后自动加载该文件中配置的所有启动资源,资源脚本默认在haresources同级目录下的resource.d目录下
指定节点主机名,和VIP地址,以双冒号分隔资源,此处以apache为例进行配置
[root@node1 ha]# tail -1 /usr/local/heartbeat/etc/ha.d/haresources
node1 192.168.71.254 apache::/etc/httpd/conf/httpd.conf
4.4 从节点上准备配置文件
拷贝三个配置好的文件到node2上,只需修改ha.cf配置文件中的单播地址为对方地址即可(ucast ens33 192.168.71.183)。
[root@node2 ha.d]# scp root@192.168.71.183:/usr/local/heartbeat/etc/ha.d/authkeys .
authkeys 100% 647 608.9KB/s 00:00
[root@node2 ha.d]# scp root@192.168.71.183:/usr/local/heartbeat/etc/ha.d/ha.cf .
ha.cf 100% 10KB 787.7KB/s 00:00
[root@node2 ha.d]# scp root@192.168.71.183:/usr/local/heartbeat/etc/ha.d/haresources .
haresources 100% 5955 4.1MB/s 00:00
[root@node2 ha.d]# ll
total 40
-rw------- 1 root root 647 Mar 1 08:26 authkeys
-rw-r--r-- 1 root root 10496 Mar 1 08:27 ha.cf
-rwxr-xr-x 1 root root 745 Mar 1 05:29 harc
-rw-r--r-- 1 root root 5955 Mar 1 08:27 haresources
drwxr-xr-x 2 root root 101 Mar 1 05:29 rc.d
-rw-r--r-- 1 root root 692 Mar 1 05:29 README.config
drwxr-xr-x 2 root root 4096 Mar 1 05:29 resource.d
-rw-r--r-- 1 root root 2112 Mar 1 05:28 shellfuncs
[root@node2 ha.d]# grep ucast ha.cf
# of nodes listed {"node ...} one of {serial, bcast, mcast, or ucast},
# What UDP port to use for bcast/ucast communication?
# ucast [dev] [peer-ip-addr]
ucast ens33 192.168.71.183
4.5 安装httpd服务
在每个节点上安装httpd服务并测试,以主节点为例
[root@node1 ~]# yum install httpd
[root@node1 ~]# echo "Welcome to svr 183." >>/var/www/html/index.html
[root@node1 ~]# systemctl start httpd
[root@node1 ~]# curl 127.0.0.1:88
Welcome to svr 183.
此处笔者服务器由于端口冲突,修改为88
测试httpd服务正常后关闭httpd服务并关闭自启动
[root@node1 ~]# systemctl stop httpd
[root@node1 ~]# systemctl disable httpd
4.6 启动heartbeat服务
启动每个节点上heartbeat服务
[root@node2 ha.d]# systemctl enable heartbeat
Created symlink from /etc/systemd/system/multi-user.target.wants/heartbeat.service to /usr/lib/systemd/system/heartbeat.service.
[root@node2 ha.d]# systemctl start heartbeat
[root@node2 ha.d]# systemctl status heartbeat
● heartbeat.service - Heartbeat High Availability Cluster Communication and MembershipLoaded: loaded (/usr/lib/systemd/system/heartbeat.service; enabled; vendor preset: disabled)Active: active (running) since Wed 2023-03-01 08:51:29 EST; 11s agoMain PID: 39209 (heartbeat)...
5 验证
我们访问192.168.71.254:88

5.1 关闭主节点
关闭主节点后,刷新网页,可以看到服务是由从节点提供的

当我们再次开启主节点服务器,服务又会回到主节点提供
对于我们访问的漂移ip,会因为主节点的上下线,在主从节点间自动切换
[root@node1 ~]# ip a
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000link/ether 00:0c:29:79:08:6b brd ff:ff:ff:ff:ff:ffinet 192.168.71.183/24 brd 192.168.71.255 scope global noprefixroute dynamic ens33valid_lft 86347sec preferred_lft 86347secinet 192.168.71.254/24 brd 192.168.71.255 scope global secondary ens33:1valid_lft forever preferred_lft foreverinet6 fe80::3872:4f8b:dbfc:1aa2/64 scope link noprefixroutevalid_lft forever preferred_lft forever
...
5.2 使用自带的脚本切换主备节点
主节点
[root@node1 ~]# /usr/local/heartbeat/share/heartbeat/hb_standby
Going standby [all].
[root@node1 ~]# ip a
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000link/ether 00:0c:29:79:08:6b brd ff:ff:ff:ff:ff:ffinet 192.168.71.183/24 brd 192.168.71.255 scope global noprefixroute dynamic ens33valid_lft 86137sec preferred_lft 86137secinet6 fe80::3872:4f8b:dbfc:1aa2/64 scope link noprefixroutevalid_lft forever preferred_lft forever
...
从节点
[root@node2 ~]# ip a
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000link/ether 00:0c:29:09:d2:72 brd ff:ff:ff:ff:ff:ffinet 192.168.71.253/24 brd 192.168.71.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 192.168.71.254/24 brd 192.168.71.255 scope global secondary ens33:1valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe09:d272/64 scope linkvalid_lft forever preferred_lft forever
...
6 总结
整个集群通过vip提供对外服务,当主节点出现异常的时候,能够自动在从节点启动并提供服务,实现了高可用性。
我们可以部署zabbix进行监控服务器和服务的状况,并通过其他手段进行通知运维人员
相关文章:
CHAPTER 2 Web HA集群部署 - Heartbeat
Web HA集群部署 - Heartbeat1. Heartbeat 概述1.1 Heartbeat主要组成部分2. 环境依赖2.1 环境及组件软件2.2 关闭firewalld & selinux2.3 配置双机互信,SSH密钥登录2.4 同步时间(以主节点时间为准)2.5 配置域名解析3 安装软件3.1 安装…...
蓝桥杯每日一题:不同路径数(dfs深度优先)
给定一个 nm的二维矩阵,其中的每个元素都是一个 [1,9] 之间的正整数。 从矩阵中的任意位置出发,每次可以沿上下左右四个方向前进一步,走过的位置可以重复走。 走了 k 次后,经过的元素会构成一个 (k1) 位数。 请求出一共可以走出…...
NCRE计算机等级考试Python真题(十)
第十套试题1、数据库系统的核心是___________。A.数据库管理系统B.数据模型C.软件工具D.数据库正确答案: A2、下列叙述中正确的是___________。A.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的B.线性表链式存储结构与顺序存储结构的存储空…...
【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32
🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…...
RK3288-android8-es7210-阵列麦克风
ES7210驱动包 应需求调试一个ES7210的阵列麦克风 首先移植 From 234647c69a57c32198c65836e7fc521dc22e444b Mon Sep 17 00:00:00 2001 From: LuoXiaoTan <lxt@rock-chips.com> Date: Tue, 10 Jul 2018 18:08:50 -0700 Subject: [PATCH] ASoC: codecs: add es7210 adc …...
硬件工程师常见问题与答疑
在工作中,尤其是做了很多年的,有些问题可能不知道,又不好意思问,怕别人说你连这个都不知道?很尴尬,而且百度又搜不到,本博主收集了很多答疑,希望里面有对你有用的,或者是…...
【Java】Java进阶学习笔记(一)—— 面向对象(封装)
【Java】Java进阶学习笔记(一)—— 面向对象(封装)一、类中成分1、类中成分2、this关键字this() 访问构造器方法3、static关键字1. 成员变量的区分2. 成员方法的区分3. 成员变量访问语法的区分二、封装1、封装的定义封装的好处2、…...
jsp拆迁管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 JSP 拆迁管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…...
CCNP350-401学习笔记(易错题合集)
CCNP350-401学习笔记(1-50题)_殊彦_sy的博客-CSDN博客CCNP350-401学习笔记(2023.2.17)https://blog.csdn.net/shuyan1115/article/details/129088574?spm1001.2014.3001.5502CCNP350-401学习笔记(51-100题)…...
喀秋莎Camtasia2023最新版本电脑录屏剪辑软件
录屏软件的鼻祖是techSmith 的喀秋莎(Techsmith Camtasia Studio),视频编辑软件Camtasia 2023发布,十大新功能放出!作为一个自媒体人,每天都要录制编辑视频,选择一个好的视频编辑工具就是大家首先面临的一个…...
「考研算法」
考研算法 前言 本系列文章涉及的算法内容,针对的是哈尔滨工业大学854科目。在本文中通过具体的算法题进行讲解相应算法。 今天涉及的算法主要有线性筛,十大排序中快速排序和归并排序。 后续会有动态规划的相关算法以及尝试模型的总结,如果…...
Android Framework-操作系统基础
最近在看《深入理解Android内核设计思想(第2版)》,个人感觉很不错,内容很多,现将书里个人认为比较重要的内容摘录一下,方便后期随时翻看。 计算机体系结构 硬件是软件的基石,所有的软件功能最…...
美国最新调查显示 50% 企业已在用 ChatGPT,其中 48% 已让其代替员工,你怎么看?
美国企业开始使用ChatGPT,我认为这不是什么新闻。 如果美国的企业现在还不使用ChatGPT,那才是个大新闻。 据新闻源显示,已经使用chatGPT的企业中,48%已经让其代替员工工作。 ChatGPT的具体职责包括:客服、代码编写、招…...
[Java·算法·中等]LeetCode17. 电话号码的字母组合
每天一题,防止痴呆题目示例分析思路1题解1分析思路2题解2题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。…...
C#7/C#8/C#9 与dotnetSDK 以及dotnet framework对应关系
语言版本 对应的.net framework版本 对应的.net sdk版本 推荐使用的vs studio C#7.3 3.5、 4.0、 4.5 、4.5.1、 4.5.2 、4.6 、4.6.1、 4.6.2 4.7.1、 4.7.2 .netcore 2.0、.netcore2.1、 .netcore2.2 C#8.0 / F#4.7 不支持 .netcore 3.0、.netcore 3.1 C# 9.0 …...
jvm调优经验总结
最近一段时间很忙,忙到每天10点多11点下班还是感觉有很多事没有做完,不过倒也没有什么太过低落的情绪,有时候只安静的看一个视频,简单看点文字,或者平静的坐着,并没有太多想法。短时间的工作压力是可以接受…...
等保合规知识常见问题解答
Q1:什么是等级保护? 答:等级保护是指对国家重要信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实行按等级管理,对信息系统…...
分享5款Windows同类软件中的翘楚
今天要给大家推荐的是5款软件,每个都是同类软件中的个中翘楚,请大家给我高调地使用起来,不用替我藏着掖着。1.沙盒工具——Sandboxie Sandboxie是一个电脑必备的沙盘工具,对于从网上下载的软件安装包、文件、视频、图片等等一切不…...
记--springboot-工具类中使用@Component、@Resource与@Value失效
写一个工具类 需要使用Resource注入RedisTemplate 使用Value获取application.properties配置文件中配置 并使用Component将该工具类交个spring管理 调试的时候RedisTemplate以及所有的变量全是是null 看了网上的各种解决方式五花八门 有的说出现问题的原因:Compon…...
手写一个react,看透react运行机制
适合人群 本文适合0.5~3年的react开发人员的进阶。 讲讲废话: react的源码,的确是比vue的难度要深一些,本文也是针对初中级,本意让博友们了解整个react的执行过程。 写源码之前的必备知识点 JSX 首先我们需要了解什么是JSX。…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
