【OceanBase诊断调优】—— Unit 迁移问题的排查方法
适用版本:V2.1.x、V2.2.x、V3.1.x、V3.2.x
本文主要介绍 OceanBase 数据集在副本迁移过程中遇到的问题的排查方法。
适用版本
V2.1.x、V2.2.x、V3.1.x、V3.2.x
手动调度迁移问题的排查
OceanBase 数据库的 RootService 模块负责 Unit 迁移的调度,如果一直没有对迁移进行调度,可以通过以下方法进行排查。
-
通过以下 SQL 找到 RootService 的 IP 地址。
obclient> SELECT * FROM __all_server WHERE with_rootserver=1; +----------------------------+----------------------------+----------------+----------+----+-------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+ | gmt_create | gmt_modified | svr_ip | svr_port | id | zone | inner_port | with_rootserver | status | block_migrate_in_time | build_version| stop_time | start_service_time | first_sessid | with_partition | last_offline_time | +----------------------------+----------------------------+----------------+----------+----+-------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+ | 2021-03-24 10:32:55.367438 | 2021-03-24 10:35:56.904319 | xx.xxx.xxx.xxx | 2882 | 2 | zone2 | 2881 | 1 | active | 0 | 2.2.76_20210314152507-03d916596ba416277bf49a1a2fccb0b0d36a1631(Mar 14 2021 15:56:27) | 0 | 1616553286007503 | 0 | 1 | 0 | +----------------------------+----------------------------+----------------+----------+----+-------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+ 1 row in set (0.01 sec) -
登录到 RootService 所在的服务器,通过以下命令搜索 balancer 相关的日志。
[admin@oceanbase /]$ grep balancer log/rootservice.log
迁移过慢问题排查
-
检查数据库配置项,建议的值如下:
-
将
server_data_copy_out_concurrency配置为 10。 -
将
server_data_copy_in_concurrency配置为 10。 -
将
sys_bkgd_io_low_percentage按需配置。 -
将
sys_bkgd_net_percentage按需配置。
其中,
server_data_copy_in_concurrency与server_data_copy_out_concurrency分别用于配置单个节点迁入数据与迁出数据的最大并发数。sys_bkgd_io_low_percentage表示sys_io_percent的下限,如果下限太低则可能导致合并的 I/O 很慢,可以通过适当调大这个值来调大 I/O。sys_bkgd_net_percentage表示后端网络带宽占用。有关以上配置项的详细信息,请参见《OceanBase 数据库 参考指南》中的 系统配置项 章节。
-
-
检查 Unit 迁移操作是否为异地进行 。
通过以下命令检查延时,如果延时大于 5 ms,则表示迁移操作为异地进行。将操作系统的
sysctl.conf文件中的tcp_slow_start_after_idle参数设置为 0,避免 TCP 连接在空闲后被重新设置。其中observer_ip表示迁移目的服务器的 IP 地址。[admin@oceanbase /]$ ping <observer_ip> -
检查 I/O 是否达到磁盘瓶颈。
通过以下命令确认是否达到磁盘 I/O 瓶颈。
[root@hostname /]# iostat -x -k 1 Linux 3.10.0-327.ali2019.alios7.x86_64 (k08j13249.eu95sqa) 03/30/2021 _x86_64_ (64 CPU)avg-cpu: %user %nice %system %iowait %steal %idle16.29 0.00 6.85 0.02 0.00 76.84通过以下命令检查
io_size_byte列中 2097152 对应行io_ps是否达到 500 以上。[admin@oceanbase /]$ cat etc/io_resource.conf version 1 io_type io_size_byte io_ps io_rt_us 0 4096 139979.75 123.25 0 8192 122290.50 139.44 0 16384 102972.00 164.16 0 32768 64478.75 196.28 0 65536 38162.25 219.13 0 131072 20608.50 232.28 0 262144 10537.00 280.90 0 524288 5284.00 414.86 1 2097152 890.00 1781.68 submit_thread_cnt 1 getevent_thread_cnt 5如果
io_ps未达到 500,检查日志,查看sys_io_high_percent是否与配置sys_bkgd_io_low_percentage一致。如果不一致,则说明存在 I/O 限流。[admin@oceanbase /]$ grep io_stat log/observer.log [2019-01-11 16:45:35.629871] INFO [COMMON] ob_io_manager.cpp:1424 [26043][Y0-0000000000000000] [lt=18] Current io stat, (sys_io_percent=60, sys_iops_up_limit=770, user_max_rt=20775.528088989257, user_io_stat={average_size:0, average_rt_us:"0.000000000000", old_stat:{io_cnt:27169649, io_bytes:349257160063, io_rt_us:276864943639}, new_stat:{io_cnt:27169649, io_bytes:349257160063, io_rt_us:276864943639}}, sys_io_stat={average_size:2097152, average_rt_us:"2784.086956521739", old_stat:{io_cnt:10151653, io_bytes:21289559392256, io_rt_us:127287447387}, new_stat:{io_cnt:10151676, io_bytes:21289607626752, io_rt_us:127287511421}}, io_conf={sys_io_low_percent:50, sys_io_high_percent:60, user_iort_up_percent:100, cpu_high_water_level:7680, write_failure_detect_interval:60000000, read_failure_black_list_interval:300000000, retry_warn_limit:2, retry_error_limit:5}, cpu_stat={avg_usage:584}) -
检查网络配置。
-
检查网卡是千兆还是万兆。
-
检查
ifconfig输出的结构是否有drop或者error的包。 -
通过
tsar或vsar检查 retrans,如果大于 0.2 则说明交换机或者链路存在问题。
-
-
检查出现迁移过慢的步骤。
执行以下 SQL 语句,检查
ACTION列值,该字段表示目前迁移正处于的步骤。obclient> SELECT * FROM __all_virtual_partition_migration_status WHERE action!='END' AND result = 0\G
迁移失败问题的排查
-
确认常见错误码。
目前,常见的迁移失败对应两个错误码,分别为:
-
ERROR 4109 :常见于 OceanBase 数据库 V1.4 版本,如果目的端在合并或者转储,可能出现该错误。如果 rebuild 的时候遇到,可以通过加快合并速度来回避,即调大合并线程数或者增量 sysio 的带宽限制。
-
ERROR 4018 :表示源端进行了合并或者转储,导致找不到需要的数据。需要调大迁移的带宽、
sysio限制或者降低转储合并的频率。
-
-
检查是否存在硬件问题。
-
检查机器各硬件是否存在故障。
-
检查错误日志。
如果结果为空则表示无故障。
[root@hostname /]# dmesg|grep -E "Failed status, reset controller|Controller encountered a fatal error and was reset|Controller encountered a fatal error and was reset对于配置了 Raid 的机器还需要进行以下检查,如果结果为空则表示无故障。
[root@hostname /]# tbraid log | grep -E "Read Medium ERR|Error" -
通过以下命令确认是否存在 RX 或 TX 错误。
[root@hostname /]# ifconfig bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx broadcast xxx.xxx.xxx.xxxether xx:xx:xx:xx:xx:xx txqueuelen 0 (Ethernet)RX packets 234167440 bytes 206275603707 (192.1 GiB)RX errors 0 dropped 63 overruns 0 frame 0TX packets 241808476 bytes 97456446934 (90.7 GiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 -
检查
tsar或vsar的retrans值,如果大于 0.2 则表示网络链路故障。[root@hostname /]# tsar Time ---cpu-- ---mem-- ---tcp-- -----traffic---- --sda--- --dfa--- --dfb--- --dfc--- --dm-0-- --dm-7-- --dm-8-- --dm-9-- -dm-10-- -dm-11-- -dm-12-- -dm-14-- -dm-24-- --dm-3-- --dm-2-- --dm-4-- -dm-15-- --dm-5-- -dm-16-- -dm-18-- -dm-17-- -dm-21-- -dm-19-- -dm-20-- --dm-1-- --dm-6-- -dm-13-- -dm-22-- -dm-23-- -dm-25-- -dm-28-- -dm-26-- -dm-27-- -dm-29-- -dm-30-- -dm-31-- ---load- Time util util retran bytin bytout util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util load1 30/03/21-16:45 21.62 53.82 0.00 3.0K 4.9K 0.01 0.04 0.33 1.26 0.00 0.00 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.40 0.00 0.00 0.39 0.00 0.01 0.29 0.00 0.00 0.00 0.00 0.02 0.35 0.39 0.00 0.00 0.15 0.00 0.00 0.00 0.00 0.00 0.00 15.31 30/03/21-16:50 21.59 54.39 0.00 2.9K 4.8K 0.01 0.04 0.30 1.20 0.00 0.00 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.37 0.01 0.00 0.37 0.00 0.01 0.29 0.00 0.00 0.00 0.00 0.02 0.32 0.39 0.00 0.00 0.14 0.00 0.00 0.00 0.00 0.00 0.00 12.37 30/03/21-16:55 24.40 54.68 0.00 2.9K 4.9K 0.01 0.27 1.08 32.99 0.00 0.00 0.00 0.00 0.00 0.00 0.02 0.00 0.00 0.40 0.00 0.01 0.40 0.00 0.01 0.28 0.00 0.00 0.00 0.00 0.24 1.10 32.64 0.00 0.00 0.16 0.00 0.00 0.00 0.00 0.00 0.00 24.60 30/03/21-17:00 24.46 55.30 0.00 2.9K 4.9K 0.01 0.19 1.11 18.98 0.00 0.00 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.38 0.00 0.00 0.37 0.00 0.01 0.28 0.00 0.00 0.00 0.00 0.17 1.13 18.49 0.00 0.00 0.17 0.00 0.00 0.00 0.00 0.00 0.00 19.38 30/03/21-17:05 21.74 55.89 0.00 2.9K 4.9K 0.01 0.04 0.02 1.26 0.00 0.00 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.41 0.01 0.00 0.36 0.00 0.01 0.30 0.00 0.00 0.00 0.00 0.02 0.03 0.38 0.00 0.00 0.16 0.00 0.00 0.00 0.00 0.00 0.00 16.01MAX 38.78 79.44 0.13 1.7M 51.1K 0.69 1.55 55.95 50.54 0.00 0.00 0.00 0.00 0.00 0.00 0.61 0.12 0.00 6.98 0.01 0.11 6.65 0.12 0.01 4.94 0.00 6.50 0.34 55.83 0.33 12.47 45.96 0.82 55.79 6.68 6.63 0.34 55.81 1.14 0.00 0.00 61.70 MEAN 29.42 76.67 0.00 9.4K 5.2K 0.01 0.09 0.71 3.73 0.00 0.00 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.44 0.01 0.01 0.44 0.00 0.01 0.33 0.00 0.40 0.01 0.35 0.03 0.20 2.13 0.02 0.55 0.43 0.41 0.01 0.35 0.00 0.00 0.00 22.73 MIN 16.84 48.16 0.00 2.8K 4.2K 0.01 0.06 0.00 1.14 0.00 0.00 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.42 0.01 0.01 0.41 0.00 0.01 0.29 0.00 0.04 0.01 0.00 0.02 0.00 0.34 0.01 0.00 0.04 0.04 0.01 0.00 0.00 0.00 0.00 10.32[root@hostname /]# vsar Time ---cpu-- ---mem-- ---tcp-- -----traffic---- --sda--- --dfa--- --dfb--- --dfc--- --dm-0-- --dm-7-- --dm-8-- --dm-9-- -dm-10-- -dm-11-- -dm-12-- -dm-14-- -dm-24-- --dm-3-- --dm-2-- --dm-4-- -dm-15-- --dm-5-- -dm-16-- -dm-18-- -dm-17-- -dm-21-- -dm-19-- -dm-20-- --dm-1-- --dm-6-- -dm-13-- -dm-22-- -dm-23-- -dm-25-- -dm-28-- -dm-26-- -dm-27-- -dm-29-- -dm-30-- -dm-31-- ---load- Time util util retran bytin bytout util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util load1 30/03/21-17:09:13 21.32 56.40 0.00 949.00 5.4K 0.02 0.06 0.00 1.38 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.34 0.02 0.00 0.32 0.00 0.00 0.36 0.00 0.00 0.00 0.00 0.02 0.00 0.42 0.02 0.00 0.24 0.00 0.00 0.00 0.00 0.00 0.00 13.32 30/03/21-17:09:18 21.46 56.41 0.00 4.4K 33.3K 1.42 0.00 0.00 0.92 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.28 0.00 0.00 0.38 0.00 0.00 0.30 0.00 0.00 0.00 0.00 0.00 0.00 0.26 0.00 0.00 0.14 0.00 0.00 0.00 0.00 0.00 0.00 12.74 30/03/21-17:09:23 21.73 56.41 0.00 931.00 5.3K 0.00 0.04 0.00 1.12 0.00 0.00 0.00 0.00 0.00 0.00 0.02 0.00 0.00 0.26 0.00 0.02 0.40 0.00 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.28 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 12.68 30/03/21-17:09:28 22.16 56.44 0.00 10.8K 5.1K 0.02 0.02 0.00 1.92 0.00 0.00 0.00 0.00 0.00 0.00 0.02 0.00 0.00 0.40 0.00 0.00 0.60 0.00 0.00 0.26 0.00 0.00 0.00 0.00 0.00 0.00 0.90 0.00 0.00 0.24 0.00 0.00 0.00 0.00 0.00 0.00 13.02 30/03/21-17:09:33 21.07 56.44 0.00 863.00 5.3K 0.00 0.02 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.34 0.00 0.00 0.36 0.00 0.02 0.38 0.00 0.00 0.00 0.00 0.00 0.00 0.28 0.00 0.00 0.28 0.00 0.00 0.00 0.00 0.00 0.00 13.02 30/03/21-17:09:38 21.21 56.45 0.00 2.3K 4.4K 0.02 0.08 0.00 1.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.36 0.00 0.02 0.38 0.00 0.00 0.16 0.00 0.00 0.00 0.00 0.06 0.00 0.26 0.00 0.00 0.16 0.00 0.00 0.00 0.00 0.00 0.00 13.02 30/03/21-17:09:43 21.18 56.44 0.00 2.8K 5.2K 0.00 0.06 0.00 1.08 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.34 0.02 0.02 0.26 0.00 0.00 0.18 0.00 0.00 0.00 0.00 0.00 0.00 0.30 0.00 0.00 0.16 0.00 0.02 0.00 0.00 0.00 0.00 13.34 30/03/21-17:09:48 20.99 56.44 0.00 2.3K 4.3K 0.00 0.02 0.00 0.98 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.22 0.00 0.00 0.32 0.00 0.00 0.34 0.00 0.00 0.00 0.00 0.00 0.00 0.20 0.02 0.00 0.10 0.00 0.00 0.00 0.00 0.00 0.00 13.07 30/03/21-17:09:53 21.52 56.45 0.00 863.00 5.1K 0.02 0.02 0.00 0.96 0.00 0.00 0.00 0.00 0.00 0.00 0.02 0.00 0.00 0.30 0.00 0.00 0.30 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.26 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 13.39 30/03/21-17:09:58 21.44 56.47 0.00 8.0K 4.5K 0.00 0.00 0.00 1.18 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.38 0.00 0.00 0.34 0.00 0.00 0.24 0.00 0.00 0.00 0.00 0.00 0.00 0.36 0.00 0.00 0.18 0.00 0.00 0.00 0.00 0.00 0.00 12.80 30/03/21-17:10:03 24.46 56.48 0.00 1.1K 5.5K 0.00 0.02 0.00 1.26 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.30 0.00 0.00 0.34 0.00 0.02 0.28 0.00 0.00 0.00 0.00 0.00 0.00 0.50 0.00 0.00 0.18 0.00 0.00 0.00 0.00 0.00 0.00 13.02MAX 74.03 56.45 0.00 15.4M 186.1K 30.10 17.46 100.00 92.10 0.00 0.00 0.00 0.00 0.00 0.26 12.90 0.00 0.00 1.06 1.24 1.00 0.90 0.00 1.02 0.92 0.00 43.00 4.68 100.00 3.18 97.52 92.64 4.30 100.00 74.30 42.90 3.80 100.00 0.00 0.00 0.00 50.61 MEAN 22.13 51.58 0.00 78.8K 7.5K 0.05 0.18 7.02 4.33 0.00 0.00 0.00 0.00 0.00 0.00 0.05 0.00 0.00 0.39 0.01 0.01 0.38 0.00 0.01 0.29 0.00 0.15 0.02 4.19 0.04 0.88 3.36 0.04 6.54 0.36 0.15 0.02 4.20 0.00 0.00 0.00 15.21 MIN 16.19 48.24 0.00 642.00 3.9K 0.01 0.02 0.00 0.64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.18 0.01 0.00 0.14 0.00 0.00 0.08 0.00 0.00 0.00 0.00 0.01 0.01 0.08 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 9.37
-
-
检查内核问题。
通过以下命令检查是否存在内核故障。
如果出现形如
task xxx blocked for more than 120 seconds的日志,则可能为内核故障。可以通过升级内核版本的方式解决该问题。[root@hostname /]# dmesg |grep blocked
相关文章:
【OceanBase诊断调优】—— Unit 迁移问题的排查方法
适用版本:V2.1.x、V2.2.x、V3.1.x、V3.2.x 本文主要介绍 OceanBase 数据集在副本迁移过程中遇到的问题的排查方法。 适用版本 V2.1.x、V2.2.x、V3.1.x、V3.2.x 手动调度迁移问题的排查 OceanBase 数据库的 RootService 模块负责 Unit 迁移的调度,如果…...
[极客大挑战 2019]PHP
1.通过目录扫描找到它的备份文件,这里的备份文件是它的源码。 2.源码当中涉及到的关键点就是魔术函数以及序列化与反序列化。 我们提交的select参数会被进行反序列化,我们要构造符合输出flag条件的序列化数据。 但是,这里要注意的就是我们提…...
数据结构之跳跃表
跳跃表 跳跃表(skiplist)是一种随机化的数据, 由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出, 跳跃表以有序的方式在层次化的链表中保存元素, 效率和平衡树媲美 —— …...
搜维尔科技:动作捕捉解决方案:销售、服务、培训和支持
动作捕捉解决方案:销售、服务、培训和支持 搜维尔科技:动作捕捉解决方案:销售、服务、培训和支持l...
数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20240507)
数据库管理184期 2024-05-07 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20240507)1 JSON需求2 关系型表设计3 JSON关系型二元性视图3 查询视图总结 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20…...
刷代码随想录有感(58):二叉树的最近公共祖先
题干: 代码: class Solution { public:TreeNode* traversal(TreeNode* root, TreeNode* p, TreeNode* q){if(root NULL)return NULL;if(root p || root q)return root;TreeNode* left traversal(root->left, p, q);TreeNode* right traversal(r…...
[开发|安卓] Android Studio 开发环境配置
Android Studio下载 Android Studio下载地址 下载SDK依赖 1.点击左上角菜单 2.选择工具 3.打开SDK管理中心 4.下载项目目标Android版本的SDK 配置安卓虚拟机 1.打开右上角的设备管理 2.选择合适的手机规格 3.下载并选择项目目标Android系统 4.点击完成配置 …...
开发 Chrome 浏览器插件入门
目录 前言 一,创建插件 1.创建一个新的目录 2.编写清单文件 二,高级清单文件 1.编写放置右窗口 2.常驻的后台JS或后台页面 3.event-pages 短周期使用 三,Chrome 扩展 API 函数 1.浏览器操作函数 2.内容脚本函数 3.后台脚本函数 4…...
在数字化转型的浪潮中,CBDB百数服务商如何破浪前行?
在信息化时代,传统咨询企业面临着数字化转型的挑战与机遇。如何利用数字化技术提升业务效率、增强客户黏性,成为了行业关注的焦点。云南析比迪彼企业管理有限公司(CBDB)作为云南地区的企业咨询服务提供商,率先与百数展…...
程序员的实用神器
在软件开发的海洋中,程序员的实用神器如同航海中的指南针,帮助他们导航、加速开发、优化代码质量,并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。然而,程序员们通常会有一套自己喜欢的工具集…...
spss 导入数据的时候 用于确定数据类型的值所在的百分比95%是什么意思,数据分析,医学数据分析
在SPSS中,当提及“数据类型的值所在的百分比95%”时,这通常与数据的统计分布或置信区间有关,而不是直接关于数据类型的定义。 导入数据的时候需要定义数据类型,那么根据提供的数据,来定义,有时候ÿ…...
Python进阶之-上下文管理器
✨前言: 🌟什么是上下文管理器? 在Python中,上下文管理器是支持with语句的对象,用于为代码块提供设置及清理代码。上下文管理器广泛应用于资源管理场景,例如文件操作、网络连接、数据库会话等,…...
什么年代了,还在拿考勤说事
最近,看到了某公司的一项考勤规定:自然月内,事假累计超过3次或者累计请假时间超过8小时的,不予审批,强制休假的按旷工处理。 真的想吐槽,什么年代了,还在拿考勤说事,这是什么公司、什…...
泰迪智能科技中职大数据实验室建设(职业院校大数据实验室建设指南)
职校大数据实验室是职校校园文化建设的重要部分,大数据实训室的建设方案应涵盖多个方面,包括硬件设施的配备、软件环境的搭建、课程资源的开发、师资力量的培养以及实践教学体系的完善等。 打造特色,对接生产 社会经济与产业的…...
Qt QThreadPool线程池
1.简介 QThreadPool类管理一个QThread集合。 QThreadPool管理和重新设计单个QThread对象,以帮助降低使用线程的程序中的线程创建成本。每个Qt应用程序都有一个全局QThreadPool对象,可以通过调用globalInstance来访问该对象。 要使用其中一个QThreadPool…...
无人机+三维建模:倾斜摄影技术详解
无人机倾斜摄影测量技术是一项高新技术,近年来在国际摄影测量领域得到了快速发展。这种技术通过从一个垂直和四个倾斜的五个不同视角同步采集影像,从而获取到丰富的建筑物顶面及侧视的高分辨率纹理。这种技术不仅能够真实地反映地物情况,还能…...
Window(Qt/Vs)软件添加版本信息
Window(Qt/Vs)软件添加版本信息 文章目录 Window(Qt/Vs)软件添加版本信息VS添加版本信息添加资源文件添加版本定义头自动更新版本添加批处理脚本设置生成事件 Qt添加版本信息添加资源文件文件信息修改自动更新版本 CMake添加版本信…...
工厂模式+策略模式完成多种登录模式的实现
前提 (简单工厂不属于设计模式,而是一种编程思想【抽象一层出来】)工厂方法模式、抽象工厂模式 以上都是为了解耦,如果考虑多个纬度(如需要同时考虑多种电器,多种品牌)则优先考虑抽象工厂。 …...
赋能企业数字化转型 - 易点易动固定资产系统与飞书实现协同管理
在当前瞬息万变的商业环境下,企业如何借助信息化手段提升管理效率,已经成为摆在各行各业面前的紧迫课题。作为企业数字化转型的重要一环,固定资产管理的信息化建设更是不容忽视。 易点易动作为国内领先的企业资产管理服务商,凭借其全方位的固定资产管理解决方案,助力众多企业实…...
Sectigo 通配符SSL证书的优势分析!
Sectigo 通配符证书是一种专为需要保护同一主域名下的多个子域名而设计的安全解决方案。以下是Sectigo通配符证书的主要优势和特点: 1. 域名灵活性:使用通配符(*)符号,一张Sectigo通配符证书即可覆盖一个主域名及其所有…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
