RHEL/CENTOS 7 ORACLE 19C-RAC安装(纯命令版)

一 首先需要安装两个CENTOS 7虚拟机(此处省略)。

由于我们是要安装ORCLE-RAC双节点集群所以至少每个CENTOS虚拟机上需要两块网卡,并且两块网卡都是HOST-ONLY具体步骤请看视频一《为虚拟机添加网卡》

这里大家需要注意的是,我们需要绑定两台机器的IP一共四个。
你要根据你自己设置的IP地址进行网卡IP设置,因为我只是演示环境,所以我就按照我的演示环境设置了,你要根据自己的真实环境来。

1号节点的主机名叫做ora19crac1  将 192.168.199.201和10.10.10.201绑定在这台机器的两块网卡上。

2号节点的主机名叫做ora19crac2  将 192.168.199.202和10.10.10.202并定在这台机器的两块网卡上。

我建议你使用以下IP:
RAC1 公有IP:192.168.100.201 私有IP 10.10.10.201
RAC2 公有IP:192.168.100.202 私有IP 10.10.10.202

所有IP对应的NETMASK(子网掩码)都是255.255.255.0

VIP(rac1-vip/rac2-vip)和SCANIP(rac-scan) 不需要你去处理,集群启动后会自动生成。
10.10.10.x这个网段你可以在宿主机上配置,也可以不配置看你心情。

编辑这两个虚拟机的/etc/hosts文件,把以下内容追加到/etc/hosts文件中

vi /etc/hosts

#RAC-PUBLIC-IP
192.168.199.201 ora19crac1
192.168.199.202 ora19crac2

#RAC-PRIVATE-IP
10.10.10.201 ora19crac1-priv
10.10.10.202 ora19crac2-priv

#RAC-VIP
192.168.199.101 ora19crac1-vip
192.168.199.102 ora19crac2-vip

#RAC-SCAN-IP
192.168.199.200 ora19crac-scan

关闭防火墙(RAC集群必须彻底关闭防火墙以防万一):

关闭防火墙
检查防火墙状态
systemctl status firewalld.service
暂时关闭防火墙,下次启动时防火墙仍随系统启动而启动
systemctl stop firewalld.service
彻底永久关闭防火墙
systemctl disable firewalld.service

关闭SELINUX防火墙!
vi /etc/selinux/config
将内容
SELINUX=enforcing
更改为
SELINUX=disabled

或者使用

sed 's#SELINUX=.*#SELINUX=disabled#' /etc/selinux/config     
注:上面的命令是无法修改原文件内容的,只是去验证我们的命令是否正确,如果想要正式修改文件内容的话,请使用下面的命令:
sed -i 's#SELINUX=.*#SELINUX=disabled#' /etc/selinux/config  (彻底的关闭SELINUX)

二 配置先决条件的yum源(先在RAC1这个节点上配置)

a 挂载光盘镜像
注:在虚拟机挂载光盘镜像以后,务必使用某个用户进入到虚拟机LINUX下看到桌面弹出小光盘为止(图形界面)
b 进入到光盘镜像中的Package目录中将所有的软件包复制到我们预设的目录下
mkdir /yums
CENTOS6/RHEL6 镜像挂载地点
cd /media/CentOS_6.6_Final/Packages/
cp * /yums
CENTOS7/RHEL7 镜像挂载地点
/run/media/root/CentOS 7 x86_64/Packages

CENTOS 7(这个目前适用于CENTOS7.4以及以下版本,如果你使用的是高版本的话,请自己注意具体包的名称,实在不知道就用tab键补全)

cd /yums

rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm 

rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm 

rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm

createrepo .

进入到YUM源目录进行相关操作:
cd /etc/yum.repos.d/

rm -rf *

vi yum.local.repo

[local]
name=yum local repo
baseurl=file:///yums
gpgcheck=0
enable=1

生成yum源:

yum clean all

安装ftp(这里我们不在rac2这个虚拟机上再配置本地yum源了,我们是用一种新方法叫做:使用ftp的yum服务器)/当然了你如果不喜欢我的方法的话,你可以自己在另一个节点上再配置一次YUM源/
当然了,如果你觉得本地YUM源保险的话,依旧可以使用本地yum源没问题的。

知识点补充:FTP是一种文件传输协议,他可以传输文件。非常好用,他被经常用作我们进行相关文件传送使用。

yum install -y ftp* vsftpd*
安装好后,请执行以下操作:

cd /etc/vsftpd

vi ftpusers
然后把root用户注销掉。
修改好后保存退出

vi user_list
然后把root用户注销掉。
修改好后保存退出

vi vsftpd.conf        

把下面这两个配置项前的#去掉。(在vi命令格式下使用set nu就能查看行号,这两行在82和83行)

#ascii_upload_enable=YES
#ascii_download_enable=YES

修改为

ascii_upload_enable=YES
ascii_download_enable=YES

全部修改好后保存退出

vi /etc/passwd  
把 
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin (在第12行)
修改为 
ftp:x:14:50:FTP User:/yums:/sbin/nologin       

启动 vsftpd
service vsftpd start 

如果service vsftpd start 报出问题的话用下面命令启动ftp
/bin/systemctl status vsftpd.service

chkconfig vsftpd on             --开机自启动

如果外面能连接上这个ftp服务器就说明没什么太大问题了。重启你的虚拟机

然后配置rac2这个节点

cd /etc/yum.repos.d/

rm -rf *

vi yum.local.repo

[local]
name=yum local repo
baseurl=ftp://192.168.199.201/
gpgcheck=0
enable=1

yum clean all

测试一下 
yum install gcc
如果有反应就说明你的yum服务器配置成功了 

安装先决条件包(两个节点都要做):
yum install -y bc
yum install -y compat-libcap1*
yum install -y compat-libcap*
yum install -y binutils 
yum install -y compat-libstdc++-33 
yum install -y elfutils-libelf 
yum install -y elfutils-libelf-devel 
yum install -y gcc 
yum install -y gcc-c++ 
yum install -y glibc-2.5 
yum install -y glibc-common 
yum install -y glibc-devel 
yum install -y glibc-headers 
yum install -y ksh libaio 
yum install -y libaio-devel 
yum install -y libgcc 
yum install -y libstdc++ 
yum install -y libstdc++-devel 
yum install -y make 
yum install -y sysstat 
yum install -y unixODBC 
yum install -y unixODBC-devel
yum install -y binutils*
yum install -y compat-libstdc*
yum install -y elfutils-libelf*
yum install -y gcc*
yum install -y glibc*
yum install -y ksh*
yum install -y libaio*
yum install -y libgcc*
yum install -y libstdc*
yum install -y make*
yum install -y sysstat*
yum install -y libXp*
yum install -y glibc-kernheaders
yum install -y net-tools-*
yum install -y iscsi-initiator-utils
yum install -y udev
yum install -y xclock*

三 内核参数(两个节点都做)

vi /etc/sysctl.conf
kernel.shmmax = 277495689510912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
fs.file-max = 6815744
kernel.shmall = 67747971072
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1
#net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_keepalive_intvl = 5
net.ipv4.tcp_timestamps = 0
fs.aio-max-nr = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2

生成系统参数
sysctl -p 

四.添加下列参数到/etc/security/limits.conf (两个节点都做)

vim /etc/security/limits.conf

oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   hard   memlock    134217728
oracle   soft   memlock    134217728

grid   soft   nofile    1024
grid   hard   nofile    65536
grid   soft   nproc    16384
grid   hard   nproc    16384
grid   soft   stack    10240
grid   hard   stack    32768
grid   hard   memlock    134217728
grid   soft   memlock    134217728


五.添加下列条目到/etc/pam.d/login (两个节点都做)

vim /etc/pam.d/login

session required /lib/security/pam_limits.so
session required pam_limits.so

六.环境变量中添加下列语句(两个节点都做)

vim /etc/profile

if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
   if [ $SHELL = "/bin/ksh" ]; then
      ulimit -p 16384
      ulimit -n 65536
      else
      ulimit -u 16384 -n 65536
   fi
fi

生成环境变量

source /etc/profile

七.创建文件目录和相应的用户(两个节点都做)

#在两个节点增加用户与组:
groupadd -g 601 oinstall
groupadd -g 602 dba
groupadd -g 603 oper
groupadd -g 604 backupdba
groupadd -g 605 dgdba
groupadd -g 606 kmdba
groupadd -g 607 asmdba
groupadd -g 608 asmoper
groupadd -g 609 asmadmin
useradd -u 601 -g oinstall -G asmadmin,asmdba,dba,asmoper grid
useradd -u 602 -g oinstall -G dba,backupdba,dgdba,kmdba,asmadmin,oper,asmdba oracle

我们用这种最安全的方法修改grid和oracle用户密码
passwd grid
passwd oracle

以root用户,创建Oracle Inventory 目录

mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory

以root用户,创建GI HOME目录

mkdir -p /u01/app/grid
mkdir -p /u01/app/19c/grid
chown -R grid:oinstall /u01/app/grid
chmod -R 775 /u01/app/grid
chown -R grid:oinstall /u01/app/19c
chmod -R 775 /u01/app/19c/


以root用户,创建Oracle Base目录

mkdir -p /u01/app/oracle
mkdir /u01/app/oracle/cfgtoollogs 
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle

以root用户,创建Oracle RDBMS Home目录

mkdir -p /u01/app/oracle/product/19c/db_1
chown -R oracle:oinstall /u01/app/oracle/product/19c/db_1
chmod -R 775 /u01/app/oracle/product/19c/db_1


八.GRID用户好ORACLE用户添加环境变量

su - grid
#grid用户的环境变量如下:

vim ~/.bash_profile

PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
umask 022
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_TERM=xterm;
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19c/grid
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib  
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
export THREADS_FLAG=native
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ];then
            ulimit -p 16384
            ulimit -n 65536
        else
            ulimit -u 16384 -n 65536
        fi
    umask 022
fi
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap asmcmd'

生成环境变量
source ~/.bash_profile

补充:两个节点的ORACLE_SID名称是不能一样的:
ora19crac1节点叫做+ASM1
ora19crac2节点叫做+ASM2

su - oracle
#oracle用户的环境变量如下:
vim ~/.bash_profile

PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=rac1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19c/db_1
export ORACLE_SID=orcl1
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib  
export PATH=.:$PATH:$HOME/bin:$ORACLE_BASE/product/19c/db_1/bin:$ORACLE_HOME/bin
export THREADS_FLAG=native;export THREADS_FLAG
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ];then
            ulimit -p 16384
            ulimit -n 65536
        else
            ulimit -u 16384 -n 65536
        fi
    umask 022
fi

alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
生成环境变量
source ~/.bash_profile

补充:两个节点的ORACLE_SID名称是不能一样的:
ora19crac1节点叫做orcl1
ora19crac2节点叫做orcl2

如果你实例名不是orcl的话,那么请务必根据你的实例名改成xxxx1 xxxx2这样的格式。(xxxx代表你起的实例名)

九.配置ISCSI挂载外部存储
yum install -y iscsi*

开机启动iscsi服务
chkconfig iscsid on

发现磁盘
iscsiadm -m discovery -t sendtargets -p 192.168.199.235

手动登录目标(这里一定要注意 -T后面那个参数一定要按照你上面发现磁盘的那个结果进行更改)
iscsiadm -m node -T iqn.oracle19c.rac -p 192.168.199.235 -l

设置开机自启动连接
iscsiadm -m node -T iqn.oracle19c.rac -p 192.168.199.235 --op update -n node.startup -v automatic

查看
cd /dev/disk/by-path
ls -l /dev/disk/by-path/*iscsi* | awk '{FS=" "; print $9 " " $10 " " $11}'

检查磁盘的wwid
#!/bin/bash
for i in $(ls /dev/sd*|grep -v [0-9]|grep -v sda)
do  
echo -ne "$(fdisk -l ${i}|grep ^Disk|grep ${i}|awk '{print $1,$2,$3,$4}') WWID:"  
/lib/udev/scsi_id -g -u -d "${i}"
done|sort -nk3 -k5|column -t

输出结果:

Disk  /dev/sde:  42.9  GB,  WWID:14f504e46494c455267414a304a6b2d413653352d72653050
Disk  /dev/sdf:  57.1  GB,  WWID:14f504e46494c45525561634a51752d696d4b4c2d36576751
Disk  /dev/sdb:  2147  MB,  WWID:14f504e46494c4552774b6158696f2d5a7031692d35364e38
Disk  /dev/sdc:  2147  MB,  WWID:14f504e46494c4552555a6d3570652d506d56482d4b357167
Disk  /dev/sdd:  2147  MB,  WWID:14f504e46494c4552466d724d626f2d456b42732d7558575a

方法一(极端推荐)

vi /etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="sd*", ENV{ID_SERIAL}=="14f504e46494c455267414a304a6b2d413653352d72653050", SYMLINK+="asm_data",  OWNER="grid",  GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_SERIAL}=="14f504e46494c45525561634a51752d696d4b4c2d36576751", SYMLINK+="asm_bak",  OWNER="grid",  GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_SERIAL}=="14f504e46494c4552774b6158696f2d5a7031692d35364e38", SYMLINK+="asm_ocr_1",  OWNER="grid",  GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_SERIAL}=="14f504e46494c4552555a6d3570652d506d56482d4b357167", SYMLINK+="asm_ocr_2",  OWNER="grid",  GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", ENV{ID_SERIAL}=="14f504e46494c4552466d724d626f2d456b42732d7558575a", SYMLINK+="asm_ocr_3",  OWNER="grid",  GROUP="asmadmin", MODE="0660"

方法二 (实验环境可以 生产不建议你这么玩)

vi /etc/udev/rule.d/60-raw.rules
ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdf", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="raw[1-5]",OWNER="grid",GROUP="oinstall",MODE="660"

使用以下命令是udev生效
udevadm control --reload-rules
udevadm trigger

个人建议:如果上述文件配置完成或者要执行添加或者删除磁盘任务,编辑文件结束后最好重新启动系统。但是还是要看实际情况

九 上传软件 解压 并赋权


sshUserSetup.sh
cvuqdisk-1.0.10-1.rpm
kmod-20-21.el7.x86_64.rpm
kmod-libs-20-21.el7.x86_64.rpm
compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
rlwrap-0.37-1.el6.x86_64.rpm
上传到rac1的/root下

互信
sh sshUserSetup.sh -user root -hosts "ora19crac1 ora19crac2" -advanced -noPromptPassphrase #有的公司不允许root用户互信的
sh sshUserSetup.sh -user grid -hosts "ora19crac1 ora19crac2" -advanced -noPromptPassphrase
sh sshUserSetup.sh -user oracle -hosts "ora19crac1 ora19crac2" -advanced -noPromptPassphrase
使用root 、oracle和grid用户测试互信是否成功:
ssh ora19crac1 date
ssh ora19crac2 date

将文件从ora19crac1传输到ora19crac2上(root用户)

scp /root/cvuqdisk-1.0.10-1.rpm ora19crac2:/root
scp /root/kmod-20-21.el7.x86_64.rpm ora19crac2:/root
scp /root/kmod-libs-20-21.el7.x86_64.rpm ora19crac2:/root
scp /root/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm ora19crac2:/root
scp /root/rlwrap-0.37-1.el6.x86_64.rpm ora19crac2:/root

用root用户安装 (两个节点)
cd /root (必须在/root这个目录下)
rpm -ivh cvuqdisk-1.0.10-1.rpm
rpm -ivh rlwrap-0.37-1.el6.x86_64.rpm
yum install -y compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
yum install -y kmod-20-21.el7.x86_64.rpm
yum install -y kmod-libs-20-21.el7.x86_64.rpm

oracle官方建议关闭透明大页 (两个节点)

1 修改grub文件
cp /etc/default/grub /etc/default/grub.bak

vi /etc/default/grub

2 增加一行transparent_hugepage=never到尾部
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never"

3 执行命令
grub2-mkconfig -o /boot/grub2/grub.cfg

4 不重启生效
echo never > /sys/kernel/mm/transparent_hugepage/enabled  

5 查看是否禁用透明大页
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

grep AnonHugePages /proc/meminfo
AnonHugePages:         0 kB---------->>>返回值若是零代表关闭

建议重新启动。我试过了 好像不重启不行

以下所有操作都在ora19crac1上执行

用root用户把LINUX.X64_193000_grid_home.zip上传到/u01/app/19c/grid目录下
cd /u01/app/19c/grid
chown -R grid:oinstall LINUX.X64_193000_grid_home.zip

切换到grid用户并解压
su - grid

cd $ORACLE_HOME

unzip LINUX.X64_193000_grid_home.zip

export DISPLAY=xxxxxxx(按自己真实的写)

./gridSetup.sh

截图都在《19CRAC安装文档截图版.docx》

#########################################################

grid软件安装完成以后,我们开始安装database软件。

用root用户把database软件的压缩包LINUX.X64_193000_db_home.zip上传到/u01/app/oracle/product/19c/db_1

cd /u01/app/oracle/product/19c/db_1
chown -R oracle:oinstall LINUX.X64_193000_db_home.zip

切换到oracle用户并解压
su - oracle
cd $ORACLE_HOME
unzip LINUX.X64_193000_db_home.zip

export DISPLAY=xxxxxxx(按自己真实的写)
./runInstaller

截图都在《19CRAC安装文档截图版.docx》

十 卸载软件
rm -rf /u01/app/19c/grid/*
rm -rf /u01/app/grid/*
rm -rf /u01/app/oraInventory/*
rm -rf /u01/app/oracle/product/19c/db_1/*
rm -rf /etc/ora*
rm -rf /tmp/.oracle
rm -rf /tmp/OraInstall*
rm -rf /opt/ORCLfmap
rm -rf /var/tmp/.orac*
rm -rf /usr/local/bin/oraenv
rm -rf /usr/local/bin/coraenv

如果你有ASM的话,需要使用这种方式格式化
dd if=/dev/zero of=/dev/sdb bs=1M count=1024
dd if=/dev/zero of=/dev/sdc bs=1M count=1024
dd if=/dev/zero of=/dev/sdd bs=1M count=1024
dd if=/dev/zero of=/dev/sde bs=1M count=1024
dd if=/dev/zero of=/dev/sdf bs=1M count=1024
dd if=/dev/zero of=/dev/sdg bs=1M count=1024
dd if=/dev/zero of=/dev/sdh bs=1M count=1024
dd if=/dev/zero of=/dev/sdi bs=1M count=1024
dd if=/dev/zero of=/dev/sdj bs=1M count=1024
dd if=/dev/zero of=/dev/sdk bs=1M count=1024
dd if=/dev/zero of=/dev/sdl bs=1M count=1024
dd if=/dev/zero of=/dev/sdm bs=1M count=1024
dd if=/dev/zero of=/dev/sdn bs=1M count=1024


这个省略掉。                                                                  
blacklist {
    devnode "^sd[b-e]" #过滤磁盘,哪些不做多路径
}
defaults {
    user_friendly_names yes
    path_grouping_policy multibus
    failback immediate
    no_path_retry fail
}

service multipathd.service start

/sbin/iscsiadm -m node -T iqn.3960-05.storos.t-11 -p 192.168.10.250 -l
/sbin/iscsiadm -m node -T iqn.3960-05.storos.t-12 -p 192.168.10.250 -l
/sbin/iscsiadm -m node -T iqn.3960-05.storos.t-13 -p 192.168.10.250 -l
/sbin/iscsiadm -m node -T iqn.3960-05.storos.t-14 -p 192.168.10.250 -l
/sbin/iscsiadm -m node -T iqn.3960-05.storos.t-15 -p 192.168.10.250 -l

29335

/

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

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

相关文章

【Vitepress报错】Error: [vitepress] 8 dead link(s) found.

原因 VitePress 在编译时,发现 死链接(dead links) 会构建失败!具体在哪我也找不到… 解决方案 如图第一行蓝色提示信息,设置 Vitepress 属性 ignoredeadlinks 为 true 可忽略报错。 .vuepress/config.js export default defineConfig(…

【开源风云】从若依系列脚手架汲取编程之道(七)

📕开源风云系列 本篇文字量巨大,甚至在发表编辑之时造成编辑器卡顿,哈哈,最近在忙人生的另一项规划,文章更新就逐渐缓慢了,希望我们都逐渐走向自己的道路呀! 🍊本系列将从开源名将若…

Docker+Django项目部署-从Linux+Windows实战

一、概述 1. 什么是Docker Docker 是一个开源的应用容器引擎,支持在win、mac、Linux系统上进行安装。可以帮助我们在一台电脑上创建出多个隔离的环境,比传统的虚拟机极大的节省资源 。 为什么要创建隔离的环境? 假设你先在有一个centos7.…

[项目代码] YOLOv5 铁路工人安全帽安全背心识别 [目标检测]

YOLOv5是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv5具有更高的…

蓝桥杯备赛(持续更新)

16届蓝桥杯算法类知识图谱.pdf 1. 格式打印 %03d:如果是两位数,将会在前面添上一位0 %.2f:会保留两位小数 如果是long,必须在数字后面加上L。 2. 进制转化 2.1. 十进制转任意进制: 十进制转任意进制时&#xff…

使用Element UI实现前端分页,及el-table表格跨页选择数据,切换分页保留分页数据,限制多选数量

文章目录 一、前端分页1、模板部分 (\<template>)2、数据部分 (data)3、计算属性 (computed)4、方法 (methods) 二、跨页选择1、模板部分 (\<template>)2、数据部分 (data)3、方法 (methods) 三、限制数量1、模板部分 (\<template>)2、数据部分 (data)3、方法…

ThriveX 博客管理系统前后端项目部署教程

前端 前端项目地址&#xff1a;https://github.com/LiuYuYang01/ThriveX-Blog 控制端项目地址&#xff1a;https://github.com/LiuYuYang01/ThriveX-Admin Vercel 首先以 Vercel 进行部署&#xff0c;两种方式部署都是一样的&#xff0c;我们以前端项目进行演示 首先我们先…

使用electron-egg把vue项目在linux Ubuntu环境下打包并安装运行

electron-egg一个入门简单、跨平台、企业级桌面软件开发框架https://www.kaka996.com/electron-egg 跳转地址 1,使用 git下载代码到本地,如果没有git需要进行安装 # gitee git clone https://gitee.com/dromara/electron-egg.git # github git clone https://github.com/dro…

力扣-Mysql-3322- 英超积分榜排名 III(中等)

一、题目来源 3322. 英超积分榜排名 III - 力扣&#xff08;LeetCode&#xff09; 二、数据表结构 表&#xff1a;SeasonStats --------------------------- | Column Name | Type | --------------------------- | season_id | int | | team_id …

深度学习基础—Beam search集束搜索

引言 深度学习基础—Seq2Seq模型https://blog.csdn.net/sniper_fandc/article/details/143781223?fromshareblogdetail&sharetypeblogdetail&sharerId143781223&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 上篇博客讲到&#xff0c;贪心算…

vueRouter路由切换时实现页面子元素动画效果, 左右两侧滑入滑出效果

说明 vue路由切换时&#xff0c;当前页面左侧和右侧容器分别从两侧滑出&#xff0c;新页面左右分别从两侧滑入 效果展示 路由切换-滑入滑出效果 难点和踩坑 现路由和新路由始终存在一个页面根容器&#xff0c;通过<transition>组件&#xff0c;效果只能对页面根容器有效…

【EasyExcel】复杂导出操作-自定义颜色样式等(版本3.1.x)

文章目录 前言一、自定义拦截器二、自定义操作1.自定义颜色2.合并单元格 三、复杂操作示例1.实体(使用了注解式样式)&#xff1a;2.自定义拦截器3.代码4.最终效果 前言 本文简单介绍阿里的EasyExcel的复杂导出操作&#xff0c;包括自定义样式&#xff0c;根据数据合并单元格等。…

集群搭建高可用

contos7.9 部署3节点 hadoop3.4 高可用集群 contos7.9 部署3节点 hadoop3.4 高可用集群环境信息Hadoop与Zookeeper的版本对应关系服务器角色分配使用端口服务器配置配置免密登录服务器配置初始化 init_server.sh配置主机名映射所有节点配置 hosts文件 hadoop 安装环境配置下载安…

Pycharm 配置 Poetry

Python 环境安装 参考以下&#xff1a; 官网安装步骤 CODA方式安装 Poetry 安装 Poetry在windows下的安装使用 1.下载软件包 下载地址 2.获取安装脚本下载地址 3.使用命令安装 打开cmd&#xff0c;进入安装包和脚本文件所在目录&#xff0c;执行命令&#xff1a; python …

卡尔曼滤波:从理论到应用的简介

卡尔曼滤波&#xff08;Kalman Filter&#xff09;是一种递归算法&#xff0c;用于对一系列噪声观测数据进行动态系统状态估计。它广泛应用于导航、控制系统、信号处理、金融预测等多个领域。本文将介绍卡尔曼滤波的基本原理、核心公式和应用案例。 1. 什么是卡尔曼滤波&#x…

聊聊Flink:Flink的运行时架构

一、运行时架构 上一篇我们可以看到Flink的核心组件的Deploy层&#xff0c;该层主要涉及了Flink的部署模式&#xff0c;Flink支持多种部署模式&#xff1a;本地、集群&#xff08;Standalone/YARN&#xff09;、云&#xff08;GCE/EC2&#xff09;。 Local&#xff08;本地&am…

元器件封装

元器件封装类型 为什么越来越多用贴片元件&#xff0c;而不是插件元件 为什么越来越多用贴片元件&#xff0c;而不是插件元件 1.体积小、质量小、容易保存和运输&#xff1b; 2.容易焊接和拆卸。抗震效果好。 贴片元件不用过孔&#xff0c;用锡少。直插元件最麻烦的就是拆卸&a…

[JAVAEE] 网络编程

目录 一. 什么是socket套接字 二. socket套接字 2.1 socket套接字根据传输层协议分类 2.2 TCP流套接字 UDP数据报套接字主要特点 三. UDP数据报套接字编程 3.1 DatagramSocket 是UDP socket, 用于发送和接受数据报 3.2 DatagramPacket 是UDP socket 发送和接收的数据报 …

GNN入门案例——KarateClub结点分类

文章目录 一、任务描述二、环境配置三、加载数据四、定义网络结构五、训练模型 一、任务描述 Karate Club 图任务是一个经典的图结构学习问题&#xff0c;通常用于社交网络分析和社区检测。该数据集是由 Wayne W. Zachary 在1977年收集的&#xff0c;描述了一个美国的空手道俱…

173. 二叉搜索树迭代器【 力扣(LeetCode) 】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 173. 二叉搜索树迭代器 一、题目描述 实现一个二叉搜索树迭代器类BSTIterator &#xff0c;表示一个按中序遍历二叉搜索树&#xff08;BST&#xff09;的迭代器&#xff1a; BSTIterato…