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

从MySQL5.7平滑升级到MySQL8.0的最佳实践分享

一、前言

升级需求:将5.7.35升级到8.0.27, 升级方式 in-place升级【关闭现有版本MySQL,将二进制或包替换成新版本并在现有数据目录上启动MySQL并执行升级任务的方式,称为in-place升级】

原版本 5.7.35 CentOS Linux release 7.9.2009

新版本 8.0.27 CentOS Linux release 7.9.2009

二、Mysql 生命周期

以下Mysql 生命周期-内容来自于互联网

关于数据库版本升级,一直都是热议话题,对于升级的缘由各家也有所不同,有业务驱动的,有DBA自发驱动的,有规划导向也有方向指引的……抛开各种原因,当升级这个决定落下来的时候,对于DBA手头的几百几千套数据库来说,就好比是一场动物大迁徙,满满的画面感。

从Oracle发布的版本生命周期规划可以看到,Mysql5.7已经走到了生命周期的终点,意味着后续将不再为Mysql5.7提供官方更新、错误修复或安全补丁。

阿里云和AWS都在官方公布了版本支持计划,Mysql5.7版本已经开始了倒计时。

图片

三、MySQL8.0的新特性

图片

默认字符集由latin1变为utf8mb4。

MyISAM系统表全部换成InnoDB表。

JSON特性增强。

支持不可见索引,支持直方图。

sql_mode参数默认值变化。

默认密码策略变更。

新增角色管理。

支持窗口函数,支持Hash join。

四、升级建议

支持从MySQL5.7升级到MySQL8.0,注意仅支持GA版本之间的升级。

不支持跨大版本的升级,如从5.6升级到8.0是不支持的。

建议升级大版本前先升级到当前版本的最近小版本,如5.7先升级到5.7.35后再升级到8.0。

做好充足的备份!数据无价!!!

五、升级前准备

5.1 Mysql-shell 检查工具兼容性

在执行升级操作前需要做一些检查工作,确认准备工作是否就绪,避免升级过程中出现异常。可以使用MySQL Shell使用util.checkForServerUpgrade进行检查,返回内容包括不符合迁移要求的问题,error的问题需要迁移前修改。

Mysql-shell 下载地址:https://dev.mysql.com/downloads/shell/

这里我们选择8027版本

图片

然后上传文件至5.7.35的机器/root目录下

[root@localhost ~]# tar -xf mysql-shell-8.0.27-linux-glibc2.12-x86-64bit.tar.gz

[root@localhost ~]# cd mysql-shell-8.0.27-linux-glibc2.12-x86-64bit/bin/

[root@localhost bin]# ./mysqlsh -uroot -p -S /tmp/mysql.sock -e “util.checkForServerUpgrade()” > util.checkForServerUpgrade.log

从输出报告可以看出,升级检查器在23个方面进行了检查,最终得出4个警告信息和1个提示。

消除警告:

Usage of utf8mb3 charset 在MySQL 8.0版本之前,默认字符集为latin1 ,utf8字符集指向的是utf8mb3 。从MySQL8.0开始,数据库的默认编码将改为utf8mb4 ;为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和比较规则。

New default authentication plugin considerations,密码认证插件变更。为了避免连接问题,可以仍采用5.7的mysql_native_password认证插件。

消除提示:

Usage of obsolete sql_mode flags:Mysq8.0 版本sql_mode不支持NO_AUTO_CREATE_USER,要避免配置的sql_mode中带有NO_AUTO_CREATE_USER。

通过以上的例子,可以发现,MySQL Shell提供的升级检查工具能够帮助我们检测版本兼容性,减轻升级工作负担。

5.2 逻辑备份Mysql数据

[root@localhost opt]#which mysqldump

[root@localhost opt]#/usr/local/mysql/bin/mysqldump

# --routines 备份存储过程和函数;–set-gtid-purged=OFF: 禁用GTID(全局事务标识);xxx1,XXX2 表示库名,备份多个库 用空格做为间隔

[root@localhost opt]#/usr/local/mysql/bin/mysqldump -uroot -p --routines --set-gtid-purged=OFF -A > /root/all-database-20231115.sql

5.3 优雅的停止数据库

select version();

show variables like ‘innodb_fast_shutdown’;

# 确保数据都刷到硬盘上,更改成0InnoDB关闭模式。如果值为0,InnoDB会在关闭前进行缓慢关闭、完全清除和更改缓冲区合并。如果值为1(默认值),InnoDB会在关闭时跳过这些操作,这个过程称为快速关闭。如果值为2,InnoDB刷新其日志并冷关机,就好像MySQL崩溃了;没有提交的事务丢失,但崩溃恢复操作使下一次启动需要更长的时间。在仍然缓冲大量数据的极端情况下,缓慢关闭可能需要几分钟甚至几小时。

set global innodb_fast_shutdown=0;

shut down;

exit

[root@localhost opt]# ps -ef|grep mysql

图片

5.4 备份Mysql 数据目录,安装目录 和配置文件

–确认数据库状态为关闭状态

[root@localhost opt]# service mysql status

–数据目录备份

[root@localhost opt]# cp -r /data/mysql /data/mysql_bak_`date +%F`

–安装目录备份

[root@localhost opt]# cp -r /usr/local/mysql/ /usr/local/mysql_bak_`date +%F`

–配置文件备份

[root@localhost local]# cp /etc/my.cnf /etc/my.cnf_`date +%F`

图片

5.5 下载并解压MySQL8

安装包上传至原安装包目录下 我的是/usr/local/mysql

[root@localhost local]# tar -xf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz

# 文件夹重命名为mysql8

[root@localhost local]# mv mysql-8.0.27-linux-glibc2.12-x86_64 mysql8

# 更改文件夹所属

[root@localhost local]# chown -Rf mysql:mysql /usr/local/mysql8

# 删除安装包

[root@localhost local]# rm -rf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz

六、升级

6.1 修改my.cnf 配置文件

因5.7版本与8.0版本参数有所不同,为了能顺利升级,我们需要更改部分配置参数。主要注意sql_mode、basedir、密码认证插件及字符集设置,其他参数最好还是按照原5.7的来,不需要做调整。下面展示5.7和8.0的配置文件,注意备份原来配置文件。

6.1.1 Mysql5.7_my.cnf 配置文件

相比5.7,8多了以下配置

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

basedir=/home/application/mysql/mysql8

datadir=/home/application/mysql/data

character_set_server=utf8

collation-server=utf8_general_ci

# 默认使用"mysql_native_password"插件认证

default_authentication_plugin=mysql_native_password

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

6.2 执行升级程序

在mysql5.7升级的时候,MySQL启动后还需执行mysql_upgrade后重启MySQL。MySQL8.0.16开始,MySQL 不推荐使用mysql_upgrade;直接使用 mysqld_safe 直接启动。关于–upgrade=的一些参数。

–upgrade=AUTO MySQL升级所有过时的内容

–upgrade=NONE MySQL跳过升级步骤,可能会导致报错

–upgrade=MINIMAL MySQL在必要时升级数据字典表,information_schema和information_schema。这可能会导致部分功能不能正常使用,例如MGR

–upgrade=FORCE MySQL会升级所有的内容,这会检查所有schema的所有对象,导致MySQL需要更长的时间启动。此模式下MySQL会重新创建系统表if they are missing。

[root@localhost local]# /usr/local/mysql8/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --upgrade=FORCE

图片

新开一个窗口,可观察下错误日志看是否报错

tailf /data/mysql/mysql-error.log 然后登录数据库测试

图片

重新登录
[root@localhost bin]# mysql -uroot -proot

mysql> select version();

±----------+

| version() |

±----------+

| 8.0.27 |

±----------+

1 row in set (0.00 sec)

图片

6.3 修改Mysql环境变量

由于basedir 从/usr/local/mysql 变成了/usr/local/mysql8,需要修改下环境变量信息:

[root@localhost bin]# vi /etc/profile

export PATH=$PATH:/usr/local/mysql8/bin:/usr/local/mysql8/lib

[root@localhost bin]# source /etc/profile

[root@localhost ~]# which mysql

/usr/local/mysql8/bin/mysql

[root@localhost ~]# mysql -V

mysql Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)

图片

6.4验证恢复过来的数据是否正常

图片

七、问题及经验总结

7.1 问题一

在升级Mysql8.0后,关于JDBC中SSL连接的一些报错信息,如下图:

图片

经排查发现,Mysql8.0 数据库默认开启了SSL认证,且之前Mysql5.7.39 也是默认开启了SSL认证,代码和JDBC驱动版本都没有变化,那很有可能就是Mysql8.0 中对于SSL的一个变化,咨询了DBA 朋友,专业的解释是,在5.7.31的时候SSL在源码中貌似没有真正的起作用,后面版本完善了这块的内容。倘若,不使用SSL去连接,就 需要按照如下的方法去处理:

方法一:从数据库成面,直接在my.cnf 中 添加skip_ssl 参数,从源头上关闭SSL 认证的方式

方法二:从代码层面,在JDBC 连接中,使用 &useSSL=false 参数,表示不使用SSL 认证

7.2 问题二

Mysql 报错unblock with ‘mysqladmin flush-hosts’,报错如下:

JDBC连接报错,报错内容 ERROR 1129 (HY000): Host ‘192.168.59.202’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’

原因:同一个ip在短时间内产生太多,中断的数据库连接而导致的阻塞;而中断的因为有些业务使用SSL去连接数据库,导致登录失败,登录被锁;

临时解决方法,使用mysqladmin flush-hosts 命令清理一下hosts文件,mysqladmin -u xxx -p flush-hosts,根本上去解决,就需要排查什么异常的连接导致阻塞,登录被锁,比如上面提到的SSL认证的问题。

7.1 问题三

MySQL–使用innodb_force_recovery修复数据库异常

当MySQL服务异常重启失败后,可以通过配置参数innodb_force_recovery来对MySQL服务进行修复启动。

参数innodb_force_recovery选项:

1 (SRV_FORCE_IGNORE_CORRUPT): 忽略检查到的 corrupt 页。尽管检测到了损坏的 page 仍强制服务运行。一般设置为该值即可,然后 dump 出库表进行重建。

2 (SRV_FORCE_NO_BACKGROUND): 阻止主线程的运行,如主线程需要执行 full purge 操作,会导致 crash。阻止 master thread 和任何 purge thread 运行。若 crash 发生在 purge 环节则使用该值。

3 (SRV_FORCE_NO_TRX_UNDO): 不执行事务回滚操作。

4 (SRV_FORCE_NO_IBUF_MERGE): 不执行插入缓冲的合并操作。如果可能导致崩溃则不要做这些操作。不要进行统计操作。该值可能永久损坏数据文件。若使用了该值,则将来要删除和重建辅助索引。

5 (SRV_FORCE_NO_UNDO_LOG_SCAN): 不查看重做日志,InnoDB 存储引擎会将未提交的事务视为已提交。此时 InnoDB 甚至把未完成的事务按照提交处理。该值可能永久性的损坏数据文件。

6 (SRV_FORCE_NO_LOG_REDO): 不执行前滚的操作。恢复时不做 redo log roll-forward。使数据库页处于废止状态,继而可能引起 B 树或者其他数据库结构更多的损坏。

参数innodb_force_recovery设置:

在配置文件中的mysqld模块添加参数innodb_force_recovery。

[mysqld]

innodb_force_recovery = N

相同参数innodb_force_recovery在不同MySQL版本允许的操作可能不同,所有版本中innodb_force_recovery>0时都允许对表进行SELECT操作。

使用参数innodb_force_recovery建议:

1、如果MySQL服务故障重启后,因为事务回滚导致异常,可以将参数innodb_force_recovery设置为3跳过回滚阶段

2、如果因为MySQL数据页损坏导致异常,可以使用SELECT+WHERE查找出未损坏数据并将其通过mysqldump导出。

3、将innodb_force_recovery参数设置大于0启动服务后,应通过修改端口或域名(VIP)指向来屏蔽应用访问。

4、将innodb_force_recovery参数设置大于0启动服务后,可以通过mysqlcheck命令来对表进行检查/分析/优化/修复。

5、使用force_recovery重启服务前,建议对数据库所有文件进行备份,避免修复过程中对数据进行二次损害。

在日常运维中,应将使用innodb_force_recovery参数进行数据恢复作为最后手段,做好完善的备份恢复机制,避免对数据库做高危操作。

相关文章:

从MySQL5.7平滑升级到MySQL8.0的最佳实践分享

一、前言 升级需求:将5.7.35升级到8.0.27, 升级方式 in-place升级【关闭现有版本MySQL,将二进制或包替换成新版本并在现有数据目录上启动MySQL并执行升级任务的方式,称为in-place升级】 原版本 5.7.35 CentOS Linux release 7.9.2009 新版本…...

Node-Red

是什么? ——基于浏览器的流程编辑工具可连接设备、服务器和API应用 一、安装 1、本地安装(Windows) 在电脑上安装 Node.js 环境,然后使用 NPM 安装 Node-RED Node.js介绍: JavaScript 在不同的位置有不一样的解析器 写入 HTML 的 JS 语言,浏览器即它的解析器需要独…...

GO语言的安装以及第一个Go语言程序

1. Go语言的安装与设置 官网:golang.org 国内下载:https://studygolang.com/dl 国内镜像:https://goproxy.cn/ 2. GOland的安装 Go 1.13 及以上(推荐) 打开你的终端并执行 $ go env -w GO111MODULEon $ go env -w GOPROXYhttps://goproxy.cn,direc…...

年前集训总结python

1.用空格隔开输出列表list1 print(" ".jion(map(str,list1))) 2.转换函数 int() 将一个数字或字符串转换为整数。可以指定基数,支持从其他进制(如二进制、十六进制)转换为十进制。 int(101, 2) # 二进制字符串转十进制 > 5 …...

【JAVA实战】JAVA实现Excel模板下载并填充模板下拉选项数据

背景 有这样一个场景:前端下载Excel模板,进行数据导入,这个下载模板过程需要经过后端接口去数据库查询数据进行某些列的下拉数据填充,下拉填充的数据过程中会出现错误String literals in formulas can’t be bigger than 255 cha…...

【linux】在 Linux 上部署 DeepSeek-r1:32/70b:解决下载中断问题

【linux】在 Linux 上部署 DeepSeek-r1:32/70b:解决下载中断问题 【承接商业广告,如需商业合作请+v17740568442】 文章目录 【linux】在 Linux 上部署 DeepSeek-r1:32/70b:解决下载中断问题问题描述:解决方法方法一:手动中断并重启下载方法二:使用 Bash 脚本自动化下载在…...

Rust 面试题

1. Rust 中的所有权(Ownership)是什么? 回答: 所有权是 Rust 的核心概念之一,每个值在 Rust 中都有一个唯一的所有者,并且所有权在作用域内转移。当所有者离开作用域时,Rust 会自动释放该值的内存,避免了内存泄漏。 代码示例: fn main() {let s1 = String::from(&q…...

Copilot Next Edit Suggestions(预览版)

作者:Brigit Murtaugh,Burke Holland 排版:Alan Wang 我们很高兴向你介绍在本次 Visual Studio Code 发布中,关于 GitHub Copilot 的三个预览功能: Next Edit Suggestions(NES)Copilot Edits 的…...

LeetCode - 18 四数之和

题目来源 18. 四数之和 - 力扣(LeetCode) 题目描述 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一…...

汽车零部件开发应该具备哪些编程思维?

目录 1、功能安全思维 2、实时性与确定性思维 3、可靠性和冗余思维 4、硬件软件协同思维 5、CAN总线通信思维 6、故障诊断和自诊断思维 7、功耗优化思维 8、软件更新和版本管理思维 9、用户体验与安全性思维 汽车零部件开发中,嵌入式软件在车辆系统中的作用…...

在Windows系统中安装Open WebUI并连接Ollama

Open WebUI是一个开源的大语言模型(LLM)交互界面,支持本地部署与离线运行。通过它,用户可以在类似ChatGPT的网页界面中,直接操作本地运行的Ollama等大语言模型工具。 安装前的核心要求: Python 3.11&#…...

React 与 Vue 对比指南 - 上

React 与 Vue 对比指南 - 上 本文将展示如何在 React 和 Vue 中实现常见功能&#xff0c;从基础渲染到高级状态管理 Hello 分别使用 react 和 vue 写一个 Hello World&#xff01; react export default () > {return <div>Hello World!</div>; }vue <…...

自动化办公|通过xlwings进行excel格式设置

1. 介绍 xlwings 是一个强大的 Python 库&#xff0c;可以用来操作 Excel&#xff0c;包括设置单元格格式、调整行高列宽、应用条件格式以及使用内置样式。本文将详细介绍如何使用 xlwings 进行 Excel 格式化操作&#xff0c;并附带代码示例。 2. 基础格式设置&#xff08;字…...

c# -01新属性-模式匹配、弃元、析构元组和其他类型

文章目录 **学习摘抄分享**模式匹配概述Null 检查类型测试比较离散值关系模型多个输入ObServation列表模式弃元元组和对象析构利用switch的模式进行匹配对于out的方法调用独立弃元析构元组和其他类型元组方法一方法二方法三方法四使用弃元元组的元素使用弃元的用户定义类型解构…...

银河麒麟V10SP1下qt5-12-12编译环境配置

下面的脚本在兆芯版kylin上试过,如果是本地编译,arm版应该也没有问题 a. 如果执行脚本安装有问题&#xff0c;读者可以拷贝命令多次安装 b. 建议在虚拟机环境下进行 #!/bin/bashsudo apt updatesudo apt-get install g gcc make cmake gperf bison flex libdrm-dev libxcompos…...

轻松搭建本地大语言模型(一)Ollama安装与使用

Ollama 是一款开源的本地大语言模型运行框架&#xff0c;支持在 Windows、macOS 和 Linux 系统上运行&#xff0c;能够帮助用户轻松下载和使用各种大语言模型&#xff08;例如deepseek、llama、qwen&#xff09;。本文将详细介绍 Ollama 的安装步骤&#xff0c;帮助你快速搭建本…...

【深度学习】Transformer入门:通俗易懂的介绍

【深度学习】Transformer入门&#xff1a;通俗易懂的介绍 一、引言二、从前的“读句子”方式三、Transformer的“超级阅读能力”四、Transformer是怎么做到的&#xff1f;五、Transformer的“多视角”能力六、Transformer的“位置记忆”七、Transformer的“翻译流程”八、Trans…...

浅识Linux高阶用法

&#xff08;前记&#xff1a;内容有点多&#xff0c;先看目录再挑着看。&#xff09; 问题&#xff1a;在Java面试中&#xff0c;当被提问到Linux的高阶用法以及如何使用Linux将程序、数据库、中间件等部署在云上时&#xff0c;可以从以下几个方面进行回答&#xff1a; Li…...

I²C简介

前言 IC&#xff08;Inter-Integrated Circuit, 内置集成电路&#xff09;总线是由Philips公司&#xff08;现属于恩智浦&#xff09;在上世纪80年代开发的两线式串行通信总线&#xff0c;用于连接微控制器及其外围设备&#xff0c;控制设备之间的通信。 IC总线的物理拓扑示意…...

Linux定时静默执行桌面/前台程序

Linux服务器上的程序大都在后台默默的执行&#xff0c;但有些需要在前台或桌面上运行的程序该怎么办呢&#xff1f;这就要借助虚拟显示技术&#xff0c;也就是在后台运行时提供虚拟的显示&#xff0c;使前台运行的程序也能默默的在后台运行&#xff0c;这就是所谓的以“无头模式…...

Redux中间件redux-thunk和redux-saga的具体区别是什么?

Redux 中间件是增强 Redux 功能的重要工具&#xff0c;redux-thunk 和 redux-saga 是两个常用的中间件&#xff0c;它们在处理异步操作和副作用时提供了不同的方式和理念。以下是两者的具体区别&#xff1a; 1. 概念与设计理念 redux-thunk 简洁&#xff1a;redux-thunk 是一…...

【STM32】DRV8833驱动电机

1.电机如何转动 只需要给电机两个端子加一正一负的极性就会转起来了&#xff0c;但是要注意的是不要将电机两端直接接在5v和gnd之间&#xff0c;这种电机一般要提供几百毫安的电流&#xff0c;而GPIO口只能提供几毫安&#xff0c;所以我们使用一个DRV8833来驱动 DRV8833输入口…...

【go语言规范】 使用函数式选项 Functional Options 模式处理可选配置

如何处理可选配置&#xff1f; Config Struct 方式 (config-struct/main.go) 这是最简单的方式&#xff0c;使用一个配置结构体&#xff1a; 定义了一个简单的 Config 结构体&#xff0c;包含 Port 字段创建服务器时直接传入配置对象优点&#xff1a;简单直接缺点&#xff1a…...

vue中为组建添加样式的方式

在 Vue 中&#xff0c;可以通过多种方式为 view 添加样式&#xff0c;并且支持动态绑定样式。以下是几种常见的方式&#xff1a; 1. 内联样式 直接在模板中使用 style 属性来添加样式。 <template><div style"color: red; font-size: 14px;">这是一个…...

如何简单的去使用jconsloe 查看线程 (多线程编程篇1)

目录 前言 1.进程和线程 进程 PCB 的作用 并发编程和并行编程 线程 为什么选择多线程编程 2.在IDEA中如何简单创建一个线程 1. 通过继承Thread类 2. 通过实现 Runnable 接口 3. 使用 Lambda 表达式 3.如何简单使用jconsloe去查看创建好的线程 前言 2025来了,这是第…...

机器学习·最近邻方法(k-NN)

前言 上一篇简单介绍了决策树&#xff0c;而本篇讲解与决策树相近的 最近邻方法k-NN。 机器学习决策树-CSDN博客 一、算法原理对比 特性决策树最近邻方法&#xff08;k-NN&#xff09;核心思想通过特征分割构建树结构&#xff0c;递归划分数据基于距离度量&#xff0c;用最近…...

网络安全试题

ciw网络安全试题 &#xff08;1&#xff09;&#xff08;单选题&#xff09;使网络服务器中充斥着大量要求回复的信息&#xff0c;消耗带宽&#xff0c;导致网络或系统停止正常服务&#xff0c;这属于什么攻击类型? A、拒绝服务 B、文件共享 C、BIND漏洞 D、远程过程调用 &a…...

沃丰科技大模型标杆案例 | 索尼大模型智能营销机器人建设实践

AI大模型发展日新月异&#xff0c;国内外主流大模型每月必会升级。海外AI大模型市场由美国主导&#xff0c; 各模型已形成“多强竞合”的局面。中国积极响应全球大模型技术的发展趋势&#xff0c;高校、研究院所等科研机构、互联网企业&#xff0c;人工智能企业均不同程度地投入…...

​ ​rust学习四、控制语句

rust的控制语句和大部分语言没有什么区别&#xff0c;都是熟悉的for,while,loop,if。 比较不同的是&#xff0c;在绝大部分非常流行的语言中都有的switch&#xff0c;rust是没有的。 诸如c/c,java,javascript,c#。连PL/SQL都有case when语句。 一、基本的for、while、if&…...

会员购交易系统架构演进

本期作者 1.背景 会员购是B站2017年推出的IP消费体验服务平台&#xff0c;在售商品以手办、漫画、JK制服等贴合平台生态的商品为主。随着业务发展&#xff0c;会员购从最开始的预售&#xff0c;现货拓展到全款预售&#xff0c;盲盒&#xff0c;众筹等多种售卖方式&#xff0c;销…...

在Linux系统下修改Docker的默认存储路径

在Linux系统下修改Docker的默认存储路径可以通过多种方法实现&#xff0c;下边是通过修改daemon.json文件方式实现 查看当前Docker存储路径 使用命令 docker info | grep "Docker Root Dir" 查看当前Docker的存储路径&#xff0c;默认为 /var/lib/docker 停止Docker…...

【人工智能】释放数据潜能:使用Featuretools进行自动化特征工程

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 特征工程是机器学习流程中至关重要的一步,它直接影响模型的性能。然而,手动特征工程既耗时又需要领域专业知识。Featuretools是一个强大的…...

shell脚本备份PostgreSQL数据库和库下表

注意&#xff1a; 以下为对PostgreSQL13.16版本数据库备份shell脚本参考请确认备份节点上psql和pgdump的版本不至于太低&#xff0c;建议>13.16该脚本目前是对于整库、&#xff08;默认针对public这个schema&#xff0c;如果有其他schema&#xff0c;请自行添加一层循环&am…...

java面试笔记(一)

1. 一万个string类型的数据&#xff0c;设计一个算法如何按照String长度来排序 以使用 Arrays.sort() 方法&#xff0c;并结合一个自定义的比较器。以下是实现的示例代码: public class StringLengthSort {public static void main(String[] args) {// 定义一万个字符串的示例…...

网络分析仪E5071C的回波损耗测量

回波损耗&#xff08;Return Loss&#xff09;是评估射频/微波元件&#xff08;如滤波器、天线、电缆等&#xff09;信号反射特性的关键参数&#xff0c;反映端口阻抗匹配性能。E5071C矢量网络分析仪&#xff08;VNA&#xff09;通过以下步骤实现高精度回波损耗测量&#xff1a…...

sql注入中,如果information_schema被过滤,该怎么绕过

目录 一、sys.schema_auto_increment_columns 1.功能 2.利用思路 二、sys.schema_table_statistics_with_buffer 1.功能 2.利用思路 三、mysql.innodb_table_stats和mysql.innodb_index_stats 1.mysql.innodb_table_stats 1.1功能 2.mysql.innodb_index_stats 2.1功…...

若依Flowable工作流版本监听器使用方法

1.前言 本文详细介绍如何在若依Flowable工作流版本&#xff08;RuoYi-Vue-Flowable&#xff09;中配置执行监听器和任务监听器。是以我二次开发的代码为基础&#xff0c;介绍如何配置监听器&#xff0c;已解决源码在新增或删除监听器出现的问题&#xff0c;如果需要二次开发的…...

Linux(Centos 7.6)命令详解:cat

1.命令作用 将文件或标准输入连接到标准输出(Concatenate FILE(s), or standard input, to standard output)&#xff0c; 即将文件内容输出到屏幕上&#xff0c;或者将多个文件合并成一个文件。 2.命令语法 Usage: cat [OPTION]... [FILE]... 3.参数详解 OPTION: -A, -…...

使用DeepSeek+本地知识库,尝试从0到1搭建高度定制化工作流(自动化篇)

7.5. 配图生成 目的&#xff1a;由于小红书发布文章要求图文格式&#xff0c;因此在生成文案的基础上&#xff0c;我们还需要生成图文搭配文案进行发布。 原实现思路&#xff1a; 起初我打算使用deepseek的文生图模型Janus进行本地部署生成&#xff0c;参考博客&#xff1a;De…...

罗德与施瓦茨ZNB20,矢量网络分析仪9KHz-20GHz

罗德与施瓦茨ZNB20矢量网络分析仪9KHz-20GHz R&SZNB20矢量网络分析仪 产品型号: ZNB20 产品品牌&#xff1a;罗德与施瓦茨 R&S 产品名称: 矢量网络分析仪 频率范围&#xff1a;9kHz - 20GHz R&S ZNB 矢量网络分析仪 良好的测量速度、动态范围和操作方便性&am…...

Linux 固定 IP 地址和网关

Linux 固定 IP 地址和网关 查看 IP ifconfig ifconfig eth0 ip addr ip addr show eth0 查看网关 ip route show route -n netstat -rn 设置固定 IP // 配置静态IP文件/etc/network/interfaces $ vi /etc/network/interfacesauto eth0 iface eth0 inet static addre…...

C++ ——const关键字

const关键字通常表示只读&#xff0c;不可修改&#xff0c;可以保证数据的安全性 1、修饰局部变量 const修饰的局部变量&#xff0c;叫做常局部变量&#xff0c;表示该局部变量不可被修改&#xff0c;这种用法常用于引用参数 2、修饰成员变量 const修饰的成员变量&#xf…...

MySQL:MySQL8.0 JSON类型使用整理,基于用户画像的案例

摘要&#xff1a;MySQL&#xff0c;JSON类型&#xff0c;多值索引&#xff0c; 用户画像 MySQL是结构化数据存储&#xff0c;JSON是非结构化格式&#xff0c;在MySQL中使用JSON类型可以打通关系型和非关系型数据的存储之间的界限&#xff0c;为业务提供更好的架构选择&#xff…...

Python MoviePy 视频处理全攻略:从入门到实战案例

第1章 环境安装与配置 # 案例1&#xff1a;安装MoviePy及FFmpeg !pip install moviepy # Windows安装FFmpeg&#xff1a;https://ffmpeg.org/download.html # Linux: sudo apt-get install ffmpeg# 验证安装 from moviepy.editor import * print("MoviePy版本:", __…...

30道Qt面试题(答案公布)

前五个答案 ✦ 1. Qt中常用的五大模块是哪些? Qt中常用的五大模块包括: • Qt Core:提供核心非GUI功能,如数据结构、文件操作、国际化等。 • Qt GUI:提供与平台无关的图形和基本窗口功能。 • Qt Widgets:提供用于创建传统桌面应用程序的UI组件。 • Qt Netw…...

深入解析 MySQL 数据删除操作:DELETE、TRUNCATE 与 DROP 的原理与选择

引言 在 MySQL 中,删除数据或表结构的操作看似简单,但不同操作(如 DELETE、TRUNCATE、DROP)背后的原理和适用场景差异巨大。错误选择可能导致性能问题或数据丢失!本文通过通俗的比喻、流程图和表格,带你深入理解它们的原理与差异。 DELETE 操作的原理 DELETE … IN 执…...

spring cloud gateway限流常见算法

目录 一、网关限流 1、限流的作用 1. 保护后端服务 2. 保证服务质量 (QoS) 3. 避免滥用和恶意攻击 4. 减少资源浪费 5. 提高系统可扩展性和稳定性 6. 控制不同用户的访问频率 7. 提升用户体验 8. 避免API滥用和负载过高 9. 监控与分析 10. 避免系统崩溃 2、网关限…...

华为FusionCompute虚拟化平台

一、华为FusionCompute虚拟化套件介绍 华为FusionCompute虚拟化套件是业界领先的虚拟化解决方案&#xff0c;能够帮助客户带来如下的价值&#xff0c;从而大幅提升数据中心基础设施的效率。 帮助客户提升数据中心基础设施的资源利用率&#xff1b;帮助客户成倍缩短业务上线周期…...

自然语言处理入门1——单词的表示和距离

随着DeepSeek的火爆&#xff0c;AI大模型越来越被大众所接受&#xff0c;我们在日常生活和工作学习中也开始越来越频繁的使用豆包、通义千问、Kimi、DeepSeek、文心一言等大模型工具了。这些大模型底层技术都是Transformer模型&#xff0c;属于自然语言处理范畴。 今天开始&am…...

UART(一)——UART基础

一、定义 UART(Universal Asynchronous Receiver/Transmitter)是一种广泛使用的串行通信协议,用于在设备间通过异步方式传输数据。它无需共享时钟信号,而是依赖双方预先约定的参数(如波特率)完成通信。 功能和特点 基本的 UART 系统只需三个信号即可提供稳健的中速全双工…...