关系型数据库 - MySQL II

基本概念

SQL 指令

SQL 指令是用于访问和处理数据库的标准的计算机语言。对于 MySQL 等常用数据库都可以通过使用 SQL 访问和处理数据系统中的数据。

注意事项

  1. SQL 对大小写不敏感。
  2. 标识符应避免与关键字重名!可用反引号(`)为标识符包裹。
  3. 注释
    • 单行注释: # 注释内容
    • 多行注释: /* 注释内容 */
    • 单行注释: -- 注释内容
  4. 模式通配符
    • 匹配任意单个字符: _
    • 匹配任意数量字符,包括 0 个:%
    • 单引号需要进行转义: \'
  5. 清除已有语句:\c

服务指令

启动/终止服务

net start mysql           # 启动本机 MySQL 运行
net stop mysql            # 终止本机 MySQL 运行

连接/断开服务

MySQL 服务运行时,输入连接指令即可连接 MySQL 数据库。

需要输入的属性分别为 (h)IP 地址、(P)端口号、(u)用户名、(p)密码。 端口号若为 3306 可省略,密码可空缺。

# 本地连接
mysql -h localhost -u root -p # 远程连接
mysql -h 10.0.0.51 -P 3306 -u root -p 123456# 断开连接
mysql> exit
mysql> quit
mysql> /p

管理指令

用户管理

MySQL 数据库的全部用户信息保存在 mysql 库 / user 表内,用户含有以下属性:

  • user 属性:用户名
  • host 属性:允许用户登入的网络
  • authentication_string 属性:密码
增删改查

能够对用户进行增删改查操作,需要当前用户拥有非常高的数据库权限。

-- 增加用户(CREATE)
mysql> CREATE USER 'boy'@'localhost' IDENTIFIED BY '';                -- 创建用户 boy 允许从本地网络登录
mysql> CREATE USER 'girl'@'10.0.0.%' IDENTIFIED BY '123456';          -- 创建用户 girl 允许从特定网络登录-- 删除用户(DROP)
mysql> DROP USER 'girl'@'10.0.0.%';-- 修改用户(ALTER)
mysql> ALTER USER 'boy'@'localhost' IDENTIFIED BY '123456';-- 重命名用户(RENAME)
mysql> RENAME USER 'boy'@'localhost' TO 'man'@'localhost';-- 设置密码
mysql> SET PASSWORD = PASSWORD('123456');                              -- 为当前用户设置密码
mysql> SET PASSWORD FOR 'boy'@'localhost' = PASSWORD('123456');        -- 为指定用户设置密码-- 查询全部用户信息(DESC/SELECT)
mysql> DESC mysql.user;                                            
mysql> SELECT user,host,authentication_string FROM mysql.user     
 
权限管理

用户权限分为非常多种,包括全局权限、库权限、表权限、列权限等。


-- 赋予权限(GRANT)
mysql> GRANT SELECT,INSERT ON *.*             -- 赋予用户选择插入权限(所有库的所有表)-> TO 'boy'@'localhost'                   -- 不存在将新建用户-> IDENTIFIED BY '123456'                 -> WITH GRANT OPTION;                     -- (可选)允许用户转授权限-- 撤消权限(REVOKE)
mysql> REVOKE INSERT ON *.*-> FROM 'boy'@'localhost';-- 查看权限
mysql> SELECT Host,User,Select_priv,Grant_priv-> FROM mysql.user-> WHERE User='testUser';
 

数据库管理

MySQL 内划分为多个互相独立的数据存储区域,调用数据库指令时必须提前声明要使用的数据库。

  • 数据库选项信息
属性含义备注
CHARACTER SET编码方式默认为 utf8mb4
COLLATE校对规则默认为 utf8mb4_general_ci
-- 查看所有数据库
mysql> SHOW DATABASES;-- 进入/切换数据库
mysql> USE mydb;-- 查看当前数据库
mysql> SELECT DATABASE();-- 创建数据库
mysql> CREATE DATABASE [IF NOT EXISTS] mydb;
mysql> CREATE DATABASE [IF NOT EXISTS] mydb CHARACTER SET utf8mb4;-- 删除数据库
mysql> DROP DATABASE [IF EXISTS] mydb;-- 查看数据库选项信息
mysql> SHOW CREATE DATABASE mydb;-- 修改数据库选项信息
mysql> ALTER DATABASE mydb CHARACTER SET utf8;

表管理

  • 表属性
属性含义备注
CHARSET字符集默认使用数据库字符集
ENGINE存储引擎默认为 InnoDB
DATA DIRECTORY数据文件目录
INDEX DIRECTORY索引文件目录
COMMENT表注释

如果表标记为 TEMPORARY 则为临时表,在连接断开时表会消失。

  • 列属性
属性含义备注
PRIMARY KEY主键标识记录的字段。可以为字段组合,不能为空且不能重复。
INDEX普通索引可以为字段组合,建立普通索引。
UNIQUE唯一索引可以为字段组合,不能重复,建立唯一索引。
NOT NULL非空(推荐)不允许字段值为空。
DEFAULT默认值设置当前字段的默认值。
AUTO_INCREMENt自动增长字段无需赋值,从指定值(默认 1)开始自动增长。表内只能存在一个且必须为索引。
COMMENT注释字段备注信息。
FOREIGN KEY外键该字段关联到其他表的主键。默认建立普通索引。
表操作
-- 查看所有表
mysql> SHOW TABLES;-- 创建表
mysql> CREATE [TEMPORARY] TABLE [IF NOT EXISTS] student(id INT(8) PRIMARY KEY AUTO_INCREMENT=20190001,name VARCHAR(50) NOT NULL,sex INT COMMENT 'Male 1,Female 0',access_time DATE DEFAULT GETDATE(),major_id INT FOREIGN KEY REFERENCES major(id) )ENGINE=InnoDB;mysql> CREATE TABLE grade(student_id INT,course_id INT,grade INT,PRIMARY KEY (student_id,course_id),CONSTRAINT fk_grade_student FOREIGN KEY (student_id) REFERENCES student(id),CONSTRAINT fk_grade_course FOREIGN KEY (course_id) REFERENCES course(id));-- 删除表
mysql> DROP TABLE [IF EXISTS] student;-- 清空表数据(直接删除表,再重新创建)
mysql> TRUNCATE [TABLE] student;-- 查看表结构
mysql> SHOW CREATE TABLE student;
mysql> DESC student;-- 修改表属性
mysql> ALTER TABLE student ENGINE=MYISAM;-- 重命名表
mysql> RENAME TABLE student TO new_student;
mysql> RENAME TABLE student TO mydb.new_student;      -- 复制表
mysql> CREATE TABLE new_student LIKE student;                  -- 复制表结构
mysql> CREATE TABLE new_student [AS] SELECT * FROM student;    -- 复制表结构和数据-- 检查表是否有错误
mysql> CHECK TABLE tbl_name [, tbl_name] ... [option] ...
-- 优化表
mysql> OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
-- 修复表
mysql> REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
-- 分析表
mysql> ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
列操作
-- 添加字段
mysql> ALTER TABLE student ADD [COLUMN] age INT;               -- 默认添加在最后一行
mysql> ALTER TABLE student ADD [COLUMN] age INT AFTER sex;     -- 添加在指定字段后
mysql> ALTER TABLE student ADD [COLUMN] age INT FIRST;         -- 添加在第一行--修改字段
mysql> ALTER TABLE student MODIFY [COLUMN] id SMALLINT;        -- 修改字段属性
mysql> ALTER TABLE student CHANGE [COLUMN] id new_id INT;      -- 修改字段名-- 删除字段
mysql> ALTER TABLE student DROP [COLUMN] age;   -- 编辑主键
mysql> ALTER TABLE student ADD PRIMARY KEY(id,age);           
mysql> ALTER TABLE student DROP PRIMARY KEY;                 -- 编辑外键
mysql> ALTER TABLE student ADD CONSTRAINT fk_student_class FOREIGN KEY(cid) REFERENCES class(id);
mysql> ALTER TABLE student DROP FOREIGN KEY fk_student_class;  

数据指令

增删改查

插入数据,如果已有主键值则插入数据失败。

mysql> INSERT INTO student-> (ID,name,grade)-> VALUES(755,'王东浩',80);

插入并替换数据,如果已有主键值则先删除再插入。

mysql> REPLACE INTO student-> (ID,name,grade)-> VALUES(755,'王东浩',80);

更新数据

mysql> UPDATE student-> SET name='孙鹏',grade=60-> WHERE id=753;

删除数据

mysql> DELETE FROM student-> WHERE id=754;
 

查询数据

mysql> SELECT id,name FROM student               -- 按条件查询数据-> WHERE id BETWEEN 753 and 755;mysql> SELECT * FROM student;                    -- 查询全部数据
 
条件语句
  • DISTINCT 关键字用于对查询结果去重,必须放于所有字段前。只有多个字段全部相等才会被去重。
mysql> SELECT DINTINCE age,sex FROM student;     -- 查询数据并去重
 
  • WHERE 语句用于指定 更新/删除/查询 的操作范围,如果不设定范围将对全部数据进行操作。
mysql> SELECT * FROM student WHERE id = 100;
mysql> SELECT * FROM student WHERE id != 100;
mysql> SELECT * FROM student WHERE id [NOT] BETWEEN 30 AND 50;
mysql> SELECT * FROM student WHERE id [NOT] IN (30, 35 ,50);
mysql> SELECT * FROM student WHERE grade IS [NOT] NULL;
 
  • LIKE 语句用于对字符串进行模糊匹配:%代表任意多个字符 _代表一个字符 /代表转义
mysql> SELECT * FROM student WHERE name LIKE 'Tom%';
 

分组排序

数据分组
分组函数功能
count个数
sum总和
max最大值
min最小值
avg求平均值
group_concat组内字符串拼接
  1. GROUP 语句指定数据的分组方式,如果不含则默认把全部数据合并为一条数据。(本质是生成临时表)
  2. AS 关键字为表或者列起别名,可省略。
  3. HAVING 语句对分组后的结果进行筛选。
-- 查询班级总数
mysql> SELECT COUNT(*) FROM class;                    -- 全部合并-- 查询各年级人数
mysql> SELECT grade, SUM(class.student_num) AS nums -> FROM class -> GROUP BY grade                                 -- 各班数据按年级合并-> HAVING SUM(class.student_num) > 200;           -- 筛选人数大于 200 的年级
 
数据排序
  • ORDER 语句指定数据显示顺序,ASC 为升序 / DESC 为降序。
  • LIMIT 语句对排序后的数据进行筛选,指定起始序号和总数量。
-- 查询学生信息
mysql> SELECT * -> FROM student -> ORDER BY grade DESC, ID ASC                   -- 按成绩降序排列,若相同按学号升序排列-> LIMIT 10,20;                                  -- 筛选第 11 - 30 名
 

多表查询

嵌套查询
  1. FROM 型:子语句返回一个表,且必须给子查询结果取别名。
  2. WHERE 型:子语句返回一个值,不能用于 UPDATE。
-- FROM 型
mysql> SELECT * -> FROM (SELECT * FROM tb WHERE id > 0) AS subfrom -> WHERE id > 1;-- WHERE 型
mysql> SELECT * -> FROM tb-> WHERE money = (SELECT max(money) FROM tb);
 
合并查询
  1. 默认为 DISTINCT 形式,不同表查询到的相同数据只展示一个。
  2. 设置为 ALL 则不同表查询到的相同结果重复展示。
-- DISTINCT 形式
mysql> (SELECT * FROM student WHERE id < 10) -> UNION-> (SELECT * FROM student WHERE id > 20);-- ALL 形式
mysql> (SELECT * FROM student1) -> UNION ALL -> (SELECT * FROM student2);
 
连表查询
  • 内连接 INNER JOIN:(默认)未指定连接条件时,自动查找相同字段名匹配连接条件。
mysql> SELECT s.id,s.name,c.name-> FROM student s JOIN class c-> ON e.cid = c.id;mysql> SELECT * -> FROM student s, class c -> WHERE s.id = c.id; 
 
  • 交叉连接 CROSS JOIN:未指定连接条件时,视为无连接条件。
mysql> SELECT *-> FROM boy CROSS JOIN girl;                 -- 显示所有交配可能mysql> SELECT *
-> FROM boy, girl;                               -- 等价写法
 
  • 外连接 OUTER JOIN:如果数据不存在,也会出现在连接结果中。

    • LEFT JOIN:左表数据一定显示,没有匹配右表数据用 null 填充。
    • RIGHT JOIN:右表数据一定显示,没有匹配左表数据用 null 填充。
    • FULL JOIN:两表数据一定显示,没有匹配数据用 null 填充。
mysql> SELECT s.id,s.name,c.name                   -- 显示学生的班级信息-> FROM student s LEFT JOIN class c            -- 没有班级的学生也会显示-> ON s.cid = c.id;-- 先筛选再连接(效率等价,但如果有大量重复值提前筛选可以提高效率)
mysql> SELECT s.id,s.name,c.name    -> FROM student s LEFT JOIN (SELECT DINTINCT id, name FROM class) c       -> ON s.cid = c.id;
 

高级指令

索引

  • 索引类型
索引名称索引类型字段类型备注
PRIMARY KEY主索引主键字段值不能重复,也不能为空。
INDEX普通索引自定义字段无,效率低。
UNIQUE唯一索引自定义字段字段值不能重复,效率高。
FULLTEXT文本索引自定义字段无,用于文本检索。
-- 查询索引
mysql> SHOW INDEX FROM student;-- 创建索引
mysql> CREATE [UNIQUE|FULLTEXT] INDEX idx_student_age -> [USING BTREE]                                           -- 指定索引类型,默认 B+ 树-> ON student(age);                                        -- 指定索引属性mysql> ALTER TABLE student ADD INDEX [idx_student_age](id,age);   
mysql> ALTER TABLE student ADD UNIQUE [uniq_student_age](age);         
mysql> ALTER TABLE student ADD FULLTEXE [ft_student_age](age);  -- 删除索引
mysql> DROP INDEX idx_student_age ON student;mysql> ALTER TABLE student DROP INDEX idx_student_age;     
 

视图

视图算法

算法名称含义
UNDEFINED未定义(默认)MySQL 自主选择相应的算法。
MERGE合并视图的查询语句,与外部查询需要先合并再执行。
TEMPTABLE临时表将视图执行完毕后形成临时表,再做外层查询.

更新选项

算法名称含义
CACADED级联(默认)满足所有视图条件才能进行数据更新。
LOCAL本地满足本视图条件就能进行数据更新。
-- 创建视图
mysql> CREATE VIEW view_student-> AS (SELECT * FROM student);mysql> CREATE ALGORITHM = MERGE-> VIEW view_student-> AS (SELECT * FROM student)-> WITH LOCAL CHECK OPTION;        -- 查看结构
mysql> SHOW CREATE VIEW view_student;-- 删除视图
mysql> DROP VIEW [IF EXISTS] view_student;-- 修改视图结构(慎用)
mysql> ALTER VIEW view_student-> AS (SELECT * FROM student);

事务

开启事务后,所有输入的 SQL 语句将被认作一个不可分割的整体,在提交时统一执行。

如果在输入过程中出现问题,可以手动进行回滚。在输入过程中可以设置保存点。

-- 事务开启
mysql> START TRANSACTION;
mysql> BEGIN;
-- 事务提交
mysql> COMMIT;
-- 事务回滚
mysql> ROLLBACK;-- 保存点
mysql> SAVEPOINT mypoint;                     -- 设置保存点
mysql> ROLLBACK TO SAVEPOINT mypoint;         -- 回滚到保存点
mysql> RELEASE SAVEPOINT mypoint;             -- 删除保存点
Copy to clipboardErrorCopied

InnoDB 存储引擎支持关闭自动提交,强制开启事务:任何操作都必须要 COMMIT 提交后才能持久化数据,否则对其他客户端不可见。

mysql> SET AUTOCOMMIT = 0|1;             -- 0 表示关闭自动提交,1 表示开启自动提交。

锁定

MySQL 可以手动对表/行锁定,防止其它客户端进行不正当地读取和写入。

-- 锁定
mysql> LOCK TABLES student [AS alias];          
-- 解锁
mysql> UNLOCK TABLES;

触发器

触发程序是与表有关的数据库对象,监听记录的增加、修改、删除。当出现特定事件时,将激活该对象执行 SQL 语句。

  1. MySQL 数据库只支持行级触发器:如果一条 INSERT 语句插入 N 行数据,语句级触发器只执行一次,行级触发器要执行 N 次。

  2. 在触发器中,可以使用 OLD 和 NEW 表示该行的新旧数据。删除操作只有 OLD,增加操作只有 NEW 。

-- 查看触发器
mysql> SHOW TRIGGERS;-- 创建触发器
mysql> CREATE TRIGGER my_trigger -> BEFORE INSERT                    -- 触发时间 BEFORE/AFTER 触发条件 INSERT/UPDATE/DELETE-> ON student                       -- 监听表必须是永久性表-> FOR EACH ROW                     -- 行级触发器-> BEGIN-> INSERT INTO student_logs(id,op,op_time,op_id) VALUES(null,'insert',now(),new.id)-> END;-- 删除触发器
mysql> DROP TRIGGER [schema_name.]trigger_name;

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

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

相关文章

Java语言程序设计基础篇_编程练习题***18.33 (游戏:骑士旅途的动画)

目录 ***18.33 (游戏:骑士旅途的动画) 习题思路 代码示例 动画演示 ***18.33 (游戏:骑士旅途的动画) 为骑士旅途的问题编写一个程序&#xff0c;该程序应该允许用户将骑士放到任何一个起始正方形&#xff0c;并单击Solve按钮&#xff0c;用动画展示骑士沿着路径的移动&…

深度学习之表示学习 - 贪心逐层无监督预训练篇

引言 在人工智能的浩瀚星空中&#xff0c;深度学习以其强大的数据处理与模式识别能力&#xff0c;成为了一颗璀璨的明星。而表示学习&#xff0c;作为深度学习的核心基石之一&#xff0c;正引领着这一领域不断突破边界。表示学习旨在将原始数据转换为更加抽象、更有意义的特征…

leetcode第二十六题:删去有序数组的重复项

给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#xff0c;你…

Rasa对话模型——做一个语言助手

1、Rasa模型 1.1 模型介绍 Rasa是一个用于构建对话 AI 的开源框架&#xff0c;主要用于开发聊天机器人和语音助手。Rasa 提供了自然语言理解&#xff08;NLU&#xff09;和对话管理&#xff08;DM&#xff09;功能&#xff0c;使开发者能够创建智能、交互式的对话系统。 1.2…

Apache Iceberg 数据类型参考表

Apache Iceberg 概述-链接 Apache Iceberg 数据类型参考表 数据类型描述实例方法注意事项BOOLEAN布尔类型&#xff0c;表示真或假true, false用于条件判断&#xff0c;例如 WHERE is_active true。确保逻辑条件的正确性。INTEGER32位有符号整数42, -7可用于计算、聚合&#xf…

【系统架构设计师】专题:中间件技术

更多内容请见: 备考系统架构设计师-核心总结目录 文章目录 一、中间件概述二、中间件特点三、中间件的分类四、中间件产品介绍一、中间件概述 中间件(middleware) 是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处在操作系统、网络和数据库之上,应用软件的下层…

着色器ShaderMask

说明 实现一个渐变进度条&#xff0c;要求&#xff1a; 颜色渐变的过程是循序渐进的&#xff0c;而不是看起来像是将渐变条逐渐拉长了。 效果 源码 // 渐变进度条Stack(children: [// 背景色板Container(width: 300,height: 8,decoration: BoxDecoration(borderRadius: Bord…

ollama 部署教程(window、linux)

目录 一、官网 二、安装方式一&#xff1a;window10版本下载 三、安装方式二&#xff1a;linux版本docker 四、 模型库 五、运行模型 六、API服务 七、python调用 ollama库调用 langchain调用 requests调用 aiohttp调用 八、模型添加方式 1.线上pull 2.导入 GGU…

Parallels Desktop 20 for Mac 推出:完美兼容 macOS Sequoia 与 Win11 24H2

Parallels Desktop 20 for Mac 近日正式发布&#xff0c;这一新版本不仅全面支持 macOS Sequoia 和 Windows 11 24H2&#xff0c;还在企业版中引入了一个全新的管理门户。新版本针对 Windows、macOS 和 Linux 虚拟机进行了多项改进&#xff0c;其中最引人注目的当属 Parallels …

C++编程语言:基础设施:源文件和程序(Bjarne Stroustrup)

第15章 源文件和程序 (Source Files and Programs) 目录 15.1 单独编译(Separate Compilation) 15.2 链接(Linkage) 15.2.1 文件局部名(File-Local Names) 15.2.2 头文件(Header Files) 15.2.3 一次定义原则(The One-Definition Rule) 15.2.4 标准库头文件 1…

基于YOLOv8+LSTM的商超扶梯场景下行人安全行为姿态检测识别

基于YOLOv8LSTM的商超扶梯场景下行人安全行为姿态检测识别 手扶电梯 行为识别 可检测有人正常行走&#xff0c;有人 跌倒&#xff0c;有人逆行三种行为 跌倒检测 电梯跌倒 扶梯跌倒 人体行为检测 YOLOv8LSTM。 基于YOLOv8LSTM的商超扶梯场景下行人安全行为姿态检测识别&#xf…

STM32上实现FFT算法精准测量正弦波信号的幅值、频率和相位差(标准库)

在研究声音、电力或任何形式的波形时&#xff0c;我们常常需要穿过表面看本质。FFT&#xff08;快速傅里叶变换&#xff09;就是这样一种强大的工具&#xff0c;它能够揭示隐藏在复杂信号背后的频率成分。本文将带你走进FFT的世界&#xff0c;了解它是如何将时域信号转化为频域…

如何将Excel表格嵌入Web网页在线预览、编辑并保存到自己服务器上?

猿大师办公助手作为一款专业级的网页编辑Office方案&#xff0c;不仅可以把微软Office、金山WPS和永中Office的Word文档内嵌到浏览器网页中实现在线预览、编辑保存等操作&#xff0c;还可以把微软Office、金山WPS和永中Office的Excel表格实现网页中在线预览、编辑并保存到服务器…

python中ocr图片文字识别样例(二)

一、说明 本次解决图片相关出现中文乱码问题&#xff0c;属于上篇文章的优化&#xff0c;前提条件依赖上篇文章的包&#xff0c;当然ocr的具体应用场景很多&#xff0c;根据自身需求进行调整 二、具体实现 2.1 代码实现&#xff1a; # -*- coding: utf-8 -*- import easyoc…

3.《DevOps》系列K8S部署CICD流水线之部署MetalLB负载均衡器和Helm部署Ingress-Nginx

架构 服务器IP服务名称硬件配置192.168.1.100k8s-master8核、16G、120G192.168.1.101k8s-node18核、16G、120G192.168.1.102k8s-node28核、16G、120G192.168.1.103nfs2核、4G、500G操作系统:Rocky9.3 后续通过K8S部署GitLab、Harbor、Jenkins 为什么使用MetalLB 当使用云平…

在vue中:style 的几种使用方式

在日常开发中:style的使用也是比较常见的&#xff1a; 亲测有效 1.最通用的写法 <p :style"{fontFamily:arr.conFontFamily,color:arr.conFontColor,backgroundColor:arr.conBgColor}">{{con.title}}</p> 2.三元表达式 <a :style"{height:…

如何快速连接超2100家国内外快递物流公司、实现查询结果翻译为中/英文?

近年来&#xff0c;中国企业正不断加快“出海”步伐&#xff0c;“中企出海”也成为了2024年最重要的投资主题之一。 百递云API开放平台深刻理解这一趋势&#xff1a;在我们的客户群体中&#xff0c;既有贸易规模增长超数倍的跨境电商&#xff0c;还有国际业务越来越成为增长新…

ADB 安装教程:如何在 Windows、macOS 和 Linux 上安装 Android Debug Bridge

目录 一、ADB 介绍 二、Windows 系统安装 ADB 1. 下载 ADB 2. 解压文件 3. 验证 ADB 安装 4. 配置环境变量 5. 验证全局 ADB 使用 三、macOS 系统安装 ADB 1. 下载 ADB 2. 解压文件 3. 配置环境变量 4. 验证 ADB 安装 四、Linux 系统安装 ADB 1. 使用包管理器安装…

C++初阶学习——探索STL奥秘——模拟实现list类

1、基本框架 list 由三个类构建而成: 节点类:每个节点必须的三部分(指向前一个节点的指针、指向后一个节点的指针、当前节点存储的数据) 迭代器类:此时的迭代器为双向迭代器&#xff0c;比较特殊&#xff0c;需要对其进行封装&#xff0c;如 it并非使迭代器单纯向后移动&…

Python气象辐射光谱能量平衡模型

&#x1f3af;要点 根据温室模型&#xff0c;计算不同情景下辐射通量和评估能量平衡&#xff0c;构建复杂温室模型计算计算和绘图大气、海洋、陆地表面和海冰复合模型数据建立简单能量平衡情景模型&#xff0c;并根据模型计算释放温度和时滞&#xff0c;计算并绘制地面辐射和吸…