【openGauss5.0企业版一主一备集群】—运维

news2024/11/19 7:46:39

【openGauss5.0企业版一主一备集群】—运维

    • 🔻 一、openGauss5.0主从集群的维护
      • 🔰 1.1 查看单个节点状态
      • 🔰 1.2 查看集群所有节点状态
      • 🔰 1.3 集群启停
      • 🔰 1.4 switchover 主备切换
      • 🔰 1.5 模拟主库宕机,备库处于 Standby Need repair(Disconnected)
      • 🔰 1.6 模拟双主
    • 🔻 总结—温故知新

在这里插入图片描述


👈【上一篇】
💖The Begin💖 点点关注,收藏不迷路💖
【下一篇】👉

🔻 一、openGauss5.0主从集群的维护

🔰 1.1 查看单个节点状态

###🟢 切换omm用户 
[root@pg-node01 ~]# su - omm

###🟢 查看pg-node01节点状态,其中,pg-node01为待查询主机的名称。
[omm@pg-node01 ~]$  gs_om -t status -h pg-node01
-----------------------------------------------------------------------

cluster_state             : Normal
redistributing            : No

-----------------------------------------------------------------------

node                      : 1
node_name                 : pg-node01
instance_id               : 6001
node_ip                   : 192.168.181.11
data_path                 : /opt/software/openGauss5.0/install/data/dn
instance_port             : 15600
type                      : Datanode
instance_state            : Normal
az_name                   : AZ1
static_connections        : 1
HA_state                  : Normal
instance_role             : Primary

-----------------------------------------------------------------------

[omm@pg-node01 ~]$ 
  • ♻️ 节点角色参数说明

在这里插入图片描述

🔰 1.2 查看集群所有节点状态

###🟢 切换omm用户 
[root@pg-node01 ~]# su - omm

###🟢 查看集群所有节点状态
[omm@pg-node01 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    node     node_ip         port      instance                                           state
---------------------------------------------------------------------------------------------------------------
1  pg-node01 192.168.181.11  15600      6001 /opt/software/openGauss5.0/install/data/dn   P Primary Normal
2  pg-node02 192.168.181.12  15600      6002 /opt/software/openGauss5.0/install/data/dn   S Standby Normal
[omm@pg-node01 ~]$ 
  • ♻️ 节点状态参数说明
    -

🔰 1.3 集群启停

可以通过omm用户在集群的任一主节点上进行操作。

###🟢 停止openGauss数据库集群服务
[omm@pg-node01 ~]$ gs_om -t stop
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.
[omm@pg-node01 ~]$ 

###🟢 启动openGauss数据库集群服务
[omm@pg-node01 ~]$ gs_om -t start
Starting cluster.
=========================================
[SUCCESS] pg-node01
2023-07-06 15:12:27.240 64a7121b.1 [unknown] 139702749823232 [unknown] 0 dn_6001_6002 01000  0 [BACKEND] WARNING:  could not create any HA TCP/IP sockets
2023-07-06 15:12:27.242 64a7121b.1 [unknown] 139702749823232 [unknown] 0 dn_6001_6002 01000  0 [BACKEND] WARNING:  Failed to initialize the memory protect for g_instance.attr.attr_storage.cstore_buffers (1024 Mbytes) or shared memory (4470 Mbytes) is larger.
[SUCCESS] pg-node02
2023-07-06 15:12:30.915 64a7121e.1 [unknown] 140277375107328 [unknown] 0 dn_6001_6002 01000  0 [BACKEND] WARNING:  could not create any HA TCP/IP sockets
2023-07-06 15:12:30.918 64a7121e.1 [unknown] 140277375107328 [unknown] 0 dn_6001_6002 01000  0 [BACKEND] WARNING:  Failed to initialize the memory protect for g_instance.attr.attr_storage.cstore_buffers (1024 Mbytes) or shared memory (4470 Mbytes) is larger.
=========================================
Successfully started.
[omm@pg-node01 ~]$ 


###🟢 openGauss数据库集群状态检查
[omm@pg-node01 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    node     node_ip         port      instance                                           state
---------------------------------------------------------------------------------------------------------------
1  pg-node01 192.168.181.11  15600      6001 /opt/software/openGauss5.0/install/data/dn   P Primary Normal
2  pg-node02 192.168.181.12  15600      6002 /opt/software/openGauss5.0/install/data/dn   S Standby Normal
[omm@pg-node01 ~]$ 

🔰 1.4 switchover 主备切换

数据库节点说明
192.168.181.11主节点
192.168.181.12从节点

这里主库是192.168.181.11,我们将192.168.181.12激活成主库,需要在192.168.181.12上用omm 执行:gs_ctl switchover -D /op/openGauss/install/data/dn

###🟢 步骤1、切换omm用户 ---192.168.181.12
[root@pg-node01 ~]# su - omm

###🟢 步骤2、切换192.168.181.12 为主节点
[omm@pg-node02 ~]$ gs_ctl switchover -D /opt/software/openGauss5.0/install/data/dn
[2023-07-06 15:19:26.007][36453][][gs_ctl]: gs_ctl switchover ,datadir is /opt/software/openGauss5.0/install/data/dn 
[2023-07-06 15:19:26.007][36453][][gs_ctl]: switchover term (1)
[2023-07-06 15:19:26.015][36453][][gs_ctl]: waiting for server to switchover........
[2023-07-06 15:19:31.119][36453][][gs_ctl]: done
[2023-07-06 15:19:31.119][36453][][gs_ctl]: switchover completed (/opt/software/openGauss5.0/install/data/dn)
[omm@pg-node02 ~]$ 
  • ❗ 注意

🟢1、对于同一数据库,上一次主备切换未完成,不能执行下一次切换。

🟢2、当业务正在操作时,发起switchover,可能主机的线程无法停止导致switchover显示超时,实际后台仍然在运行,等主机线程停止后,switchover即可完成。比如在主机删除一个大的分区表时,可能无法响应switchover发起的信号。

✅ switchover或failover成功后,执行如下命令记录当前主备机器信息:

###🟢 步骤3、记录当前主备机器信息
[omm@pg-node02 ~]$ gs_om -t refreshconf
Generating dynamic configuration file for all nodes.
Successfully generated dynamic configuration file.
[omm@pg-node02 ~]$ 

###🟢 步骤4、切换检查(可以看到 192.168.181.12,从 Standby Normal变为了 Primary Normal)
[omm@pg-node02 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    node     node_ip         port      instance                                           state
---------------------------------------------------------------------------------------------------------------
1  pg-node01 192.168.181.11  15600      6001 /opt/software/openGauss5.0/install/data/dn   P Standby Normal
2  pg-node02 192.168.181.12  15600      6002 /opt/software/openGauss5.0/install/data/dn   S Primary Normal
[omm@pg-node02 ~]$ 

在这里插入图片描述

🔰 1.5 模拟主库宕机,备库处于 Standby Need repair(Disconnected)

[omm@pg-node02 ~]$ gs_ctl stop -D /opt/software/openGauss5.0/install/data/dn
[2023-07-06 17:03:15.321][17481][][gs_ctl]: gs_ctl stopped ,datadir is /opt/software/openGauss5.0/install/data/dn 
waiting for server to shut down.... done
server stopped
[omm@pg-node02 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Unavailable
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    node     node_ip         port      instance                                           state
---------------------------------------------------------------------------------------------------------------
1  pg-node01 192.168.181.11  15600      6001 /opt/software/openGauss5.0/install/data/dn   P Standby Need repair(Disconnected)
2  pg-node02 192.168.181.12  15600      6002 /opt/software/openGauss5.0/install/data/dn   S Down    Manually stopped
[omm@pg-node02 ~]$ 

在这里插入图片描述

###🟢 1、主备之间可以通过switchover进行角色切换,主机pg-node02故障后可以通过failover对备机pg-node01进行升主。
[omm@pg-node01 ~]$ gs_ctl failover -D  /opt/software/openGauss5.0/install/data/dn
[2023-07-06 17:25:16.619][42471][][gs_ctl]: gs_ctl failover ,datadir is /opt/software/openGauss5.0/install/data/dn 
[2023-07-06 17:25:16.619][42471][][gs_ctl]: failover term (1)
[2023-07-06 17:25:16.631][42471][][gs_ctl]:  waiting for server to failover...
.[2023-07-06 17:25:17.692][42471][][gs_ctl]:  done
[2023-07-06 17:25:17.692][42471][][gs_ctl]:  failover completed (/opt/software/openGauss5.0/install/data/dn)
[omm@pg-node01 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Degraded
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    node     node_ip         port      instance                                           state
---------------------------------------------------------------------------------------------------------------
1  pg-node01 192.168.181.11  15600      6001 /opt/software/openGauss5.0/install/data/dn   P Primary Normal
2  pg-node02 192.168.181.12  15600      6002 /opt/software/openGauss5.0/install/data/dn   S Down    Manually stopped
[omm@pg-node01 ~]$ 


###🟢 2、执行以下命令,以standby模式启动备节点pg-node02。
[omm@pg-node02 ~]$ gs_ctl start -D  /opt/software/openGauss5.0/install/data/dn -M standby
[2023-07-06 17:47:13.138][20533][][gs_ctl]: gs_ctl started,datadir is /opt/software/openGauss5.0/install/data/dn 
[2023-07-06 17:47:13.202][20533][][gs_ctl]: waiting for server to start...
.0 LOG:  [Alarm Module]can not read GAUSS_WARNING_TYPE env.
	
0 LOG:  [Alarm Module]Host Name: pg-node02 
	
0 LOG:  [Alarm Module]Host IP: pg-node02. Copy hostname directly in case of taking 10s to use 'gethostbyname' when /etc/hosts does not contain <HOST IP>
	
0 LOG:  [Alarm Module]Cluster Name: dbCluster 
	
0 LOG:  [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 58
	
0 WARNING:  failed to open feature control file, please check whether it exists: FileName=gaussdb.version, Errno=2, Errmessage=No such file or directory.
0 WARNING:  failed to parse feature control file: gaussdb.version.
0 WARNING:  Failed to load the product control file, so gaussdb cannot distinguish product version.
2023-07-06 17:47:13.367 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 DB010  0 [REDO] LOG:  Recovery parallelism, cpu count = 4, max = 4, actual = 4
2023-07-06 17:47:13.367 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 DB010  0 [REDO] LOG:  ConfigRecoveryParallelism, true_max_recovery_parallelism:4, max_recovery_parallelism:4
2023-07-06 17:47:13.382 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [BACKEND] LOG:  [Alarm Module]can not read GAUSS_WARNING_TYPE env.
	
2023-07-06 17:47:13.382 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [BACKEND] LOG:  [Alarm Module]Host Name: pg-node02 
	
2023-07-06 17:47:13.382 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [BACKEND] LOG:  [Alarm Module]Host IP: pg-node02. Copy hostname directly in case of taking 10s to use 'gethostbyname' when /etc/hosts does not contain <HOST IP>
	
2023-07-06 17:47:13.382 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [BACKEND] LOG:  [Alarm Module]Cluster Name: dbCluster 
	
2023-07-06 17:47:13.382 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [BACKEND] LOG:  [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 58
	
2023-07-06 17:47:13.387 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [BACKEND] LOG:  loaded library "security_plugin"
2023-07-06 17:47:13.428 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 01000  0 [BACKEND] WARNING:  could not create any HA TCP/IP sockets
2023-07-06 17:47:13.432 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [BACKEND] LOG:  InitNuma numaNodeNum: 1 numa_distribute_mode: none inheritThreadPool: 0.
2023-07-06 17:47:13.432 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 01000  0 [BACKEND] WARNING:  Failed to initialize the memory protect for g_instance.attr.attr_storage.cstore_buffers (1024 Mbytes) or shared memory (4470 Mbytes) is larger.
2023-07-06 17:47:13.525 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [CACHE] LOG:  set data cache  size(805306368)
2023-07-06 17:47:13.915 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [SEGMENT_PAGE] LOG:  Segment-page constants: DF_MAP_SIZE: 8156, DF_MAP_BIT_CNT: 65248, DF_MAP_GROUP_EXTENTS: 4175872, IPBLOCK_SIZE: 8168, EXTENTS_PER_IPBLOCK: 1021, IPBLOCK_GROUP_SIZE: 4090, BMT_HEADER_LEVEL0_TOTAL_PAGES: 8323072, BktMapEntryNumberPerBlock: 2038, BktMapBlockNumber: 25, BktBitMaxMapCnt: 512
2023-07-06 17:47:13.973 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [BACKEND] LOG:  gaussdb: fsync file "/opt/software/openGauss5.0/install/data/dn/gaussdb.state.temp" success
2023-07-06 17:47:13.974 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [BACKEND] LOG:  create gaussdb state file success: db state(STARTING_STATE), server mode(Standby), connection index(1)
2023-07-06 17:47:14.001 64a73661.1 [unknown] 139657269428480 [unknown] 0 dn_6001_6002 00000  0 [BACKEND] LOG:  max_safe_fds = 974, usable_fds = 1000, already_open = 16
.
[2023-07-06 17:47:15.221][20533][][gs_ctl]:  done
[2023-07-06 17:47:15.221][20533][][gs_ctl]: server started (/opt/software/openGauss5.0/install/data/dn)
[omm@pg-node02 ~]$ 


###🟢 3、在pg-node01主节点进行集群状态检查,----集群恢复成功
[omm@pg-node01 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    node     node_ip         port      instance                                           state
---------------------------------------------------------------------------------------------------------------
1  pg-node01 192.168.181.11  15600      6001 /opt/software/openGauss5.0/install/data/dn   P Primary Normal
2  pg-node02 192.168.181.12  15600      6002 /opt/software/openGauss5.0/install/data/dn   S Standby Normal
[omm@pg-node01 ~]$ 

###🟢 4、保存数据库主备机器信息
[omm@pg-node01 ~]$ gs_om -t refreshconf
Generating dynamic configuration file for all nodes.
Successfully generated dynamic configuration file.
[omm@pg-node01 ~]$ 

🔰 1.6 模拟双主

按照如下步骤恢复成正常的主备状态。避免造成数据丢失。

###🟢 1、执行以下命令,以primary模式启动备节点pg-node02。
[omm@pg-node02 ~]$ gs_ctl start -D  /opt/software/openGauss5.0/install/data/dn -M primary
[omm@pg-node02 ~]$ 


###🟢 2、在pg-node01主节点进行集群状态检查---pg-node01、pg-node02均为主节点--》这种状态为异常状态
[omm@pg-node01 ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Unavailable
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    node     node_ip         port      instance                                           state
---------------------------------------------------------------------------------------------------------------
1  pg-node01 192.168.181.11  15600      6001 /opt/software/openGauss5.0/install/data/dn   P Primary Normal
2  pg-node02 192.168.181.12  15600      6002 /opt/software/openGauss5.0/install/data/dn   S Primary Normal
[omm@pg-node01 ~]$ 

###🟢 3、确定降为备机的节点pg-node02,在pg-node02节点上执行如下命令关闭服务。
[omm@pg-node02 ~]$ gs_ctl stop -D /opt/software/openGauss5.0/install/data/dn
[2023-07-06 17:58:33.883][21761][][gs_ctl]: gs_ctl stopped ,datadir is /opt/software/openGauss5.0/install/data/dn 
waiting for server to shut down..... done
server stopped
[omm@pg-node02 ~]$

###🟢 4、执行以下命令,以standby模式启动pg-node02备节点。
[omm@pg-node02 ~]$ gs_ctl start -D  /opt/software/openGauss5.0/install/data/dn -M standby


###🟢 5、在pg-node01主节点进行集群状态检查,----pg-node02故障(Standby Need repair(WAL))
[omm@pg-node01 ~]$  gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Degraded
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    node     node_ip         port      instance                                           state
---------------------------------------------------------------------------------------------------------------
1  pg-node01 192.168.181.11  15600      6001 /opt/software/openGauss5.0/install/data/dn   P Primary Normal
2  pg-node02 192.168.181.12  15600      6002 /opt/software/openGauss5.0/install/data/dn   S Standby Need repair(WAL)
[omm@pg-node01 ~]$ 

###🟢 6、通过gs_ctl build -D 命令对故障节点pg-node02进行重建
[omm@pg-node02 ~]$ gs_ctl build -b auto -D /opt/software/openGauss5.0/install/data/dn

###🟢 7、在pg-node01主节点进行集群状态检查---集群状态恢复成功
[omm@pg-node01 ~]$  gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    node     node_ip         port      instance                                           state
---------------------------------------------------------------------------------------------------------------
1  pg-node01 192.168.181.11  15600      6001 /opt/software/openGauss5.0/install/data/dn   P Primary Normal
2  pg-node02 192.168.181.12  15600      6002 /opt/software/openGauss5.0/install/data/dn   S Standby Normal
[omm@pg-node01 ~]$ 

###🟢 8、保存数据库主备机器信息
[omm@pg-node01 ~]$ gs_om -t refreshconf
Generating dynamic configuration file for all nodes.
Successfully generated dynamic configuration file.
[omm@pg-node01 ~]$ 

在这里插入图片描述

🔻 总结—温故知新

❓ 该章详细介绍和实现了openGauss5.0企业版一主一备集群运维。
❓ openGauss5.0企业版一主一备集群启停,主备切换。
❓ openGauss5.0企业版一主一备模拟主库宕机、模拟双主及集群状态恢复。

👈【上一篇】
💖The End💖 点点关注,收藏不迷路💖
【下一篇】👉

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

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

相关文章

Git gui教程---第三篇 Git gui的使用 配置提交信息

配置提交信息 配置好提交的信息&#xff0c;跑路的话&#xff0c;别人也能找到你&#xff0c;哈哈哈。点击“编辑”&#xff0c;选择“选项”&#xff0c;需要关注的地方有三个&#xff0c;一个是全局的版本库&#xff0c;一个是TEST版本库&#xff0c;一个是合并工具。 全局代…

数据库表的创建以及操作

1.创建数据库Market,在Market中创建数据表customers&#xff0c;customers表结构如表4.6所示&#xff0c;按要求进行操作。 (1)创 建数 据库 Market。 (2)创建数据表custo mers, 在c_num字段 上添加主键约束 和自增 约束&#xff0c;在c_birth字段 上添加非空约束。 (3)将c_c…

梯度流(Gradient Flow):探索通往最小值之路

©PaperWeekly 原创 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP、神经网络 在这篇文章中&#xff0c;我们将探讨一个被称为“梯度流&#xff08;Gradient Flow&#xff09;”的概念。简单来说&#xff0c;梯度流是将我们在用梯度下降法中寻找最小值的过程中的各个点连…

【Linux】进程信号之信号的产生

进程信号 一 一、信号入门1、信号的一些特性2、信号的处理方式信号捕捉初识 3、Linux下的信号 二、信号的产生1、通过终端按键产生信号2、调用系统函数向进程发信号a、kill函数b、raise函数c、abort函数 3. 由软件条件产生信号4、硬件异常产生信号 结语 一、信号入门 什么是信号…

yolov7增加AFPN

论文学习&#xff1a;AFPN: Asymptotic Feature Pyramid Network for Object Detection-全新特征融合模块AFPN&#xff0c;完胜PAFPN_athrunsunny的博客-CSDN博客 论文的作者是说在yolo上效果有提升&#xff0c;不过还没有测试&#xff0c;具体还不清楚&#xff0c;把代码撸出来…

开源网安受邀参加2023全球数字经济大会,分享软件安全落地实践经验

近日&#xff0c;2023全球数字经济大会数字安全生态建设专题论坛在京隆重举行。作为2023全球数字经济大会的重要组成部分&#xff0c;本次论坛围绕“数字安全生态建设”这一主题&#xff0c;邀请政府主管部门、行业专家学者、关键信息基础设施运营主体、数字安全企业、数据要素…

第八章 实现商品详情数据异构及静态化

lua操作 设计图详解 1、 普通模式,用户获得redis数据需要经过nginx,php-fpm,php框架,再到redis 2 、直接模式,对于部分高并发请求, 为了提高吞吐率, 有必要砍掉一些环节和应用来实现快速响应,如上图,这里我们将普通模式中的php-fpm和php框架砍掉了。nginx直接从r…

arvr虚拟现实服务商为文旅行业提供全新的交互式营销体验

在AR领域&#xff0c;很多企业都会遇到场景化展示需求的问题&#xff0c;比如需要制作一个宣传片视频、远程协作软件或者产品营销等等&#xff0c;对于这样的场景制作需求&#xff0c;一般都是找像深圳华锐视点这样的第三方AR开发技术公司进行AR场景定制。 AR是将计算机生成的虚…

在萌诺母婴综合体旗下萌诺尊享(新华店)坐月子可以享受哪些服务?

第一次怀孕生孩子内心比较恐惧&#xff0c;尤其担心月子坐不好身体和身材难以恢复。在怀孕期间刷微博看到郑恺苗苗在萌诺尊享(新华店)坐月子的vlog&#xff0c;感觉这里的环境和服务都还不错&#xff0c;主要是看到苗苗在月子期间身材恢复的很快&#xff0c;于是和老公亲自去门…

深入理解计算机系统(一)

信息就是位上下文 #include<stdio.h>int main() {printf("hello,world\n");return 0; } 上面是一个hello程序。它的生命周期是从一个源程序开始的&#xff0c;就是程序员通过编辑器创建并保存的文本文件&#xff0c;文件名是hello.c。&#xff08;源程序实际…

QT 之蓝牙BLE编程

简介 使用PC蓝牙和蓝牙透传模块通讯。 准备 QT core gui bluetoothQT蓝牙库相关头文件 #include <QtBluetooth/qbluetoothglobal.h> #include <QtBluetooth/qbluetoothlocaldevice.h> #include <qbluetoothaddress.h> #include <qbluetoothdev…

造船码头行车/电动葫芦控制系统的无线技改

一、应用背景 近年来&#xff0c;我国造船业在高技术船舶研发和建造方面持续取得新突破&#xff0c;据统计截止到2022年&#xff0c;我国造船业完工量、新接订单量、手持订单量三大指标国际市场份额均保持世界前列。连续13年位居全球居首。随着船舶制造的综合能力不断提高&…

微信小程序制作 购物商城首页 【内包含源码】

1、实现效果 手机效果预览,这里的首页使用到了轮播图。页面图片数据可以替换成自己的数据。 2、开发者工具效果图 3、项目的目录结构 4、首页核心代码 4.1 index.js 这里用来存放数据,页面的数据。目前是假数据,也可以调用接口接收真实数据 // index.jsimport {request }…

spring-依赖注入的方式

setter注入-可选依赖注入 简单类型&#xff1a; 1.配置类 2.set方法 引用类型&#xff1a; 构造器注入-强制依赖注入 简单类型&#xff1a; 引用类型&#xff1a; 通过有参构造&#xff0c;获得需要注入的对象 <construct-arg />标签中name属性中填写的时构造方…

数据结构--二叉树的层遍历

数据结构–二叉树的层遍历 算法思想: ①初始化一个辅助 队列 \color{red}队列 队列 ②根结点入队 ③若队列非空&#xff0c;则队头结点出队&#xff0c;访问该结点&#xff0c;并将其左、右孩子插入队尾&#xff08;如果有的话) ④重复③直至队列为空 代码实现 typedef struc…

pycharm的环境配置运行

刚开始用pycharm打开一个项目文件时&#xff0c;由于没有配置文件&#xff0c; 程序是不能运行的 运行的按钮为灰色 此时在项目浏览器中右键点击项目主程序&#xff0c;在下拉菜单中选择运行&#xff0c; 快捷键为ctrlshiftF10在配置中会自动添加以主程序为名称的配置 这时可…

vue3实现折叠面板

总是忘记vue怎么实现折叠面板&#xff0c;记录一下&#xff0c;没有动画样式。 <div class"item-content padding15" style"font-size: 0.875rem;" click"changeCollapse(index)" v-for"(item, index) in collData.dataList" :key&…

mtk log、kernel log、adb log的详细使用

目录 mtk logkernel logadb log 打印MTK log&#xff0c;里面就包含了kernel层的log&#xff0c;像我们adb log打印的是上层应用的log&#xff0c;mtk log打印的则是更底层的log。 那么什么时候需要用到mtk log 呢&#xff1f; 就比如你想抓一些从关机到开机的log&#xff0c;…

基于 SpringBoot + Vue 的前后端分离的高校招生管理系统

【程序员徐师兄】&#xff1a;hello你好我是程序员徐师兄&#xff0c;6年大厂经验。很高兴你能来阅读&#xff0c;希望我们能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新…

AICG - Stable Diffusion 的扩展插件 (Extensions) 的配置与使用

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131576762 Prompt: (masterpiece, top quality, best quality, ((standing in centre)), ((1girl, black hair)), ((upper body, symmetrical com…