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

【MySQL】(1)数据库基础,库与表的增删查改,数据库的备份与还原

文章目录

  • 服务器,数据库,表关系
  • MySQL 数据存储逻辑
  • SQL 分类
  • 存储引擎
  • 库的操作
    • 查看数据库
    • 创建数据库
    • 查看创建语句
    • 删除数据库
    • 选择(切换)数据库
    • 查看当前选择的数据库
    • 修改数据库
  • 字符集和排序规则
  • 表的操作
    • 创建表
    • 查询表
    • 查询表结构
    • 插入数据
    • 检索数据
    • 修改表
    • 删除表
  • 备份
  • 还原
  • show processlist

服务器,数据库,表关系

  • 所谓安装数据库服务器,就是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

数据库服务器、数据库和表的关系如下:

img

mysqld 就是 MySQL 数据库服务器的守护进程程序,它是 MySQL 数据库系统的核心组件之一。mysqld 进程负责监听 MySQL 数据库服务器的端口,接受客户端连接请求,处理 SQL 查询请求,管理数据库文件、表、索引等对象,以及执行各种数据库操作,如备份、恢复、复制等。mysqld 进程在运行时会读取 MySQL 配置文件(通常是 /etc/my.cnf 文件),根据配置文件中的参数设置来决定 MySQL 数据库服务器的行为。

当在系统中安装 MySQL 数据库时,通常会同时安装 mysqld 进程。在 Linux 系统中,可以通过启动、停止、重启 mysqld 进程来控制 MySQL 数据库服务器的启停和重启,常见的命令是 systemctl start/stop/restart mysqld


查看配置文件

cat /etc/my.cnf

img

datadir 参数是指定 MySQL 数据库服务器存储数据库文件的目录路径。

建立一个数据库,本质是在 Linux 下建立了一个目录。也就是说,你不仅可以使用 SQL 指令创建数据库,也可以在 datadir 路径下直接新建目录来创建数据库,但是我们不建议这样做。

建立一个表,本质是在 Linux 下建立了一个文件。

MySQL 数据存储逻辑

MySQL 是一个关系型数据库管理系统(RDBMS),它是基于表的。

MySQL 中的表是由列(列名和列的数据类型)和行(具体的数据)组成的,每个表都有一个唯一的表名,并且可以在表中定义索引以提高查询效率。

例:

img

SQL 分类

  • DDL(Data Definition Language)数据定义语言,用来维护存储数据的结构,侧重于对数据库和表结构进行属性操作。代表指令:create drop alter
  • DML(Data Manipulation Language) 数据操纵语言,用来对数据进行操作,侧重于对数据库和表结构进行内容操作。代表指令:insert delete update
    • DML 中以单独分了一个 DQL 数据查询语言,代表指令:select
  • DCL(Data Control Language) 数据控制语言,主要负责权限管理和事务。代表指令:grant revoke commit

存储引擎

存储引擎是数据库管理系统存储数据,为存储的数据建立索引、更新、查询等技术的实现方法。

MySQL 的核心就是插件式存储引擎,支持多种存储引擎。

show engines; -- 查看支持的存储引擎

img

库的操作

查看数据库

语法

SHOW DATABASES;

该命令将返回所有可用的数据库列表,包括系统默认的数据库和用户创建的数据库。

执行该命令将返回类似如下结果:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| stu                |
+--------------------+

其中,information_schemamysqlperformance_schema 是 MySQL 系统默认的数据库。

创建数据库

语法

CREATE DATABASE [IF NOT EXISTS] database_name [CHARACTER SET charset_name] [COLLATE collation_name];
  • 大写的表示关键字。实际上 SQL 语言对关键字的大小写不敏感,所以平时写 SQL 语句时关键字可大写也可小写。

  • [] 表示可选项。

CREATE DATABASE 用于创建一个新的数据库。

[IF NOT EXISTS] 表示如果该数据库不存在,才执行创建操作,否则将会抛出错误。

database_name 为要创建的数据库的名称,可以使用任意字符,但需要遵循 MySQL 标识符的命名规则。

[CHARACTER SET charset_name] 用于指定数据库的字符集。

[COLLATE collation_name] 用于指定数据库的排序规则。


创建一个名为 mydb 的数据库:

CREATE DATABASE `mydb`;

如果该数据库不存在,则创建一个名为 mydb 的数据库。如果该数据库已经存在,则会返回一个错误。如果需要在创建数据库时指定字符集和排序规则,可以使用以下语句:

CREATE DATABASE IF NOT EXISTS `mydb` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

该语句创建了一个名为 mydb 的数据库,并将其字符集设置为 utf8mb4,排序规则设置为 utf8mb4_unicode_ci。如果该数据库已经存在,则不会执行创建操作。

database_name 通常使用反引号(`)括起来。

在 MySQL 中,使用反引号(`)将标识符括起来可以使其成为一个独立的标识符,即使标识符中包含了空格、关键字或其他特殊字符。


查看创建语句

SHOW CREATE DATABASE 命令,用于显示指定数据库的创建语句。该语句包含了创建数据库时使用的所有参数和选项,包括数据库名、字符集、排序规则等。

img

删除数据库

语法

DROP DATABASE [IF EXISTS] database_name;

注意

一旦数据库被删除,所有与之相关的数据都将永久删除。因此,在执行此操作之前,请确保已经备份好需要保留的数据。

选择(切换)数据库

语法

USE database_name;

database_name 是要选择的数据库名称。该语句将使得后续的查询、插入、更新等操作默认在该数据库中进行。

查看当前选择的数据库

使用 DATABASE() 函数

SELECT DATABASE();

该函数不需要任何参数,调用它将返回当前选择的数据库名称。如果当前没有选择任何数据库,则该命令返回 NULL

修改数据库

语法

-- 修改数据库字符集和校验规则
ALTER DATABASE database_name CHARACTER SET character_set_name COLLATE collation_name;

old_database_name 是要修改名称的数据库名称,new_database_name 是新的数据库名称。

database_name 是要修改的数据库名称,character_set_name 是新的字符集名称,collation_name 是新的校验规则名称。

CHARACTER SET 也可以写成 CHARSET=

将名为 test 的数据库的名称修改为 new_test

ALTER DATABASE test RENAME TO new_test;

test 数据库的字符集修改为 utf8mb4,校验规则修改为 utf8mb4_general_ci

ALTER DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

注意

修改数据库的字符集和校验规则会影响所有表格和列的字符集和校验规则。因此,在执行 ALTER DATABASE 命令之前,请确保已经备份了所有数据,并且了解修改操作可能带来的风险。

ALTER不支持修改数据库名

MySQL 修改数据库名称比较麻烦,不支持直接修改,需要通过其它方式间接达到修改数据库名称的目的。

在 MySQL 5.1.23 之前的旧版本中,我们可以使用 RENAME DATABASE 来重命名数据库,但此后版本,因为安全考虑,删掉了这一条命令。

上面说过,可以通过在 datadir 下创建目录来创建数据库,那么当然也可以在 datadir 下直接修改目录名,但是我们不建议这样做。

字符集和排序规则

要查看 MySQL 实例的默认字符集和排序规则,可以使用以下命令:

SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';

img

字符集和排序规则在 MySQL 中非常重要,因为它们直接影响到数据库中存储和处理的数据。

字符集决定了数据库中可以存储哪些字符以及如何存储这些字符。不同的字符集支持不同的字符,如 ASCII 字符集只支持英文字母和数字,而 UTF-8 字符集支持更广泛的字符范围,包括不同语言的文字和符号等。同时,字符集还定义了每个字符的编码方式,以确保数据可以在不同的系统和应用程序之间正确地传输和处理。

排序规则决定了在对数据库中的字符数据进行排序时使用哪种规则。这是因为不同的字符集和语言中,字符的排序方式可能是不同的。例如,在中文中,字符的排序方式是根据拼音排序,而在英文中则是按照字典序排序。如果没有正确地设置排序规则,就可能导致排序结果不准确或不符合预期。

因此,字符集和排序规则对于正确存储和处理数据库中的字符数据非常重要,尤其是在涉及多语言和多字符集的应用程序中。在 MySQL 中,通过设置合适的字符集和排序规则,可以确保数据库中的数据可以正确地存储、传输和处理。

:

在“创建数据库”的语法中我们注意到,在创建数据库时可以指定字符集和排序规则,但是通常我们不这样做。因为不需要指定,它就会使用我们已经配置好的默认字符集和排序规则。

表的操作

创建表

语法

CREATE TABLE [IF NOT EXISTS] table_name (column1 datatype constraints,column2 datatype constraints,...columnN datatype constraints
) [CHARSET=字符集] [COLLATE=校验规则] [ENGINE=存储引擎];

table_name 是要创建的表格名称。

column1columnN 是表格的列名。

datatype 是列数据类型。

constraints 是列的约束条件,如默认值、非空、唯一性等。

最后一行指定字符集,校验规则,存储引擎是可选项

创建一个名为 students 的表格,包含 idnamegender 三个字段,可以使用以下命令:

CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50) NOT NULL,gender ENUM('M', 'F') DEFAULT 'M'
);

idnamegender 三个字段,分别使用了 INTVARCHARENUM 三种数据类型。其中,id 是主键,name 不允许为空,gender 有默认值 ‘M’,且只能取值为 ‘M’ 或 ‘F’。

执行该命令后,如果创建成功,系统会提示 Query OK, 0 rows affected,表示成功创建了一个名为 students 的表格。如果创建失败,系统会给出相应的错误提示信息。

注:使用 comment 注释表和列

在 MySQL 中,可用 comment 注释表和列,可以用来记录该表或列的作用、用途、限制、注意事项等信息。

例如,在创建一个名为 employees 的表时,可以添加一个注释来描述该表的作用:

CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),hire_date DATE,salary DECIMAL(10,2),comment '员工信息表'
);

使用 SHOW CREATE TABLE 命令可以查看表的详细信息,包括注释信息。例如:

SHOW CREATE TABLE employees;

输出结果如下:

CREATE TABLE `employees` (`id` int(11) NOT NULL,`name` varchar(50) DEFAULT NULL,`hire_date` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工信息表'

在列中添加注释的方式与上面类似,只需要在列定义后面添加 COMMENT 关键字即可。

查询表

在选择了数据库后,使用

SHOW TABLES;

查询表结构

语法

DESC table_name;

执行 DESC 命令后,MySQL 会返回该表格的列信息,如列名、数据类型、是否允许为空、默认值等。

查询刚才创建的 students 表格

img

该输出表格中的每一行表示一个列的信息,包括 Field(列名)、Type(数据类型)、Null(是否允许为空)、Key(键类型)和 Default(默认值),Extra 表示该列的一些额外信息,如自增长属性、虚拟列等。如果某个字段不允许为空,则其 Null 列显示 NO;如果该字段为主键,则其 Key 列显示 PRI

插入数据

语法

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

table_name 表示要插入数据的表格名称。

column1, column2, column3, ... 列出了要插入数据的列名称。

value1, value2, value3, ... 对应了这些列要插入的值。

students 表格中插入一条记录,包括 idnamegender 三个列,可以使用以下语句:

INSERT INTO students (id, name, gender)
VALUES (1, 'Alice', 'F');

这条语句会向 students 表格中插入一条 id 为 1、name'Alice'gender'F' 的记录。如果不指定列名称,可以省略列名列表,如下所示:

INSERT INTO students
VALUES (1, 'Alice', 'F');

这条语句与上述语句等价,因为 students 表格中的列顺序与指定的值的顺序一致。不过不建议这样写,上面的写法不容易出错,同时可以使代码更加易于维护。

检索数据

SELECT 语句用于从一个或多个表中检索数据。

语法

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name ASC|DESC;

column1, column2, ... 列出了要检索的列名称,可以使用通配符 * 表示所有列。

table_name 指定了要检索数据的表格名称。

WHERE condition 是可选的,表示用于筛选要检索的行的条件,可以使用比较运算符、逻辑运算符、通配符等进行筛选。

ORDER BY column_name ASC|DESC 是可选的,表示按照指定列进行升序或降序排列。

从名为 student 的表格中检索所有列

img

只检索 namegender 两列,并且只需要检索 gender'F' 的记录

img

students 表格按照 id 列进行降序排列:

img

以上只是 SELECT 语句的一些基本用法,实际上 SELECT 语句有很多高级用法,如聚合函数、子查询、连接查询等,这些我们会在后面的章节中进行讲解。

修改表

-- 添加一列
ALTER TABLE 表名 ADD 列名 数据类型;-- 修改列的数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;-- 修改列名
ALTER TABLE 表名 CHANGE 原列名 新列名 数据类型;-- 删除列
ALTER TABLE 表名 DROP 列名;-- 添加主键
ALTER TABLE 表名 ADD PRIMARY KEY (列名);-- 添加唯一索引
ALTER TABLE 表名 ADD UNIQUE (列名);-- 添加普通索引
ALTER TABLE 表名 ADD INDEX (列名);-- 删除索引
ALTER TABLE 表名 DROP INDEX 索引名;-- 修改表名
ALTER TABLE 旧表名 RENAME TO 新表名; -- TO可省略-- 修改存储引擎
ALTER TABLE 表名 ENGINE=存储引擎名称;-- 修改表的字符集和校对规则
ALTER TABLE 表名 CONVERT TO CHARACTER SET 字符集名称 COLLATE 校对规则名称;

删除表

DROP TABLE [IF EXISTS] table_name [, table_name] ... [RESTRICT | CASCADE];
  • IF EXISTS:可选项,表示在删除表时,如果表不存在则不会报错。
  • table_name:需要删除的表的名称,支持同时删除多个表,用逗号隔开。
  • RESTRICT:可选项,表示在删除表时,如果有其他对象依赖于该表,则不会删除该表。
  • CASCADE:可选项,表示在删除表时,同时删除依赖于该表的对象。

备份

使用 mysqldump 工具备份

mysqldump 是一个命令行工具,可以用来备份 MySQL 数据库。

语法

mysqldump -u [用户名] -p [密码] [数据库名] > [备份文件路径]

[用户名][密码] 分别是要使用的 MySQL 用户名和密码

[数据库名] 是要备份的数据库名称,[备份文件路径] 是备份文件的保存路径。

[数据库名] 可以带 -B 选项,这样在还原数据库时,不需要先创建空的数据库。

备份名为 test 的数据库,可以使用以下命令:

mysqldump -u root -p test > /home/user/test_backup.sql

本质上

mysqldump 本质上是通过生成一组 SQL 语句来备份数据库中的数据和结构。备份时,mysqldump 会将数据库中所有的表结构和数据导出为一组 SQL 语句,并将这些语句保存到一个文本文件中。在需要恢复数据时,可以使用这个文本文件来重新创建数据库,并将数据导入到新创建的数据库中。

打开备份的文件,类似于这样:

img

  • 如果你只想备份一个数据库中的特定几个表,可以使用 mysqldump 命令的 --tables 参数指定要备份的表名,语法如下:
mysqldump -u username -p --tables database_name table1 table2 table3 > backup_file.sql
  • 同时备份多个数据库
mysqldump -u username -p --databases db1 db2 db3 > backup_file.sql
  • 如果备份一个数据库时,没有带上 -B 参数,在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用 source 来还原。

还原

source命令是 MySQL 客户端工具中的一个命令,用于在当前 MySQL 连接中执行指定的 SQL 脚本文件。

基本步骤:

  1. 选择要执行脚本文件的数据库。

    use database_name;
    
  2. 使用source命令执行 SQL 脚本文件,也就是我们刚刚用 mysqldump 备份出来的 sql 文件。

    source /path/to/script.sql;
    

    /path/to/script.sql是要执行的SQL脚本文件的路径。

进入一个空的数据库

img

执行备份文件,会显示许多 Query OK

img

查询表,表结构,检索数据,发现数据还原成功

img

show processlist

SHOW PROCESSLIST 命令用于显示当前 MySQL 服务器上正在执行的所有连接和相应的进程列表。

img

上述结果中,每一行代表一个MySQL连接和进程的信息,其中Id表示连接ID,User表示连接的用户名,Host表示连接的主机名,db表示当前连接正在使用的数据库名,Command表示当前连接正在执行的命令,Time表示连接已经持续的时间(单位为秒),State表示当前连接的状态,Info表示当前连接正在执行的SQL语句或命令。

相关文章:

【MySQL】(1)数据库基础,库与表的增删查改,数据库的备份与还原

文章目录服务器,数据库,表关系MySQL 数据存储逻辑SQL 分类存储引擎库的操作查看数据库创建数据库查看创建语句删除数据库选择(切换)数据库查看当前选择的数据库修改数据库字符集和排序规则表的操作创建表查询表查询表结构插入数据…...

Python基础-01 变量

注释 注释的分类 在Python中,支持单行及多行注释 单行注释 使用#对代码进行说明,#右边的所有内容就是注释的内容,起辅助说明作用 # #右边的都是注释,解析器会忽略 print(hello world) #在控制台里打印一段话多行注释 多行注释中,允许换行,使用三个单引号开始,三个单引号结…...

springcloud2.1.0整合seata1.5.2+nacos2.10(附源码)

springcloud2.1.0整合seata1.5.2nacos2.10(附源码) 1.创建springboot2.2.2springcloud2.1.0的maven父子工程如下,不过多描述: 搭建过程中也出现很多问题,主要包括: 1.seataServer.properties配置文件的组…...

map原理

map源码结构体: type hmap struct {count int // 元素的个数B uint8 // buckets 数组的长度就是 2^B 个overflow uint16 // 溢出桶的数量​buckets unsafe.Pointer // 2^B个桶对应的数组指针oldbuckets unsafe.Pointer // 发生扩容时&#xff0…...

[Ext JS]3.6 Ext JS 表格(Grid)概览

Grid, 翻译过来是网格, 也就是表格。 Grid 的基本构成 面板 :Ext.grid.Panel表格视图 :Ext.view.Table。 不直接使用, 通过面板的viewConfig配置项进行配置。比如可以用来配置表格中行是否跳色显示列: Ext.grid.column.Column。 表格中的列定义store , 表格的数据示例代码…...

关于使用云渲染的五大优势

在不影响质量或性能的情况下节省时间、金钱和资源,对于需要在通常较短且严格的期限内创建高质量 3D 内容的专业人士来说,云渲染都是最好的选择!云渲染作为数字媒体生产的最新趋势,与传统的渲染农场和机器相比具有许多优势&#xf…...

CSS基础样式

1.高度和宽度 .c1{height:300px;width:500px; } 注意事项: 宽度,支持百分比 行内标签:默认无效 块级标签:默认有效(右侧区域就算是空白,也不给占用) 2.块级和行内标签 css样式:标签…...

第03章_流程控制语句

第03章_流程控制语句 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模…...

配电网电压调节及通信联系研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

stegano(图片隐写、摩斯密码)

附件是PDF,我们在选择内容时发现光标溢出了文本 说明这里还存在一些我们看不到的内容 直接CtrlA全选,CtrlC复制后新建一个纯文本文件 将复制的东西粘贴过去 粘贴后发现果然多出来了一些东西,提取出来 BABA BBB BA BBA ABA AB B AAB ABAA A…...

wsl安装torch_geometric

在官网选择需要的版本 选择安装途径,选择runfile 执行第一行,会下载一个文件到目录下 需要降低C的版本,否则 执行sudo sh cuda_11.1.0_455.23.05_linux.run,会出现 查看对应的文件,会有 可以加上override参数之后,…...

ASP.NET Core - 依赖注入(二)

2,NET Core 依赖注入的基本用法 话接上篇,这一章介绍 .NET Core 框架自带的轻量级 Ioc 容器下服务使用的一些知识点,大家可以先看看上一篇文章 [ASP.NET Core - 依赖注入(一)] 2.3 服务解析 通过 IServiceCollection 注册了服务之后&#xf…...

Scala之集合(1)

目录 ​​​​​​​集合介绍: 不可变集合继承图:​编辑 可变集合继承图 数组: 不可变数组: 样例代码: 遍历集合的方法: 1.for循环 2.迭代器 3.转换成List列表: 4.使用foreach()函数&a…...

公网使用SSH远程登录macOS服务器【内网穿透】

文章目录前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址5. 使用固定TCP端口地址ssh远程前言…...

PVE相关的各种一键脚本(一键安装PVE)(一键开设KVM虚拟化的NAT服务器-自带内外网端口转发)

PVE 原始仓库:https://github.com/spiritLHLS/pve 前言 建议debian在使用前尽量使用最新的系统 非debian11可使用 debian一键升级 来升级系统 当然不使用最新的debian系统也没问题,只不过得不到官方支持 请确保使用前机器可以重装系统,…...

CSDN目录博客(zhaoshuangjian)

总目录 一、Java1.1 高并发1.2 多线程1.3 集合1.4 I/O1.5 异常1.6 事务1.7 锁机制1.8 JVM 二、数据库2.1 mysql2.1.1 mysql索引2.1.1 mysql锁2.1.1 mysql事务2.1.1 2.2 oracle2.3 postgresql2.4 达梦2.5 人大金仓kingbase 三、设计模式四、中间件4.1 缓存中间件-redis4.2 缓存中…...

uniapp人脸识别解决方案

APP端: 因为APP端无法使用uni的camera组件,最开始考虑使用内嵌webview的方式,通过原生dom调用video渲染画面然后通过canvas截图。但是此方案兼容性在ios几乎为0,如果app只考虑安卓端的话可以采用此方案。后面又想用live-pusher组件…...

hashlib模块

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 hashlib模块专栏:《python从入门到实战》 哈希算法,也叫摘要算法。 加密&…...

NC65合并报表如何取消上报并退回以及注意事项和相关问题总结

NC65合并报表如何取消上报并退回? 在【企业绩效管理】-【合并报表】-【合并】-【合并执行】节点中,点击〖数据中心〗按钮,在弹出的〖合并报表数据中心〗界面中,点击〖报送管理〗-〖合并方案请求退回〗,然后到【合并综…...

28岁,终于从字节退休了...

大厂一直是每个程序员都向往职业目标,大厂意味着薪资高、福利好、倍有面儿,而且发展空间也大。甚至有人调侃不想进大厂的程序员不是好程序员。 而在网上,也有各个网友分享自己在大厂的经历,在某平台还有一个近2600万浏览的话题&a…...

数据的表示和存储——

目录 浮点数的编码表示 浮点数类型 ​编辑 浮点数的表示 (1)浮点数(Float Point)的表示范围 (2)规格化数形式 (3)IEEE 754标准 其他形式的机器数表示 个人总结 浮点数的编码表…...

springboot零基础到项目实战

推荐教程: springboot零基础到项目实战 SpringBoot这门技术课程所包含的技术点其实并不是很多,但是围绕着SpringBoot的周边知识,也就是SpringBoot整合其他技术,这样的知识量很大,例如SpringBoot整合MyBatis等等。因此…...

自媒体都在用的5个素材网站,视频、音效、图片全部免费下载~

推荐几个自媒体必备的素材库,免费可商用,建议收藏! 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 国内超大的素材库,在这里你可以找到设计、办公、图片、视频、音频等各种素材。视频素材就有上千个,全部都很高清…...

开放式耳机新巅峰!南卡OE Pro兼备澎湃音质、舒适佩戴、创新设计

众所周知,当初苹果带来TWS耳机新时代以后,后面有许多的蓝牙耳机相继跟随和模仿,但NANK南卡却独辟蹊径,将在近日重磅推出首款0压无感全开放无线耳机——南卡OE Pro,走向开放式TWS耳机的新时代。 31度黄金倾斜受力面&…...

1700页,卷S人的 Java《八股文》PDF手册,涨薪跳槽拿高薪就靠它了

大家好,最近有不少小伙伴在后台留言,又得准备面试了,不知道从何下手! 不论是跳槽涨薪,还是学习提升!先给自己定一个小目标,然后再朝着目标去努力就完事儿了! 为了帮大家节约时间&a…...

普通人是否能从ChatGPT中分一杯羹?

ChatGPT3.0刚刚推出,最开始的时候,人们只是将ChatGPT看作一个很会聊天的机器人,无论问题多么天马行空,它的答案看上去都有理有据。后来,像打开潘多拉魔盒一样,很多人开始拿它编大纲、撰写文案、编代码、创作…...

SpringBoot自动装配原理(附面试快速答法)

文章目录SpringBoot自动装配原理1. 从调用SpringApplication构造器方法开始2. 解析启动类4.按需装配4.1 分析dubbo自动装配5. 如果定义自己的starter6. 面试答法SpringBoot自动装配原理 之前面试被问到这个题目,只会答一些spi、AutoConfigration注解、Import之类的&…...

如何在大厂做好架构演进?

1 架构演进的定义 1.1 定义 通过设计新的系统架构(4R),来应对业务和技术的发展变化。 1.2 关键点 新架构新的复杂度 1.3 目的 应对业务和技术的发展变化后带来新的复杂度。 案例 淘宝去IOE,是因为业务发展大了后,IOE的成本和可控性难…...

减半技术实现求a的n次幂

目录 减半技术实现求a的n次幂 程序设计 程序分析 减半技术实现求a的n次幂 【问题描述】给定两个正整数a和n,采用减半技术求a的n次幂;其中a<100,b<20; 【输入形式】两个整数a,n(a与n中间用空格隔开); 【输出形式】一个整数 【样例输入1】2 3 【样例输出1】8 【样…...

MYSQL8窗口函数

MYSQL8窗口函数 MYSQL8窗口函数窗口函数分类序号函数--排行榜row_number()示例rank()示例dense_rank()示例partition by对每个分区内的行进行排名不加partition by全局排序 开窗聚合函数分布函数CUME_DIST()PERCENT_RANK() 前后函数LAG()的用法LEAD() 头尾函数其他函数NTH_VALU…...