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

【数据库知识】mysql进阶-Mysql数据库的主从复制

mysql主从复制

    • 概述
      • 一、数据同步机制
      • 二、复制流程
      • 三、保证数据一致性的措施
      • 四、复制拓扑结构
      • 五、应用场景与优势
    • 双主复制的过程
      • 一、配置前的准备
      • 二、配置主服务器
      • 三、配置从服务器(相对角色)
      • 四、验证复制状态
      • 五、处理潜在的问题
    • 双主复制如何解决冲突问题

概述

MySQL主从复制(Master-Slave Replication)是MySQL中一种常见的高可用性和扩展性方案,其辅助原理主要涉及数据的同步机制、复制流程、以及保证数据一致性的措施。以下是对MySQL主从复制辅助原理的详细解释:

一、数据同步机制

MySQL主从复制的核心原理是基于二进制日志(Binary Log,简称binlog)来实现的。主服务器(Master)将所有数据更改操作(如INSERT、UPDATE、DELETE)记录到二进制日志中,随后从服务器(Slave)会从这些日志中读取数据变更并应用到自己的数据集上。

二、复制流程

MySQL的主从复制可以分为以下三个步骤:

  1. 主库记录二进制日志:当主库上有事务提交或数据更改时,这些变更操作会被记录到二进制日志中。二进制日志记录了所有对数据库进行修改的操作(不包括SELECT等查询操作),而且是以事件(event)的形式存储的。
  2. 从库读取并写入中继日志:从库上有一个I/O线程,它负责连接主库并从主库的二进制日志中读取数据。这些数据在从库上会被写入中继日志(Relay Log),中继日志是从库上的二进制日志的副本。
  3. 从库应用中继日志:从库上的SQL线程会读取中继日志中的事件,并将这些事件逐条应用到从库数据库上,从而使从库的数据与主库保持一致。

三、保证数据一致性的措施

  1. 复制模式

    • 异步复制:这是默认的复制方式。主服务器执行完写操作后,并不等待从服务器确认已经复制,因此速度较快,但可能存在数据不一致的风险。
    • 半同步复制:在这种模式下,主服务器在确认至少有一个从服务器已经接收到并开始执行写操作的binlog事件后,才会认为写操作完成。这提高了数据的一致性,但可能会降低性能。
  2. 全局事务ID(GTID):MySQL 5.6及之后版本引入了GTID机制。GTID为每个事务分配一个唯一的标识符,并将其在主从库之间传播。这样主库和从库可以通过GTID精确地跟踪和重放事务,简化了复制的管理和故障恢复。

  3. 锁机制和事务原子性:通过行锁、表锁等机制控制并发访问,防止数据冲突;同时确保事务中的操作要么全部成功,要么全部失败,不会影响数据的一致性。

四、复制拓扑结构

MySQL主从复制可以支持多种拓扑结构,以满足不同的业务需求,包括:

  1. 一主一从:最简单的结构,主库处理写请求,从库处理读请求。
  2. 一主多从:主库将数据同步给多个从库,从库用于读操作或备份,适合读写分离和负载均衡。
  3. 级联复制:从库充当其他从库的主库,适合层级式架构以减少主库负担。
  4. 双主复制(双向复制):两个服务器彼此之间互为主从,适合高可用或双向写入场景,但要避免数据冲突。

五、应用场景与优势

MySQL主从复制的应用场景广泛,包括读写分离、高可用性和故障切换、数据备份等。其优势在于可以提高数据库的读写性能、保证数据的一致性、实现故障转移和扩展性等。

综上所述,MySQL主从复制通过记录二进制日志、利用复制线程和SQL线程实现数据的同步,并通过多种措施保证数据的一致性。这种机制使得MySQL主从复制成为一种非常灵活且强大的高可用性和扩展性方案。

双主复制的过程

MySQL双主复制(Master-Master Replication)是一种高级的数据库复制技术,它允许两个MySQL服务器互为主从,实现数据的双向同步。以下是MySQL双主复制过程的详细说明:

一、配置前的准备

  1. 确保两台服务器硬件和软件配置相同

    • 硬件方面,包括CPU、内存、磁盘等配置应尽可能一致。
    • 软件方面,确保两台服务器上的MySQL版本相同,并且都已启用二进制日志(Binary Log)。
  2. 设定唯一的服务器ID

    • 在两台服务器的MySQL配置文件中(通常是my.cnf或my.ini),设置不同的server-id值。
  3. 启用GTID模式(可选)

    • 如果使用MySQL 5.6及以上版本,可以启用全局事务标识符(GTID)模式,以简化复制的配置和管理。

二、配置主服务器

  1. 修改配置文件

    • 在两台服务器的MySQL配置文件中,添加或修改以下参数:
      [mysqld]
      server-id = [唯一的服务器ID]
      log_bin = mysql-bin  # 启用二进制日志
      gtid_mode = ON       # 如果使用GTID,则启用此选项
      enforce_gtid_consistency = true  # 强制GTID一致性
      
  2. 重启MySQL服务

    • 修改配置文件后,需要重启MySQL服务以使配置生效。
  3. 创建复制用户

    • 在两台服务器上分别创建一个具有复制权限的用户,用于两台服务器之间的同步。
      GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%' IDENTIFIED BY 'password';
      FLUSH PRIVILEGES;
      

三、配置从服务器(相对角色)

  1. 查看主服务器状态

    • 在两台服务器上分别执行SHOW MASTER STATUS命令,获取二进制日志文件名和位置。
  2. 执行CHANGE MASTER TO命令

    • 在两台服务器上分别执行以下命令,将对方配置为从服务器。
      CHANGE MASTER TOMASTER_HOST='对方服务器IP',MASTER_USER='repluser',MASTER_PASSWORD='password',MASTER_LOG_FILE='对方二进制日志文件名',MASTER_LOG_POS=对方二进制日志位置;
      
      如果使用GTID模式,则可以使用MASTER_AUTO_POSITION=1来自动定位日志位置。
  3. 启动从服务器复制

    • 在两台服务器上分别执行START SLAVE命令,启动从服务器复制。

四、验证复制状态

  1. 查看从服务器状态

    • 在两台服务器上分别执行SHOW SLAVE STATUS\G命令,查看从服务器状态。
    • 确保Slave_IO_RunningSlave_SQL_Running都为Yes,表示复制正常。
  2. 测试数据同步

    • 在其中一台服务器上插入或更新数据,然后在另一台服务器上查询,验证数据是否同步。

五、处理潜在的问题

  1. 数据冲突

    • 由于双主复制允许双向写入,因此可能会出现数据冲突。为了避免冲突,可以采取一些措施,如使用唯一键约束、乐观锁、悲观锁等。
  2. 复制延迟

    • 复制延迟是另一个需要注意的问题。可以通过监控复制状态、优化网络性能、调整MySQL配置等方式来减少复制延迟。
  3. 故障切换

    • 在双主复制环境中,如果其中一台服务器出现故障,可以将其从复制关系中移除,并将另一台服务器作为主服务器使用。同时,需要确保故障恢复后能够重新加入复制关系并保持数据一致性。

综上所述,MySQL双主复制过程涉及多个步骤和配置选项,需要仔细规划和执行。同时,也需要关注潜在的问题和风险,并采取相应的措施来确保数据的完整性和一致性。

双主复制如何解决冲突问题

在MySQL双主复制环境中,数据冲突是一个需要特别关注的问题。以下是一些常用的解决数据冲突的方法:

  1. 使用唯一键约束

    • 在表中定义唯一键约束,确保每个记录都有唯一的标识。
    • 当插入或更新数据时,如果出现重复的唯一键值,则操作会失败,从而避免数据冲突。
  2. 使用乐观锁

    • 乐观锁是一种在数据更新时检查数据版本的机制。
    • 在表中增加一个版本号字段,每次更新数据时,版本号都会加一。
    • 在执行更新操作时,会比较当前数据的版本号和要更新的数据的版本号,如果不同,则表示数据已经被其他事务修改,当前操作会被回滚。
  3. 使用悲观锁

    • 悲观锁是在数据更新前就加锁,确保数据在更新期间不会被其他事务修改。
    • 可以使用FOR UPDATE语句来加悲观锁。
    • 需要注意的是,悲观锁可能会导致死锁,因此需要合理地设置锁的超时时间。
  4. 使用分布式锁

    • 在多个主机之间协调,确保同一时刻只有一个主机在写数据。
    • 可以使用Redis、ZooKeeper等分布式协调服务来实现分布式锁。
  5. 使用消息队列(MQ)

    • 将数据更新操作转化为消息发送,每个主机从MQ中获取消息并执行更新操作。
    • 通过消息队列的顺序性和可靠性来保证数据的一致性。
  6. 使用数据库中间件

    • 数据库中间件可以帮助管理数据库连接、事务、SQL优化等,也可以提供数据冲突解决的功能。
    • 例如,MyCAT、ShardingSphere等数据库中间件都提供了分布式数据库解决方案。
  7. 业务层解决

    • 调用方在插入数据时,可以带入全局唯一ID,而不依赖于数据库的auto increment,以避免主键冲突。
    • 应用程序需能够适应双主环境的特点,如理解写操作可能在任一节点完成,读取可能返回的数据不一致(在同步延迟期内),并处理可能遇到的冲突。
  8. 配置和管理

    • 确保正确配置server-id属性,并且在复制过滤规则(如binlog-do-dbbinlog-ignore-db)中避免相互引用,以防止因配置错误导致的数据冲突。
    • 监控复制延迟并及时处理滞后节点,以减少因复制延迟导致的数据不一致。

综上所述,解决MySQL双主复制中的数据冲突需要综合考虑多种方法和技术手段。在实际应用中,可以根据具体的业务需求和系统架构来选择合适的方法,并结合业务逻辑进行细化和优化。

相关文章:

【数据库知识】mysql进阶-Mysql数据库的主从复制

mysql主从复制 概述一、数据同步机制二、复制流程三、保证数据一致性的措施四、复制拓扑结构五、应用场景与优势 双主复制的过程一、配置前的准备二、配置主服务器三、配置从服务器(相对角色)四、验证复制状态五、处理潜在的问题 双主复制如何解决冲突问…...

深度学习中的mAP

在深度学习中,mAP是指平均精度均值(mean Average Precision),它是深度学习中评价模型好坏的一种指标(metric),特别是在目标检测中。 精确率和召回率的概念: (1).精确率(Precision):预测阳性结果中实际正确的比例(TP / …...

TB6612电机驱动模块使用指南

实物图: 简介:TB6612是一款双路H桥型直流电机驱动模块,可以控制两个直流电机的转速和方向 H桥:(双路H桥就是有两个这个结构) 引脚图:...

小试牛刀-Anchor安装和基础测试

目录 一、编写目的 二、安装步骤 2.1 安装Rust 设置rustup镜像 安装Rust 2.2 安装node.js 2.3 安装Solana-CLI 2.4 安装Anchor CLI 三、Program测试 四、可能出现的问题 Welcome to Code Blocks blog 本篇文章主要介绍了 [Anchor安装和基础测试] 博主广交技术好友&…...

基于FPGA(现场可编程门阵列)的SD NAND图片显示系统是一个复杂的项目,它涉及硬件设计、FPGA编程、SD卡接口、NAND闪存控制以及图像显示等多个方面

文章目录 0、前言 1、目标 2、图片的预处理 3、SD NAND的预处理 4、FPGA实现 4.1、详细设计 4.2、仿真 4.3、实验结果 前言 在上一篇文章《基于FPGA的SD卡的数据读写实现(SD NAND FLASH)》中,我们了解到了SD NAND Flash的相关知识&am…...

1.tree of thought (使用LangChain解决4x4数独问题)

本教程将介绍如何使用LangChain库和chatglm API来解决一个4x4的数独问题。我们将通过以下步骤实现这一目标: 初始化chatglm 的聊天模型。定义数独问题和解决方案。创建一个自定义的检查器来验证每一步的思考。使用ToTChain来运行整个思考过程。 1. 初始化chatglm4…...

对subprocess启动的子进程使用VSCode python debugger

文章目录 1 情况概要(和文件结构)2 具体设置和启动步骤2.1 具体配置Step 1 针对attach debugger到子进程Step 2 针对子进程的暂停(可选) Step 3 判断哪个进程id是需要的子进程 2.2 启动步骤和过程 3 其他问题解决3.13.2 ptrace: Operation not permitted…...

MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk)

MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk) 1.计算模型介绍 使用GARCH(广义自回归条件异方差)模型计算VaR(风险价值)时,方差法是一个常用的方法。GARCH模型能够捕捉到金融时间序列数据中的波…...

Android中常见内存泄漏的场景和解决方案

本文讲解Android 开发中常见内存泄漏场景及其解决方案,内容包括代码示例、原因分析以及最佳实践建议。 1. 静态变量导致的内存泄漏 静态变量的生命周期与应用进程一致,如果静态变量持有了对 Activity 或其他大对象的引用,就可能导致内存泄漏…...

爬取链家二手房房价数据存入mongodb并进行分析

感谢您的关注!需要完整源码评论区获取~ 【实验目的】 1. 使用 python 将爬虫数据存入 mongodb; 2. 使用 python 读取 mongodb 数据并进行可视化分析。 【实验原理】 MongoDB 是文档数据库,采用 BSON 的结构来存储数据。在文档中可嵌套其…...

《TCP/IP网络编程》学习笔记 | Chapter 13:多种 I/O 函数

《TCP/IP网络编程》学习笔记 | Chapter 13:多种 I/O 函数 《TCP/IP网络编程》学习笔记 | Chapter 13:多种 I/O 函数send & recv 函数Linux 平台下的 send 和 recv 函数MSG_OOB:发送紧急消息紧急模式的工作原理检查输入缓冲 readv & w…...

详细介绍下oracle冷备(coolbackup)

冷备,也就说数据库不是运行(热的状态)的备份。有些时候我们的数据库比较小,进行同操作系统数据迁移和恢复的时候就比较好用。下面我们详细介绍下oracle数据库的冷备(我们使用最简单的拷贝数据文件方式进行冷备&#xf…...

MYSQL——多表设计以及数据库中三种关系模型

大致介绍数据库中三种关系模型 一对多(1:N) 定义: 一个实体可以与另一个实体的多个实例相关联,而后者只能与前者的一个实例相关联。 例子: 学生和课程的关系。 学生(1):每个学生…...

泷羽sec学习打卡-html基础

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于云技术基础的那些事儿-捕获帅照 html基础什么是html? 常用的html标签html示例 css基础什…...

国标GB28181摄像机接入EasyGBS国标GB28181设备管理软件:GB28181-2022媒体传输协议解析

随着信息技术的飞速发展,视频监控领域正经历从传统安防向智能化、网络化安防的深刻转变。在这一转变过程中,国标GB28181设备管理软件EasyGBS成为了这场技术变革的重要一环。 GB28181-2022媒体传输协议 媒体传输命令包括实时视音频点播、历史视音频回放/…...

鸿蒙网络编程系列50-仓颉版TCP回声服务器示例

1. TCP服务端简介 TCP服务端是基于TCP协议构建的一种网络服务模式,它为HTTP(超文本传输协议)、SMTP(简单邮件传输协议)等高层协议的应用程序提供了可靠的底层支持。在TCP服务端中,服务器启动后会监听一个或…...

JMeter监听器与压测监控之 InfluxDB

1. 简介 在本文中,我们将介绍如何在 Kali Linux 上通过 Docker 安装 InfluxDB,并使用 JMeter 对其进行性能监控。InfluxDB 是一个高性能的时序数据库,而 JMeter 是一个开源的性能测试工具,可以用于对各种服务进行负载测试和性能监…...

混合上下文学习 ;In-Context Learning(ICL)

目录 In-Context Learning(ICL) 混合上下文学习 核心内容 核心创新点的原理与理论 举例说明 In-Context Learning(ICL) 是一种在大语言模型(LLM)中使用的技术,它允许模型通过提供一组输入输出示例(即“demonstrations”)来适应新任务,而无需对模型参数进行显…...

【STM32】软件I2C读写MPU6050

文章目录 软件I2C读写MPU6050接线图代码整体框架MyI2C模块MyI2C.cMyI2C.h MPU6050模块MPU6050.cMPU6050_Reg.h MPU6050.h main.c 源程序 软件I2C读写MPU6050 要实现软件I2C读写MPU6050分为两个部分: 完成软件I2C协议时序基于I2C协议读写寄存器操控MPU6050 接线图…...

HarmonyOS鸿蒙系统上File文件常用操作

HarmonyOS鸿蒙系统上,file文件常用操作记录 1.创建文件 createFile(fileName: string, content: string): string {// 获取应用文件路径let context getContext(this) as common.UIAbilityContext;let filesDirPath context.filesDir / fileName;// 新建并打开…...

如何解决Java EasyExcel 导出报内存溢出

如何解决Java EasyExcel 导出报内存溢出 EasyExcel大数据量导出常见方法 1. 分批写入 EasyExcel支持分批写入数据,可以将数据分批加载到内存中,分批写入Excel文件,避免一次性将大量数据加载到内存中。 示例代码: String fileNa…...

[产品管理-91]:产品经理的企业运营的全局思维-1

目录 前言:企业架构图 产品经理的企业运营全局思维 1、用户 - 用户价值与体验:真正的需求,真正的问题,一切的原点 2、大势 - 顺应宏观大势:政策趋势、行业趋势、技术趋势 3、市场 - 知己知彼:市场调研…...

学习笔记——stm32看门狗

目录 一、WDG简介 二、IWDG框图 2.1独立看门狗结构 2.2键寄存器 2.3超时时间 三、WWDG框图 3.1窗口看门狗结构 3.2WWDG时序图 3.3最早、最晚时间 四、IWDG和WWDG对比 五、IWDG相关库函数和应用 5.1相关库函数 5.2应用 六、WWDG相关库函数和应用 6.1相关库函数 6…...

2411rust,cargo清理缓存

原文 Cargo最近在晚间通道上取得了一个不稳定的功能(从nightly-2023-11-17开始),它可自动清理Cargo主目录中的缓存内容. 总之,请求使用晚间通道的人启用此功能,并在Cargo问题跟踪器上报告问题.要启用它,请在你的一般在~/.cargo/config.toml或%USERPROFILE%\.cargo\config.tom…...

高级java每日一道面试题-2024年11月19日-基本篇-获取一个类Class对象的方式有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: 获取一个类Class对象的方式有哪些? 我回答: 在 Java 中,获取一个类的 Class 对象有多种方式。这些方式各有优缺点,适用于不同的场景。以下是常见的几种方法及其详细解释: 1. 使用 new 关键字实…...

Vue 3与TypeScript集成指南:构建类型安全的前端应用

在Vue 3中使用TypeScript,可以让你的组件更加健壮和易于维护。以下是使用TypeScript与Vue 3结合的详细步骤和知识点: 1. 环境搭建 首先,确保你安装了Node.js(推荐使用最新的LTS版本)和npm或Yarn。然后,安…...

可视化建模与UML《活动图实验报告》

你当像鸟飞往你的山。 一、实验目的&#xff1a; 1、熟悉活动图的基本功能和使用方法。 2、掌握使用建模工具软件绘制协作图的方法 二、实验环境&#xff1a; window7 | 10 | 11 EA15 三、实验内容&#xff1a; <1>绘制学生选课系统中添加课程(Add Course)用例的活动图…...

接雨水

接雨水 1、 题目描述2、解题思路 1、 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 2、解题思路 本题使用了双指针&#xff0c;根据下图可以得出&#xff0c;下标 i 处能接的雨水量由左边…...

i春秋-签到题

练习平台地址 竞赛中心 题目描述 题目内容 点击GUESS后会有辨识细菌的选择题 全部完成后会有弹窗提示 输入nickname后提示获得flag F12检查 元素中没有发现信息 检查后发现flag在控制台中 flag flag{663a5c95-3050-4c3a-bb6e-bc4f2fb6c32e} 注意事项 flag不一定要在元素中找&a…...

Selenium + 数据驱动测试:从入门到实战!

引言 在软件测试中&#xff0c;测试数据的多样性和灵活性对测试覆盖率至关重要。而数据驱动测试&#xff08;Data-Driven Testing&#xff09;通过将测试逻辑与数据分离&#xff0c;极大地提高了测试用例的可维护性和可扩展性。本文将结合Selenium这一流行的测试工具&#xff0…...

考研倒计时30天丨和西电一起向前!再向前!

上岸后 就能来 西安电子科技大学 和学长学姐一起吃饭&#xff0c;XDU食堂都有你想要的一切 ①、海棠篇&#xff1a;海棠新生初入校园&#xff0c;还在犹豫吃什么&#xff1f;宿舍楼边的海棠餐厅物美价廉&#xff0c;满足你一日三餐的需求与期盼&#xff01; 俗话说&#xff1a…...

json数组写入文件每行一条数据

我们知道将json或json数组写入文件&#xff0c;一般是用JSON.stringify先将json或json数组转成字符串&#xff0c;再写入文件。JSON.stringify()的语法是这样的&#xff1a;JSON.stringify(value[, replacer[, space]]) JSON.stringify(value)调用则不带空格tab换行等分隔符&am…...

EasyExcel并行导出多个excel文件并压缩下载

EasyExcel并行导出多个excel文件并压缩下载 在SpringBoot应用中,采用同步方式导出Excel文件会导致服务器在生成文件期间阻塞,特别是在处理大量数据时,这种效率较低的方法会严重影响性能。为了解决这个问题,可以采用以下改进措施:首先将导出的数据进行拆分,然后利用Compl…...

hadoop3.x 新特性

hadoop3.x 新特性 FeaturesHadoop 2.xHadoop 3.xMinimum Required Java VersionJDK 6 and above.JDK 8 is the minimum runtime version of JAVA required to run Hadoop 3.x as many dependency library files have been used from JDK 8.Fault ToleranceFault Tolerance is …...

单片机智能家居火灾环境安全检测-分享

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 传统的火灾报警系统大多依赖于简单的烟雾探测器或温度传感器&#xff0c;…...

241117学习日志——[CSDIY] [ByteDance] 后端训练营 [05]

CSDIY&#xff1a;这是一个非科班学生的努力之路&#xff0c;从今天开始这个系列会长期更新&#xff0c;&#xff08;最好做到日更&#xff09;&#xff0c;我会慢慢把自己目前对CS的努力逐一上传&#xff0c;帮助那些和我一样有着梦想的玩家取得胜利&#xff01;&#xff01;&…...

Oracle 19C 安装RAC磁盘投票失败

ORACLE 19C 安装RAC第二个节点报错&#xff0c;没有找到足够的 voting 文件&#xff08;投票磁盘&#xff09; 1、磁盘投票失败分析 1.1、02节点报错日志 CRS-4123: Starting Oracle High Availability Services-managed resources CRS-2672: Attempting to start ora.mdnsd…...

vulfocus在线靶场:骑士cms_cve_2020_35339:latest 速通手册

目录 一、启动环境&#xff0c;访问页面&#xff0c;ip:端口号/index.php?madmin,进入后台管理页面&#xff0c;账号密码都是adminadmin 二、进入之后&#xff0c;根据图片所示&#xff0c;地址后追加一下代码&#xff0c;保存修改 ​三、新开标签页访问&#xff1a;①ip:端…...

【Linux内核深度解析】TCP协议栈之tcp_recvmsg

tcp_recvmsg 是 Linux 内核中用于处理 TCP 套接字接收数据的核心函数。它的主要任务是从接收队列中读取数据并将其复制到用户空间。 函数原型 int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t len, int nonblock, int flags, int *addr_le…...

android-studio-4.2下载 、启动

下载 分享一个国内的android studio网站&#xff0c;可以下载SDK和一些Android studio开发工具 https://www.androiddevtools.cn/ 启动 JAVA_HOME/app/zulu17.48.15-ca-jdk17.0.10-linux_x64/ /app5/android-studio-home/android-studio-ide-201.6568795-linux-4.2C1/bin/s…...

Excel——宏教程(2)

Excel——宏教程(2) 一)、处理单元格 1、直接赋值与引用 将变量、常量值直接赋给单元格、或将单元格的值直接赋给变量、常量&#xff0c;这是在excel中最简单的单元格赋值及引用方法。 如下例将工作表"Sheet1"A1单元格的值赋给Integer变量I&#xff0c;并将I1的值…...

React Native 全栈开发实战班 - 性能与调试之打包与发布

在完成 React Native 应用的开发与性能优化后&#xff0c;下一步就是将应用打包并发布到各大应用市场&#xff0c;如 Apple App Store 和 Google Play Store。本章节将详细介绍 React Native 应用的打包与发布流程&#xff0c;包括 Android 和 iOS 平台的打包步骤、签名配置、发…...

C# 5000 转16进制 字节(激光器串口通讯生成指定格式命令)

最近在做一个与激光器用串口进行通讯的程序文档中要求将频率参数以3个字节的方式进行发送。这里记录一下过程。以便以后再有类似问题时可以快速解决。 /// <summary>/// 设置频率/// </summary>/// <param name"sender"></param>/// <par…...

Win11下载和配置VSCode(详细讲解)

配置VSCode需要的工具&#xff1a; 一、MinGW-w64 二、Visual Studio Code 一、MinGW-w64下载 1、下载 MinGW官网地址&#xff1a; Downloads - MinGW-w64 直链下载&#xff1a; 下载 mingw-w64-install.exe &#xff08;MinGW-w64 - 适用于 32 位和 64 位 Windows&#…...

基于Multisim的多路智力竞赛抢答器设计与仿真

(1)设计一个8路智力竞赛抢答器,主持人可控制系统的清零和抢答的开始,控制电路可实现最快抢答选手按键抢答的判别和锁定功能&#xff0c;并禁止后续其他选手抢答。 (2)抢答选手确定后给出一声音响的提示和选手编号的显示&#xff0c;抢答选手的编号显示保持到系统被清零为止。 …...

Three.js 闪电效果

闪电shader const shader new THREE.ShaderMaterial({uniforms: {iTime: this.iTime,color: { value: new THREE.Color("#D2F8FE") },},vertexShader: /* glsl */ varying vec2 vUv;varying float normalizeY;void main() {// vUv (uv * 2. - 2.) * vec2(0.3,2.);…...

高效序列化工具(1)-----Protobuf

目录 1.Protobuf Protobuf 的特点 工作原理 Protobuf 与 JSON、XML 的对比 2.protobuf语法 1.数据类型 2.消息 3.枚举 4.嵌套消息 5.重复字段 6.默认值 7.其他类型 1.oneof类型 2.any类型 8.文件组织 3.protobuf命令 1.常见命令 选项&#xff1a; 1. --proto_…...

湛江市社保卡申领指南:手机获取电子照片回执单号

在湛江市&#xff0c;社保卡的申领流程已经实现了数字化&#xff0c;为市民带来了极大的便利。特别是通过手机获取数码照片回执单号&#xff0c;这一环节更是简化了申领过程。今天&#xff0c;我们将详细介绍如何不去照相馆&#xff0c;利用手机来获取数码照片回执单号&#xf…...

HTML5实现剪刀石头布小游戏(附源码)

文章目录 1.设计来源1.1 主界面1.2 皮肤风格1.2 游戏中界面 2.效果和源码源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/143798520 HTM…...

TypeScript之常见类型

常见类型(Everyday Types) 本章我们会讲解 JavaScript 中最常见的一些类型,以及对应的描述方式。注意本章内容并不详尽,后续的章节会讲解更多命名和使用类型的方式。 类型可以出现在很多地方,不仅仅是在类型注解 (type annotations)中。我们不仅要学习类型本身,也要学习…...