学习笔记 | 一文搞懂MySQL体系架构!!!(day22)

news2024/11/27 16:33:37

本文章的内容会在后面文章中慢慢讲解,该文章主要给各位博友zaipin提供学习思路,也希望大家在评论区发言表述,觉得文章有不足指出也可点评,希望大家多多支持!!!

目录

 一、MySQL

1.1 数据库概述

1.2 数据库分类

1.2.1 关系型数据库

1.2.2 非关系型数据库

1.3 MySQL的安装

1.4 访问数据库服务器

1.5 SQL分类

1.6 MySQL注解

1.7 DDL

1.7.1 数据库的管理

1.7.2 数据表的管理

1.8 DQL(重点)

1.8.1 基础查询

1.8.2 条件查询

1.8.2.1 WHERE关键字

1.8.2.1.1 条件表达式

1.8.2.1.2 逻辑表达式

1.8.2.1.3 模糊查询

1.8.2.2 DISTINCT 

 1.8.2.3 排序查询

 1.8.2.4 别名

 1.8.2.5 多行函数

 1.8.2.6 分组查询

 1.8.2.7 HAVING

 1.8.2.8 子查询 

1.8.3 分页查询

1.8.4 多表连接查询

1.8.4.1 笛卡尔积查询

1.8.4.1.1 公式

1.8.4.1.2 缺点

1.8.4.1.3 优点

1.8.4.2 连接查询

1.8.4.2.1 内连接

1.8.4.2.2 外连接

1.8.4.2.2.1 左外连接

1.8.4.2.2.2 右外连接

1.8.4.2.2.3 全外连接

1.9 数据类型(重点)

1.9.1 数值类型

1.9.2 字符串类型

1.9.3 日期类型

1.10 DML(必须掌握)

1.10.1 插入数据

1.10.1.1 插入全表单条数据

1.10.1.2 插入指定字段单条数据

1.10.1.3 全表插入多条数据

1.10.1.4 指定字段插入多条数据

1.10.2 修改数据

1.10.3 删除数据

1.11 约束(必须掌握)

1.11.1 主键约束

1.11.1.1 概念

1.11.1.2 特点

1.11.1.3 语法

1.11.1.4 自增主键

1.11.2 非空约束

1.11.2.1 概念

1.11.2.2 语法

1.11.3 唯一约束

1.11.3.1 概念

1.11.3.2 语法

1.11.4 检查约束

1.11.4.1 概念

1.11.4.2 语法

1.11.5 外键约束

1.11.5.1 概念

1.11.5.2 特点

1.11.5.3 语法

1.12 数据库TCL语言

1.12.1 事务概述

1.12.2 特点

1.12.3 事务操作

1.12.4 事务并发问题

1.12.5 事务隔离界别

1.12.6 设置隔离级别

二、JDBC

2.1 概述

2.1.1 数据库的持久化

2.1.2 JDBC介绍

2.2.3 JDBC开发流程

2.2 使用

2.2.1 注册驱动

2.2.2 获取数据库连接

2.2.2.1 指定URL

2.2.2.2 指定用户名

2.2.2.3 指定密码

2.2.2.4 调用获取连接方法

2.2.3 获取传输器

2.2.4 处理结果集

2.2.5 资源释放

2.2.6 JDBC的事务处理

2.2.6.1 开启手动提交事务

2.2.6.2 提交事务

2.2.6.3 回滚事务

三、Spring

3.1 Maven

3.2 Spring简介

3.2.1 概念

3.2.2 优势

3.3 Spring Boot简介

3.3.1 概念

3.3.2 功能

3.4 IOC

3.4.1 概念

3.4.2 常用注解

3.5 DI

3.5.1 概念

3.5.2 常用注解

3.6 HikariCP

3.6.1 概念

3.6.2 作用

3.6.3 使用方式

3.7 JDBC Template

3.7.1 作用

3.7.2 使用方式

四、MyBatis

4.1 概念

4.2 Spring Boot整合MyBatis

4.3 注解方式

4.3.1 编写实体类

4.3.2 定义接口

4.3.3 定义方法

4.3.4 绑定SQL

4.3.5 进行测试

4.4 XML方式开发

4.4.1 编写实体类

4.4.2 定义接口

4.4.3 定义SQL

4.4.3.1 Select标签

4.4.3.2 Update标签

4.4.4 进行测试

4.5 #{}占位符

4.6 resultMap


 一、MySQL

1.1 数据库概述

① 数据库

② 数据库管理系统

③ SQL

1.2 数据库分类

1.2.1 关系型数据库

① MySQL

② MariaDB

③ Oracle

1.2.2 非关系型数据库

1.3 MySQL的安装

① 安装时需要注意设置密码;

② 最好勾选UTF-8选项。

1.4 访问数据库服务器

命令行(不推荐,易写错SQL)

可视化工具(安装MySQL时自带HedisSQL)

JDBC

使用集成工具连接(IDEA)

1.5 SQL分类

DDL 操作数据库或者数据表

DML 表记录的增删改查

DQL 数据查询语句

TCL 事务控制语句

1.6 MySQL注解

单行注释 #注释文字

单行注释 --注释文字

多行注释 /*注释文字*/

1.7 DDL

1.7.1 数据库的管理

查看所有的数据库

SHOW DATABASES;

建库

① 基础创建

CREATE DATABASE 数据库名;

② 如果数据库不存在则创建

CREATE DATABASE IF NOT EXISTS 数据库名;

查询数据库信息

SHOW CREATE DATABASE 数据库名;

删库

① 基础删除

DROP DATABASE 数据库名;

② 如果库存在则删除

CREATE DATABASE IF NOT EXISTS 数据库名;

使用数据库

USE 数据库名;

1.7.2 数据表的管理

查看所有表

SHOW TABLES;

创建表

CREATE TABLE 表名(

字段1名 数据类型,

字段2名 数据类型,

.....

)[CHARSET=utf8/gbk];

查看表结构

SHOW CREATE TABLE 表名;

查询表字段

DESC 表名;

删除表

DROP TABLE 表名;

1.8 DQL(重点)

1.8.1 基础查询

SELECT 要查询的东西 [FROM 表名];

1.8.2 条件查询

1.8.2.1 WHERE关键字
1.8.2.1.1 条件表达式

>、<、>=、<=、=、!=、<>、BETWEEN...AND...、IN、IS NULL

1.8.2.1.2 逻辑表达式

&&、AND、||、OR、NOT

1.8.2.1.3 模糊查询

LIKE关键字:_代表单个字符、%代表多个字符

1.8.2.2 DISTINCT 

去除重复数据

 1.8.2.3 排序查询

ORDER BY :排序关键字

 ASC:升序

 DESC:降序

 1.8.2.4 别名

表别名:表名 AS 表别名

字段别名:字段名 AS 字段别名

 1.8.2.5 多行函数

SUM():求和

MAX():最大值

MIN():最小值

AVG():平均数

COUNT():COUNT(*)-->获取表的总行数、COUNT(字段)-->获取字段的总行数

 1.8.2.6 分组查询

SELECT 查询的字段,分组函数

FROM 表

GROUP BY 分组的字段

 1.8.2.7 HAVING

WHERE用于分组之前的筛选

HAVING用于分组之后的筛选

 1.8.2.8 子查询 

单行子查询:将一个查询的一个结果作为另一个SQL的条件使用

多行子查询:将一个查询的多个结果作为另一个SQL的条件使用

1.8.3 分页查询

LIMIT N (前N条数据)

 LIMIT M,N (M: 从第M+1条记录开始,N: 每页显示N条记录)

 LIMIT(PAGE -1) * SIZE,SIZE(PAGE: 要显示的页数,SIZE: 每页显示的记录数)

1.8.4 多表连接查询

1.8.4.1 笛卡尔积查询
1.8.4.1.1 公式

SELECT ...

FROM 表1,表2...

WHERE 关联条件

1.8.4.1.2 缺点

① 查询出来的结果时关联表的记录乘积(比如表1有N条记录,表2有M条记录,则查询的结果会有M*N条记录);

② 处理大型数据时,耗时很大;

③ 只能查询符合筛选条件的记录,不符合条件的记录会被清空。

1.8.4.1.3 优点

返回所有可能的行数

1.8.4.2 连接查询
1.8.4.2.1 内连接

作用:只查询符合连接条件的数据

关键字:INNER JOIN ... ON ...

1.8.4.2.2 外连接
1.8.4.2.2.1 左外连接

作用:左侧表中连接条件之外的数据

关键字:LEFT JOIN ... ON ...

1.8.4.2.2.2 右外连接

作用:右侧表中连接条件之外的数据

关键字:RIGHT JOIN .. ON ...

1.8.4.2.2.3 全外连接

作用:双侧表中连接条件之外的数据,但是MySQL不支持

关键字:FULL JOIN ... ON ...

1.9 数据类型(重点)

1.9.1 数值类型

整数类型:TINYINT、SMALLINT、INT、BIGINT

浮点数类型:FLOAT、DOUBLE、DECIMAL(M,N)

1.9.2 字符串类型

CHAR:最多容纳256个字符

VARVHAR:UTF-8 65535/2字符

TEXT:最长字节量是65535字节

1.9.3 日期类型

DATETIME:年月日 时分秒

DATE:年月日

TIME:时分秒

TIMESTAMP:时间戳

1.10 DML(必须掌握)

1.10.1 插入数据

INSERT INTO 表名[(字段1,字段2,...)] VALUES(值1,值2,...)[,(值1,值2,...),(值1,值2,...),...]

1.10.1.1 插入全表单条数据

INSERT INTO 表名 VALUES(值1,值2);

插入的值的顺序要和表字段顺序一致;

当有的字段无值时,需要设置为null。

1.10.1.2 插入指定字段单条数据

INSERT INTO 表名(字段1名,字段2名) VALUES(值1,值2);

插入的值的书写序要和指定的字段顺序一致;

如果指定的时部分字段,只需要给指定的字段传入值,没有指定的字段自动设置为null。

1.10.1.3 全表插入多条数据

INSERT INTO 表名 VALUES(值1,值2),(值1,值2),(值1,值2);

插入的值的顺序要和表字段顺序一致;

当有的字段无值时,需要设置为null。

1.10.1.4 指定字段插入多条数据

INSERT INTO 表名 (字段1名,字段2名) VALUES(值1,值2),(值1,值2);

插入的值的书写序要和指定的字段顺序一致;

如果指定的时部分字段,只需要给指定的字段传入值,没有指定的字段自动设置为null。

1.10.2 修改数据

UPDATE 表名 SET 字段名=值,字段名=值 [WHERE 条件];

1.10.3 删除数据

DELETE FROM 表名 [WHERE 条件];

1.11 约束(必须掌握)

1.11.1 主键约束

1.11.1.1 概念

主键 : 表示数据唯一性的字段称为主键

约束 : 创建表时,给表字段添加的限制条件

主键约束 : 限制主键的值唯一且非空

1.11.1.2 特点

主键字段,尽量不使用业务数据

应使用无意义数据作为主键

1.11.1.3 语法

CREATE TABLE 表名(

列名 数据类型 PRIMARY KEY,

......

);

1.11.1.4 自增主键

CREATE TABLE 表名(

列名 整数类型 PRIMARY KEY AUTO_INCREMENT,

......

);

1.11.2 非空约束

1.11.2.1 概念

保证列中所有的数值不能有null值

1.11.2.2 语法

CREATE TABLE 表名(

列名 数据类型 NOT NULL,

......

);

1.11.3 唯一约束

1.11.3.1 概念

唯一:唯一性,可以为空,但是只能有一个

1.11.3.2 语法

CREATE TABLE 表名(

列名 数据类型 UNIQUE,

......

);

1.11.4 检查约束

1.11.4.1 概念

检查:对该列数据的范围,格式的限制

1.11.4.2 语法

CREATE TABLE 表名(

......,

CHECK (字段条件表达式)

);

1.11.5 外键约束

1.11.5.1 概念

约束一个字段的取值,只能从指定的主键字段中取值

1.11.5.2 特点

取消被引用的主键,必须先取消外键

被引用的主键数据,不能删除,必须先删除子数据,或修改子数据

删除主表,必须先取消外键引用,或先删除子表

外键会降低效率

高压力系统中,一般不添加外键约束

1.11.5.3 语法

CREATE TABLE 表名(

......,

FOREIGN KEY(外键列名) REFERENCES 表名(主键列名)

);

1.12 数据库TCL语言

1.12.1 事务概述

事务由一组sql语句组成,所有sql语句执行成功,事务整体成功,任一条sql语句失败,整体事务失败,数据恢复到事务之前的状态

1.12.2 特点

原子性:数据操作的最小单元是事务,而不是SQL语句

一致性:保证数据的状态操作前和操作后保持一致

隔离性: 多个事务同时操作相同数据库的同一个数据时,一个事务的执行不受另外一个事务的干扰

 持久性:指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

1.12.3 事务操作

不主动开启事务,每一条SQL都是一条书屋,执行之后自动提交事务

 开启事务(START TRANSACTION;或者是BEGIN;):数据增删改操作,不直接修改数据表,而是在日志文件中记录修改

 提交事务(COMMIT;):将日志中记录的修改操作,永久保存到数据表,日志文件清空

 回滚事务(ROLLBACK;):日志文件清空

1.12.4 事务并发问题

脏读;

幻读;

不可重复读。

1.12.5 事务隔离界别

读未提交:READ UNCOMMITTED

读已提交:READ COMMITTED

可重复读:REPEATABLE READ

序列化:SERIALIZABLE

1.12.6 设置隔离级别

查看隔离界别;

设置隔离级别为读未提交;

设置隔离级别为读已提交;

设置隔离级别为可重复读;

设置隔离级别为序列化

二、JDBC

2.1 概述

2.1.1 数据库的持久化

持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成

2.1.2 JDBC介绍

JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题

2.2.3 JDBC开发流程

2.2 使用

2.2.1 注册驱动

2.2.2 获取数据库连接

2.2.2.1 指定URL

String url = "jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8";

2.2.2.2 指定用户名

String user = "root";

2.2.2.3 指定密码

String pwd = "root";

2.2.2.4 调用获取连接方法

Connection conn = DriverManager.getConnection(url, user, pwd);

2.2.3 获取传输器

定义SQL(使用SQL骨架)

executeQuery()——返回结果集

executeUpdate()——返回整数

2.2.4 处理结果集

next()

getXxx(String columnName)

2.2.5 资源释放

colse()

2.2.6 JDBC的事务处理

2.2.6.1 开启手动提交事务

setAutoCommit(false);

2.2.6.2 提交事务

Connection连接对象.commit();

2.2.6.3 回滚事务

Connection连接对象.rollback();

三、Spring

3.1 Maven

3.2 Spring简介

3.2.1 概念

  • Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核。
  • 提供了展现层 SpringMVC持久层 Spring JDBCTemplate 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。

3.2.2 优势

  • 方便解耦,简化开发
    通过 Spring 提供的 IoC容器,可以将对象间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度耦合。

    用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

  • AOP 编程的支持
    通过 Spring的 AOP 功能,方便进行面向切面编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松实现。

  • 声明式事务的支持
    可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务管理,提高开发效率和质量。

  • 方便程序的测试
    可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情。

  • 方便集成各种优秀框架
    Spring对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的支持。

  • 降低 JavaEE API 的使用难度
    Spring对 JavaEE API(如 JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些API 的使用难度大为降低。

  • Java 源码是经典学习范例
    Spring的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对Java 设计模式灵活运用以及对 Java技术的高深造诣。它的源代码无意是 Java 技术的最佳实践的范例。

3.3 Spring Boot简介

3.3.1 概念

SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。2014 年 4 月,Spring Boot 1.0.0 发布。Spring的顶级项目之一(https://spring.io)。

3.3.2 功能

自动配置;

起步依赖;

辅助功能

3.4 IOC

3.4.1 概念

  • Inversion of Control,控制反转。
  • IOC主要是一种设计思想。在应用程序中,原本由程序主动去new依赖对象,变成了由IOC容器来控制对象的创建。
  • 所以,所谓的控制反转,控制指的是IOC容器控制了对象的创建,反转指的是程序依赖IOC容器来注入对象。

3.4.2 常用注解

@Component

@Controller

@Service

@Repository

3.5 DI

3.5.1 概念

依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现。组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。

3.5.2 常用注解

@Value

@Autowired

@ConfigurationProperties

3.6 HikariCP

3.6.1 概念

3.6.2 作用

3.6.3 使用方式

3.7 JDBC Template

3.7.1 作用

3.7.2 使用方式

四、MyBatis

4.1 概念

4.2 Spring Boot整合MyBatis

① 添加依赖

② 配置数据源

4.3 注解方式

4.3.1 编写实体类

类名

属性名

属性类型

get和set

4.3.2 定义接口

接口名

4.3.3 定义方法

方法名

返回值

方法参数

4.3.4 绑定SQL

@Select

@Update

@Insert

@Delete

4.3.5 进行测试

4.4 XML方式开发

4.4.1 编写实体类

4.4.2 定义接口

4.4.3 定义SQL

4.4.3.1 Select标签

id要和绑定接口方法名一致;

resultType为查询要封装的实体类路径

4.4.3.2 Update标签

id要和绑定接口方法名一致

4.4.4 进行测试

4.5 #{}占位符

基本类型:参数名可以任意起

自定义类型:参数名要和映射的实体类一致

Map类型:参数名要和key的名字相同

4.6 resultMap

4.6.1 id属性

4.6.2 type属性

4.6.3 id标签

column属性

property属性

4.6.4 result标签

column属性

property属性

4.6.5 级联用法

一对一 association(proerty、javaType)

一对多 collection(property、ofType)

4.6.6 动态SQL

if标签

where标签

set标签

foreach标签

sql标签

上篇文章:MySQL的安装—>Mariadb的安装(day21)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Z0412_J0103/article/details/141678370下篇文章:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【项目日记】高并发内存池---实现页缓存

放纵自己的欲望是最大的祸害&#xff1b; 谈论别人的隐私是最大的罪恶&#xff1b; 不知自己过失是最大的病痛。 --- 亚里士多德 --- 高并发内存池---实现页缓存 1 页缓存整体设计思路2 框架搭建3 NewSpan函数4 请求Span联动 1 页缓存整体设计思路 首先我们来看页缓存的设…

windows手工杀毒-寻找可疑进程之进程名称

上篇回顾&#xff1a;windows手工杀毒-寻找可疑进程之进程图标-CSDN博客 上篇中我们简单介绍了什么是电脑病毒&#xff0c;也介绍了一种发现可疑进程的方法即根据进程图标确认是否是病毒&#xff0c;这种方法存在的理论基础是&#xff0c;通过图标可以很容易在电脑上找…

遥控器新手操作指南!!!

一、准备工作 检查电量&#xff1a;确保无人机和遥控器的电池电量充足&#xff0c;以避免在飞行过程中因电量不足而导致意外。 安装与连接&#xff1a;确保无人机的螺旋桨安装正确且牢固&#xff0c;同时检查无人机存储卡是否插入&#xff0c;以及遥控器与无人机之间的连接是…

论文笔记:2023顶会SIGIR - Strategy-aware Bundle Recommender System

论文笔记&#xff1a;2023顶会SIGIR - Strategy-aware Bundle Recommender System

【位运算】--- 初阶题目赏析

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey 根据上一篇位运算的总结&#xff0c;我们来体会几道初阶题目。 &#x1f3e0; 判定字符是否唯一 &#x1f4cc; 题目解析 判定字符是否唯一…

通义千问AI PPT初体验:一句话、万字文档、长文本一键生成PPT!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

leecode刷题经典算法套路模版笔记【递归回溯篇】--根本逻辑,快速掌控

刷题套路总结&#xff1a; 双指针&#xff1a; 单调性&#xff1b;对两端按照规律进行操作移动&#xff1b; 常见移法&#xff0c;右指针右移扩大范围&#xff0c;左指针左移缩小范围&#xff1b; 先举例模拟&#xff0c;然后推导公式&#xff1b; 递归&#xff0c;回溯 &am…

线程间同步的方式有哪些?

Linux 系统提供了五种用于线程间同步的方式&#xff1a;互斥锁、读写锁、自旋锁、信号量、条件变量 互斥锁 主要用于保护共享数据&#xff0c;确保同一时间内只有一个线程访问数据。 互斥量本质上来说就是一把锁&#xff0c;在访问共享资源前对互斥量进行加锁&#xff0c;访…

【go-zero】win启动rpc服务报错 panic: context deadline exceeded

win启动rpc服务报错 panic: context deadline exceeded 问题来源 在使用go-zero生成的rpc项目后 启动不起来 原因 这个问题原因是wndows没有启动etcd 官方文档是删除了etcd配置 而我自己的测试yaml配置有etcd&#xff0c;所以需要启动etcd 下载安装好etcd后&#xff0…

Java Full GC 的常见原因及优化策略

Java Full GC 的常见原因及优化策略 1、导致Full GC的常见原因1.1 新生代设置过小1.2 新生代设置过大1.3 Survivor区设置不当 2、优化GC策略2.1 吞吐量优先2.2 暂停时间优先 3、结论 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java应…

自控原理-传递函数(闭环 扰动 偏差 前馈 复合 顺馈)

都知道闭环传递函数定义为&#xff1a;G1G2/(1G1G2H) 但是当碰到复杂的系统&#xff0c;比如复合顺馈&#xff0c;前馈扰动等&#xff0c;就不知道分子到底要不要乘上G2了。 这个公式是如何推导出来的&#xff0c;今天看到一个公式图片&#xff1a; 过程非常详细。 由此我也…

C语言遇见的一些小问题

问题如下&#xff1a; 1&#xff1a;为什么这样的代码为报错 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <algorithm> #include <cstdio> #include<string> #include<stdlib.h> using namespace std; int main() {int i …

C语言 ——— #define定义标识符

目录 #define 定义常变量 #define 定义字符串 #define 定义一条代码 #define 定义的标识符是否需要加分号 #define 定义常变量 代码演示&#xff1a; #define M 100 //定义常变量 代码用途&#xff1a; int a M; int arr[M] { 0 }; 此时的 M 具有常属性&#xff0c…

什么是UART?

1.什么是UART&#xff1f; 通用异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter)&#xff0c;通常称作UART。UART 表示通用异步接收机/发射机&#xff0c;定义用于在两个设备之间交换串行数据的协议或一组规则。UART 非常简单&#xff0c;仅在发射机和…

C语言中static与extern关键字的深入解析

在C语言编程中&#xff0c;static和extern是两个非常重要的关键字&#xff0c;它们各自有着独特的用途。本文将深入探讨这两个关键字的工作原理、底层实现机制以及在实际开发中的应用。 static关键字 1. 原理与作用 static关键字用于声明变量或函数具有特定的作用域和生命周…

5.4分段线性灰度变换

目录 实验原理 分段线性灰度变换的概念 变换函数的形式 示例代码1 示例结果1 示例代码2 示例结果2 示例代码3 运行结果3 示例代码4 运行结果4 实验原理 在OpenCV中&#xff0c;分段线性灰度变换&#xff08;Piecewise Linear Gray Level Transformation&#xff09…

GitLab 是什么?GitLab使用常见问题解答

GitLab 是什么 GitLab是由GitLab Inc.开发&#xff0c;使用MIT许可证的基于网络的Git仓库管理工具开源项目&#xff0c;且具有wiki和issue跟踪功能&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的web服务。 ​GitLab 是由 GitLab Inc.开发&#xff0c…

【Prometheus】Prometheus的特点、数据采集方式、架构、数据模型详解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

vue3整合antv x6实现图编辑器快速入门

安装&#xff1a; npm install antv/x6 --save如果使用 umd 包&#xff0c;可以使用下面三个 CDN 中的任何一个&#xff0c;默认使用 X6 的最新版&#xff1a; https://unpkg.com/antv/x6/dist/index.jshttps://cdn.jsdelivr.net/npm/antv/x6/dist/index.jshttps://cdnjs.clo…

从汇编层看64位程序运行——likely提示编译器的优化案例和底层实现分析

大纲 代码分析with_attributes::powno_attributes::pow分析 我们在《Modern C——使用分支预测优化代码性能》一文中介绍了likely提示编译器进行编译优化&#xff0c;但是我们又讲了最终优化不是对分支顺序的调换&#xff0c;那么它到底做了什么样的优化&#xff0c;让整体性能…