MySQL8.0复制原理和部署配置步骤
1. mysql 主从复制原理
- 在从库上执行change master to;会将主库的信息保存到从库中的master.info文件中
- 在从库执行start slave;开启io_thread, sql_thread线程;
- io_thread工作;io_thread通过master.info文件中主库的连接信息去连接主库;连接成功后主库就会开启dump_thread;
- dump_thread读取主库新产生的二进制日志;然后投递给io_thread;
- io_thread接收dump_thread投递的新的二进制日志,将日志写入到relay log(中继日志);
- io_thread就会等待主库dump_thread主动把新产生的二进制日志投递;
- sql_thread会将relay log新产生的日志恢复到数据库,写到磁盘
2. 环境规划
IP | hostname | 说明 |
192.168.50.80 | db01 | 主库 |
192.168.50.81 | db02 | 从库 |
2.1. 修改SELINUX
echo "SELINUX=disabled" > /etc/selinux/config
echo "#SELINUXTYPE=targeted " >> /etc/selinux/config
cat /etc/selinux/config
setenforce 0
2.2. 关闭防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
2.3. 关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
2.4. 内核参数配置
vi /etc/sysctl.confnet.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_max_tw_buckets = 8000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
vm.swappiness=0执行sysctl -p 命令是配置生效
2.5. 修改用户资源限制
/etc/security/limits.confmysql soft nofile 65535
mysql hard nofile 65535
mysql soft nproc 65535
mysql hard nproc 65535
3. 安装MySQL数据库
3.1. 下载mysql8,
下载rpm bundle包上传到centos系统上。官网 MySQL :: Download MySQL Community Server (Archived Versions)
或者在云盘下载:
通过百度网盘分享的文件:mysql-8.0.33-1.el7.x86_64.rpm-bundl...
链接:百度网盘 请输入提取码
3.2. 解压bundle包
tar xvf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar
3.3. 卸载mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-*
3.4. 安装 MYSQL
rpm -ivh mysql-community-common-8.0.33-1.el7.x86_64.rpm mysql-community-client-plugins-8.0.33-1.el7.x86_64.rpm mysql-community-libs-8.0.33-1.el7.x86_64.rpm mysql-community-client-8.0.33-1.el7.x86_64.rpm mysql-community-icu-data-files-8.0.33-1.el7.x86_64.rpm mysql-community-server-8.0.33-1.el7.x86_64.rpm
3.5. 初始化MySQL并启动
#初始化
mysqld --initialize --console
#授权mysql用户
chown -R mysql:mysql /var/lib/mysql/
启动服务
systemctl start mysqldsystemctl enable mysqld
#查看初始化密码
cat /var/log/mysqld.log | grep localhost
第二台主机上面执行
3.6. 登录MySQL和配置用户
mysql -u root -p #登录,输入密码
3.7. 修改密码,开启远程
#修改登录密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'my@123';
#切换到mysql数据库
use mysql;
#开启数据库远程管理
update user set Host='%' where User='root';
flush privileges;
4. 主从配置
4.1. 确保你已经安装了MySQL 8.0并且两个服务器(主服务器和从服务器)都已经正常运行。
4.2. 在主服务器(db01)上修改配置文件(my.cnf或my.ini)新增下面参数:
cat >> /etc/my.cnf <<EOF
#服务器 id,随意,但要唯一
server-id = 1
#二进制文件存放路径
log-bin = mysql-bin
#参数用于排除自带的数据库。
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
#二进制日志格式,建议使用ROW格式以获得更好的兼容性和可靠性。
binlog-format = ROW
EOF
重启从服务以使配置更改生效。
systemctl restart mysqld
4.3. 在主服务器的数据库中创建用于复制的账户并授予相应的权限。
#登录MySQL
mysql -uroot -pmy@123use mysql;
#创建用户
CREATE USER 'db_sync'@'%' IDENTIFIED BY 'my@123';
#授权账号复制权限
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%';
#刷新配置
FLUSH PRIVILEGES;
4.4. 在主服务器上执行以下命令获取当前二进制日志文件的名称和位置:
SHOW MASTER STATUS;
4.5. 在从服务器(db02)上修改配置文件(my.cnf或my.ini),找到并编辑以下参数:
cat >>/etc/my.cnf <<EOFserver-id = 2
#中继日志文件的名称,用于从主服务器接收二进制日志事件。
relay-log = mysql-relay-bin
#从服务器的二进制日志文件的名称。
log_bin = mysql-bin
#不同步相关的库
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schemaEOF
4.6. 配置主从
登录从服务器(db02)MySQL上更据主服务器建立的账号和show master status;显示的内容,修改以下命令配置主从复制:(根据第2.4上的内容修改)
mysql -u root -pmy@123STOP SLAVE;CHANGE MASTER TOMASTER_HOST = '192.168.50.81',MASTER_USER = 'db_sync',MASTER_PASSWORD = 'my@123',#主服务器数据库上的file值(不能有空格)MASTER_LOG_FILE = 'mysql-bin.000001',#主服务器数据库的Position值MASTER_LOG_POS = 157,get_master_public_key=1;
4.7. 在从服务器启动同步并查看状态
start slave;
4.8. 查看同步状态
SHOW SLAVE STATUS\G;
5. 测试数据插入
[root@db01 opt]# mysql -uroot -pmy@123
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+mysql> create database testhf;
Query OK, 1 row affected (0.00 sec)mysql> use testhf
Database changed
mysql> CREATE TABLE testhf (-> id INT AUTO_INCREMENT PRIMARY KEY,-> name VARCHAR(100) NOT NULL,-> salary DECIMAL(10, 2),-> date DATETIME-> );mysql> INSERT INTO testhf (name, salary,date) VALUES ('Alice', 5000.00,sysdate());
Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO testhf (name, salary,date) VALUES ('Alice', 5000.00,sysdate());
Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO testhf (name, salary,date) VALUES ('Alice', 5000.00,sysdate());
Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO testhf (name, salary,date) VALUES ('Alice', 5000.00,sysdate());
Query OK, 1 row affected (0.01 sec)
mysql> select * from testhf.testhf;
+----+-------+---------+---------------------+
| id | name | salary | date |
+----+-------+---------+---------------------+
| 1 | Alice | 5000.00 | 2025-01-03 17:24:04 |
| 2 | Alice | 5000.00 | 2025-01-03 17:24:12 |
| 3 | Alice | 5000.00 | 2025-01-03 17:24:13 |
| 4 | Alice | 5000.00 | 2025-01-03 17:24:14 |
| 5 | Alice | 5000.00 | 2025-01-03 17:24:16 |
+----+-------+---------+---------------------+
6. 从库状态
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.50.81Master_User: db_syncMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 2239Relay_Log_File: mysql-relay-bin.000002Relay_Log_Pos: 2408Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB:Replicate_Ignore_DB: mysql,information_schema,performance_schemaReplicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 2239Relay_Log_Space: 2618Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 1Master_UUID: 50a17fe2-c9af-11ef-b491-000c297836dfMaster_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Replica has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp:Master_SSL_Crl:Master_SSL_Crlpath:Retrieved_Gtid_Set:Executed_Gtid_Set:Auto_Position: 0Replicate_Rewrite_DB:Channel_Name:Master_TLS_Version:Master_public_key_path:Get_master_public_key: 1Network_Namespace:
1 row in set, 1 warning (0.00 sec)-- show slave status \G; 查看从库状态Master_Host: 192.168.50.81 主库ip
Master_User: db_sync 主库用户
Master_Port: 3306 主库端口号
Connect_Retry:60 失败连接的次数Master_Log_File: mysql-bin.000001 当前从库io_thread正在读取主库的二进制日志文件
Read_Master_Log_Pos: 2239 当前从库io_thread正在读取主库二进制日志文件的位置 --【主库:show master status;】Relay_Log_File: mysql-relay-bin.000002 当前从库sql_thread正在读取从库的中继日志文件
Relay_Log_Pos: 2199 当前sql_thread正在读取从库中继日志文件的位置Relay_Master_Log_File: mysql-bin.000001 当前从库sql_thread从relay log中读取的正在进行的sql语句,对应主库的sql语句是在哪个binlog中;
Exec_Master_Log_Pos: 1986 从库sql_thread当前执行的事件,对应主库的binlog中的positionSeconds_Behind_Master: 0 主从复制延迟的时间;如果是0表示主从无延迟Last_IO_Error 显示io线程错误信息
Last_SQL_Error 显示sql线程错误信息SQL_Delay: 0 延迟复制Retrieved_Gtid_Set: 94fc1fbe-b7a0-11eb-b0a0-000c2969aba1:17 当前io_thread已经接受到的binlog
Executed_Gtid_Set: 92fbca79-b219-11eb-9222-000c29a1a06e:1-2, 94fc1fbe-b7a0-11eb-b0a0-000c2969aba1:1-17 当前从库sql_thread执行的二进制日志位置-- 过滤复制条件,从库上面配置的
Replicate_Do_DB:
Replicate_Ignore_DB: mysql,information_schema,performance_schema
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
7. 常用命令:
- start slave; 开启io_thread和sql_thread
- start slave io_thread;
- start slave sql_thread;
- stop slave; 关闭io_thread和sql_thread
- stop slave io_thread;
- stop slave sql_thread;
- show processlist;
- reset slave; --【从库执行】
- 删除master.info,relay-log.info数据;删除所有relay log;将延迟选项master_delay设为0;
- Reset slave all 相对于RESET SLAVE,RESET SLAVE ALL还会删除内存中的连接信息,这个时候,执行start slave会报错。
- reset master;删除所有的二进制日志文件 --【主库操作前要备份好日志】
相关文章:
MySQL8.0复制原理和部署配置步骤
1. mysql 主从复制原理 在从库上执行change master to;会将主库的信息保存到从库中的master.info文件中在从库执行start slave;开启io_thread, sql_thread线程;io_thread工作;io_thread通过master.info文件中主库的连接信息去连接主库;连接成…...
Unity热更新文件修改后缀并拷贝到指定路径的工具类
最近在学习Hybrid热更新。每次编译完,需要修改后缀名和拷贝到特定路径覆盖旧文件,就叫AI写了个工具类。现在记录一下,毕竟ai写完还需要修改。 代码如下,放到Assets/Editor/路径下即可。 可根据需求自行改变路径和文件名。 using…...
前端vue+el-input实现输入框中文字高亮标红效果(学习自掘金博主文章)
学习自掘金文章https://juejin.cn/post/7295169886177918985 该博主的代码基于原生textarea控件和js实现,基于该博主的代码和思路,在vue下实现了相应功能 思路 生成html字符串来实现文字高亮标红效果,但是input输入控件不能渲染html字符串…...
SAP系统中的标准价、移动平均价是什么?有何区别?物料分类账的优点
文章目录 前言一、SAP系统中的价格控制二、移动平均价、标准价是什么?三、S价(标准价)的优势四、S价(标准价)的劣势五、V价(移动平均价)的优势六、V价(移动平均价)的劣势…...
通往O1开源之路
“Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective”由复旦大学和上海人工智能实验室的研究者撰写。该论文从强化学习视角出发,深入分析了实现类似OpenAI o1模型性能的路线图,聚焦于策略初始化、奖…...
【QT】实现RestFul接口
在这个教程中,我们将介绍如何在 Qt 中使用 QHttpServer 类来创建一个简单的 HTTP 服务器。QHttpServer 是 Qt 6 引入的新类,用于提供 HTTP 服务。这个类非常适合快速开发restful接口。 准备工作 确保你的 Qt 版本是 Qt 6 或更高版本,因为 Q…...
ARP攻击的原理和实现 (网络安全)
ARP攻击的原理和实现 ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,用于在局域网内将IP地址映射到MAC地址。在以太网中,设备通过广播ARP请求来查询目标IP地址对应的MAC地址,从而建立通信…...
大脑特训,自信 “满格”
编辑:念小艺 在追求自信的漫漫长路上,诸多因素如同闪耀的星光,为人们指引着方向。保持良好的饮食习惯,让身体摄取充足且均衡的营养,为精神的饱满提供坚实后盾;持续投身于锻炼之中,在挥洒汗水的…...
如何备份和恢复 PostgreSQL 数据库 ?
对于数据库管理员和开发人员来说,在 PostgreSQL 中创建数据库副本是一项至关重要的任务。此过程对于测试、备份、数据分析等都是必不可少的。在本指南中,我们将深入研究创建 PostgreSQL 数据库副本的步骤,以确保数据完整性和系统性能。 必要…...
逆向入门(6)汇编篇-外挂初体验
代码分析部分 游戏里面还是体验了不少自己CV来的外挂的,自己编写的程序还是头一次体验,程序源码如下 void startAcctack() {printf("开始攻击\n");// 获取当前系统时间time_t now time(0); // 获取当前时间的时间戳struct tm *local_time …...
HTML——77.网页编码及乱码处理
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>网页编码及乱码处理</title></head><body><!--网页编码:指网页中特定的字符编码,通过解析编码成为我们知道的文字--><!-…...
(leetcode算法题)382. 链表随机节点
如果给你一个 智能记录 k行内容的小笔记本,从一本你也不知道有多少行的 C Primer 中进行摘抄,你应该怎么做才能让抄写的时候能让书中的每一行都等概率的出现在小笔记本中? 答:准备好一个公平的轮盘和一个巨大的摇奖机,…...
Git 如何在IDEA中进行使用
1. 2. 3....
【Pytorch报错】AttributeError: cannot assign module before Module.__init__() call
代码: import torch.nn as nnclass Model(nn.Module):def __init__(self, input_dim, output_dim):self.linear nn.Linear(input_dim, output_dim) def forward(self, x):out self.linear(x)return outmodel Model(1, 1)报错: --------------------…...
深入理解计算机系统—虚拟内存(一)
一个系统中的进程是与其他进程共享 CPU 和主存资源的。然而,共享主存会形成特殊的挑战。随着对 CPU 需求的增长,进程以某种合理的平滑方式慢了下来。但是如果太多的进程需要太多的内存,那么它们中的一些就根本无法运行。 为了更加有效地管理内…...
[Qt] 输入控件 | Line | Text | Combo | Spin | Date | Dial | Slider
目录 输入类控件 1、Line Edit 录入个人信息 使用正则表达式验证输入框的数据 验证两次输入的密码一致 切换显示密码 2、Text Edit 获取多行输入框的内容 验证输入框的各种信号 3、Combo Box 使用下拉框模拟麦当劳点餐 从文件中加载下拉框的选项 4、Spin Box 调整…...
【信息系统项目管理师】高分论文:论信息系统项目的风险管理(数字化联合审查管理系统)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文一、全盘考虑,编制项目风险管理计划二、务实高效,做好项目的风险识别三、客观严谨,进行定性风险分析四、客观严谨,进行定量风险分析五、未雨绸缪,做好规划风险应对六、控制执行,实施风险应对七、做好…...
设计模式 结构型 外观模式(Facade Pattern)与 常见技术框架应用 解析
外观模式(Facade Pattern)是一种结构型设计模式,它的核心思想是将一个复杂的子系统封装在一个外观类中,为子系统提供一个统一的接口。通过这个接口,客户端可以简化对子系统的访问,而无需直接与子系统中的各…...
《learn_the_architecture_-_generic_interrupt_controller_v3_and_v4__lpisn》学习笔记
1.LPI(Locality-specific Peripheral Interrupts)是一种基于消息的中断(Message Signaled Interrupt,MSI),由中断翻译服务(ITS)提供翻译。这是因为LPI的设计目标是为系统中大量的设备提供高效的中断管理&am…...
java 常量池详解
目录 java 常量池详解一 静态常量池(Static Constant Pool)1.1 概述1.2 存储内容1.3 特点1.4 示例 二 运行时常量池(Runtime Constant Pool)2.1 概述2.2 存储内容2.3 特点2.4 示例 三 基础类型常量池(Primitive Type C…...
aardio —— 虚表 —— 模拟属性框
写了个简单的属性框例程,抛砖引玉,期待你做出更丰富强大的功能。 可折叠行、可输入文本、可下拉选择、支持下拉选择图片、颜色等功能。 只有想不到,没有做不到,发挥你的想象力吧。 import win.ui; import godking.comboboxEx im…...
企业微信——智能表格学习
智能表格 应用限制条件 获取 token https://developer.work.weixin.qq.com/document/10013#%E5%BC%80%E5%8F%91%E6%AD%A5%E9%AA%A4 开发步骤 你可以通过以下步骤,使用access_token来访问企业微信的接口。需要注意的是,所有的接口需使用Https协议、Js…...
2501d,jingo优化
原文 大家好,我重构和优化了一下jin.go这里: 我去掉了vibe.d依赖,因为它又慢又大,而且我无法与2版本交朋友.当仅运行1000个vibe纤程时,不仅应用崩溃,甚至图形系统驱动也崩溃一次,这需要重启笔记本电脑. 当前,我用小栈大小的本地流(4kb)解决. 我真很期待photon的稳定性,以恢复支…...
实景三维点云处理专业软件ArcGIS根据DSM生成地表点云集
常见的实景三维处理软件及其特色功能如下: 一、专业实景三维建模软件 Agisoft Metashape 高精度建模:能够生成高精度的三维模型,精度可以达到厘米级甚至毫米级,适用于需要详细测量和分析的项目,如文物保护和建筑测量。…...
山东大学人工智能导论期末复习概念汇总
人工智能概念汇总V2 —Nevertheless 简介 [!NOTE] 本文是在原版的基础上,面向期末而进行的删减版本 建议使用pdf版本,排版和图片显示完全。如有需要,可私信发送邮箱地址 PDF版本: 山东大学人工智能导论概念汇总pdf版 山东大学软…...
Ubuntu下安装Android Sdk
下载android sdk命令行工具 https://developer.android.com/studio?hlzh-cn#command-tools mkdir android-sdk cd android-sdk unzip commandlinetools-linux-11076708_latest.zip 添加环境变量到~/.bashrc export ANDROID_HOME$HOME/android-sdk export PATH$PATH:$ANDRO…...
c语言中GHashTable的使用
前言:最近在c代码中需要用到键值对的存储,由于没有map,需要自己实现或者使用库函数,g_hash_table_new是GLib中的库函数,但使用起来会有很多坑,记录一下 构建hash表g_hash_table_new GHashTable* g_hash_table_new(GH…...
Conda清理缓存
参考:1、2...
【每日学点鸿蒙知识】导入cardEmulation、自定义装饰器、CallState状态码顺序、kv配置、签名文件配置
1、HarmonyOS 无法导入cardEmulation? 在工程entry mudule里的index.ets文件里导入cardEmulation失败 可以按照下面方式添加SystemCapability;在src/main/syscap.json(此文件需要手动创建)中添加如下内容 {"devices": {"gen…...
【从零开始入门unity游戏开发之——C#篇42】C#补充知识——随机数(Random)、多种方法实现string字符串拼接、语句的简写
文章目录 一、随机数1、Random.Next()生成随机整数示例:生成一个随机整数生成指定范围内的随机整数 2、Random.NextSingle生成随机浮点数示例:生成随机浮点数 3、 生成随机字母或字符示例:生成随机字母示例:生成随机小写字母 二、…...
深入解析 Conda 安装的默认依赖包及其作用:conda create安装了哪些包(中英双语)
深入解析 Conda 安装的默认依赖包及其作用 当我们使用 Conda 创建新环境时,例如执行命令: conda create -n olmes python3.10Conda 会自动为我们安装一系列基础依赖包,保证 Python 环境能够正常运行。这些包不仅是我们开发的基础工具&#…...
《Vue3实战教程》35:Vue3测试
如果您有疑问,请观看视频教程《Vue3实战教程》 测试 为什么需要测试 自动化测试能够预防无意引入的 bug,并鼓励开发者将应用分解为可测试、可维护的函数、模块、类和组件。这能够帮助你和你的团队更快速、自信地构建复杂的 Vue 应用。与任何应用一…...
Mysql监视器搭建
Mysql监视器搭建 资源下载在:Mysql监视器资源包 查询问题:CPU、连接数、慢查询 --> 暴增 1、exporter进行Mysql信息采集 修改my.cnf [client] userroot password数据库密码 host:数据库URL port3306启动命令 mysqld_exporter.exe --config.my-c…...
Linux(centos)安装 MySQL 8 数据库(图文详细教程)
前言 前几天写了个window系统下安装Mysql的博客,收到很多小伙伴私信需要Linux下安装Mysql的教程,今天这边和大家分享一下,话不多说,看教程。 一、删除以前安装的MySQL服务 一般安装程序第一步都需要清除之前的安装痕迹ÿ…...
软件工程大作业——图书管理系统/图书个性化推荐与实现系统
目录 1 绪论 1.1研究背景 1.2研究现状 1.3研究内容 2 系统关键技术 2.1 Spring Boot框架 2.2 JAVA技术 2.3 MYSQL数据库 2.4 B/S结构 3 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2 系统性能分析 3.3 系统功能分析 3.4系统流程分析 3.4.1登…...
Linux下编译安装PETSc
本文记录在Linux下编译安装PETSc的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1oneAPI2024.2.1 一、安装依赖 1.1 安装oneAPI 参见:Get the Intel oneAPI Base Toolkit , Get the Intel oneAPI HPC Toolkit 1.2 安…...
检索增强生成
概述 检索增强生成(Retrieval-Augmented Generation,RAG)是一种将信息检索与语言模型相结合的技术。由Facebook AI Research于2020年提出,它把数据库的优势与语言模型的优势相结合。它能让模型从外部知识库中检索信息,…...
九、Vue 事件处理器
文章目录 前言一、基础事件绑定:v-on 指令二、方法调用:组织有序的交互逻辑三、事件修饰符阻止冒泡与默认事件捕获与自身触发单次触发与鼠标按键区分四、按键修饰符前言 在 Vue.js 的交互世界里,事件处理器起着举足轻重的作用,它让页面从静态展示迈向动态交互,精准捕捉用户…...
stm32内部flash在线读写操作
stm32内部flash在线读写操作 📍相关开源库文章介绍《STM32 利用FlashDB库实现在线扇区数据管理不丢失》 ✨不同系列,内部flash编程有所区别。例如stm32f1是按照页擦除,半字(16bit)或全字(32bit)数据写入;st…...
DuckDB:密钥管理器及其应用
密钥管理器(Secrets Manager)为所有使用密钥的后端提供了统一的用户界面。密钥信息可以被限定范围,因此不同的存储前缀可以有不同的密钥信息,例如允许在单个查询中连接跨组织的数据。密钥也可以持久化,这样就不需要在每次启动DuckDB时都指定它…...
每日一学——自动化工具(Ansible)
3.1 Ansible 3.1.1 Playbook编写指南 嘿,小伙伴们!你们知道吗,运维工作其实也可以变得像搭积木一样简单!今天我们要介绍的就是Ansible,一款非常流行的自动化运维工具。通过Ansible,我们可以用Playbook来描…...
typescripts语法笔记
游戏引擎:图形渲染系统,特效系统,物理系统,各个功能集合。 cocoscreator是将cocos2d-x封装成了可视化编辑。面向对象转变成面向组件开发。 ts编程是js编程语言的超集。 基础类型""可以转换成字符串类型,适用…...
TypyScript从入门到精通
TypyScript从入门到精通 TypyScript 是什么?增加了什么环境搭建二、为何需要 TypeScript三、编译 TypeScript四、类型声明五、类型推断基本类型六、类型总览JavaScript 中的数据类型TypeScript 中的数据类型1. 上述所有 JavaScript 类型2. 六个新类型:3.…...
vscode代码AI插件Continue 安装与使用
“Continue” 是一款强大的插件,它主要用于在开发过程中提供智能的代码延续功能。例如,当你在编写代码并且需要进行下一步操作或者完成一个代码块时,它能够根据代码的上下文、语法规则以及相关的库和框架知识,为你提供可能的代码续…...
STM32-笔记20-测量按键按下时间
1、按键按下的时间-思路 我们先检测下降沿信号,检测到以后,在回调函数里切换成检测上升沿信号,当两个信号都检测到的时候,这段时间就是按键按下的时间,如图所示:>N*(ARR1)CCRx的值 N是在这段时间内&…...
继承与多态 - 继承机制、虚函数、纯虚函数
引言 C 是一种支持面向对象编程(OOP)的编程语言,继承和多态是 OOP 的两个核心概念。通过继承,我们可以创建新的类,这些新类可以重用现有类的代码,并且可以根据需要进行扩展或修改。多态则允许我们编写更加…...
微信小程序:正确输出<小于,大于>符号
错误写法 1、如果直接输入<符号会直接报错,>能正常使用,如图标红的是错误写法 2、输入html的<>的写法,会原样输入符号 解决方法 采用变量的方式输出 1、js写入变量 2、wxml直接写...
uni-app tab 双击事件监听
1、data中定义属性,用于临时记录点击次数 tabClick: {touchNum: 0 },2、添加页面事件监听方法 onTabItemTap(e) {this.tabClick.touchNumsetTimeout(()>{if(this.tabClick.touchNum > 2){// 双击执行代码区}this.tabClick.touchNum 0}, 250) },个人博客&am…...
GIT 企业级开发学习 1_基本操作
本节主要命令: git init ls 不能列出 .git ls -a 列出 .git 创建本地仓库 1. 初始化 Git 仓库 git init • 初始化一个新的 Git 仓库,在当前目录下生成一个 .git 隐藏文件夹,用于存储版本控制信息。 2. 查看隐藏文件 ls -a • 使用 ls …...
Computed在Vue2、Vue3写法的不同
在 Vue 2 和 Vue 3 中,computed 的写法有一些区别,特别是在 Vue 3 中新增了组合式 API 和 setup 语法糖。以下是不同写法的详细比较: 1. Vue 2 选项式 API 写法 在 Vue 2 中,computed 是一个选项,直接在 computed 对…...