当前位置: 首页 > news >正文

Redhat LINUX 9.3 + PG 16.1 搭建主备流复制

一直想搭建一个PG流复制,最近正好有一个新环境,操作系统是最新的,rhel 9.3,数据库是最新的 pg 16.1,借鉴了网上的步骤,尤其是小工到专家的内容,在此谢过。

1.安装环境

1)IP:
主:192.168.133.151 server1
备:192.168.133.152 server2


2)操作系统版本:
[postgres@server2 data]$ cat /etc/redhat-release 
Red Hat Enterprise Linux release 9.3 (Plow)

3)数据库版本:

postgres@[local]:5432/postgres-11653#=select version();
                                                    version                                                     
----------------------------------------------------------------------------------------------------------------
 PostgreSQL 16.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2.1.0.1), 64-bit
(1 row)

2.创建主备流复制

2.1 修改 /etc/hosts 文件(主备)

vim /etc/hosts

192.168.133.151 server1
192.168.133.152 server2

2.2 主库设置


1)建立同步用户

postgres=# create role rep1 login replication encrypted password 'rep1';

2) 配置复制认证配置

vim $PGDATA/pg_hba.conf

host    replication     rep1            server2                 md5


3) 修改$PGDATA/postgres.conf

listen_addresses = '*'
port=5432
wal_level = replica
max_wal_senders=10
archive_mode = on
archive_timeout=1800

archive_command = 'cp %p /home/postgres/arch/%f'
restore_command = 'cp /home/postgres/arch/%f %p'
recovery_target_timeline = 'latest'
full_page_writes = on
wal_log_hints = on

logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d.log'

--下面参数设置大一些,否则,后面主备切换,可能出现找不到日志文件的问题
min_wal_size = 800MB
wal_keep_size = 1024

4).重启主库,让参数生效

pg_ctl restart

2.3 备库设置

1)初始化,直接从主库备份就行

pg_basebackup -h server1 -p 5432 -U repl -X stream -R -Fp -P -D /pgdata/data

-h:指定要连接的服务器的主机名或IP地址。
-U:指定连接使用的用户名。
-Fp:指定备份的格式。在这种情况下,备份以纯文本格式存储。
-P:指定在备份过程中显示进度信息。
-X stream:指定备份的流式传输方法。
-R:指定包括所有必需的WAL文件以进行一致性备份。
-D:指定备份存储的目录。

2) 修改参数,加上下面参数

hot_standby = on #在备份的同时允许查询,默认值
max_standby_streaming_delay = 30s #可选,流复制最大延迟
wal_receiver_status_interval = 10s #可选,从向主报告状态的最大间隔时间
hot_standby_feedback = on #可选,查询冲突时向主反馈


3)配置$PGDATA/data/pg_hba.conf
host    replication     rep1            server1                 md5 #这里修改主机名为主机的

4) 重启让配置生效
pg_ctl start


3.验证

3.1 查看主备进程

1)主库端

[postgres@server1 data]$ ps -ef|grep wal
postgres    3003    2998  0 21:57 ?        00:00:00 postgres: walwriter 
postgres    3063    2998  0 22:08 ?        00:00:00 postgres: walsender rep1 192.168.133.152(49190) streaming 0/260021C8
postgres    3080    1518  0 22:13 pts/0    00:00:00 grep --color=auto wal
[postgres@server1 data]$ 

2)备库端

[postgres@server2 data]$ ps -ef|grep wal
postgres   11355   11345  0 22:08 ?        00:00:00 postgres: walreceiver streaming 0/260021C8
postgres   11373    9351  0 22:14 pts/0    00:00:00 grep --color=auto wal
[postgres@server2 data]$ 

3.2 主库切换日志

postgres@[local]:5432/postgres-3100#=select pg_switch_wal();
 pg_switch_wal 
---------------
 0/260021E0
(1 row)

postgres@[local]:5432/postgres-3100#=\! ls -ltr /pgdata/data/pg_wal
总用量 458768
-rw------- 1 postgres postgres       41 12月 15 23:16 00000002.history
-rw------- 1 postgres postgres 16777216 12月 17 20:09 00000002000000000000000D
-rw------- 1 postgres postgres 16777216 12月 17 20:22 00000002000000000000000E
-rw------- 1 postgres postgres 16777216 12月 17 20:22 00000002000000000000000F
-rw------- 1 postgres postgres 16777216 12月 17 20:25 000000020000000000000010
-rw------- 1 postgres postgres 16777216 12月 17 20:28 000000020000000000000011
-rw------- 1 postgres postgres 16777216 12月 17 20:28 000000020000000000000012.partial
-rw------- 1 postgres postgres       84 12月 17 20:29 00000003.history
-rw------- 1 postgres postgres 16777216 12月 17 20:34 000000030000000000000012
-rw------- 1 postgres postgres 16777216 12月 17 21:04 000000030000000000000013
-rw------- 1 postgres postgres 16777216 12月 17 21:26 000000030000000000000014
-rw------- 1 postgres postgres 16777216 12月 17 21:29 000000030000000000000015
-rw------- 1 postgres postgres 16777216 12月 17 21:29 000000030000000000000016
-rw------- 1 postgres postgres 16777216 12月 17 21:30 000000030000000000000017
-rw------- 1 postgres postgres 16777216 12月 17 21:30 000000030000000000000018
-rw------- 1 postgres postgres 16777216 12月 17 21:31 000000030000000000000019
-rw------- 1 postgres postgres 16777216 12月 17 21:31 00000003000000000000001A
-rw------- 1 postgres postgres 16777216 12月 17 21:33 00000003000000000000001B
-rw------- 1 postgres postgres 16777216 12月 17 21:33 00000003000000000000001C
-rw------- 1 postgres postgres 16777216 12月 17 21:47 00000003000000000000001D
-rw------- 1 postgres postgres 16777216 12月 17 21:47 00000003000000000000001E
-rw------- 1 postgres postgres 16777216 12月 17 21:50 00000003000000000000001F
-rw------- 1 postgres postgres 16777216 12月 17 21:50 000000030000000000000020
-rw------- 1 postgres postgres 16777216 12月 17 21:53 000000030000000000000021
-rw------- 1 postgres postgres 16777216 12月 17 21:53 000000030000000000000022
-rw------- 1 postgres postgres 16777216 12月 17 21:57 000000030000000000000023
-rw------- 1 postgres postgres 16777216 12月 17 21:58 000000030000000000000024
-rw------- 1 postgres postgres 16777216 12月 17 21:58 000000030000000000000025
-rw------- 1 postgres postgres      341 12月 17 21:58 000000030000000000000025.00000028.backup
-rw------- 1 postgres postgres 16777216 12月 17 22:17 000000030000000000000026
drwx------ 2 postgres postgres     4096 12月 17 22:17 archive_status
-rw------- 1 postgres postgres 16777216 12月 17 22:17 000000030000000000000027
postgres@[local]:5432/postgres-3100#=

--备库

[postgres@server2 data]$ ls -ltr /pgdata/data/pg_wal
总用量 49156
-rw------- 1 postgres postgres       84 12月 17 21:58 00000003.history
-rw------- 1 postgres postgres 16777216 12月 17 21:58 000000030000000000000025
drwx------ 2 postgres postgres       72 12月 17 22:17 archive_status
-rw------- 1 postgres postgres 16777216 12月 17 22:17 000000030000000000000026
-rw------- 1 postgres postgres 16777216 12月 17 22:17 000000030000000000000027

3.3 查看当前备库状态

[postgres@server2 data]$ psql
psql (16.1)
Type "help" for help.

postgres@server2:5432/postgres-11485#=select pg_is_in_recovery();
 pg_is_in_recovery 
-------------------
 t
(1 row)


postgres@server1:5432/postgres-3210#=select pg_is_in_recovery();
 pg_is_in_recovery 
-------------------
 f
(1 row)


t :true,意味着处于 recovery 状态
f :false,意味着处于正常服务状态


3.4 主库查询

postgres@server1:5432/postgres-3210#=select pid, usename,client_addr,state,sync_state,reply_time from pg_stat_replication;
 pid  | usename |   client_addr   |   state   | sync_state |          reply_time           
------+---------+-----------------+-----------+------------+-------------------------------
 3188 | rep1    | 192.168.133.152 | streaming | async      | 2023-12-17 22:31:28.775596+08
(1 row)

postgres@server1:5432/postgres-3210#=select pid, usename,client_addr,state,sync_state,reply_time from pg_stat_replication;
-[ RECORD 1 ]------------------------------
pid         | 3188
usename     | rep1
client_addr | 192.168.133.152
state       | streaming
sync_state  | async
reply_time  | 2023-12-17 22:31:38.761116+08

sync_state表示同步模式
sent_lsn表示发送日志的起点
reply_time表示应用日志的起点

postgres@server1:5432/postgres-3210#=select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid              | 3188
usesysid         | 16409
usename          | rep1
application_name | walreceiver
client_addr      | 192.168.133.152
client_hostname  | server2
client_port      | 59278
backend_start    | 2023-12-17 22:25:07.174465+08
backend_xmin     | 
state            | streaming
sent_lsn         | 0/28000C88
write_lsn        | 0/28000C88
flush_lsn        | 0/28000C88
replay_lsn       | 0/28000C88
write_lag        | 
flush_lag        | 
replay_lag       | 
sync_priority    | 0
sync_state       | async
reply_time       | 2023-12-17 22:33:18.809739+08


3.5 备库查询

postgres@server2:5432/postgres-11485#=select * from pg_stat_wal_receiver;-[ RECORD 1 ]---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pid                   | 11386
status                | streaming
receive_start_lsn     | 0/28000000
receive_start_tli     | 3
written_lsn           | 0/28000C88
flushed_lsn           | 0/28000C88
received_tli          | 3
last_msg_send_time    | 2023-12-17 22:35:08.850593+08
last_msg_receipt_time | 2023-12-17 22:35:08.85238+08
latest_end_lsn        | 0/28000C88
latest_end_time       | 2023-12-17 22:30:08.735565+08
slot_name             | 
sender_host           | server1
sender_port           | 5432
conninfo              | user=rep1 password=******** channel_binding=disable dbname=replication host=server1 port=5432 client_encoding=GBK fallback_application_name=walreceiver sslmode=disable sslcompression=0 sslcertmode=disable sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres gssdelegation=0 target_session_attrs=any load_balance_hosts=disable

--备库日志

023-12-17 22:25:07.215 CST [11386] LOG:  started streaming WAL from primary at 0/28000000 on timeline 3
2023-12-17 22:25:08.324 CST [11347] LOG:  restartpoint starting: time
2023-12-17 22:25:08.331 CST [11347] LOG:  restartpoint complete: wrote 0 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.001 s, sync=0.001 s, total=0.007 s; sync files=0, longest=0.000 s, average=0.000 s; distance=16383 kB, estimate=16389 kB; lsn=0/28000028, redo lsn=0/28000028
2023-12-17 22:25:08.331 CST [11347] LOG:  recovery restart point at 0/28000028
2023-12-17 22:30:08.225 CST [11347] LOG:  restartpoint starting: time
2023-12-17 22:30:08.332 CST [11347] LOG:  restartpoint complete: wrote 2 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.103 s, sync=0.001 s, total=0.107 s; sync files=2, longest=0.001 s, average=0.001 s; distance=2 kB, estimate=14751 kB; lsn=0/28000BD8, redo lsn=0/28000BA0
2023-12-17 22:30:08.332 CST [11347] LOG:  recovery restart point at 0/28000BA0
2023-12-17 22:30:08.332 CST [11347] DETAIL:  Last completed transaction was at log time 2023-12-17 22:27:29.986132+08.


3.6 测试数据同步

1)主库创建表:

postgres@server1:5432/postgres-3210#=create table emp(emp int);
CREATE TABLE
postgres@server1:5432/postgres-3210#=insert into emp values(100);
INSERT 0 1
postgres@server1:5432/postgres-3210#=select * from emp;
 emp 
-----
 100
(1 row)

2) 备库验证

[postgres@server2 pg_log]$ psql -h server2
Password for user postgres: 
psql (16.1)
Type "help" for help.

postgres@server2:5432/postgres-11497#=\d
             List of relations
 Schema |      Name      | Type  |  Owner   
--------+----------------+-------+----------
 public | emp            | table | postgres
 public | pg_buffercache | view  | postgres
(2 rows)

postgres@server2:5432/postgres-11497#=select * from emp;
 emp 
-----
 100
(1 row)

通过以上可以看出,主库新增数据已经同步到备库

4.主备切换

这里模拟主库出现问题

4.1 停止主库

[postgres@server1 data]$ pg_ctl stop
waiting for server to shut down.... done
server stopped
[postgres@server1 data]$ 
[postgres@server1 data]$ 
[postgres@server1 data]$ pg_ctl status
pg_ctl: no server running

4.2 提升备库为主

pg_ctl promote

postgres@server2 pg_log]$ pg_ctl promote
waiting for server to promote.... done
server promoted
[postgres@server2 pg_log]$ pg_ctl status
pg_ctl: server is running (PID: 11345)
/u01/app/postgres/bin/postgres
[postgres@server2 pg_log]$ pg_controldata |grep stat
Database cluster state:               in production
[postgres@server2 pg_log]$ 

[postgres@server2 data]$ ls -ltr standby*
ls: 无法访问 'stand*': 没有那个文件或目录
[postgres@server2 data]$ 

[postgres@server2 data]$ ps -ef|grep wal
postgres   11569   11345  0 22:44 ?        00:00:00 postgres: walwriter 
postgres   11592    9351  0 22:46 pts/0    00:00:00 grep --color=auto wal
[postgres@server2 data]$ 

4.3 创建standby.signal文件

在新备库上(原主库) 完成

只需要创建文件即可,不需要添加内容

[postgres@server1 data]$ touch standby.signal
[postgres@server1 data]$ 
[postgres@server1 data]$ ls -ltr standby.signal
-rw-r--r-- 1 postgres postgres 0 12月 17 22:49 standby.signal


4.4 调整新备库 postgresql.auto.conf内容

在新备库的 postgresql.auto.conf 文件中添加如下内容

primary_conninfo = 'user=rep1 password=rep1 passfile=''/home/postgres/.pgpass'' channel_binding=disable host=server2 port=5432 client_encoding=GBK sslmode=disable sslcompression=0 sslcertmode=disable sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres gssdelegation=0 target_session_attrs=any load_balance_hosts=disable'

4.5 启动新备库


[postgres@server1 data]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start....2023-12-17 22:53:08.352 CST [3340] LOG:  redirecting log output to logging collector process
2023-12-17 22:53:08.352 CST [3340] HINT:  Future log output will appear in directory "pg_log".
 done
server started

4.6 验证


新备库
[postgres@server1 data]$ pg_controldata |grep state
Database cluster state:               in archive recovery

新主库
[postgres@server2 data]$ pg_controldata |grep stat
Database cluster state:               in production


[postgres@server2 data]$ psql
psql (16.1)
Type "help" for help.

postgres@[local]:5432/postgres-11653#=\x
Expanded display is on.
postgres@[local]:5432/postgres-11653#=select pid, usename,client_addr,state,sync_state,reply_time from pg_stat_replication;
-[ RECORD 1 ]------------------------------
pid         | 11644
usename     | rep1
client_addr | 192.168.133.151
state       | streaming
sync_state  | async
reply_time  | 2023-12-17 22:55:48.476883+08

postgres@[local]:5432/postgres-11653#=select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid              | 11644
usesysid         | 16409
usename          | rep1
application_name | walreceiver
client_addr      | 192.168.133.151
client_hostname  | server1
client_port      | 47196
backend_start    | 2023-12-17 22:53:08.395347+08
backend_xmin     | 
state            | streaming
sent_lsn         | 0/290001B8
write_lsn        | 0/290001B8
flush_lsn        | 0/290001B8
replay_lsn       | 0/290001B8
write_lag        | 
flush_lag        | 
replay_lag       | 
sync_priority    | 0
sync_state       | async
reply_time       | 2023-12-17 22:56:18.489045+08


到此,切换完成。

相关文章:

Redhat LINUX 9.3 + PG 16.1 搭建主备流复制

一直想搭建一个PG流复制,最近正好有一个新环境,操作系统是最新的,rhel 9.3,数据库是最新的 pg 16.1,借鉴了网上的步骤,尤其是小工到专家的内容,在此谢过。 1.安装环境 1)IP: 主:192.168.133.151…...

kafka设置消费者组

安装部署后 consumer.properties group.idtest-group 单机测试,自己开俩窗口,一个测试消费者,一个测试生产者(创建消息那步) 创建主题 bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replica…...

Worker-Thread设计模式

Worker-Thread模式类似于工厂流水线,有时也称为流水线设计模式。线程池在某种意义上也算是Worker-Thread模式的一种实现,线程池初始化时创建线程类似于在流水线等待工作的工人,提交给线程池的Runnable接口类似于需要加工的产品,Ru…...

npm 安装包遇到问题的常用脚本(RequestError: socket hang up)

前言 最近在给一个基于 Electron 的开源项目做贡献,需要去安装一些 npm 库,由于众所周知的原因,经常会出现报错: npm ERR! path D:\Projects\project\node_modules\electron npm ERR! command failed npm ERR! command C:\Windo…...

活动 | Mint Blockchain 将于 2024 年 1 月 10 号启动 MintPass 限时铸造活动

MintPass 是由 Mint Blockchain 官方发行的 Mint 网络和社区的 NFT 通行证,将在 2024 年 1 月份启动限时铸造活动。今天这篇文章会着重向大家介绍即将举办的 MintPass 活动的基础信息。 MintPass 有 2 种类型: 类型 1:Mint Genesis NFT Mint…...

Android动画(四)——属性动画ValueAnimator的妙用

目录 介绍 效果图 代码实现 xml文件 介绍 ValueAnimator是ObjectAnimator的父类,它继承自Animator。ValueAnimaotor同样提供了ofInt、ofFloat、ofObject等静态方法,传入的参数是动画过程的开始值、中间值、结束值来构造动画对象。可以将ValueAnimator看…...

C语言飞机大战

一、前言 [设计难度 : ★☆☆☆☆ [参考书籍:《C语言课程设计与游戏开发实践教程》 [主要涉及知识:函数封装 循环判断语句 [程序运行效果图: [主要的游戏功能: 通过按键’w’,‘s’,‘a’,d’分别实现飞机的上下左右移动 按空格…...

js 原型 和 原型链

function Person(name,age){ this.name name this.age age } var p new Person(张三,11) //创建构造函数的时候,解析器会自动为构造函数创建prototype属性,prototype属性对应的对象就是原型对象 // prototype 翻译为 原…...

如何利用SD-WAN节省运维成本和简化运维工作?

在当今数字化时代,企业对于网络的要求越来越高,需要保障网络的安全性、可靠性和灵活性。同时,随着企业的上云和远程办公等需求的增加,传统的WAN网络已经无法满足企业的需求。因此,SD-WAN技术应运而生。 SD-WAN节省运维…...

在工作中使用CHAT提高效率

问CHAT:数智时代与中国情境下的营销管理创新方向:市场营销(管理)的使命 CHAT回复:市场营销(管理)的使命可以被概述为寻找、吸引和保留消费者。通过识别、满足甚至超越消费者期望,以实…...

Maven 项目的三种打包方式与 pom.xml 文件中项目描述

目录&#xff1a; 定义项目的信息 本项目描述相关标签<parent> 标签<relativePath/> 标签<scope> 标签 Maven 三种打包方式 JARWARPOM 原文链接 — —...

【普中】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频)

【普中开发板】基于51单片机简易计算器数码管显示设计( proteus仿真程序实物演示讲解视频&#xff09; Proteus 仿真&#xff1a;Proteus 8.16(有低版本) 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;P04 1. 主要功能&#xff1a…...

【Android】DeepLink

官方文档&#xff1a;创建指向应用内容的深层链接 Intro to Deep Linking on Android What is Deep linking? Deeplinks are a concept that help users navigate between the web and applications. They are basically URLs which navigate users directly to the specif…...

微服务Redis-Session共享登录状态

一、背景 随着项目越来越大&#xff0c;需要将多个服务拆分成微服务&#xff0c;使代码看起来不要过于臃肿&#xff0c;庞大。微服务之间通常采取feign交互&#xff0c;为了保证不同微服务之间增加授权校验&#xff0c;需要增加Spring Security登录验证&#xff0c;为了多个服务…...

30道C++ 基础高频题整理(附答案背诵版)

1. C和C有什么区别&#xff1f; C是C语言的超集&#xff08;我看网上很多文章说这是不对的&#xff09;&#xff0c;这意味着几乎所有的C程序都可以在C编译器中编译和运行。然而&#xff0c;C引入了许多新的概念和特性&#xff0c;使得两种语言在一些关键点上有显著的区别。 …...

【Spark面试】Spark面试题答案

目录 1、spark的有几种部署模式&#xff0c;每种模式特点&#xff1f;&#xff08;☆☆☆☆☆&#xff09; 2、Spark为什么比MapReduce块&#xff1f;&#xff08;☆☆☆☆☆&#xff09; 3、简单说一下hadoop和spark的shuffle相同和差异&#xff1f;&#xff08;☆☆☆☆☆…...

Axure的动态面板

目录 动态面板 什么是Auxre动态模板 动态模板的步骤 应用场景 实战案例 轮播图 多功能登录界面 主界面左侧菜单栏 动态面板 什么是Auxre动态模板 动态面板是Axure中的一个重要功能&#xff0c;它允许用户创建可交互的页面&#xff0c;并模拟用户与页面的交互。通过添加元素…...

【STM32】STM32学习笔记-对射式红外传感器计次 旋转编码器计次(12)

00. 目录 文章目录 00. 目录01. NVIC相关函数1.1 NVIC_PriorityGroupConfig函数1.2 NVIC_PriorityGroup类型1.3 NVIC_Init函数1.4 NVIC_InitTypeDef类型 02. 外部中断相关API2.1 GPIO_EXTILineConfig2.2 EXTI_Init2.3 EXTI_GetITStatus2.4 EXTI_ClearITPendingBit2.5 中断回调函…...

后端项目操作数据库-中枢组件Service调用Mapper实现增删改查-实例

接上篇 使用MyBatis配置Mapper实现增删改查 1.Service的基本作用 Service在代码中的的作用是调用Mapper、被Controller调用。是后端项目中非常重要的组件。 用于设计业务流程、业务逻辑&#xff0c;以保障数据的完整性、有效性、安全性。 2. Service使用举例——“添加相册”…...

kafka学习笔记--节点的服役与退役

本文内容来自尚硅谷B站公开教学视频&#xff0c;仅做个人总结、学习、复习使用&#xff0c;任何对此文章的引用&#xff0c;应当说明源出处为尚硅谷&#xff0c;不得用于商业用途。 如有侵权、联系速删 视频教程链接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;从入门到调优…...

2023-12-16:用go语言,给定整数数组arr,求删除任一元素后, 新数组中长度为k的子数组累加和的最大值。 来自字节。

2023-12-16&#xff1a;用go语言&#xff0c;给定整数数组arr&#xff0c;求删除任一元素后&#xff0c; 新数组中长度为k的子数组累加和的最大值。 来自字节。 答案2023-12-16&#xff1a; 来自左程云。 灵捷3.5 大体步骤如下&#xff1a; 算法 maxSum1 分析&#xff1…...

libxls - 编译

文章目录 libxls - 编译概述笔记静态库工程测试控制台exe工程测试备注备注END libxls - 编译 概述 想处理.xls格式的excel文件. 查了一下libxls库可以干这个事. 库地址 https://github.com/libxls/libxls.git 但是这个库的makefile写的有问题, 在mingw和WSL下都编译不了. 好在…...

自建私有git进行项目发布

自建私有git进行博客项目发布 之前尝试过通过建立私有git仓库&#xff0c;来发布自己的hexo静态博客&#xff0c;但是失败了&#xff0c;今天尝试了一下午&#xff0c;算是有了结果。下面记录我的过程。 我的需求&#xff1a; 我有一个服务器&#xff0c;希望在服务器端建一…...

华为HCIP认证H12-821题库上

1、2.OSPF核心知识 &#xff08;单选题&#xff09;下面关于0SPF的特殊区域&#xff0c;描述错误的是: A、Totally Stub Area允许ABR发布缺省的三类LSA,不接受五类LSA和细化三类LSA B、NSSA Area和Stub区域的不同在于该区域允许自治系统外部路由的引入&#xff0c;由ABR发布…...

Web安全漏洞分析—文件包含

在当今数字化时代&#xff0c;随着Web应用程序的广泛应用&#xff0c;网络安全问题愈加凸显。其中&#xff0c;文件包含漏洞作为一种常见但危险的安全隐患&#xff0c;为恶意攻击者提供了可乘之机。在这篇博客中&#xff0c;我们将深入探讨文件包含漏洞的本质、攻击手法以及应对…...

C++入门【9-C++循环】

C 循环 有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了允许更为复杂的执行路径的多种控制结构。 循环语句允许我们多次…...

Python3 数字(Number) ----20231215

Python3 数字(Number) # Python3 数字(Number)# Python 数字数据类型用于存储数值。 # 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。# 以下实例在变量赋值时 Number 对象将被创建: var1 = 1 var2 = 10# 您也可以使用del语句删除一些数…...

PyQt6 QToolBar工具栏控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计44条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…...

nodejs+vue+微信小程序+python+PHP基于大数据的银行信用卡用户的数仓系统的设计与实现-计算机毕业设计推荐

银行信用卡用户的数仓系统综合网络空间开发设计要求。目的是将银行信用卡用户的数仓系统从传统管理方式转换为在网上管理&#xff0c;完成银行信用卡用户的数仓管理的方便快捷、安全性高、交易规范做了保障&#xff0c;目标明确。银行信用卡用户的数仓系统可以将功能划分为管理…...

EMC RI/CI测试方案助您对抗电磁设备干扰!

方案背景 电磁或射频干扰的敏感性&#xff0c;会给工程师带来重大的风险和安全隐患。尤其是在工业、船用和医疗设备环境。这些环境系统中的控制、导航、监控、通信和警报等关键零部件必须具备电磁抗扰水平&#xff0c;以确保系统始终正常运行。 抗扰系统测试方案一般分为传导…...

网站商城系统建设/雷神代刷推广网站

点击上方“iOS开发”&#xff0c;选择“置顶公众号” 关键时刻&#xff0c;第一时间送达&#xff01; 我是照骗 前言 最近逛博客看到了一篇帖子&#xff0c;里面介绍了自己如何设计一套星球大战主题的UI&#xff0c;里面有一个界面破碎的特效&#xff0c;看着很炫酷&#xff0…...

网站作风建设年专栏/千锋教育出来好找工作吗

纠结两天&#xff08;浏览器中唤起本地APP&#xff09;&#xff0c;一直找不到解决方案&#xff0c;今天总算基本搞定。 ps&#xff1a;吐槽一下 魔窗那篇文章&#xff0c;为什么就不直接把js代码开源开源&#xff0c;混淆后的代码看得我好恼火 参考文章&#xff1a;魔窗解决方…...

谷歌网站推广/广州最新消息今天

git diff 检查更新 git fetch  #需要先 fetch git diff master..origin/master --name-only -- [path]  #path&#xff1a;指定检查 可以是文件或者文件夹&#xff0c;--name-only&#xff1a;只列出有变化的文件名 git diff master..origin/master --name-only -- [path] …...

舟山网站制作公司/百度搜索一下

包括企业管理软件、协作与通讯以及企业门户 http://www.chinajava.net/learn/applications/tryanddownload.html http://www.chinajava.net/learn/applications/index.html...

广告设计有哪些/苏州网站优化排名推广

目录 一.什么是红黑树&#xff1f; 二. 红黑树的基本概念 三.红黑树的插入 红黑树节点的构造 红黑树的插入 1.parent是黑色 2.parent是红色 四.右单旋 五. 左单旋 一.什么是红黑树&#xff1f; 在学红黑树之前&#xff0c;我们需要回顾二叉树的知识&#xff0c;二叉树…...

在线教育网站开发时长/营销培训方案

随着后互联网时代行业分工越来越细化&#xff0c;用户数据的海量涌向&#xff0c;数据的采集、分析成为了解产品趋势、判断竞争对手与个性化推荐的重要一环&#xff0c;爬虫因此成为了许多用人单位招聘要求的必备技能!那么爬虫是什么&#xff1f;学习来简单吗&#xff1f;相信刚…...