中标麒麟 RAC 19c 部署(Openssh免密BUG解决方案)

部署环境:

主机一主机二
host ip192.168.80.46192.168.80.47
vip 192.168.80.48192.168.80.49
private ip192.168.10.10192.168.10.11
storage ip192.168.20.33192.168.20.34
主机名rac19c1rac19c2
 

需要上传的软件包:

一.虚拟机配置

选择中标麒麟IOS文件,声卡打印机,USB适配器可以拔掉。

1.配置语言环境:

vi /etc/locale.conf

2.配置yum源

挂载:

验证yum源可用性:

3.关闭防火墙:

4.关闭selinux

5.设置disk.enableUUID = “true”

编辑以下文件:

6.配置网卡

重启服务器:

验证语言与防火墙:

关机:

二.克隆虚拟机

1.克隆storage

2.克隆racnode1与racnode2

三.配置虚拟机网络

虚拟网络配置如下:

Storage节点 虚拟机配置:

虚拟机内root用户登录:

编辑第二块网卡:

重启网卡:

尝试使用远程终端连接:

Storage 节点网络配置结束

racnode1节点网络配置:

启动后用root用户登入

更改用户名:

Ens32配置:

Ens34配置:

Ens35配置:

重启网卡:

尝试连接节点1:

racnode2节点网络配置:

Ens34配置:

Ens35配置:

重启网卡后检查:

网络环境检查是否通畅:

每个节点的每个ip都ping一下看看是否通畅

至此网络配置结束

四.配置共享存储

存储规划:

Storage中添加磁盘:

配置共享存储,在共享存储中创建target服务,创建iqn号,访问iqn下面的lun。

存储服务器server端

安装target包

yum -y install targetd targetcli

启动target服务

systemctl start target

开机自动启动target服务

systemctl enable target

查看target的状态

systemctl status target

查看磁盘

先把准备共享的块做出来,创建一个target,在 target 上创建 LUN

[root@storage ~]# targetcl

目前是在根路径下,直接敲ls(和linux的ls一样)命令来查看所有路径及路径下的配置,敲pwd命令可以显示当前所在的路径(和linux的pwd一样)。

cd /backstores/block

将磁盘与名称绑定

create name=disk1 dev=/dev/sdb

create name=disk2 dev=/dev/sdc

create name=disk3 dev=/dev/sdd

create name=disk4 dev=/dev/sde

create name=disk5 dev=/dev/sdf

create name=disk6 dev=/dev/sdg

create name=disk7 dev=/dev/sdh

create name=disk8 dev=/dev/sdi

create name=disk9 dev=/dev/sdj

进入ISCSI路径下创建完成iscsi名称

cd /iscsi

create iqn.2024-06.com.zhangxin:racdisk

创建完成iscsi名称后,下面会默认创建一个tpg1的路径,在tpg1路径下有三个路径为主要的:

1.acls(客户端访问名称,免认证配置)

2.luns(共享lun存储池,调用block共享块)

3.portals(共享存储地址和端口)

绑定lun

cd iqn.2024-06.com.zhangxin:racdisk/tpg1/luns

create lun=lun1 storage_object=/backstores/block/disk1

create lun=lun2 storage_object=/backstores/block/disk2

create lun=lun3 storage_object=/backstores/block/disk3

create lun=lun4 storage_object=/backstores/block/disk4

create lun=lun5 storage_object=/backstores/block/disk5

create lun=lun6 storage_object=/backstores/block/disk6

create lun=lun7 storage_object=/backstores/block/disk7

create lun=lun8 storage_object=/backstores/block/disk8

create lun=lun9 storage_object=/backstores/block/disk9

创建acls免认证访问

创建允许客户端连接对象

cd /iscsi/iqn.2024-06.com.zhangxin:racdisk/tpg1/acls

/iscsi/iqn.20...isk/tpg1/acls> create wwn=iqn.2024-04.com.zhangxin:rac19c1

/iscsi/iqn.20...isk/tpg1/acls> create wwn=iqn.2024-04.com.zhangxin:rac19c2

配置完成后

cd /

保存配置到配置文件

Saveconfig

下面配置 rac两个节点的target客户端

配置存储客户端client

安装客户端软件

yum -y install iscsi-initiator-utils

启动服务

systemctl start iscsid.service

systemctl start iscsi.service

开机自动启动

systemctl enable iscsid.service

systemctl enable iscsi.service

racnode1 修改配置文件

vi /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.2024-06.com.zhangxin:rac19c1

racnode2 修改配置文件

vi /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.2024-06.com.zhangxin:rac19c1

重启客户端服务

systemctl restart iscsid.service

systemctl restart iscsi.service

两个节点全执行:
客户端连接网络存储

发现网络存储

iscsiadm -m discovery -t st -p 192.168.20.30

连接网络存储

iscsiadm -m node -T iqn.2024-06.com.zhangxin:racdisk -p 192.168.20.30:3260 -l

lsblk 可以看到 存储服务器的磁盘

关机重启查看 磁盘是否能自动共享,注意开机先开存储服务器

在两节点查看共享磁盘,能看见说明没问题了。

至此共享磁盘配置完毕

五.配置共享存储多路径

查看登录的session 会话

iscsiadm -m session

iscsiadm -m session -P 3 查看登录session的详细信息

iscsiadm -m discovery -t st -p 192.168.20.31

iscsiadm -m node -T iqn.2024-06.com.zhangxin:racdisk -p 192.168.20.31:3260 -l

可以看到存储服务器的磁盘被识别了两次

查看所有磁盘id:

for i in b c d e f g h i j k l m n o p q r s; 
do 
echo "sd$i" "`/usr/lib/udev/scsi_id  --whitelisted --replace-whitespace --device=/dev/sd$i` "; 
done

安装多路径软件:

yum install device-mapper-multipath device-mapper -y

设置开机自动启动多路径

systemctl enable multipathd.service

启动多路径

配置multipath.conf

/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/multipath.conf

/sbin/mpathconf –enable

启动服务

systemctl start multipathd.service

相同id的磁盘已被绑定。

至此多路径绑定完毕。

.数据库服务器参数配置(该参数生产环境需要具体商定)

1、设置/etc/hosts
#public ip
192.168.80.46         rac19c1
192.168.80.47         rac19c2#vip ip
192.168.80.48         rac1-vip
192.168.80.49         rac2-vip#private ip
192.168.10.10         rac1-priv
192.168.10.11         rac2-priv#scan ip
192.168.80.50         rac19c-scan

2、创建用户和组

/usr/sbin/groupadd -g 54321 oinstall 
/usr/sbin/groupadd -g 54329 asmadmin
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54330 racdba
/usr/sbin/useradd -u 54321 -g  oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle 
/usr/sbin/useradd -u 54331 -g  oinstall -G asmadmin,asmdba,asmoper,dba,racdba gridecho 'passworda2!' | passwd --stdin grid
echo 'passworda2!' | passwd --stdin oracle

在虚拟机中添加一块100磁盘用于安装


扫一下盘:
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

在最底下 sdt,已经可以找到了100G磁盘

对磁盘格式化后挂载:

授权:

mkdir -p /u01/app/19.3.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1chown -R grid:oinstall  /u01
chown -R oracle:oinstall  /u01/app/oracle
chmod -R 775 /u01/

七.安装依赖包

yum install -y bc gcc gcc-c++ binutils compat-libcapl compat-libstdc++ dtrace-modules dtrace-modules-headersyum install -y dtrace-modules-provider-headers dtrace-utils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-develyum install -y libstdc99 libstdc++-devel libxcb make smartmontools sysstat unzip
yum install -y unixODBC unixODBC-develyum install -y kmod*
yum install -y ks*
yum install -y libaio*
yum install -y compat*

八.修改资源限制参数

vi /etc/security/limits.confcat >> /etc/security/limits.conf << "EOF"grid soft nproc 16384 
grid hard nproc 16384 
grid soft nofile 65536 
grid hard nofile 65536 
grid soft stack 32768 
grid hard stack 32768 
oracle soft nproc 16384 
oracle hard nproc 16384 
oracle soft nofile 65536 
oracle hard nofile 65536
oracle soft stack 32768 
oracle hard stack 32768
oracle soft  memlock unlimited
oracle hard  memlock unlimited EOF

vi /etc/pam.d/login

echo "session    required   pam_limits.so" >> /etc/pam.d/login

九、修改内核参数

vi /etc/sysctl.conf fs.aio-max-nr = 1048576 
fs.file-max = 6815744 
kernel.sem = 250 32000 100 128 
net.ipv4.ip_local_port_range = 9000 65500 
net.core.rmem_default = 262144 
net.core.rmem_max = 4194304 
net.core.wmem_default = 262144 
net.core.wmem_max = 1048586 
kernel.panic_on_oops = 1  
kernel.shmmax = 4831838208
kernel.shmall = 1179648
kernel.shmmni = 4096
vm.min_free_kbytes = 524288
vm.swappiness = 10
vm.nr_hugepages = 2560sysctl -p

# SGA=4000*0.7*0.8=2240M

# PGA=4000*0.7*0.2=560

单个共享内存段的最大值,要放下整个SGA,

kernel.shmmax=4.5*1024*1024*1024=4831838208

kernel.shmall=kernel.shmmax/getconf PAGESIZE=4831838208/4096=1179648

[root@node1 yum.repos.d]# getconf PAGESIZE

4096

[root@node1 yum.repos.d]#

安装oracle时实际设置 :SGA=4500M

#vm.nr_hugepages= 1280    大内存页, < shmmax= 2560m/2m=1280

vm.nr_hugepages= 2240M/2=1120

十.关闭透明页

cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never

配置开机设置never

vi /etc/rc.d/rc.local

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled 
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag 
fi
添加或修改transparent_hugepage=never,numa=off文件中的参数
vi  /etc/default/grub:GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"

运行grub2–mkconfig 命令以重新生成grub.cfg文件

grub2-mkconfig -o /boot/grub2/grub.cfg

十一.设置用户环境变量

grid用户环境变量vi .bash_profilealias sqlplus="rlwrap sqlplus" 
export TMP=/tmp 
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export ORACLE_SID=+ASM1
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatchalias sqlplus="rlwrap sqlplus" 
export TMP=/tmp 
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export ORACLE_SID=+ASM2
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatchoracle用户环境变量vi .bash_profilealias sqlplus="rlwrap sqlplus" 
export TMP=/tmp
export TMPDIR=$TMP
export LANG=en_US
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=racdb1
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.UTF8vi .bash_profilealias sqlplus="rlwrap sqlplus" 
export TMP=/tmp
export TMPDIR=$TMP
export LANG=en_US
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/db_1
export ORACLE_SID=racdb2
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.UTF8

十二.配置ASM磁盘权限

vi /etc/udev/rules.d/99-oracle-asmdevices.rulesENV{DM_NAME}=="mpatha", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathb", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathc", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathd", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathe", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathf", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathg", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathh", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathi", OWNER:="grid", GROUP:="asmadmin", MODE:="660"

/sbin/udevadm control --reload /sbin/udevadm trigger --type=devices --action=change
udevadm trigger

至此服务器参数配置准备完毕。

十三.集群部署

软件包上传到哪里都可以,我这里自己加了一块硬盘,专门用于放置软件。

我们这里需要三个安装包:

上传到/soft 中

unzip LINUX.X64_193000_grid_home.zip -d /u01/app/19.3.0/grid/

安装grid中的rpm包(两个节点都需要安装,用scp传到节点2):

两个节点rpm

安装之后就可以进行grid安装

进入集群安装:

Scanname 需要与/etc/hosts中保持一致

Vip名称也要对应上

添加主机2

点击setup,成功后点击test。这里test大概率报错,原因是操作系统OpenSSH版本太高,ssl倒是没问题 MOS上面说的 -T参数我尝试了但没有解决。

解决方案:

1.降级操作系统 ssh(不推荐)

Index of /pub/OpenBSD/OpenSSH/portable/

去网站里面下载7.4p1的openssh

安装必备的软件包:

yum -y install gcc libcap libcap-devel glibc-devel pam-devel krb5-devel krb5-libs

yum install -y openssl-devel

解压压缩包

下面就是源码安装三板斧

  1. 编译安装

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-ssl-dir=/usr --with-md5-passwords --mandir=/usr/share/man --with-kerberos5=/usr/lib64/libkrb5.so

  1. make
  2. make install

两个节点都操作一下,值得注意的是这里并没有卸载掉原本的OpenSSH8.0,不知道是否是覆盖了,还需要探究。

下面是make install可能碰到的错误

解决方案:重新生成证书文件

再重新执行make install

查看两个节点的SSH版本:

再次setup,test一次,已经可以成功了。

2.自己配置互信(推荐)

配置oracle用户的节点互信:1、在两个节点执行:
su - oracle
mkdir ~/.ssh
chmod 755 .ssh 
/usr/bin/ssh-keygen -t rsa
/usr/bin/ssh-keygen -t dsa
全部按enter键即可。
2、将所有的key文件汇总到一个总的认证文件中,在节点1上执行:
su – oracle
ssh rac19c1 cat ~/.ssh/id_rsa.pub >> authorized_keys
ssh rac19c2 cat ~/.ssh/id_rsa.pub >> authorized_keys
ssh rac19c1 cat ~/.ssh/id_dsa.pub >> authorized_keys
ssh rac19c2 cat ~/.ssh/id_dsa.pub >> authorized_keys
在命令执行的过程中需要输入rac1和rac2对应的oracle用户的密码。
3、节点1上存在一份完整的key,拷贝到节点2:
[oracle@rac19c1 ~]$ cp authorized_keys .ssh/
[oracle@rac19c1 ~]$ cd .ssh/
[oracle@rac19c1 .ssh]$ chmod 600 authorized_keys
[oracle@rac19c1 .ssh]$ scp authorized_keys rac19c2:~/.ssh/
[oracle@rac19c2 ~]$ cd .ssh/
[oracle@rac19c2 .ssh]chmod 600 authorized_keys
4、在2个节点都执行一下命令
ssh rac19c1 date
ssh rac19c2 date
ssh rac19c1-priv date
ssh rac19c2-priv date
5、检验是否配置成功,在节点1上不用输入密码就可以通过ssh连接节点2,说明配置成功
[oracle@rac19c1 ~]$ ssh rac19c2
[oracle@rac19c2 ~]$ exit配置grid用户的节点互信:
与Oracle用户执行方式相同,只是执行脚本的用户变成了grid。

GI部署只配置grid互信即可

最重要的一步:自己配置./gridSetup.sh的参数

这里互信就不需要配置了也可以通过。

我们就继续安装

.

下面按照预检配置即可,DBCA这里也省略,生产环境不同配置项也不同。

需要注意的是dbca 的时候也需要加

dbca -J-Doracle.install.ssh.setupCheckEnabled=false

与grid安装类似,也需要添加不检查互信的参数

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

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

相关文章

如何在忘记密码的情况下解锁Android手机?

您的 Android 设备密码有助于保护您的数据并防止您的个人信息被滥用。但是&#xff0c;如果您被锁定在Android设备之外怎么办&#xff1f;我们知道忘记您的 Android 手机密码是多么令人沮丧&#xff0c;因为它会导致您的设备和数据无法访问。在本技术指南中&#xff0c;我们将向…

java 闭锁(CountDownLatch)

闭锁&#xff08;CountDownLatch&#xff09;是Java中的一个同步辅助类&#xff0c;用于协调多个线程之间的协作。它允许一个或多个线程等待&#xff0c;直到在其他线程中执行的一组操作完成。闭锁非常适用于需要等待一组事件发生之后再执行某些操作的场景。 import java.uti…

JVM相关知识点汇总

JDK,JRE以及JVM的关系 我们的编译器到底干了什么事? 仅仅是将我们的 .java 文件转换成了 .class 文件,实际上就是文件格式的转换,对等信息转换。 类加载机制是什么? > **所谓类加载机制就是** > ``` > 虚拟机把Class文件加载到内存 > 并对数据进行校验,转换…

LeetCode 744, 49, 207

目录 744. 寻找比目标字母大的最小字母题目链接标签思路代码 49. 字母异位词分组题目链接标签思路代码 207. 课程表题目链接标签思路代码 744. 寻找比目标字母大的最小字母 题目链接 744. 寻找比目标字母大的最小字母 标签 数组 二分查找 思路 本题比 基础二分查找 难的一…

WordPress网站添加插件和主题时潜在危险分析

WordPress 最初只是一个简单的博客软件&#xff0c;现在据估计为全球前 1000 万个网站中的 30% 提供支持。WordPress受欢迎的因素之一是可以轻松创建插件和主题来扩展它并提供比默认设置更多的功能。 目前&#xff0c;WordPress 网站列出了 56,000 多个插件以及数千个主题。插件…

《梦醒蝶飞:释放Excel函数与公式的力量》9.3.1PV 函数

9.3.1 函数简介 PV函数用于计算一系列未来付款的现值&#xff0c;考虑了一定的利率。现值是未来金额的贴现值&#xff0c;表示在当前时刻相当于未来某一时间点的总价值。 9.3.2 语法 PV函数的语法如下&#xff1a; PV(rate, nper, pmt, [fv], [type]) rate&#xff1a;每期…

数字化精益生产系统--QMS质量管理系统

QMS质量管理系统&#xff08;Quality Management System&#xff09;是现代企业管理的关键组成部分&#xff0c;旨在确保产品和服务的质量达到或超过客户需求和期望。 以下是对QMS质量管理系统的功能设计&#xff1a;

ReAct Agent 分享回顾

在人工智能的迅速发展中&#xff0c;ReAct Agent作为一项前沿技术&#xff0c;受到越来越多的关注。本文结合ReAct Agent 提出者的访谈内容&#xff0c;探讨ReAct Agent的研究背景、技术挑战、未来展望&#xff0c;以及它与大模型的紧密联系&#xff0c;分析其科研成果与商业化…

树莓派5安装冬瓜HAOS教程

原文来自瀚思彼岸和hasshome 一、安装前准备 &#xff08;1&#xff09;软件 1、树莓派烧录软件Imager 2、冬瓜HAOS镜像 &#xff08;2&#xff09;硬件 1、树莓派5 2、TF卡&#xff08;SanDisk Extreme PRO 64GB U3 A2 V30 4k&#xff09; 3、读卡器 4、键盘和鼠标 5、显…

Vue3+.NET6前后端分离式管理后台实战(二十九)

1&#xff0c;Vue3.NET6前后端分离式管理后台实战(二十九)

2.5 C#视觉程序开发实例1----IO_Manager实现脉冲输出控制

2.5 C#视觉程序开发实例1----IO_Manager实现脉冲输出控制 1 目标效果视频 目标效果展示 IO_Manager 2 信号输出流程说明 为了防止线程不同步导致输出信号没有被输出&#xff0c; 尽量使用一个输出队列来进行输出的管理 3 IO_Manager中添加内容 3.0 添加两个类 1 Out_Sta…

VSCode推荐插件:Copy Class Name快速复制html中的类名

插件地址&#xff1a;https://marketplace.visualstudio.com/items?itemNamemouday.copy-class-name 复制Vue和React中HTML代码的类名&#xff0c;实现快速复制 使用方式&#xff1a; 选中代码&#xff0c;右键复制类名&#xff0c;再粘贴到文件中即可 示例 <div clas…

Flink SQL kafka连接器

版本说明 Flink和kafka的版本号有一定的匹配关系&#xff0c;操作成功的版本&#xff1a; Flink1.17.1kafka_2.12-3.3.1 添加kafka连接器依赖 将flink-sql-connector-kafka-1.17.1.jar上传到flink的lib目录下 下载flink-sql-connector-kafka连接器jar包 https://mvnreposi…

最新整理的机器人相关数据合集(1993-2022年不等 具体看数据类型)

机器人安装数据是指记录全球或特定区域内工业机器人新安装数量的信息&#xff0c;这一数据由国际机器人联合会(IFR)等权威机构定期发布。这些数据不仅揭示了机器人技术的市场需求趋势&#xff0c;还反映了各国和地区自动化水平及产业升级的步伐。例如&#xff0c;数据显示中国在…

数据库测试|Elasticsearch和ClickHouse的对决

前言 数据库作为产品架构的重要组成部分&#xff0c;一直是技术人员做产品选型的考虑因素之一。 ClkLog会经常遇到小伙伴问支持兼容哪几种数据库&#xff1f;为什么是选择ClickHouse而不是这个或那个。 由于目前市场上主流的数据库有许多&#xff0c;这次我们选择其中一个比较典…

深度学习3 基于规则的决策树模型

1.决策树是一种归纳学习算法&#xff0c;从一些没有规则、没有顺序、杂乱无章的数据中&#xff0c;推理出决 策模型。不管是什么算法的决策树&#xff0c;都是一种对实例进行分类的树形结构。决策树有三个要素&#xff1a;节点(Node)、分支(Branches)和结果(Leaf)。 训练决策树…

算法010:无重复字符的最长子串

无重复字符的最长子串. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 使用的算法&#xff1a;滑动窗口 在这个…

干货 | 2024大模型增强下的图智能在金融场景的应用(免费下载)

如需下载本方案PPT/WORD原格式&#xff0c;诚挚邀请您微信扫描以下二维码加入方案驿站知识星球&#xff0c;获取上万份PPT/WORD解决方案&#xff01;&#xff01;&#xff01;感谢支持&#xff01;&#xff01;&#xff01;

SSM高校教师教学质量评估系统-计算机毕业设计源码03344

摘要 在高等教育中&#xff0c;教学质量是培养优秀人才的关键。为了提高教学质量&#xff0c;高校需要建立一套科学、有效的教师教学质量评估系统。本研究采用 SSM技术框架&#xff0c;旨在开发一款高校教师教学质量评估系统。 SSM框架作为一种成熟的Java开发框架&#xff0c;具…

Mysql5.7并发插入死锁问题

死锁的产生条件 互斥、请求和保持、不可剥夺、循环等待 MySQL锁类型 死锁复现 环境&#xff1a;Mysql 5.7版本&#xff0c;Innodb引擎&#xff0c;可重复度隔离级别 并发场景下使用duplicate key update插入或更新数据可能会造成死锁&#xff0c;下面就产生死锁的条件进行模…