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

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.rhkb.cn/news/23134.html

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

相关文章

Spring事务原理 二

在上一篇博文《Spring事务原理 一》中&#xff0c;我们熟悉了Spring声明式事务的AOP原理&#xff0c;以及事务执行的大体流程。 本文中&#xff0c;介绍了Spring事务的核心组件、传播行为的源码实现。下一篇中&#xff0c;我们将结合案例&#xff0c;来讲解实战中有关事务的易…

【机器学习】【KMeans聚类分析实战】用户分群聚类详解——SSE、CH 指数、SC全解析,实战电信客户分群案例

1.引言 在实际数据分析中&#xff0c;聚类算法常用于客户分群、图像分割等场景。如何确定聚类数 k 是聚类分析中的关键问题之一。本文将以“用户分群”为例&#xff0c;展示如何通过 KMeans 聚类&#xff0c;利用 SSE&#xff08;误差平方和&#xff0c;也称 Inertia&#xff…

20-R 绘图 - 饼图

R 绘图 - 饼图 R 语言提供来大量的库来实现绘图功能。 饼图&#xff0c;或称饼状图&#xff0c;是一个划分为几个扇形的圆形统计图表&#xff0c;用于描述量、频率或百分比之间的相对关系。 R 语言使用 pie() 函数来实现饼图&#xff0c;语法格式如下&#xff1a; pie(x, l…

搭建 Hadoop 3.3.6 伪分布式

搭建 Hadoop 3.3.6 伪分布式 IP 192.168.157.132 初始化操作 更改yum源 # 1_1.安装Wget yum install wget# 1_2.备份CentOS-Base.repo文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak# 2.下载阿里yum源配置 wget -O /etc/yum.repos.d/Cen…

python电影数据分析及可视化系统建设

博主介绍&#xff1a;✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

手机壁纸设计中,金属质感字体可以为壁纸增添独特的视觉效果和高端感

在手机壁纸设计中&#xff0c;金属质感字体可以为壁纸增添独特的视觉效果和高端感。以下是一些关于金属质感字体在手机壁纸设计中的应用建议和案例分析&#xff1a; 1. 金属质感字体的特点 视觉冲击力强&#xff1a;金属质感字体具有独特的光泽和质感&#xff0c;能够在视觉上…

使用ezuikit-js封装一个对接摄像头的组件

ezuikit-js 是一个基于 JavaScript 的视频播放库&#xff0c;主要用于在网页中嵌入实时视频流播放功能。它通常用于与支持 RTSP、RTMP、HLS 等协议的摄像头或视频流服务器进行交互&#xff0c;提供流畅的视频播放体验。 主要功能 多协议支持&#xff1a;支持 RTSP、RTMP、HLS …

PHP post 数据丢失问题

max_input_vars是PHP配置选项之一&#xff0c;用于设置一个请求中允许的最大输入变量数。它指定了在处理POST请求或者通过URL传递的参数时&#xff0c;PHP脚本能够接收和处理的最大变量数量。 max_input_vars的默认值是1000&#xff0c;意味着一个请求中最多可以包含1000个输入…

jenkins docker容器中安装python3.9环境

在运维过程中&#xff0c;不过避免的需要使用到python&#xff0c;在jenkins 的docker容器中&#xff0c;是没有python环境的&#xff0c;需要我们自己手动安装一下。 查看是否有工具apt-get 直接输入apt-get 然后回车&#xff0c;出现以下内容&#xff0c;表示支持apt-get命令…

《Spring实战》(第6版) 保护Spring

第1部分 Spring基础 第4章 使用非关系型数据 关系型数据库一直是首选&#xff0c;近年来"NoSQL"数据库提供了数据存储的不同概念和结构。 SpringData为很多NoSQL数据库提供了支持&#xff0c;包括MongoDB、Cassandra、Couchbase、Neo4j、Redis等&#xff0c;无论选…

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

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

【JavaEE】-- 多线程(初阶)2

文章目录 3.线程的状态3.1观察线程的所有状态3.2线程状态和状态转移的意义 4.多线程带来的的风险-线程安全 (重点)4.1观察线程不安全4.2 线程不安全的原因4.2.1 线程调度是随机的4.2.2 修改共享数据4.2.3 原子性4.2.4 内存可见性4.2.5 指令重排序 4.3解决之前的线程不安全问题 …

安卓系统远程控制电脑方法,手机远控教程,ToDesk工具

不知道大家有没有觉得手机、平板虽然很好用&#xff0c;却也仍存在有很多替代不了电脑的地方。就比如说撰写文档、做数据报表啥的就不如PC端操作般方便&#xff0c;就跟别说PS修图、AE视频剪辑等需高性能设备来带动才易用的了。 好在也是有对策可解决&#xff0c;装个ToDesk远程…

机器学习(李宏毅)——RL(强化学习)

一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记&#xff0c;感谢台湾大学李宏毅教授的课程&#xff0c;respect&#xff01;&#xff01;&#xff01; 二、大纲 What is RL&#xff1f;Three steps in MLPolicy GradientActor-CriticReward Shaping 三、What …

【Go】Go wire 依赖注入

1. wire 简介 wire 是一个 Golang 的依赖注入框架&#xff08;类比 Spring 框架提供的依赖注入功能&#xff09; ⭐ 官方文档&#xff1a;https://github.com/google/wire 这里关乎到编程世界当中一条好用的设计原则&#xff1a;A用到了B&#xff0c;那么B一定是通过依赖注入的…

《动手学机器人学》笔记

目录 0.介绍1.概述&#xff5c;空间位置、姿态的描述&#xff08;33&#xff09;&#xff5c;《动手学机器人学》2.&#xff08;2&#xff09;-Robotics Toolbox①&#xff08;V10.4&#xff09;3.齐次坐标与变换矩阵4.一般形式的旋转变换矩阵5.&#xff08;轴角法&#xff09;…

【蓝桥杯单片机】第十三届省赛第二场

一、真题 二、模块构建 1.编写初始化函数(init.c) void Cls_Peripheral(void); 关闭led led对应的锁存器由Y4C控制关闭蜂鸣器和继电器 2.编写LED函数&#xff08;led.c&#xff09; void Led_Disp(unsigned char ucLed); 将ucLed取反的值赋给P0 开启锁存器 关闭锁存…

大语言模型基础

简介 AI大模型是“人工智能预训练大模型”的简称&#xff0c;包含了“预训练”和“大模型”两层含义&#xff0c;二者结合产生了一种新的人工智能模式&#xff0c;即模型在大规模数据集上完成了预训练后无需微调&#xff0c;或仅需要少量数据的微调&#xff0c;就能直接支撑各…

java Web

1.JavaWeb开发 前面的学习javase开发&#xff0c;而javaweb开发需要服务器和网页。 具备: java mysql jdbc htmlcssjs。 web服务器: tomcat服务器. 部署项目。 https://tomcat.apache.org/download-80.cgi 解压软件压缩包即可 不要放在中文目录和特殊符号的目录下 启动tomcat服…

SOME/IP--协议英文原文讲解12(完结)

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.3 Compa…