MogDB 5.0.6 这个特性真让人喜欢!

在2024年3月30号,MogDB发布了最新版的5.0.6版本,其中引入了一个比较有意思的小特性,用于保护备机不被switchover或者failover命令拉起提升为主库,使用户可以对指定备机升主行为进行控制。 这个需求源于一些用户场景的实际需求洞察。

同时针对该特性,MogDB引入了一个新的参数protect_standby,该参数为布尔型,即on or off.

这里我们通过实际测试,来为大家演示一下该特性的效果究竟如何。

首先准备环境

1.新建别名:alias c=“cm_ctl query -Cvid”,方便操作。 2.至少是一主两从,三个节点或者以上。

[root@mogdb114 506]# ptk ls
  cluster_name  |  id  |              addr              | user |      data_dir       |          db_version          |     create_time     | comment  
----------------+------+--------------------------------+------+---------------------+------------------------------+---------------------+----------
  cluster_26000 | 6001 | 172.20.22.114:26000 (cm:15300) | omm  | /data/mogdb5.0/data | MogDB 5.0.6 (build 8b0a6ca8) | 2024-04-01T16:57:25 |          
                | 6002 | 172.20.22.115:26000 (cm:15300) | omm  | /data/mogdb5.0/data |                              |                     |          
                | 6003 | 172.20.22.117:26000 (cm:15300) | omm  | /data/mogdb5.0/data |                              |                     |          
[root@mogdb114 506]
[omm@mogdb114 ~]$ cm_ctl show

[  Network Connect State  ]

Network timeout:       6s
Current CMServer time: 2024-04-01 17:42:13
Network stat('Y' means connected, otherwise 'N'):
|  \  |  Y  |  Y  |
|  Y  |  \  |  Y  |
|  Y  |  Y  |  \  |


[  Node Disk HB State  ]

Node disk hb timeout:    200s
Current CMServer time: 2024-04-01 17:42:14
Node disk hb stat('Y' means connected, otherwise 'N'):
|  N  |  N  |  N  |

[  FloatIp Network State  ]

node        instance base_ip       float_ip_name float_ip      
---------------------------------------------------------------
1  mogdb114 6001     172.20.22.114 VIP_az240917  172.20.22.180 
[omm@mogdb114 ~]$ 
[omm@mogdb114 ~]$ c
[  CMServer State   ]

node        node_ip         instance                         state
--------------------------------------------------------------------
1  mogdb114 172.20.22.114   1    /data/mogdb5.0/cm/cm_server Primary
2  mogdb115 172.20.22.115   2    /data/mogdb5.0/cm/cm_server Standby
3  mogdb117 172.20.22.117   3    /data/mogdb5.0/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : Yes
current_az      : AZ_ALL

[  Datanode State   ]

node        node_ip         instance                 state            | node        node_ip         instance                 state            | node        node_ip         instance                 state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  mogdb114 172.20.22.114   6001 /data/mogdb5.0/data P Primary Normal | 2  mogdb115 172.20.22.115   6002 /data/mogdb5.0/data S Standby Normal | 3  mogdb117 172.20.22.117   6003 /data/mogdb5.0/data S Standby Normal
[omm@mogdb114 ~]$ 

ok! 环境准备就绪之后,就可以开始测试验证工作了。

参数启用前验证switchover效果

在使用5.0.6版本的该新特性之前,我们先做一下手工切换,看看switchover的情况。

例如这里我们将主库switcover到节点2上。

[omm@mogdb114 ~]$ cm_ctl switchover -n 2 -D $PGDATA
..Killed
[omm@mogdb114 ~]$ c
[  CMServer State   ]

node        node_ip         instance                         state
--------------------------------------------------------------------
1  mogdb114 172.20.22.114   1    /data/mogdb5.0/cm/cm_server Primary
2  mogdb115 172.20.22.115   2    /data/mogdb5.0/cm/cm_server Standby
3  mogdb117 172.20.22.117   3    /data/mogdb5.0/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : No
current_az      : AZ_ALL

[  Datanode State   ]

node        node_ip         instance                 state            | node        node_ip         instance                 state            | node        node_ip         instance                 state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  mogdb114 172.20.22.114   6001 /data/mogdb5.0/data P Standby Normal | 2  mogdb115 172.20.22.115   6002 /data/mogdb5.0/data S Primary Normal | 3  mogdb117 172.20.22.117   6003 /data/mogdb5.0/data S Standby Normal
[omm@mogdb114 ~]$ 

接下来观察一下详细的切换过程:

### 2024-04-01 17:50:49.956: sleep 1
>>>>>>>>>>>>>>> tctest_insert,log=tctest.log.insert  2024-04-01 17:49:30.495 ---- 2024-04-01 17:50:50.987: 76
INSERT 0 10
              now              | get_hostname | tctest_insert 
-------------------------------+--------------+---------------
 2024-04-01 17:50:51.020981+08 | mogdb114     |           760
(1 row)

              now              
-------------------------------
 2024-04-01 17:50:51.021683+08
(1 row)

### 2024-04-01 17:50:51.025: sleep 1
failed to connect 172.20.22.180:26000.
### failed to connect mogdb. sleep 1,tctest.log.insert tctest.log.ustore 2024-04-01 17:49:30.495 >>>> 2024-04-01 17:50:52.291: 77
failed to connect 172.20.22.180:26000.
### failed to connect mogdb. sleep 1,tctest.log.insert tctest.log.ustore 2024-04-01 17:49:30.495 >>>> 2024-04-01 17:50:53.352: 77
>>>>>>>>>>>>>>> tctest_insert,log=tctest.log.insert  2024-04-01 17:49:30.495 ---- 2024-04-01 17:50:54.384: 77
INSERT 0 10
              now              | get_hostname | tctest_insert 
-------------------------------+--------------+---------------
 2024-04-01 17:50:54.418988+08 | mogdb115     |           770
(1 row)

              now              
-------------------------------
 2024-04-01 17:50:54.419806+08
(1 row)

从上面的日志可以看到,主库成功从114切换到了115节点,符合预期。

那么能否将主库切换到节点3呢?当然可以,如下:

[omm@mogdb114 ~]$ cm_ctl switchover -n 3 -D $PGDATA
......
cm_ctl: switchover successfully.
[omm@mogdb114 ~]$ 
[omm@mogdb114 ~]$ c
[  CMServer State   ]

node        node_ip         instance                         state
--------------------------------------------------------------------
1  mogdb114 172.20.22.114   1    /data/mogdb5.0/cm/cm_server Primary
2  mogdb115 172.20.22.115   2    /data/mogdb5.0/cm/cm_server Standby
3  mogdb117 172.20.22.117   3    /data/mogdb5.0/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : No
current_az      : AZ_ALL

[  Datanode State   ]

node        node_ip         instance                 state            | node        node_ip         instance                 state            | node        node_ip         instance                 state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  mogdb114 172.20.22.114   6001 /data/mogdb5.0/data P Standby Normal | 2  mogdb115 172.20.22.115   6002 /data/mogdb5.0/data S Standby Normal | 3  mogdb117 172.20.22.117   6003 /data/mogdb5.0/data S Primary Normal
[omm@mogdb114 ~]$ 

同样这里我们可以来观察一下切换效果。

>>>>>>>>>>>>>>> tctest_insert,log=tctest.log.insert  2024-04-01 17:51:40.596 ---- 2024-04-01 17:51:58.970: 18
INSERT 0 10
              now              | get_hostname | tctest_insert 
-------------------------------+--------------+---------------
 2024-04-01 17:51:59.002625+08 | mogdb115     |           180
(1 row)

              now              
-------------------------------
 2024-04-01 17:51:59.003296+08
(1 row)

### 2024-04-01 17:51:59.006: sleep 1
failed to connect 172.20.22.180:26000.
### failed to connect mogdb. sleep 1,tctest.log.insert tctest.log.ustore 2024-04-01 17:51:40.596 >>>> 2024-04-01 17:52:00.026: 19
>>>>>>>>>>>>>>> tctest_insert,log=tctest.log.insert  2024-04-01 17:51:40.596 ---- 2024-04-01 17:52:08.072: 19
INSERT 0 10
              now              | get_hostname | tctest_insert 
-------------------------------+--------------+---------------
 2024-04-01 17:52:08.125014+08 | mogdb117     |           190
(1 row)

              now              
-------------------------------
 2024-04-01 17:52:08.125707+08
(1 row)

符合预期,跟前面的验证一样,主库被外面switchover到了节点3,也就是117号节点。

参数启用前验证failover

首先我们来观察此时数据库集群的状态,如下:

[omm@mogdb115 ~]$ c
[  CMServer State   ]

node        node_ip         instance                         state
--------------------------------------------------------------------
1  mogdb114 172.20.22.114   1    /data/mogdb5.0/cm/cm_server Primary
2  mogdb115 172.20.22.115   2    /data/mogdb5.0/cm/cm_server Standby
3  mogdb117 172.20.22.117   3    /data/mogdb5.0/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : No
current_az      : AZ_ALL

[  Datanode State   ]

node        node_ip         instance                 state            | node        node_ip         instance                 state            | node        node_ip         instance                 state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  mogdb114 172.20.22.114   6001 /data/mogdb5.0/data P Standby Normal | 2  mogdb115 172.20.22.115   6002 /data/mogdb5.0/data S Primary Normal | 3  mogdb117 172.20.22.117   6003 /data/mogdb5.0/data S Standby Normal
[omm@mogdb115 ~]$ ps -fu omm
UID        PID  PPID  C STIME TTY          TIME CMD
omm       5451     1  0 16:57 ?        00:01:10 /data/mogdb5.0/app/5.0.5/bin/om_monitor -L /data/mogdb5.0/log/cm/om_monitor
omm      13162     1  2 17:57 ?        00:01:46 /data/mogdb5.0/app/5.0.5/bin/mogdb -D /data/mogdb5.0/data -M pending
omm      26464 30588  0 18:58 ?        00:00:00 arping -D -f -w 1 -I ens192 172.20.22.180
omm      26465 28012  0 18:58 pts/0    00:00:00 ps -fu omm
omm      28012 28011  0 17:46 pts/0    00:00:00 -bash
omm      30588  5451 17 17:48 ?        00:12:05 /data/mogdb5.0/app/5.0.5/bin/cm_agent
omm      30608     1 13 17:48 ?        00:09:23 /data/mogdb5.0/app/5.0.5/bin/cm_server
omm      30632     1  0 17:48 ?        00:00:00 mogdb fenced UDF master process

目前主库在115号节点,我们尝试将主库115 强行kill,模拟failover的场景。

[omm@mogdb115 ~]$ kill -9 13162
[omm@mogdb115 ~]$ c
[  CMServer State   ]

node        node_ip         instance                         state
--------------------------------------------------------------------
1  mogdb114 172.20.22.114   1    /data/mogdb5.0/cm/cm_server Primary
2  mogdb115 172.20.22.115   2    /data/mogdb5.0/cm/cm_server Standby
3  mogdb117 172.20.22.117   3    /data/mogdb5.0/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : Yes
current_az      : AZ_ALL

[  Datanode State   ]

node        node_ip         instance                 state            | node        node_ip         instance                 state            | node        node_ip         instance                 state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  mogdb114 172.20.22.114   6001 /data/mogdb5.0/data P Primary Normal | 2  mogdb115 172.20.22.115   6002 /data/mogdb5.0/data S Standby Normal | 3  mogdb117 172.20.22.117   6003 /data/mogdb5.0/data S Standby Normal
[omm@mogdb115 ~]$ 

可以看到114节点成功接管了,主库。那么此时模拟的insert数据场景如何呢?

>>>>>>>>>>>>>>> tctest_insert,log=tctest.log.insert  2024-04-01 18:58:31.448 ---- 2024-04-01 18:58:54.326: 22
INSERT 0 10
              now              | get_hostname | tctest_insert 
-------------------------------+--------------+---------------
 2024-04-01 18:58:54.361219+08 | mogdb115     |           220
(1 row)

              now              
-------------------------------
 2024-04-01 18:58:54.361889+08
(1 row)

### 2024-04-01 18:58:54.365: sleep 1
failed to connect 172.20.22.180:26000.
### failed to connect mogdb. sleep 1,tctest.log.insert tctest.log.ustore 2024-04-01 18:58:31.448 >>>> 2024-04-01 18:58:55.448: 23
failed to connect 172.20.22.180:26000.
### failed to connect mogdb. sleep 1,tctest.log.insert tctest.log.ustore 2024-04-01 18:58:31.448 >>>> 2024-04-01 18:58:56.468: 23
gsql: FATAL:  can not accept connection in pending mode.
### failed to connect mogdb. sleep 1,tctest.log.insert tctest.log.ustore 2024-04-01 18:58:31.448 >>>> 2024-04-01 18:58:57.521: 23
>>>>>>>>>>>>>>> tctest_insert,log=tctest.log.insert  2024-04-01 18:58:31.448 ---- 2024-04-01 18:59:05.569: 23
INSERT 0 10
              now              | get_hostname | tctest_insert 
-------------------------------+--------------+---------------
 2024-04-01 18:59:05.604845+08 | mogdb114     |           230
(1 row)

              now              
-------------------------------
 2024-04-01 18:59:05.605569+08
(1 row)

如上面的测试,CM做了切换,将114提升为了主库,此时我们的115节点变成了备库。

启用特性的测试验证

在验证特性之前,我们需要先测试一下相关的参数,如下:

[omm@mogdb115 ~]$ gs_guc set -D $PGDATA -c "protect_standby=on"
The gs_guc run with the following arguments: [gs_guc -D /data/mogdb5.0/data -c protect_standby=on set ].
expected instance path: [/data/mogdb5.0/data/postgresql.conf]
gs_guc set: protect_standby=on: [/data/mogdb5.0/data/postgresql.conf]

Total instances: 1. Failed instances: 0.
Success to perform gs_guc!

[omm@mogdb115 ~]$ gs_ctl reload
[2024-04-01 19:04:37.767][4895][][gs_ctl]: gs_ctl reload ,datadir is /data/mogdb5.0/data 
server signaled
[omm@mogdb115 ~]$ gsql -r
gsql ((MogDB 5.0.6 build 8b0a6ca8) compiled at 2024-03-27 11:05:29 commit 0 last mr 1804 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

MogDB=# show protect_standby ;
 protect_standby 
-----------------
 on
(1 row)

MogDB=

那么此时的集群状态如何呢?

[omm@mogdb114 ~]$ c
[  CMServer State   ]

node        node_ip         instance                         state
--------------------------------------------------------------------
1  mogdb114 172.20.22.114   1    /data/mogdb5.0/cm/cm_server Primary
2  mogdb115 172.20.22.115   2    /data/mogdb5.0/cm/cm_server Standby
3  mogdb117 172.20.22.117   3    /data/mogdb5.0/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : Yes
current_az      : AZ_ALL

[  Datanode State   ]

node        node_ip         instance                 state            | node        node_ip         instance                 state            | node        node_ip         instance                 state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  mogdb114 172.20.22.114   6001 /data/mogdb5.0/data P Primary Normal | 2  mogdb115 172.20.22.115   6002 /data/mogdb5.0/data S Protect Standby Normal | 3  mogdb117 172.20.22.117   6003 /data/mogdb5.0/data S Standby Normal
[omm@mogdb114 ~]$ 

我们可以看到,此时115 节点上的数据库从Standby Normal 变成了 Protect Standby Normal 。

接下来我们就分别测一下switchover和failover。

[omm@mogdb114 ~]$ cm_ctl switchover -n 2 -D $PGDATA
.
cm_ctl: can not do switchover at current role(not standby),You can execute "cm_ctl query -v" and check
[omm@mogdb114 ~]$ 
[omm@mogdb114 ~]$ c
[  CMServer State   ]

node        node_ip         instance                         state
--------------------------------------------------------------------
1  mogdb114 172.20.22.114   1    /data/mogdb5.0/cm/cm_server Primary
2  mogdb115 172.20.22.115   2    /data/mogdb5.0/cm/cm_server Standby
3  mogdb117 172.20.22.117   3    /data/mogdb5.0/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : Yes
current_az      : AZ_ALL

[  Datanode State   ]

node        node_ip         instance                 state            | node        node_ip         instance                 state            | node        node_ip         instance                 state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  mogdb114 172.20.22.114   6001 /data/mogdb5.0/data P Primary Normal | 2  mogdb115 172.20.22.115   6002 /data/mogdb5.0/data S Protect Standby Normal | 3  mogdb117 172.20.22.117   6003 /data/mogdb5.0/data S Standby Normal
[omm@mogdb114 ~]$ 

可以看到此时如果你进行switchover,那么会报错,提示不允许进行操作。

那么如果进行failover操作会是什么情况呢,如果没有启用这个特性设置,那么kill主库114的进程,CM可能会把115 提升为主库。接下来就是见证奇迹的时刻。

[omm@mogdb114 ~]$ ps -fu omm
UID        PID  PPID  C STIME TTY          TIME CMD
omm       7693 17884  0 19:07 ?        00:00:00 arping -D -f -w 1 -I ens192 172.20.22.180
omm       7702 27470  0 19:07 pts/2    00:00:00 ps -fu omm
omm      17884 25302 15 17:48 ?        00:12:32 /data/mogdb5.0/app/5.0.5/bin/cm_agent
omm      17904     1 14 17:48 ?        00:11:47 /data/mogdb5.0/app/5.0.5/bin/cm_server
omm      17930     1  0 17:48 ?        00:00:00 mogdb fenced UDF master process
omm      25302     1  1 16:57 ?        00:01:17 /data/mogdb5.0/app/5.0.5/bin/om_monitor -L /data/mogdb5.0/log/cm/om_monitor
omm      27470 27469  0 17:02 pts/2    00:00:00 -bash
omm      30626     1  6 18:58 ?        00:00:34 /data/mogdb5.0/app/5.0.5/bin/mogdb -D /data/mogdb5.0/data -M pending
[omm@mogdb114 ~]$ kill -9 30626
[omm@mogdb114 ~]$ 
[omm@mogdb114 ~]$ c
[  CMServer State   ]

node        node_ip         instance                         state
--------------------------------------------------------------------
1  mogdb114 172.20.22.114   1    /data/mogdb5.0/cm/cm_server Primary
2  mogdb115 172.20.22.115   2    /data/mogdb5.0/cm/cm_server Standby
3  mogdb117 172.20.22.117   3    /data/mogdb5.0/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : No
current_az      : AZ_ALL

[  Datanode State   ]

node        node_ip         instance                 state            | node        node_ip         instance                 state            | node        node_ip         instance                 state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  mogdb114 172.20.22.114   6001 /data/mogdb5.0/data P Standby Normal | 2  mogdb115 172.20.22.115   6002 /data/mogdb5.0/data S Protect Standby Normal | 3  mogdb117 172.20.22.117   6003 /data/mogdb5.0/data S Primary Normal
[omm@mogdb114 ~]$ 

当我们kill掉114 主节点上的进程后,我们可以看到集群failover到了117节点上了,主库不在往115上做切换。这是符合我们的预期的!

那么这个特性有什么实际应用场景?

一些特定场景下,用户需要确保某个备库不被集群管理软件所干预,永远保存一份standby的状态,必要的时候可以进行人工干预切换;同时实现将特定节点提升为主库的需求,而不是让集群管理软件来随机选择。

所以,大家觉得这个小特性有用吗?

参考:

MogDB 5.0.6 新特性介绍 https://docs.mogdb.io/zh/mogdb/v5.0/5.0.6

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

牛客 2024 【牛客赛文X】春招冲刺 ONT73 体育课测验(二) 【中等 图/拓扑排序 Java,Go,PHP】

题目 题目链接: https://www.nowcoder.com/practice/64a4c026b2aa4411984f560deec36323 思路 图,BFS,队列参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改&…

【Linux--多线程】

1 . Linux线程概念 1.1 什么是线程 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列” 一切进程至少都有一个执行线程 线程在进程内部执行,本质是在进程地址空间内运行 Linux系…

北京InfoComm展推出500款新品,覆盖30个市场,助力行业未来

【2024年4月17日——北京讯】亚太区首屈一指的专业视听和集成体验解决方案展北京InfoComm China 2024 今天在北京的国家会议中心 (CNCC) 盛大开幕,展开为期三天的商贸展会和高峰会议。作为行业产品发布的首要平台,北京InfoComm China吸引众多展商携新品推…

代码随想录阅读笔记-回溯【重新安排行程】

题目 给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开…

claude国内不能用

AnthropicAI 公司旗下的Claude 3 大型语言模型,以其卓越的性能直接挑战了GPT-4的市场地位。Claude 3 系列中包含了几个不同版本,如Claude 3 Opus、Claude 3 Sonnet 以及 Claude 3 Haiku,每个版本都针对特定的应用场景进行了优化。 在这些版本…

一款国产的开发辅助AI插件!

文章目录 一 Comate 介绍二 价格三 安装四 体验4.1 智能推荐4.1.1 单行推荐4.1.2 多行推荐 4.2 智能生成4.2.1 注释生成代码4.2.2 增强生成代码4.2.3 生成单元测试4.2.4 生成代码注释文档注释行间注释 4.3 代码解释4.4 调优建议4.5 长函数拆分 五 智能问答六 其他能力6.1 插件配…

Arduino UNO驱动MPR121接近电容式触摸传感器控制WS2812彩灯

简介 MPR121芯片功能强大可用作触摸,电容检测,驱动LED等等.在低速扫描下可以将功 耗降低到8μA,可以处理多达12个独立的触摸板。支持I2C,几乎可以用任何微控 制器连接。可以使用ADDR引脚选择4个地址中的一个,一个I2C2线总线上共有48 个电容触摸板。使用该芯片比使用模拟输入进行…

全国产化无风扇嵌入式车载电脑农耕车辆/钢厂天车行业应用

农耕车辆行业应用 背景介绍 当前农耕车车载电脑主要的功能,是要实现农耕车的精确的定位和导航,更加先进的系统则要实现农耕车自动驾驶,与农耕车上相关传感器的通讯(例如耕土深度的传感器, 油量存量传感器…)来实现更多的自动化、信息化的功能…

GPT-4最新详解:能力对比,语言,视觉输入,操纵性,聊天GPT Plus等

OpenAI创建了 GPT-4,这是 OpenAI 扩大深度学习努力的最新里程碑。 GPT-4 是一个大型多模态模型(接受图像和文本输入,发出文本输出),虽然在许多现实场景中能力不如人类,但在各种专业和学术基准上表现出人类水…

新书速览|Vue.js+Node.js全栈开发实战

掌握Vue.js、Node.js、MySQL全栈开发方法 本书内容 《Vue.jsNode.js全栈开发实战》以掌握Web全栈开发技术为目标,以Node.js和Vue.js原生开发和项目实战为主线,详细介绍Node.js Vue.js全栈开发技术。本书内容丰富、实例典型、实用性强,配套示…

从入门到精通C++之类和对象(续)

目录 初始化列表构造函数?拷贝构造?浅谈explicit关键字友元 内部类static成员总结 初始化列表 引入初始化列表:简化代码,提高效率 在编程中,初始化列表是一种用于在创建对象时初始化成员变量的快捷方式。通过初始化列…

Linux第89步_了解异步通知及其结构和函数

1、了解“异步通知” “异步通知”的核心就是信号。信号是采用软件模拟的“中断”,它由“驱动程序”主动向“应用程序”发送信号,并报告自己可以访问了,“应用程序”收到信号以后,就从“驱动设备”中读取或者写入数据。整个过程就…

电商数据采集的网页抓取数据、淘宝、天猫、京东等平台的电商数据抓取|电商数据API接口网页爬虫、采集网站数据

电商数据采集的网页抓取数据、淘宝、天猫、京东等平台的电商数据抓取,网页爬虫、采集网站数据、网页数据采集软件、python爬虫、HTM网页提取、APP数据抓包、APP数据采集、一站式网站采集技术、BI数据的数据分析、数据标注等成为大数据发展中的热门技术关键词。那么电…

@Scheduled注解简介

一、注解介绍 Scheduled注解是Spring Boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行。 二、源码 package org.springframework.scheduling.annotation;import java.lang.annotation.Documented; import…

【服务器部署篇】Linux下Nacos安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

中科国声携新品亮相北京InfoComm China 2024展

4月17日,北京InfoComm China 2024展(北京专业视听技术和集成体验解决方案展览会)在北京的国家会议中心盛大开幕。展会为期三天。作为备受瞩目的”会议系统国家队“,中科国声携众多优质会议音频产品及全新会议系统解决方案精彩亮相…

贪心算法简介

目录 一、什么是贪心算法? 二、贪心算法的特点 三、贪心算法解决找零问题、最短路径问题、背包问题 1.找零问题 2.最短路径问题 3.背包问题 一、什么是贪心算法? 贪心算法就是希望通过局部最优来解决全局最优 基本步骤:1.将问题分为若…

「每日跟读」英语常用句型公式 第14篇

「每日跟读」英语常用句型公式 第14篇 1. As far as __ is concerned 就__ 而言 As far as the project timeline is concerned, we’re running ahead of schedule. (就项目时间表而言,我们进度超前了。) As far as the exam results ar…

第20天:信息打点-红蓝队自动化项目资产侦察企查产权武器库部署网络空间

第二十天 一、工具项目-红蓝队&自动化部署 自动化-武器库部署-F8x 项目地址:https://github.com/ffffffff0x/f8x 介绍:一款红/蓝队环境自动化部署工具,支持多种场景,渗透,开发,代理环境,服务可选项等.下载:wget -O f8x https://f8x.io…

Oracle执行计划优化SPM案例

1.现象 执行下面这段代码,发现子库存表走了全表扫描 SELECT msi.secondary_inventory_name, --子库存msi.description --库存说明FROM inv.mtl_secondary_inventories msi,csi_item_instances ciiWHERE msi.secondary_inventory_name cii.inv_subinve…
最新文章