磐维数据库双中心容灾流复制集群搭建

1. 架构

磐维数据库PanWeiDB V2.0.0基于gs_sdr工具,在不借助额外存储介质的情况下实现跨Region的异地容灾。提供流式容灾搭建,容灾升主,计划内主备切换,容灾解除、容灾状态监控等功能。

2. 部署双中心磐维集群

2.1. 主集群

角色

主机IP

主机名

192.168.3.43

db43

备 1

192.168.3.44

db44

备 2

192.168.3.45

db45

2.1.1. cat panweidb1m2s.xml(主)

<?xml version="1.0" encoding="utf-8"?>
<ROOT><!-- 整体信息 --><CLUSTER><!-- 数据库集群名称 --><PARAM name="clusterName" value="PanWeiDB" /><!-- 数据库节点名称(hostname) --><PARAM name="nodeNames" value="gdb43,gdb44,gdb45"/><!-- 数据库安装目录--><PARAM name="gaussdbAppPath"  value="/data/panweidb/app" /><!-- 日志目录--><PARAM name="gaussdbLogPath"  value="/data/panweidb/log" /><PARAM name="tmpMppdbPath"    value="/data/panweidb/tmp"/><PARAM name="gaussdbToolPath" value="/data/panweidb/tool" /><!--数据库core文件目录--><PARAM name="corePath"        value="/data/panweidb/corefile"/><!-- 节点IP,与数据库节点名称列表一一对应 --><PARAM name="backIp1s" value="192.168.3.43,192.168.3.44,192.168.3.45"/></CLUSTER><DEVICELIST><!-- 节点1上的部署信息 --><DEVICE sn="gdb43"><PARAM name="name" value="gdb43"/><!-- 节点1所在的AZ及AZ优先级 --><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --><PARAM name="backIp1" value="192.168.3.43"/><PARAM name="sshIp1" value="192.168.3.43"/><!-- cm 管理节点部署信息 --><PARAM name="cmsNum" value="1"/><!-- 主CM Server端口号,默认值5000 --><PARAM name="cmServerPortBase" value="18800"/><!-- cmServerListenIp1。CM Server用于侦听CM Agent连接请求或DBA管理请求的IP地址 --><PARAM name="cmServerListenIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/><!-- cmServerHaIp1。主、备CM Server间通信的IP地址。Value中左边为主CM Server的主机IP地址,右边为备CM Server的主机IP地址。未设置时,默认根据主、备CM Server所在主机的backIp1生成。--><PARAM name="cmServerHaIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/><PARAM name="cmServerlevel" value="1"/><PARAM name="cmServerRelation" value="gdb43,gdb44,gdb45"/><!--  cmDir。CM数据文件路径。保存CM Server和CM Agent用到的数据文件,参数文件等。各集群主机上均需配置该参数。--><PARAM name="cmDir" value="/data/panweidb/cmserver"/><!-- dn 数据节点 --><PARAM name="dataNum" value="1"/><PARAM name="dataPortBase" value="17700"/><PARAM name="dataListenIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/><PARAM name="dataNode1" value="/data/panweidb/data,gdb44,/data/panweidb/data,gdb45,/data/panweidb/data"/><PARAM name="dataNode2_syncNum" value="1"/></DEVICE><DEVICE sn="gdb44"><PARAM name="name" value="gdb44"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.3.44"/><PARAM name="sshIp1" value="192.168.3.44"/><!-- cm 管理节点 --><!-- cmServerPortStandby。备CM Server端口号,默认值5500 --><PARAM name="cmServerPortStandby" value="18800"/><PARAM name="cmDir" value="/data/panweidb/cmserver"/></DEVICE><DEVICE sn="gdb45"><PARAM name="name" value="gdb45"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.3.45"/><PARAM name="sshIp1" value="192.168.3.45"/><!-- cm 管理节点 --><!-- cmServerPortStandby。备CM Server端口号,默认值5500 --><PARAM name="cmServerPortStandby" value="18800"/><PARAM name="cmDir" value="/data/panweidb/cmserver"/></DEVICE></DEVICELIST>
</ROOT>

2.1.2. 状态检查

cm_ctl query -Cdvip

gs_om -t status --detail

2.2. 备集群

角色

主机IP

主机名

192.168.3.46

db46

备 1

192.168.3.47

db47

备 2

192.168.3.48

db48

2.2.1. cat panweidb1m2s.xml(备)

<?xml version="1.0" encoding="utf-8"?>
<ROOT><CLUSTER><PARAM name="clusterName" value="panweidb" /><PARAM name="nodeNames" value="gdb46,gdb47,gdb48"/><PARAM name="gaussdbAppPath" value="/data/panweidb/app" /><PARAM name="gaussdbLogPath" value="/data/panweidb/log" /><PARAM name="tmpMppdbPath" value="/data/panweidb/tmp"/><PARAM name="gaussdbToolPath" value="/data/panweidb/tool" /><PARAM name="corePath" value="/data/panweidb/corefile"/><PARAM name="backIp1s" value="192.168.3.46,192.168.3.47,192.168.3.48"/></CLUSTER><DEVICELIST><DEVICE sn="gdb46"><PARAM name="name" value="gdb46"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.3.46"/><PARAM name="sshIp1" value="192.168.3.46"/><PARAM name="cmsNum" value="1"/><PARAM name="cmServerPortBase" value="18800"/><PARAM name="cmServerListenIp1" value="192.168.3.46,192.168.3.47,192.168.3.48"/><PARAM name="cmServerHaIp1" value="192.168.3.46,192.168.3.47,192.168.3.48"/><PARAM name="cmServerlevel" value="1"/><PARAM name="cmServerRelation" value="gdb46,gdb47,gdb48"/><PARAM name="cmDir" value="/data/panweidb/cm"/><PARAM name="dataNum" value="1"/><PARAM name="dataPortBase" value="17700"/><PARAM name="dataNode1" value="/data/panweidb/data,gdb47,/data/panweidb/data,gdb48,/data/panweidb/data"/><PARAM name="dataNode1_syncNum" value="1"/></DEVICE><DEVICE sn="gdb47"><PARAM name="name" value="gdb47"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.3.47"/><PARAM name="sshIp1" value="192.168.3.47"/><PARAM name="cmServerPortStandby" value="18800"/><PARAM name="cmDir" value="/data/panweidb/cm"/></DEVICE><DEVICE sn="gdb48"><PARAM name="name" value="gdb48"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.3.48"/><PARAM name="sshIp1" value="192.168.3.48"/><PARAM name="cmServerPortStandby" value="18800"/><PARAM name="cmDir" value="/data/panweidb/cm"/></DEVICE></DEVICELIST>
</ROOT>

2.2.2. 状态检查

cm_ctl query -Cdvip

gs_om -t status --detail

3. 搭建双中心容灾环境

3.1. 准备配置文件

3.1.1. 主中心sdr配置

与主集群部署配置基本相同,仅添加了以下三个sdr特有参数,其中value字段中的每个括号为一个数据库服务器的两个IP。如灾备环境不跨池,两个IP均配置为服务器业务IP;如为跨池资源,localStreamIpmap1两个IP均配置为服务器业务IP,remoteStreamIpmap1前一个配置为资源池内业务IP,后一个配置为跨资源池承载网IP(三个节点均需要配置)。

<!-- sdr 配置 -->

<PARAM name="localStreamIpmap1" value="(192.168.3.43,192.168.3.43),(192.168.3.44,192.168.3.44),(192.168.3.45,192.168.3.45"/>

<PARAM name="remoteStreamIpmap1" value="(192.168.3.46,192.168.3.46),(192.168.3.47,192.168.3.47),(192.168.3.48,192.168.3.48)"/>

<PARAM name="remotedataPortBase" value="17700"/>

<?xml version="1.0" encoding="utf-8"?>
<ROOT><!-- 整体信息 --><CLUSTER><!-- 数据库集群名称 --><PARAM name="clusterName" value="PanWeiDB" /><!-- 数据库节点名称(hostname) --><PARAM name="nodeNames" value="gdb43,gdb44,gdb45"/><!-- 数据库安装目录--><PARAM name="gaussdbAppPath"  value="/data/panweidb/app" /><!-- 日志目录--><PARAM name="gaussdbLogPath"  value="/data/panweidb/log" /><PARAM name="tmpMppdbPath"    value="/data/panweidb/tmp"/><PARAM name="gaussdbToolPath" value="/data/panweidb/tool" /><!--数据库core文件目录--><PARAM name="corePath"        value="/data/panweidb/corefile"/><!-- 节点IP,与数据库节点名称列表一一对应 --><PARAM name="backIp1s" value="192.168.3.43,192.168.3.44,192.168.3.45"/></CLUSTER><DEVICELIST><!-- 节点1上的部署信息 --><DEVICE sn="gdb43"><PARAM name="name" value="gdb43"/><!-- 节点1所在的AZ及AZ优先级 --><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --><PARAM name="backIp1" value="192.168.3.43"/><PARAM name="sshIp1" value="192.168.3.43"/><!-- cm 管理节点部署信息 --><PARAM name="cmsNum" value="1"/><!-- 主CM Server端口号,默认值5000 --><PARAM name="cmServerPortBase" value="18800"/><!-- cmServerListenIp1。CM Server用于侦听CM Agent连接请求或DBA管理请求的IP地址 --><PARAM name="cmServerListenIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/><!-- cmServerHaIp1。主、备CM Server间通信的IP地址。Value中左边为主CM Server的主机IP地址,右边为备CM Server的主机IP地址。未设置时,默认根据主、备CM Server所在主机的backIp1生成。--><PARAM name="cmServerHaIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/><PARAM name="cmServerlevel" value="1"/><PARAM name="cmServerRelation" value="gdb43,gdb44,gdb45"/><!--  cmDir。CM数据文件路径。保存CM Server和CM Agent用到的数据文件,参数文件等。各集群主机上均需配置该参数。--><PARAM name="cmDir" value="/data/panweidb/cmserver"/><!-- dn 数据节点 --><PARAM name="dataNum" value="1"/><PARAM name="dataPortBase" value="17700"/><PARAM name="dataListenIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/><PARAM name="dataNode1" value="/data/panweidb/data,gdb44,/data/panweidb/data,gdb45,/data/panweidb/data"/><PARAM name="dataNode1_syncNum" value="2"/><!-- sdr 配置 --><PARAM name="localStreamIpmap1" value="(192.168.3.43,192.168.3.43),(192.168.3.44,192.168.3.44),(192.168.3.45,192.168.3.45"/><PARAM name="remoteStreamIpmap1" value="(192.168.3.46,192.168.3.46),(192.168.3.47,192.168.3.47),(192.168.3.48,192.168.3.48)"/><PARAM name="remotedataPortBase" value="17700"/></DEVICE><DEVICE sn="gdb44"><PARAM name="name" value="gdb44"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.3.44"/><PARAM name="sshIp1" value="192.168.3.44"/><!-- cm 管理节点 --><!-- cmServerPortStandby。备CM Server端口号,默认值5500 --><PARAM name="cmServerPortStandby" value="18800"/><PARAM name="cmDir" value="/data/panweidb/cmserver"/></DEVICE><DEVICE sn="gdb45"><PARAM name="name" value="gdb45"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.3.45"/><PARAM name="sshIp1" value="192.168.3.45"/><!-- cm 管理节点 --><!-- cmServerPortStandby。备CM Server端口号,默认值5500 --><PARAM name="cmServerPortStandby" value="18800"/><PARAM name="cmDir" value="/data/panweidb/cmserver"/></DEVICE></DEVICELIST>
</ROOT>

3.1.2. 从中心sdr配置

与从集群部署配置基本相同,仅添加了以下三个sdr特有参数,其中value字段中的每个括号为一个数据库服务器的两个IP。如灾备环境不跨池,两个IP均配置为服务器业务IP;如为跨池资源,localStreamIpmap1两个IP均配置为服务器业务IP,remoteStreamIpmap1前一个配置为资源池内业务IP,后一个配置为跨资源池承载网IP(三个节点均需要配置)。

<!-- sdr 配置 -->

<PARAM name="localStreamIpmap1" value="(192.168.3.46,192.168.3.46),(192.168.3.47,192.168.3.47),(192.168.3.48,192.168.3.48)"/>

<PARAM name="remoteStreamIpmap1" value="(192.168.3.43,192.168.3.43),(192.168.3.44,192.168.3.44),(192.168.3.45,192.168.3.45)"/>

<PARAM name="remotedataPortBase" value="17700"/>

<?xml version="1.0" encoding="utf-8"?>
<ROOT><!-- 整体信息 --><CLUSTER><!-- 数据库集群名称 --><PARAM name="clusterName" value="PanWeiDB" /><!-- 数据库节点名称(hostname) --><PARAM name="nodeNames" value="gdb46,gdb47,gdb48"/><!-- 数据库安装目录--><PARAM name="gaussdbAppPath"  value="/data/panweidb/app" /><!-- 日志目录--><PARAM name="gaussdbLogPath"  value="/data/panweidb/log" /><PARAM name="tmpMppdbPath"    value="/data/panweidb/tmp"/><PARAM name="gaussdbToolPath" value="/data/panweidb/tool" /><!--数据库core文件目录--><PARAM name="corePath"        value="/data/panweidb/corefile"/><!-- 节点IP,与数据库节点名称列表一一对应 --><PARAM name="backIp1s" value="192.168.3.46,192.168.3.47,192.168.3.48"/></CLUSTER><DEVICELIST><!-- 节点1上的部署信息 --><DEVICE sn="gdb46"><PARAM name="name" value="gdb46"/><!-- 节点1所在的AZ及AZ优先级 --><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --><PARAM name="backIp1" value="192.168.3.46"/><PARAM name="sshIp1" value="192.168.3.46"/><!-- cm 管理节点部署信息 --><PARAM name="cmsNum" value="1"/><!-- 主CM Server端口号,默认值5000 --><PARAM name="cmServerPortBase" value="18800"/><!-- cmServerListenIp1。CM Server用于侦听CM Agent连接请求或DBA管理请求的IP地址 --><PARAM name="cmServerListenIp1" value="192.168.3.46,192.168.3.47,192.168.3.48"/><!-- cmServerHaIp1。主、备CM Server间通信的IP地址。Value中左边为主CM Server的主机IP地址,右边为备CM Server的主机IP地址。未设置时,默认根据主、备CM Server所在主机的backIp1生成。--><PARAM name="cmServerHaIp1" value="192.168.3.46,192.168.3.47,192.168.3.48"/><PARAM name="cmServerlevel" value="1"/><PARAM name="cmServerRelation" value="gdb46,gdb47,gdb48"/><!--  cmDir。CM数据文件路径。保存CM Server和CM Agent用到的数据文件,参数文件等。各集群主机上均需配置该参数。--><PARAM name="cmDir" value="/data/panweidb/cmserver"/><!-- dn 数据节点 --><PARAM name="dataNum" value="1"/><PARAM name="dataPortBase" value="17700"/><PARAM name="dataListenIp1" value="192.168.3.46,192.168.3.47,192.168.3.48"/><PARAM name="dataNode1" value="/data/panweidb/data,gdb47,/data/panweidb/data,gdb48,/data/panweidb/data"/><PARAM name="dataNode1_syncNum" value="2"/><!-- sdr 配置 --><PARAM name="localStreamIpmap1" value="(192.168.3.46,192.168.3.46),(192.168.3.47,192.168.3.47),(192.168.3.48,192.168.3.48)"/><PARAM name="remoteStreamIpmap1" value="(192.168.3.43,192.168.3.43),(192.168.3.44,192.168.3.44),(192.168.3.45,192.168.3.45)"/><PARAM name="remotedataPortBase" value="17700"/></DEVICE><DEVICE sn="gdb47"><PARAM name="name" value="gdb47"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.3.47"/><PARAM name="sshIp1" value="192.168.3.47"/><!-- cm 管理节点 --><!-- cmServerPortStandby。备CM Server端口号,默认值5500 --><PARAM name="cmServerPortStandby" value="18800"/><PARAM name="cmDir" value="/data/panweidb/cmserver"/></DEVICE><DEVICE sn="gdb48"><PARAM name="name" value="gdb48"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="192.168.3.48"/><PARAM name="sshIp1" value="192.168.3.48"/><!-- cm 管理节点 --><!-- cmServerPortStandby。备CM Server端口号,默认值5500 --><PARAM name="cmServerPortStandby" value="18800"/><PARAM name="cmDir" value="/data/panweidb/cmserver"/></DEVICE></DEVICELIST>
</ROOT>

3.2. 创建容灾用户

在主从集群均创建容灾用户。

create user sdr_pw with replication password 'sdr3@repw';

3.3. 创建容灾关系

3.3.1. 启动主中心

主中心在创建容灾关系过程中,会等待从中心启动,因此在启动主中心后,不需要等待主中心启动完毕,即启动从中心。

在 192.168.3.43 安装用户下执行:

gs_sdr -t start -m primary -X /home/omm/soft/pwdb_h.xml -U sdr_pw -W sdr3@repw

3.3.2. 启动从中心

在启动主中心后,不需要等待主中心启动完毕,即启动从中心。

在 192.168.3.46 安装用户下执行:

gs_sdr -t start -m disaster_standby -X /home/omm/soft/pwdb_zz.xml -U sdr_pw -W sdr3@repw

3.4. 查看容灾状态

3.4.1. 主中心状态

在 192.168.3.43 安装用户下执行:

gs_sdr -t query
cm_ctl query -Cdvip
gs_om -t status --detail

3.4.2. 从中心状态

在 192.168.3.46 安装用户下执行:

gs_sdr -t query
cm_ctl query -Cdvip
gs_om -t status --detail

3.4.3. 查看复制槽配置

3.4.3.1. 主中心主节点配置详情

在 192.168.3.43 执行:

grep replconninfo /data/panweidb/data/postgresql.conf

3.4.3.2. 从中心主节点配置详情

在152.57.82.136执行:

grep replconninfo /data/panweidb/data/postgresql.conf

3.4.4. 查看复制槽状态

3.4.4.1. 主中心主节点查询结果

在 192.168.3.43 安装用户下连接数据库执行:

select * from pg_replication_slots;
select * from pg_stat_replication;

3.4.4.2. 从中心主节点查询结果

在 192.168.3.46 安装用户下连接数据库执行:

select * from pg_replication_slots;
select * from pg_stat_replication;

3.4.5. gs_sdr -t query容灾查询状态说明

项目

含义

说明

备注

hadr_cluster_stat

流式容灾中数据库实例状态。

normal

标识该数据库实例未参与流式容灾。

-

full_backup

主数据库实例数据全量复制中。

流式容灾中仅主数据库实例有此状态。

archive

主数据库实例日志流式复制中。

流式容灾中仅主数据库实例有此状态。

backup_fail

主数据库实例数据全量复制失败。

流式容灾中仅主数据库实例有此状态。

archive_fail

主数据库实例日志流式复制失败。

流式容灾中仅主数据库实例有此状态。

switchover

计划内主备倒换中。

流式容灾中主备数据库实例皆有此状态。

restore

灾备数据库实例数据全量恢复中。

流式容灾中仅灾备数据库实例有此状态。

restore_fail

灾备数据库实例全备恢复失败。

流式容灾中仅灾备数据库实例有此状态。

recovery

灾备数据库实例日志流式复制中。

流式容灾中仅灾备数据库实例有此状态。

recovery_fail

灾备数据库实例日志流式复制失败。

流式容灾中仅灾备数据库实例有此状态。

promote

灾备数据库实例升主中。

流式容灾中仅灾备数据库实例有此状态。

promote_fail

灾备数据库实例升主失败。

流式容灾中仅灾备数据库实例有此状态。

hadr_switchover_stat

流式容灾主备数据库实例计划内倒换进度展示。

百分比。

倒换进度展示。

-

hadr_failover_stat

流式容灾灾备数据库实例升主进度展示。

百分比。

倒换进度展示。

-

RTO

此时发生灾难,数据恢复所需要的时长。

数据库实例停机,网络异常等导致流式容灾中断。

流式容灾中仅主数据库实例可查。

非空

数据恢复所需要的时长,单位s。

RPO

此时发生灾难,数据库实例丢失的数据时长。

数据库实例停机,网络异常等导致流式容灾中断。

流式容灾中仅主数据库实例可查。

非空

数据库实例丢失的数据时长,单位s。

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

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

相关文章

wordpress企业官网建站的常用功能

WordPress 是一个功能强大的内容管理系统(CMS)&#xff0c;广泛用于企业官网的建设。以下是企业官网建站中常用的 WordPress 功能&#xff1a; 1. 页面管理 自定义页面模板&#xff1a;企业官网通常需要多种页面布局&#xff0c;如首页、关于我们、产品展示、联系我们等。Wor…

Linux应用之构建命令行解释器(bash进程)

目录 1.分析 2.打印输入提示符 3.读取并且处理输入字符串 4.创建子进程并切换 5.bash内部指令 6.完整代码 1.分析 当我们登录服务器的时候&#xff0c;命令行解释器就会自动加载出来。接下来我们就。在命令行中输入指令来达到我们想要的目的。 我们在命令行上输入的…

ETL工具: Kettle入门(示例从oracle到oracle的数据导入)

kettle介绍 ETL工具,用于对数据的抽取&#xff08;Extract), 转换(Transform),加载 (Load&#xff09; Kettle 是一种ETL工具, 现称为 Pentaho Data Integration (PDI) 特点:纯JAVA语言编写 官方学习文档 网站: https://docs.hitachivantara.com/r/en-us/pentaho-data-int…

DeepSeek VS ChatGPT-速度、准确性和成本

撰写本文时马斯克刚刚发布了聊天机器人Grok2&#xff0c;10万张算卡体现了马斯克的财大气粗。近年来&#xff0c;人工智能模型取得了长足的发展&#xff0c;每个模型都力求在速度、准确性和成本效率方面超越其他模型。在本文中&#xff0c;我将深入研究比较中美在AI的焦点模型上…

SQLMesh 系列教程7- 详解 seed 模型

SQLMesh 是一个强大的数据建模和管道管理工具&#xff0c;允许用户通过 SQL 语句定义数据模型并进行版本控制。Seed 模型是 SQLMesh 中的一种特殊模型&#xff0c;主要用于初始化和填充基础数据集。它通常包含静态数据&#xff0c;如参考数据和配置数据&#xff0c;旨在为后续的…

基于大数据的国内高校排名可视化分析及推荐系统

【大数据】基于大数据的国内高校排名可视化分析及推荐系统&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 高校排名一直是教育研究领域的重要课题&#xff0c;具有丰富的理论价值。通过分析和可…

【前端小点】vue3项目内根据主题读取不同文件夹下的图片资源(图片文件)

项目要求实现一键换肤的功能&#xff0c;不仅仅是主题颜色上的替换&#xff0c;还有图片素材的替换&#xff0c;主题颜色替换的方案大同小异&#xff0c;下面仅对图片素材的一件替换进行方法描述。 主要思路 使用本地仓库对当前主题进行存储&#xff0c;系统根据主题去加载不同…

recent移除task时,结束其所有进程和service(全Android版本)

目录 一、Launcher中forceStopPackage Android9 Android13 二、AMS中判断前台service也杀死 Android6 Android7 Android11 Android原生系统在清理后台应用时&#xff0c;其实并不能清理所有进程。例如&#xff1a; 在点击系统自带的播放器以后&#xff0c;播放音乐的时…

亲测可用,IDEA中使用满血版DeepSeek R1!支持深度思考!免费!免配置!

作者&#xff1a;程序员 Hollis 之前介绍过在IDEA中使用DeepSeek的方案&#xff0c;但是很多人表示还是用的不够爽&#xff0c;比如用CodeChat的方案&#xff0c;只支持V3版本&#xff0c;不支持带推理的R1。想要配置R1的话有特别的麻烦。 那么&#xff0c;今天&#xff0c;给…

Day6 25/2/19 WED

【一周刷爆LeetCode&#xff0c;算法大神左神&#xff08;左程云&#xff09;耗时100天打造算法与数据结构基础到高级全家桶教程&#xff0c;直击BTAJ等一线大厂必问算法面试题真题详解&#xff08;马士兵&#xff09;】https://www.bilibili.com/video/BV13g41157hK?p4&v…

centos服务器巡检脚本

服务器巡检脚本 系统负载shell脚本python将txt文件转换成excel&#xff0c;不正常巡检结果标记红色 系统负载shell脚本 #!/bin/bash#文件路径 path"/root/monitor.txt"#yum -y install bc sysstat net-tools lrzsz #获取主机名 system_hostname$(hostname | awk {pr…

大模型面经:SFT和RL如何影响模型的泛化或记忆能力?

监督微调 (SFT) 和强化学习 (RL)都是目前大模型的基础模型后训练技术&#xff0c;像DeepSeek-R1、kimi等的训练方法都将两种技术应用到了极致。 如何去设计训练步骤&#xff08;先SFT再RL&#xff0c;还是直接RL&#xff09;都需要对SFT和RL的能力有较深刻的了解。 本篇就以面…

Three.js 快速入门教程【一】开启你的 3D Web 开发之旅

系列文章目录 Three.js 快速入门教程【一】开启你的 3D Web 开发之旅 Three.js 快速入门教程【二】透视投影相机 Three.js 快速入门教程【三】渲染器 Three.js 快速入门教程【四】三维坐标系 Three.js 快速入门教程【五】动画渲染循环 Three.js 快速入门教程【六】相机控件 Or…

安全问答—安全的基本架构

前言 将一些安全相关的问答进行整理汇总和陈述&#xff0c;形成一些以问答呈现的东西&#xff0c;加入一些自己的理解&#xff0c;欢迎路过的各位大佬进行讨论和论述。很多内容都会从甲方的安全认知去进行阐述。 1.安全存在的目的&#xff1f; 为了支持组织的目标、使命和宗…

Navicat Premium17 连接Oracle出现 “未加载 Oracle库

报错信息如下 解决方案&#xff1a; 安装 Navicat for Oracle 12 for Mac 若已经打开任何来源&#xff0c;但运行还是遇到已损坏按照如下操作即可解决&#xff01; 终端中输入 xattr -cr cr 后面输入一个空格&#xff01;不要回车&#xff01;如下图 把 Navicat for Oracle…

Transformer解析——(一)概述

本系列已完结&#xff0c;全部文章地址为&#xff1a; Transformer解析——&#xff08;一&#xff09;概述-CSDN博客 Transformer解析——&#xff08;二&#xff09;Attention注意力机制-CSDN博客 Transformer解析——&#xff08;三&#xff09;Encoder-CSDN博客 Transforme…

Qt的QToolButton的使用

在C中使用QToolButton的详细步骤如下&#xff1a; 1. 包含头文件 #include <QToolButton> #include <QAction> #include <QMenu>2. 创建QToolButton实例 QToolButton *toolButton new QToolButton(parentWidget); // parentWidget为父部件指针3. 基础属性…

Canvas进阶-2、可视化应用

前言 Canvas 可以用来创建各种 数据可视化 图表和图形&#xff0c;通过绘制不同的形状、线条和颜色来展示数据的特征和趋势。 数据可视化的基本原理是将数据转化为可视化的图形元素&#xff0c;以便人们更容易理解和分析数据。这涉及到以下几个方面&#xff1a; 数据映射&…

力扣-回溯-17 电话号码的字母组合

思路 和之前的回溯不同的是&#xff0c;要遍历完所有的数字&#xff0c;并且在单层递归逻辑里需要遍历一整个字符串 代码 class Solution { public:vector<string> letters {"", "", "abc", "def", "ghi", "…

Windows11切换回Windows10风格右键菜单

参考文章&#xff1a;Win11新版右键菜单用不惯&#xff1f;一键切换回Win10经典版&#xff01;-CSDN博客 以管理员权限运行命令行cmd 切换为经典旧版右键菜单&#xff0c;执行 reg.exe add “HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServe…