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

MySQL主从复制 - 指南

MySQL主从复制 - 指南

在数据库主从复制(以 MySQL 为例)的语境中,“两日志” 和 “三进程” 是保障数据同步的核心组件,分别对应日志文件同步进程,共同实现主库数据到从库的一致性复制。

一、两日志:主从复制的 “数据载体”

“两日志” 指主库的二进制日志(binlog) 和从库的中继日志(relay log),它们是数据同步的 “桥梁”,负责记录和传递写操作。

1. 二进制日志(Binary Log,简称 binlog)
  • 位置:主库服务器(/var/lib/mysql/mysql-bin.xxxxxx,路径可通过 my.cnf 的 log-bin 配置)。
  • 作用:记录主库上所有写操作(INSERT/UPDATE/DELETE/DDL 等),以二进制格式存储,是主从复制的 “源头”。
  • 特点
    • 按时间顺序记录,每个操作包含 “事件类型”“数据变更”“发生时间” 等信息;
    • 可通过 binlog_format 配置记录格式(ROW 格式记录行级变更,最常用,兼容性好);
    • 主库必须开启 binlog(log-bin=mysql-bin)才能进行主从复制。
2. 中继日志(Relay Log)
  • 位置:从库服务器(/var/lib/mysql/mysql-relay-bin.xxxxxx,路径可通过 my.cnf 的 relay-log 配置)。
  • 作用:从库的 IO 线程读取主库的 binlog 后,先写入本地中继日志,再由 SQL 线程从中继日志中读取并执行操作,相当于 “中间缓冲区”。
  • 特点
    • 格式与 binlog 完全一致(可理解为 “从库本地的 binlog 副本”);
    • 避免从库直接依赖主库的 binlog(主库 binlog 可能被删除或轮转,中继日志确保从库有独立的同步源);
    • 同步完成后,旧的中继日志会被自动清理(由 relay_log_purge 控制,默认开启)。

二、三进程:主从复制的 “执行单元”

“三进程” 指主库的dump 线程和从库的IO 线程SQL 线程,三者协同完成 “主库写操作→从库同步” 的全流程。

1. 主库:dump 线程(Binlog Dump Thread)
  • 作用:当从库连接主库请求同步时,主库创建 dump 线程,负责将 binlog 中的内容发送给从库。
  • 工作流程
    1. 从库的 IO 线程连接主库时,主库启动 dump 线程;
    2. dump 线程根据从库指定的 binlog 文件名和位置(MASTER_LOG_FILE 和 MASTER_LOG_POS),读取主库 binlog 中的事件;
    3. 将读取到的 binlog 事件逐发给从库的 IO 线程。
2. 从库:IO 线程(I/O Thread)
  • 作用:连接主库,接收主库 dump 线程发送的 binlog 事件,并写入从库的中继日志。
  • 工作流程
    1. 从库执行 START SLAVE 后,IO 线程启动,连接主库(使用主库配置的同步账号);
    2. 向主库请求从指定 binlog 位置开始的事件;
    3. 接收主库 dump 线程发送的 binlog 事件,按顺序写入从库的中继日志;
    4. 同时记录当前同步到的 binlog 位置(更新 master.info 文件,用于故障重启后继续同步)。
3. 从库:SQL 线程(SQL Thread)
  • 作用:读取中继日志中的 binlog 事件,在从库中 “重放” 这些操作,最终实现数据同步。
  • 工作流程
    1. 从库启动后,SQL 线程启动,读取中继日志(relay-log.info 记录当前读取位置);
    2. 解析中继日志中的 binlog 事件,将其转换为具体的 SQL 操作(如 INSERT/UPDATE);
    3. 在从库中执行这些 SQL 操作,使从库数据与主库保持一致。

三、两日志与三进程的协同流程

主从复制的完整链路是 “日志” 与 “进程” 的紧密配合,步骤如下:

  1. 主库执行写操作,自动记录到binlog
  2. 从库的IO 线程连接主库,主库启动dump 线程
  3. dump 线程读取主库 binlog 中的事件,发送给从库 IO 线程;
  4. 从库 IO 线程将接收的事件写入中继日志
  5. 从库的SQL 线程读取中继日志,重放事件到从库数据文件。

两日志(binlog + relay log)是数据同步的 “载体”,负责记录和暂存写操作;

三进程(dump 线程 + IO 线程 + SQL 线程)是数据同步的 “执行者”,负责在主从库之间传递和执行操作。

主从复制是数据库高可用架构的基础技术,通过将主库的写操作同步到从库,实现数据冗余、读写分离和故障转移。以下从核心原理、实现步骤、同步模式、常见问题四个维度详细讲解(以 MySQL 为例):

一、主从复制的核心原理

主从复制本质是 **“主库写操作记录→从库获取并执行”** 的过程,依赖三个关键机制:

  1. 日志记录:主库将所有写操作(INSERT/UPDATE/DELETE/DDL)记录到二进制日志(binlog)。
  2. 日志传输:从库主动获取主库的 binlog,并存储为中继日志(relay log)。
  3. 日志重放:从库读取中继日志,重新执行其中的操作,实现数据同步。

核心组件(两日志三进程):

  • 二进制日志(binlog):主库产生,记录所有写操作,是同步的 “数据源”。
  • 中继日志(relay log):从库存储,临时保存主库的 binlog 内容,是同步的 “中转站”。
  • Dump 线程:主库进程,负责向从库发送 binlog 内容。
  • IO 线程:从库进程,负责接收主库的 binlog 并写入中继日志。
  • SQL 线程:从库进程,负责读取中继日志并执行其中的操作。

二、主从复制的实现步骤(MySQL 5.7/8.0)

1. 环境准备
  • 服务器规划
    • 主库(Master):192.168.1.100,MySQL 5.7+
    • 从库(Slave):192.168.1.101,MySQL 5.7+(版本需 ≥ 主库)
  • 基础配置
    • 关闭防火墙(或开放 3306 端口)。
    • 主从库时间同步(ntpdate 或 chrony),避免因时间差导致日志同步异常。
    • # 安装NTP服务
      sudo apt-get install ntp  # Debian/Ubuntu
      sudo yum install ntp      # CentOS/RHEL
      # 启动并设置开机自启
      sudo systemctl start ntpd
      sudo systemctl enable ntpd
      # 检查时间同步状态
      ntpq -p
2. 主库配置(192.168.1.100)
(1)修改 MySQL 配置文件(my.cnf 或 mysqld.cnf
[mysqld]
# 1. 主库唯一标识(1-4294967295,从库需不同)
server-id = 100
# 2. 开启 binlog,指定日志文件名前缀
log-bin = mysql-bin
# 3. binlog 记录格式(推荐 ROW,记录行级变更,兼容性最好)
binlog_format = ROW
# 4. 同步的数据库(可选,不配置则同步所有库)
binlog-do-db = test_db
# 5. 忽略同步的数据库(如系统库)
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
# 6. 避免从库同步后再次生成 binlog(防止循环同步)
log-slave-updates = 0
(2)重启主库并验证配置
systemctl restart mysqld
# 登录 MySQL 验证 binlog 是否开启
mysql -u root -p
mysql> SHOW VARIABLES LIKE 'log_bin';  # 输出 Value: ON 即正常
mysql> SHOW MASTER STATUS;  # 查看 binlog 状态(初始为空,需后续操作生成)
(3)创建主从同步专用账号

从库需通过该账号连接主库获取 binlog:

# 创建账号(用户名:repl_user,允许从库 IP 访问)
CREATE USER 'repl_user'@'192.168.1.101' IDENTIFIED BY 'Repl@123';
# 授予复制权限(仅需 REPLICATION SLAVE 权限)
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.1.101';
FLUSH PRIVILEGES;
3. 从库配置(192.168.1.101)
(1)修改 MySQL 配置文件
[mysqld]
# 1. 从库唯一标识(需与主库不同)
server-id = 101
# 2. 开启中继日志(存储主库的 binlog)
relay-log = mysql-relay-bin
# 3. 同步的数据库(与主库保持一致)
replicate-do-db = test_db
# 4. 忽略同步的数据库(与主库保持一致)
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
# 5. 从库只读(禁止直接写从库,确保数据一致性)
read-only = 1
# 6. 允许超级用户临时写从库(可选,用于维护)
super-read-only = 0
(2)重启从库
systemctl restart mysqld
(3)配置从库关联主库

登录从库 MySQL,执行以下命令关联主库信息:

# 停止当前同步(若之前配置过)
STOP SLAVE;
# 重置从库状态(清除旧同步信息)
RESET SLAVE;
# 关联主库(替换为实际信息)
CHANGE MASTER TO
MASTER_HOST = '192.168.1.100',        # 主库 IP
MASTER_USER = 'repl_user',             # 同步账号
MASTER_PASSWORD = 'Repl@123',          # 账号密码
MASTER_LOG_FILE = 'mysql-bin.000001',  # 主库当前 binlog 文件名(从主库 SHOW MASTER STATUS 获取)
MASTER_LOG_POS = 154;                  # 主库当前 binlog 位置(从主库 SHOW MASTER STATUS 获取)
# 启动同步
START SLAVE;
4. 验证主从同步状态

在从库执行以下命令,关键参数需满足:

SHOW SLAVE STATUS\G;  # \G 垂直显示结果
  • Slave_IO_Running: Yes:IO 线程正常(从库能接收主库 binlog)。
  • Slave_SQL_Running: Yes:SQL 线程正常(从库能重放中继日志)。
  • Seconds_Behind_Master: 0:数据无延迟(正常状态)。

三、主从复制的同步模式

根据数据一致性和性能的平衡,主从复制有三种同步模式:

  1. 异步复制(默认模式)

    • 原理:主库执行写操作后,立即返回结果给客户端,无需等待从库确认。
    • 优点:性能最好,主库无延迟。
    • 缺点:主库崩溃时,可能丢失未同步到从库的数据。
  2. 半同步复制(Semi-Sync)

    • 原理:主库执行写操作后,需等待至少一个从库接收并写入中继日志,才返回结果给客户端。
    • 优点:避免数据丢失(主库崩溃时,至少有一个从库有完整数据)。
    • 缺点:主库需等待从库确认,性能略有下降(延迟取决于网络)。
    • 启用方式:主从库均需安装半同步插件(rpl_semi_sync_master 和 rpl_semi_sync_slave)。
  3. 全同步复制(Group Replication)

    • 原理:主库执行写操作后,需等待所有从库执行完成并确认,才返回结果。
    • 优点:数据零丢失,强一致性。
    • 缺点:性能差(延迟随从库数量增加而增加),仅适合对一致性要求极高的场景(如金融核心库)。

四、常见问题与解决方案

  1. Slave_IO_Running: Connecting

    • 原因:主库 IP / 端口错误、同步账号密码错误、主库防火墙拦截。
    • 解决:
      • 测试从库到主库的网络:telnet 192.168.1.100 3306
      • 验证同步账号:mysql -u repl_user -p'Repl@123' -h 192.168.1.100
  2. Slave_SQL_Running: No

    • 原因:从库执行中继日志时出错(如主键冲突、表结构不一致)。
    • 解决:
      • 查看错误日志:tail -n 100 /var/log/mysqld.log
      • 临时跳过错误:SET GLOBAL sql_slave_skip_counter = 1; START SLAVE;
      • 根本解决:修复主从库数据 / 表结构一致性。
  3. 从库延迟(Seconds_Behind_Master 增大)

    • 原因:主库写压力大、从库性能不足、网络延迟。
    • 解决:
      • 优化从库硬件(CPU / 内存 / IO);
      • 减少从库非必要操作(如关闭从库 binlog);
      • 增加从库数量,分担读压力。

总结

主从复制通过 “日志记录 - 传输 - 重放” 机制实现数据同步,是数据库高可用和读写分离的基础。实际应用中需根据业务需求选择同步模式(异步 / 半同步),并关注同步状态和延迟问题。掌握主从复制的配置和排错,是构建稳定数据库架构的核心技能。

相关文章:

MySQL主从复制 - 指南

MySQL主从复制 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14…...

阿里 Qoder 体验超预期,Repo Wiki 功能迎来全新升级

作者:沉默王二 大家好,我是二哥呀。 最近,阿里发布了一款名为 Qoder(/ˈkoʊdər/)的 Agentic 开发工具。我第一时间就去尝鲜了,其 Quest Mode 和 Repo Wiki 给我印象深刻。Quest Mode 主打一个 AI 自主研发,我们只需要把工程任务扔给他,Quest Mode 就会把模糊的需求翻…...

实用指南:ZooKeeper 的选举算法

实用指南:ZooKeeper 的选举算法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; fon…...

JAVA获取keytab的Principal

依赖<dependency><groupId>org.apache.kerby</groupId><artifactId>kerb-client</artifactId><version>2.0.1</version></dependency> 代码执行Keytab keytab = Keytab.loadKeytab(new File("D:\\dl.keytab"));key…...

基于霍夫变换的MATLAB虹膜检测与分割实现

一、核心代码实现 function [iris_mask, pupil_center, iris_radius] = hough_iris_segmentation(img_path)% 读取图像并预处理img = imread(img_path);gray = rgb2gray(img);blurred = imgaussfilt(gray, 2); % 高斯滤波去噪denoised = medfilt2(blurred, [3 3]); % 中值滤波…...

Linux时间同步---NTP时间同步方案

1.方案背景: 在分布式系统或多服务器集群中,必须建立统一的时间同步机制。服务器间的时间不一致会破坏各类依赖时间交互逻辑,例如导致日志时序混乱、事务顺序错乱、证书验证失败等,从而引发一系列难以排查的不可预知故障。 2.NTP同步网络拓扑图: 3.同步方案 可提前咨询医…...

java预习

课前问题列表 1.什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?适合用 static 修饰的方法: 工具类方法(如Math.abs())、工厂方法、不需要访问实例变量 / 方法的方法、单例模式的获取实例方法等,这类方法通常与…...

B/S体系结构风格

三层B/S风格-概述 》浏览器/服务器(B/S)风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/Web服务器/数据库服务器。 》B/S体系结构主要是利用不断成熟的WWW浏览技术,结合浏览的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,…...

The 2024 CCPC Online Contest 7/12 L/B/K/D/J/E/C

Problem L. 网络预选赛 签到,直接模拟即可点击查看代码 #include<bits/stdc++.h> using namespace std; int main(){int n,m;cin>>n>>m;vector<string>a(n);for(int i=0;i<n;i++){cin>>a[i];}int sum=0;for(int i=0;i<n-1;i++){for(int j…...

在joule里面使用agent 功能

test: Dev: 1: structure 2: 本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究...

Feign动态URL配置

方式一、亲测可用,缺点是每个类都需要单独配置@FeignClient(value = "my-biz", url = "${external.my.biz_url}", configuration = FeignHeaderInterceptor.class) public interface MyBizFeign {}@Data @Component @RefreshScope @ConfigurationProperti…...

自动化部署工具 Jenkins 的安装与配置

Jenkins 是一个开源的自动化部署工具,广泛用于持续集成(CI)和持续交付(CD)流程。它支持自动化构建、测试和部署应用程序。以下是 Jenkins 的安装与配置的详细教程。1. 安装 Jenkins 以下步骤适用于 Linux 系统(以 Ubuntu 和 CentOS 为例),并包含安装必要的依赖环境。1.…...

pip 搭建源

搭建本地pip源主要可通过pypiserver、pip2pi或bandersnatch等工具实现,具体步骤如下: 工具选择与安装‌pypiserver‌:轻量级方案,适合快速搭建小型私有源,通过pip install pypiserver安装 ‌pip2pi‌:适合按需构建源,从requirements.txt生成索引,需配合pip install pip…...

qoj10093 Jump the Frog

题意 给出 \(n\) 个由 O 和 ~ 组成的字符串 \(s_i\),还有 \(m\) 个额外字符串,第 \(n+i\) 个字符串 \(s_{n+i}\) 由第 \(s_x\) 和 \(s_y\) \((x,y<n+i)\) 个字符串拼接得到,即 \(s_{n+i}=s_x+s_y\)。你需要对这 \(n+m\) 个字符串解决以下问题: 有一只青蛙从字符串的起点…...

new 和make

func NewCase() {// 通过new , 可以创建任意类型,并返回指针mpPtr := new(map[string]*user)if *mpPtr == nil { // 通过 * 获取指针内容fmt.Println("map 为空")}// sliceslicePtr := new([]user)if *slicePtr == nil {fmt.Println("slice 为空")}*sliceP…...

Ceres 常用 LossFunction 对比

Ceres 常用 LossFunction 对比...

测试开发全日制学徒班火热报名中|跟着名企大咖做真实项目,结业即上岗

测试开发全日制学徒班,采用系统化教学的全日制线下课程,通过「人工智能测试+自动化测试+Python开发+测试开发」四维能力培养体系,配备行业资深专家导师陪跑服务(私教1v1答疑+周末私教陪跑服务),全程采用企业级学徒制培养模式。 学员将参与真实企业级项目开发,完成测试全…...

墨刀是否能替代Axure?从产品经理三大画图能力深度分析

产品经理的工作离不开高效的视觉表达工具,尤其是在画思维导图、流程图和原型图这三大核心能力上。掌握好这三类图形的绘制能力,能极大提升产品设计效率,也有助于跨团队协作顺畅推进。 市面上众多原型设计工具,墨刀和Axure无疑是最具代表性的两个平台,甚至墨刀一度被很多产…...

AI 自动化智能体训练营

课程背景与解决的问题 你是否也有这样的困扰? 每天被大量重复劳动占据时间? 报表、PPT、文案写得慢,效率低? 想用 AI 提高效率,却不知道从哪入手? 想做副业/创业,但缺乏技术与工具? 👉 这门训练营,将带你从零开始,学会用 AI 自动化处理工作与运营事务,提升效率,创…...

微信商户绑定微信公众号、小程序

https://pay.weixin.qq.com/index.php/extend/merchant_appid/mapay_platform/account_manage版权木有,侵权不究,欢迎转载...

唯创知音AI语音交互芯片与模组介绍

AI语音交互已经成为智能产品的基础配置,比如常见的AI玩具、智能家居、带AI功能的蓝牙音响,还有汽车的智能车机和智能穿戴设备等。唯创知音顺应市场趋势推出了WT2606A系列的AI语音交互芯片,和WT3000A M06、WT3000A M07、WT3000A M08三款AI语音交互模组。WT2606A AI语音交互芯…...

k3s 高可用集群部署(内置 etcd + VIP + keepalived)

k3s 高可用集群部署(内置 etcd + VIP + keepalived) 一、节点规划master 节点:10.0.0.40、10.0.0.51、10.0.0.53 worker 节点:10.0.0.52、10.0.0.54 VIP(高可用入口):10.0.0.41二、离线包准备下载 k3s 安装脚本、二进制、镜像包 导入镜像到本地或 Harbor 打包所有安装文…...

问HashMap底层原理?

HashMap是基于数组+链表+红黑树的哈希表。用于存储键值对。 1.哈希计算和扰动处理,也就是Hash方法 每一个Object都有一个 .hashCode 方法。(哈希计算)在对hashmap进行插入和查询时,先调用key键的key.hashCode()方法获取一个未处理的int哈希值,在底层代码中该值被复制给变量…...

用 Go 重写 adbkit:原理、架构与搭建实践

用 Go 重写 adbkit:原理、架构与搭建实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impor…...

C语言环境搭建之Linux子系统使用vscode连接子系统

安装准备工作查看当前系统版本确保高于16215.0开启WSL Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。安装步骤微软商城Microsoft Store安装Ubuntu(本人安装的版本是22.04)点击等待安装完成输入用户名跟…...

移远AT指令笔记

# 测试 AT - 测试AT指令功能是否正常# 模块相关 ATI - 查询模块信息 AT+CGMI - 查询模块制造商标识 AT+CGMM - 查询模块型号 AT+CGMR - 查询模块固件版本号# 网络相关 AT+QCCID - 查询集成电路卡识别码(ICCID) AT+GSN …...

数据类型

数据类型bool string byte int,uint,int8,int16,uint16,int32,uint32,int64,uint64 float32,float64,complex,complex64,complex128 rune uintptr 无符号整型,用于存放一个指针,该类型用于指针计算 结构类型 指针类型 数组 切片 map 集合 interface{} 接口 通道类型 函数类型 时…...

iphone运行windows系统

如何让iPhone运行Windows系统? 一、引言与背景介绍 随着科技的发展,用户对于设备的需求日益多样化。作为智能手机市场的领导者之一,iPhone拥有着强大的硬件性能和优秀的软件生态。然而,有些用户可能会好奇,是否有可能在iPhone上安装并运行Windows操作系统呢?本文将详细介…...

NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置指南

NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置指南国标GB28181视频平台EasyCVR视频融合平台可拓展性强、视频能力灵活,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、告警、平台级联、云台控制、语音对讲、智能分析接入等功能。 其中,在语音对讲方面,N…...

Ubuntu filebrowser网盘工具安装

第一步,本地部署 FileBrowser 1,本教程使用 Linux Ubuntu 系统进行演示,首先输入以下命令更新软件包列表。 sudo apt-get update 2,访问 FileBrowser 的 GitHub 页面找到最新版本,并根据你的系统架构下载相应的二进制文件。例如,对于 64 位 Linux 系统,可以使用如下 wge…...

图片结构 - voasem

图片分析简介 图像文件有多种复杂的格式,可以用于各种涉及到元数据、信息丢失和无损压缩、校验、隐写或可视化数据编码的分析解密,都是 Misc 中的一个很重要的出题方向。涉及到的知识点很多(包括基本的文件格式,常见的隐写手法及隐写用的软件),有的地方也需要去进行深入的…...

ESP32做AP,ESP8266做station,遥控

ESP8266 (Station模式) → 发送数据 → ESP32 (AP模式) → 接收并处理数据 ESP32 (AP接收端) 代码#include <WiFi.h> #include <WiFiClient.h> #include <WiFiAP.h>// 设置AP的网络名称和密码 const char *ssid = "ESP32_AP"; const char *passwor…...

实用指南:25年高联:一试填空题解析(下篇)

实用指南:25年高联:一试填空题解析(下篇)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !im…...

Spring AOP 面向切面编程 - 浪矢

目录概念应用例子:在不修改源代码的前提下,对请求链路上的目标方法进行运行耗时的统计。 概念 用于将与业务无关,但是对多个对象产生影响的公共逻辑,抽取并封装为可用模块,模块命名为“切面”(Aspect),减少重复代码,降低耦合度。 应用例子:在不修改源代码的前提下,对…...

jvm内存泄漏的排查tips总结

以下是对这篇原文的总结,部分内容不够详细,请参考原文地址:https://juejin.cn/post/7255634554987020343 内存问题排查方法论 1. 问题定位流程确定进程:使用 ps aux --sort=-%mem 找出内存占用最高的进程 分层排查:按照堆内 → 堆外的顺序逐步分析 量化分析:通过计算得出…...

鼠你爱称重

<!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>小鼠体重语音录入工具 - 数字鼠号版</t…...

详细介绍:用户争夺与智能管理:定制开发开源AI智能名片S2B2C商城小程序的战略价值与实践路径

详细介绍:用户争夺与智能管理:定制开发开源AI智能名片S2B2C商城小程序的战略价值与实践路径pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…...

PlorarD(WEB中等)

到底给不给flag呢先看代码 get和post里面必须只有一个发送了flag 如果两个都发送了会是true然后运行exit直接结束代码 再下一个是发送的flag不能是===flag 不然也是一样 之后就是一个循环遍历,把post传的参数当作一个变量名然后参数值当作变量值 输入一个flag=a看一下所以这里…...

神经网络稀疏化设计构架方式和原理深度解析

神经网络稀疏化设计构架方式和原理深度解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impo…...

天下拍拍卖系统:二方系统也能扩展三方平台功能

过去很多年,大多数拍卖公司为了快速开展线上拍卖会,普遍选择入驻阿里拍卖、京东拍卖、公拍网等三方平台——功能齐全、流量大、上线快。但随着业务深入,企业逐渐发现三方平台存在一些限制,想要私有化搭建一套属于拍卖公司自己的拍卖系统,但同时可能也想保留一些三方平台的…...

express使用redis

我用的pnpm pnpm add express redisconst express = require(express); const redis = require(redis); var app = express() var port = 3000 // 创建 Redis 客户端实例 const redisClient = redis.createClient({url: redis://172.17.0.185:6379 ,password: b7371d927aec647d…...

day07 课程

day07 课程课程:https://www.bilibili.com/video/BV1o4411M71o?spm_id_from=333.788.videopod.episodes&p=148 7.1 字典的应用场景7.2 创建字典的语法7.3 字典常用操作之新增7.4 字典常用操作之删除7.5 字典常用操作之修改———————————————————————…...

111

111111111...

排序实现java - 教程

排序实现java - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14p…...

.net core 发布到 iis 步骤

1. 打开服务器管理器,管理,添加角色和功能,把 IIS 相关的全勾上。 2. 安装.net core 环境,需要 ASP.NET Core 运行时的 Hosting Bundle 版本,其他版本没用。 3. 安装 webdeploy, 服务器防火墙打开8172端口。 4. 在 IIS 上创建站点, 配置的文件夹权限需要添加 everyone 的…...

kylin SP2安装mysql8.4.5

环境:OS:kylin SP2mysql:8.4.5 glibc2.17,建议安装glibc.2.28版本 查看系统glibc版本[root@localhost soft]# ldd --version ldd (GNU libc) 2.28 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There i…...

微信社群机器人接口

微信个人号开发API/文档/教程 大家一般需求点无非是以下几个需求: 1.开发个人微信营销系统 2.开发自定义的微信机器人, 3.开发微信智能聊天客服系统 4.定制行业内的群数据分析功能需求很简单,业务代码贼好撸,但是如何和微信交互呢,如何取到微信数据调用相关聊天接口呢,具体…...

C++的枚举类

语法:enum class 枚举类名 [: 底层类型] {枚举值1,枚举值2,... };一般形式(当然我们一般默认成员都显转int,因此底层类型一般不写) C++的枚举类: 在C++中,enum class是一种类型安全的枚举类型,它比传统的enum类型提供了更好的作用域控制和类型安全性。使用enum class可以…...

Revit二次开发 钢筋生成API(一)

1、自由钢筋生成API创建不受约束的自由形式钢筋。以后不能将约束添加到此钢筋。public static Rebar CreateFreeForm(Document doc,RebarBarType barType,Element host,IList<CurveLoop> curves,out RebarFreeFormValidationResult error )通过此方法,可以创建一个或者多…...

方法

什么是方法 方法是程序中最小的执行单位 实际开发中:重复的代码,具有独立功能的代码可以抽取到方法当中 实际开发中方法的好处:可以提高代码的复用性 提高代码的可维护性 最简单的方法定义和调用 方法的格式:把一些代码打包在一起,用到时候就调用 方法定义:把一些代码打包在…...