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

【MySQL】4.MySQL日志管理与数据库的备份和恢复

备份的目的只要是为了灾难恢复,备份还可以测试应用,回滚数据,修改和查询历史数据,审计等

日志在备份、恢复中起着重要作用

一、数据库备份的重要性

在生产环境中,数据的安全性至关重要
任何数据丢失都可能产生严重的后果

造成数据丢失的原因有:
程序错误
人为操作错误
运算错误
磁盘错误
灾难(如火灾、地震)和盗窃

容灾

二、数据库备份的分类

数据库备份可以分为物理备份逻辑备份

1.物理备份:

对数据库操作系统的物理文件(如:数据文件、日志文件等)进行备份;适用于在出现问题的时候需要快速恢复的大型重要数据库

物理备份又分为:

冷备份(脱机备份):需要关闭数据库才能进行tar打包备份

热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件(mysqlhotcopy mysqlbackup)

温备份:数据库锁定表结构(不可写入但可读)的状态下进行备份操作(mysqldump)

2.逻辑备份:

逻辑备份是对数据库逻辑组件的备份,表示为逻辑数据库结构;这种类型的备份适用于可以编辑数据值或表结构

从数据库的备份策略来看,逻辑备份又分为完全备份、差异备份和增量备份

①完全备份

每次都对整个数据库进行完整的备份(包括数据库结构和文件结构);
缺点:有大量重复数据,占用磁盘空间最大;
优点:结构完整,恢复时速度快,直接把文件导入即可;

②差异备份

备份自从上次完全备份之后修改过的文件;后续的差异备份都会备份前面差异备份的内容,导致出现重复的数据,占用额外的磁盘空间;恢复时会先恢复完全备份,再导入最后一次差异备份的数据即可;

③增量备份

只有在上次完全备份或者增量备份后 被修改的数据(或文件)才会被备份;不会出现重复数据(导致额外占用磁盘空间);恢复时要先恢复完全备份,再按次序恢复增量备份

备份方式的比较
备份方式          完全备份            差异备份      增量备份
完全备份时的状态  表1、表2             表1、表2      表1、表2
第1次添加内容     创建表3              创建表3       创建表3
备份内容          表1、表2、表3        表3           表3
第2次添加内容     创建表4              创建表4       创建表4
备份内容          表1、表2、表3、表4   表3、表4      表4
逻辑备份的策略

逻辑备份策略的选择(频率)

一周一次进行完全备份,全备的时间需要再不提供业务或访问量少的时间区间进行,例:PM 10:00 到AM 5:00(看你公司情况)
增量备份:3天/2天/1天 一次增量备份
差异备份:选择特定的场景进行备份(比较少用到)

通过配置NFS可以提供额外的空间给mysql服务器使用;NFS严格上说不算是共享存储,知识共享了文件;

三、常见的备份方法

1.物理冷备

备份时,数据库要处于关闭状态,直接打包数据库文件;备份速度快,恢复也简单

2.专用备份工具mysqldump和mysqlhotcopy

mysqldump常用的逻辑备份工具;mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表

3.启用二进制日志进行增量备份

进行增量备份时,需要刷新二进制文件

4.第三方工具备份

Navicat、免费的MySQL热备份软件Percona XtraBackup

四、数据库完全备份分类

是对整个数据库、数据库结构和文件结构的备份;保存的是备份完成时刻的数据库;是差异备份和增量备份的基础
优点:备份和恢复操作简单方便
缺点:数据大量重复,占用额外的磁盘空间,备份与恢复时等待时间长

物理冷备与恢复

关闭MySQL数据库
使用tar命令打包数据库文件夹
恢复:直接替换现有MySQL目录即可

mysqldump备份与回复

MySQL自带的备份工具,可以方便实现对MySQL的备份
可以见指定的库、表导出为SQL脚本文件
恢复:使用命令导入备份的数据

实验

环境准备

建库、建表,插入数据;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set (0.00 sec)mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test           |
| test1          |
+----------------+
2 rows in set (0.00 sec)mysql> select * from test;
+------+----------+-------+--------------+
| id   | name     | score | address      |
+------+----------+-------+--------------+
| 0001 | zhangsan |   100 | 地址不详     |
| 0002 | lisi     |    85 | bijing       |
| 0003 | wangwu   |    91 | 地球村       |
| 0004 | laoliu   |    75 | nanjing      |
+------+----------+-------+--------------+
4 rows in set (0.00 sec)mysql> select * from test1;
+------+----------+-------+-------+
| id   | name     | score | phone |
+------+----------+-------+-------+
| 0001 | zhangsan | 82.50 |   111 |
| 0002 | lisi     | 85.00 |   222 |
| 0003 | wangwu   | 91.00 |   333 |
+------+----------+-------+-------+
3 rows in set (0.00 sec)mysql> 

mysql完全备份与恢复

InnoDB 存储引擎的数据库在磁盘上存储成三个文件:

db.opt(表属性文件)
表名.frm(表结构文件)
表名.ibd(表数据文件)

1.物理冷备与恢复

第一步关闭mysqld

tar zxvf 直接备份指定路径的文件,不包括路径tar jxvf
按路径备份,会将整个路劲备份下来,但不会备份路径中其他的数据
第一种 zxvf

冷备

#关闭mysqld
systemctl stop mysqld
#
[root@test2 mysql]# cd /usr/local/mysql/
[root@test2 mysql]# tar zcvf data.tar.gz data/ -C /opt/mysql.bak/

恢复

 
第二种 jxvf
关闭mysql,安装 xz 压缩
systemctl stop mysqld
yum -y install xz

压缩备份
tar jcvf /opt/mysql_data_$(date +%F).tar.xz /usr/local/mysql/data/#j    表示按路径备份(打包)数据

解压恢复
[root@test2 ~]# tar jxvf /opt/mysql_data_.tar.xz -C /usr/local/mysql/[root@test2 ~]# cd /usr/local/mysql/[root@test2 mysql]# mv usr/local/mysql/data /usr/local/mysql/

2.mysqldump备份与恢复

完全备份

建库、建表,插入数据
create database school;
use school;
create table class (id int(4) zerofill not null,name char(10),score decimal(5,2),address varchar(80));
insert into class values (1,'yiyi',78,'shanghai');
insert into class values (2,'lizi',92,'henan');
insert into class values (3,'monor',88,'nanjing');
select * from class;完成后,quit退出MySQL

完全备份一个或多个完整的库(包括其中所有的表)
备份多个表
mysqldump -u用户名 -p密码 --databases 库1 库2 > 备份路径/备份文件名.sql

例:

[root@test2 ~]# mysqldump -uroot -p123456 --databases school test > /opt/mysql.bak/school.test_$(date +%F).sql备份成功后可以通过 vim 来查看备份表的内容
[root@test2 ~]# vim /opt/mysql.bak/school.test_2024-03-25.sql

删除数据库

备份恢复
[root@test2 ~]# mysql -uroot -p123456 < /opt/mysql.bak/school.test_2024-03-25.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.

查看数据库和表

使用 -e 可以在bash环境中使用sql语句;

ps:报错
[root@test2 data]# mysql -uroot -p123456 < /opt/mysql.bak/school.test_2024-03-25.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1030 (HY000) at line 66: Got error 168 from storage engine1.检查mysql用户是否有数据目录的读写权限
2.或导入的数据库引擎不匹配(把报错行下的引擎改为InnoDB或MyISAM试试)另一种情况
df -h看一下磁盘空间是否有余,
若是不足的话        show variables like '%log';    查看general_log状态
关闭日志记录模式    set global general_log = OFF
清理日志            echo "" > mysql.log
再开启日志          set global general_log = OFF

完全备份MySQL服务器中所有库
mysqldump -u用户名 -p密码 --all-databases > /备份路径/备份文件名.sql

mysqldump -uroot -p123456 --all-databases > /opt/mysql.bak/all.$(date +%F).sql

完全备份指定库中的部份表
mysqldump -u用户名 -p密码 库名 表名1 表名2 > 备份路径/备份文件名.sql

例:

mysqldump -uroot -p123456 test test class > /opt/mysql.bak/table.test.class.$(date +%F).sql

保存数据库的表结构
#使用"-d"或"-t"选项,表示只保存数据库的表结构
#不使用"-d"或"-t"选项,说明表数据也要进行备份
#可以用来当作一个表结构模板
查看备份文件
grep -v "^--" 备份文件名| grep -v "^/" | grep -v "^$"#-v "^$"    表示非空行

例:

grep -v "^--" /opt/mysql.bak/school.test_2024-03-25.sql| grep -v "^/" | grep -v "^$"

mysql完全恢复(有问题,搞不懂,重做)

恢复数据库

1.使用mysqldump导出的文件,可导入的方法有:

source命令
mysql命令

2.使用source 恢复数据库的步骤

登录mysql数据库

执行source备份sql脚本的路径

3.source 恢复的示例

MySQL [(none)]> source /backup/all-data.sql

使用 source 命令恢复数据

1.模拟数据库出现问题
[root@server1 backup]# mysql -uroot -pabc123 登录数据库
mysql> show databases;  查看数据库信息
mysql> drop database school;  删除数据库school
mysql> show databases; 
2.应用实例

创建备份(对表进行备份)

备份表
mysqldump -uroot -p12356 school class > /opt/mysql.bak/class.sql删除表(模拟故障)
mysql -uroot -p123456恢复表
mysq 
mysql> select * from info;  查询所有字段
mysql> show tables; 查看表信息
或免交互l> source /opt/info.sql  
mysql -uroot -p123123 -e 'show tables from school;'
3.方式二:
#恢复class表
mysql -uroot -p123456 school < /opt/mysql.bak/school.class.sql
#查看class表
mysql -uroot -p123456 school -e 'show tables from school;'

PS:mysqldump 严格来说属于温备份,会需要对表进行写入的锁定
在全量备份与恢复实验中,假设现有school库,school库中有一个class表,需要注意的一点为:
① 当备份时加 --databases ,表示针对于school库
#备份命令
mysqldump -uroot -p123456 --databases school > /opt/mysql.bak/school.01.sql 备份库后
#恢复命令过程为:
mysql -uroot -p123456
drop database school;
exit
mysql -uroot -p12356 < /opt/mysql.bak/school.01.sql
② 当备份时不加 --databases,表示针对test库下的所有表
#备份命令
mysqldump -uroot -p123456 test > /opt/mysql.bak/test.02.sql
#恢复过程:
mysql -uroot -p123456
drop database test;
create database test;
exit
mysql -uroot -p123456 test < /opt/mysql.bak/test.02.sql 

#查看school.01.sql 和test.02.sql 
主要原因在于两种方式的备份(前者会从"create databases"开始,而后者则全是针对表格进行操作) 

4.自动化备份
0 1 * * 6 /usr/local/mysql/data/ mysqldump -uroot -p123456 库1 库2 > ./备份命$(date +%Y%m%d).sql ;/usr/local/mysql/bin/mysqladmin -u root -p flush-logs

MySQL 增量备份与恢复

一、增备实验

1.开启二进制日志功能

二进制日志(binlog)有3种不同的记录格式:

STATEMENT (基于SQL语句)、ROW(基于行)、MIXED(混合模式),默认格式是STATEMENT

[root@test2 ~]# vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
#可选,指定二进制日志(binlog)的记录格式为MIXED(混合输入)
binlog_format = MIXED
#可加可不加该命令
server-id = 1
①statement(基于sql语句):

每一条涉及到被修改的sql都会记录在binlog中;
缺点:日志量大;如:sleep()函数,主从复制等架构记录日志时会出现问题
总结:增删改查通过sql语句来实现记录,高并发时会出错(有时间差异和延迟),记录的数据不一定会按顺序记录;准确率低

②row(基于行)

只记录变动的记录,不记录sql的上下文环境
缺点:如遇到update、set、wehere true那么binlog的数据量会越来越大
总结:update、delete等以多行数据起作用,被记录下来时;只会记录变动的记录,不记录sql的上下文环境;比如sql语句记录一行,但是row就很可能记录10行,准确性高;但高并发时由于操作量大,所有记录都被记录下来,性能会变低

③mixde 混合;推荐使用

一般的语句使用statement ,函数使用row方式存储

systemctl restart mysqld

2.查看二进制文件

cp /usr/local/mysql/data/mysql-bin.000002 /opt/

mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002

#--base64-output=decode-rows:使用64位编码机制去解码(decode)并按行读取(rows)
#-v: 显示详细内容
#--no-defaults : 默认字符集(不加会报UTF-8的错误)
PS: 可以将解码后的文件导出为txt格式,方便查阅
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002 > /opt/mysql-bin.000002

二进制日志中需要关注的部分

开始的位置点    at
结束的位置点    end_log_pos
时间戳          210712 11:50:30
SQL语句

2.进行完全备份

增量备份是基于完全备份的,所以需要先完全备份一次数据库

mysqldump -uroot -p school class > /opt/school.class.$(date +%F).sql
mysqldump -uroot -p123456 school > /opt/school.all.$(date +%F).sql

3.可每天进行增量备份操作,生成新的二进制日志文件002

mysqladmin -uroot -p123456 flush-logs

4.插入新数据,模拟数据的增加或变更

ps:在第一次完全备份之后刷新二进制文件,在第二个二进制文件中记载着“增量备份的数据”

建库、建表、添加数据

5.再次生成新的二进制日志文件003

mysqladmin -uroot -p123456 flush-logs

#之前的步骤4的数据库操作会保存到mysql-bin.000002文件中,之后我们测试删除ky13库的操作会保存在mysql-bin.000003文件中 (以免当我们基于mysql-bin.000002日志进行恢复时,依然会删除库)

MySQL增量恢复

一、一般恢复

1、模拟丢失更改的数据库的就恢复步骤(直接使用恢复即可)


 

相关文章:

【MySQL】4.MySQL日志管理与数据库的备份和恢复

备份的目的只要是为了灾难恢复&#xff0c;备份还可以测试应用&#xff0c;回滚数据&#xff0c;修改和查询历史数据&#xff0c;审计等 日志在备份、恢复中起着重要作用 一、数据库备份的重要性 在生产环境中&#xff0c;数据的安全性至关重要 任何数据丢失都可能产生严重的…...

os模块篇(三)

专栏目录 文章目录 专栏目录os.putenv(key, value, /)os.setegid(egid, /)os.seteuid(euid, /)os.setgid(gid, /)os.setgroups(groups, /)os.setns(fd, nstype0)os.setpgrp()os.setpgid(pid, pgrp, /)os.setpriority(which, who, priority) os.putenv(key, value, /) os.puten…...

kvm虚拟机迁移--来自gpt

离线迁移 离线迁移KVM虚拟机主要涉及将虚拟机完全关闭&#xff0c;然后移动虚拟机的磁盘文件和配置文件到新的宿主机上&#xff0c;并在新宿主机上启动虚拟机。下面是具体的步骤和命令&#xff1a; 步骤 1: 关闭虚拟机 首先&#xff0c;在源宿主机上关闭目标虚拟机。确保虚拟…...

用Typora+picgo+cloudflare+Telegraph-image的免费,无需服务器,无限空间的图床搭建(避坑指南)

用TyporapicgocloudflareTelegraph-image的免费&#xff0c;无需服务器&#xff0c;无限空间的图床搭建&#xff08;避坑指南&#xff09; 前提&#xff1a;有github何cloudflare (没有的话注册也很快) 首先&#xff0c;是一个别人写的详细的配置流程&#xff0c;傻瓜式教程&am…...

鸿蒙TypeScript开发入门学习第3天:【TS基础类型】

1、TypeScript 基础类型 TypeScript 包含的数据类型如下表: 注意&#xff1a; TypeScript 和 JavaScript 没有整数类型。 2、Any 类型 任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型&#xff0c;它常用于以下三种情况。 1、变量的值会动态改变时&…...

gitee 本地文件提交到仓库

一、准备工作 1.下载Git Bash Git Bash官网下载地址 http://www.git-scm.com/download/ 点此跳转 2.注册或登录gitee gitee官网地址 https://gitee.com/ 点此跳转 没有账号选择注册有账号的话直接登陆 3.在gitee中新建一个空的仓库 登陆成功后点进个人主页&#xff0c;点击…...

TemperatureTop-kTop-p

一、温度 在语言模型中使用温度&#xff08;temperature&#xff09;这个参数是为了控制文本生成过程中的随机性和可预测性。这个概念来自于统计力学中的温度概念&#xff0c;在那里它用来描述系统的熵&#xff08;或随机性&#xff09;水平。在语言模型中&#xff0c;输出概率…...

HTTP 协议中常用的两种请求方法:get请求与post请求

一、get请求 &#xff08;1&#xff09;什么是 GET 请求&#xff1f; GET 请求是一种向服务器请求获取资源的方式。它通过 URL 将请求参数附加到请求中&#xff0c;并将请求发送给服务器。GET 请求通常用于获取数据&#xff0c;例如读取文章、获取用户信息等操作。 在Node.j…...

飞天使-k8s知识点28-kubernetes散装知识点5-helm安装ingress

文章目录 安装helm添加仓库下载包配置创建命名空间安装 安装helm https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gztar -xf helm-v3.2.3-linux-amd64.tar.gzcd linux-amd64mv helm /usr/local/bin修改/etc/profile 文件&#xff0c;修改里面内容,然后重新启用export PATH$P…...

linux i2c-tools使用总结

1,安装iic-tools sudo apt install i2c-tools -y 2,查看有几条iic总线 [root@sino-platform:/root]# ls /dev/i2c- i2c-0 i2c-1 i2c-2 i2c-3 3,查看i2c命令 [root@sino-platform:/root]# i2c i2cdetect i2cdump i2cget i2cset 4,iic-help命令 [root@sino-platform…...

App推广新篇章:Xinstall助力精准分析与优化

在当前的移动应用市场中&#xff0c;App推广已成为每个开发者不可或缺的一环。然而&#xff0c;推广并非简单的投放广告与等待用户下载&#xff0c;而是需要一套科学、系统的分析与优化流程。这正是Xinstall作为国内专业的App全渠道统计服务商&#xff0c;能够为您带来的核心价…...

vue知识点: v-if和v-for为何不能同时使用?

在vue2和vue3的官方文档里都写到不推荐 v-if和v-for同时使用&#xff0c;如下代码所示&#xff1a; <li v-for"todo in todos" v-if"!todo.isComplete">{{ todo.text }} </li> 一、vue3文档&#xff1a;列表渲染 | Vue.js 在vue3中&#xff…...

2024.3.31力扣(1200-1400)刷题记录

一、1523. 在区间范围内统计奇数数目 1.模拟 class Solution:def countOdds(self, low: int, high: int) -> int:# 模拟return len(range(low,high1,2)) if low & 1 else len(range(low1,high1,2)) 2.数学 总结规律。首为偶数就向下取整&#xff1b;奇数就向上取整。…...

【核弹级软安全事件】XZ Utils库中发现秘密后门,影响主要Linux发行版,软件供应链安全大事件

Red Hat 发布了一份“紧急安全警报”&#xff0c;警告称两款流行的数据压缩库XZ Utils&#xff08;先前称为LZMA Utils&#xff09;的两个版本已被植入恶意代码后门&#xff0c;这些代码旨在允许未授权的远程访问。 此次软件供应链攻击被追踪为CVE-2024-3094&#xff0c;其CVS…...

【Linux在程序运行时打印调用栈信息(函数名,文件行号等)】

在程序运行时打印相关调用栈信息&#xff08;函数名&#xff0c;文件行号等&#xff09;,便于梳理调用逻辑等 //stack.c #include <stdio.h> #include <execinfo.h> #include <stdlib.h> #include <string.h> #include <stdbool.h>#define MAX_…...

9.包和工具【go】

在Go语言中,包是代码的组织单元,而工具链则是Go语言提供的命令行工具,用于构建、测试和调试Go代码。下面我将详细介绍如何导入和使用标准库中的包,如何编写自己的包,以及如何使用Go的工具链。 导入和使用标准库中的包 Go的标准库包含了许多预定义的包,你可以通过导入这…...

判断一个字符串是否是真实手机号:JavaScript

一个简单的正则表达式示例&#xff0c;用于匹配中国大陆的手机号&#xff1a; function isValidPhoneNumber(phoneNumber) {// 定义一个正则表达式&#xff0c;用于匹配中国大陆的手机号const phoneRegex /^1[3-9]\d{9}$/;// 使用正则表达式测试手机号是否匹配return phoneReg…...

3D检测:从pointnet,voxelnet,pointpillar到centerpoint

记录centerpoint学习笔记。目前被引用1275次&#xff0c;非常高。 地址&#xff1a;Center-Based 3D Object Detection and Tracking (thecvf.com) GitHub - tianweiy/CenterPoint CenterPoint&#xff1a;三维点云目标检测算法梳理及最新进展&#xff08;CVPR2021&#xff…...

使用canvas内置api完成图片的缩放平移和导出和添加提示

最近挺忙的&#xff0c;几乎没有时间去更新博客&#xff0c;今天正好在学习新东西&#xff0c;正好和大家分享一下。 最近要做一个使用canvas完成图片平移&#xff0c;缩放&#xff0c;添加标注的需求&#xff0c;完成的效果大概如下&#xff1a; 使用canvas内置api完成图片的缩…...

数据结构——二叉树——堆

前言&#xff1a; 在前面我们已经学习了数据结构的基础操作&#xff1a;顺序表和链表及其相关内容&#xff0c;今天我们来学一点有些难度的知识——数据结构中的二叉树&#xff0c;今天我们先来学习二叉树中堆的知识&#xff0c;这部分内容还是非常有意思的&#xff0c;下面我们…...

算法学习——LeetCode力扣图论篇3(127. 单词接龙、463. 岛屿的周长、684. 冗余连接、685. 冗余连接 II)

算法学习——LeetCode力扣图论篇3 127. 单词接龙 127. 单词接龙 - 力扣&#xff08;LeetCode&#xff09; 描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk&#xff1a; 每一对相…...

状态模式详解:管理对象状态的利器

在软件设计中&#xff0c;我们经常会遇到需要根据对象的不同状态来执行不同行为的情况。为了优雅地管理这些状态及其对应的行为&#xff0c;状态模式&#xff08;State Pattern&#xff09;应运而生。本文将深入探讨状态模式的使用条件、Java代码实现&#xff0c;并结合现实社会…...

探索----------------阿里云

目录 一、阿里云四大件 1、云服务器ECS 2、云数据库RDS 3、负载均衡SLB 4、对象存储OSS 5、其他的云计算产品 1&#xff09;内容分发网络CDN 2&#xff09;专有网络 VPC 二、linux发行版本 三、你平时对系统会怎么优化&#xff08;五大负载&#xff09; 1、cpu 使用率…...

Tidb和MySQL性能简单测试对比

一、单SQL性能对比 由于TiDB的并发能力优秀&#xff0c;但是单个SQL执行延迟较差&#xff0c;为了客观对比&#xff0c;所以只用1个线程来压测tidb和mysql&#xff0c;以观察延迟情况 二、并发SQL性能对比 TiDB:v6.5.2 MySQL:8.0.26 &#xff08;单机&#xff09; 三、结论 …...

2024.2.6力扣每日一题——魔塔游戏

2024.2.6 题目来源我的题解方法一 贪心优先队列 题目来源 力扣每日一题&#xff1b;题序&#xff1a;LCP 30 我的题解 方法一 贪心优先队列 思路&#xff1a;使用贪心的思想&#xff0c;从左到右遍历&#xff0c;若遇到加上当前房间的生命值后小于等于0&#xff0c;由于需要…...

C# OAuth单点登录的实现

原理 单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;是一种身份验证技术&#xff0c;它允许用户使用一组凭据&#xff08;如用户名和密码&#xff09;登录多个相关但独立的系统&#xff0c;而无需在每个系统中都进行登录操作。下面是一个简单的SSO实现示…...

AtCoder Beginner Contest 347 (ABCDEF题)视频讲解

A - Divisible Problem Statement You are given positive integers N N N and K K K, and a sequence of length N N N, A ( A 1 , A 2 , … , A N ) A(A_1,A_2,\ldots,A_N) A(A1​,A2​,…,AN​). Extract all elements of A A A that are multiples of K K K, divi…...

【vue2+antvx6】报错Cannot read properties of undefined (reading ‘toUpperCase‘)

我的代码是这样的 <el-collapseref"collapse"v-model"active"accordionclass"collapseStart"change"collapsechange"><el-collapse-item:name"String(index 1)"v-for"(i, index) in List":key"in…...

主流的开发语言、环境及其特点

主流的开发语言及其特点&#xff1a; 1. Python&#xff1a;以其简洁的语法和强大的库支持而闻名&#xff0c;适用于数据科学、人工智能和网络开发等领域。 2. Java&#xff1a;跨平台的编程语言&#xff0c;广泛应用于企业级应用、Android 开发和大型系统开发。 3. C&#xf…...

Android知识 - 代码混淆ProGuard规则介绍

ProGuard 的规则及示例 规则概述 ProGuard 是一个代码优化工具&#xff0c;它通过移除未使用的代码、重命名类、字段和方法等方式来减小应用的大小。在 ProGuard 的配置文件中&#xff0c;我们可以定义一系列的规则来控制优化和混淆的过程。 规则语法 ProGuard 的规则通常包…...

学校网站建设工作方案/关键词排名关键词优化

所谓的死工资&#xff0c;其实是个相对的数值而不是绝对的&#xff0c;更多的时候指的是咱们一成不变的内心&#xff0c;和被社会职场打磨的毫无棱角的随波逐流。 1 今天下班回家&#xff0c;和往常无数个不加班的周五一样&#xff0c;差不多的时间&#xff0c;重复着差不多的故…...

顺德公司网站制作/广西南宁做网站的公司

在C#里面&#xff0c;属性的get 与 set 非常简单方便。 public class bird {public int age { get;set; } public bool isadult{get {return this.age > 1 ? true:false;}} }而在Python里面&#xff0c;属性可以直接获取或赋值。但是如果在获取或赋值时加一些逻辑判断&am…...

thinkphp只能做网站/seo引擎优化

如何通过Infopath2010编程方程向Sharepoint List提交数据 针对上一篇修改了一下&#xff0c;可以直接提交重复表里的数据到列表中&#xff0c;代码实现如下&#xff1a; public void CTRL1_5_Clicked(object sender, ClickedEventArgs e) { // 在此处编写…...

深圳网站制作公司报价/seo千享科技

开发 sdk 时经常遇到需要打包的情况&#xff0c;如果是多人开发的 sdk 自然是搭建自动化打包平台&#xff0c;利用自动化打包平台比较方便快捷&#xff0c;但单人开发的 sdk 还是配置打包脚本比较方便快捷&#xff0c;本文介绍两种常见的 sdk 开发方式下的打包方式。 1.使用 co…...

下列不属于网站建设规划/室内设计师培训班学费多少

在部署服务时&#xff0c;有一类服务是需要在每台node上都启动一个的&#xff08;例如&#xff0c;日志收集&#xff0c;网络存储设置等基础服务&#xff0c;最典型的&#xff0c;搭建k8s集群master节点时&#xff0c;需要创建一个网络管理&#xff0c;例如&#xff0c;flannel…...

jsp做网站的优点/营销策略有哪些有效手段

一&#xff0c;在字符串中的使用 //当在字符串前面加上一个字符的时候&#xff0c;我们就可以把一个字符串定义在多行// 编译器不会再去识别字符串中的转义字符// 如果需要在字符串中表示一个双引号的话&#xff0c;需要使用两个双引号string str1 "Hellow World!&quo…...