数据库入门-----SQL基础知识

目录

📖前言:

📑SQL概述&&通用语法:

 🐳DDL:

🐻操作数据库:

🐞数据类型:

 🦉操作表:

🦦DML:

语法规则:

案例演示:

🦏DQL:

语法规则:

案例演示:

# 基础查询:

 # 条件查询:

 #聚合函数:

 # 分组查询:

 #排序查询:

 #分页查询:

 执行顺序:

🫎DCL:

语法规则:


📖前言:

SQL语言有40多年的历史,从它被应用至今几乎无处不在。我们消费的每一笔支付记录,收集的每一条用户信息,发出去的每一条消息,都会使用数库或与其相关的产品来据存储,而操纵数据库的语言正是 SQL !!!

SQL相当于一种工具,它可以帮助我们完成工作,创造价值。 本文就来详细讲解SQL的相关概念与操作,为后面的数据库深入学习打下基础。

😺😺😺数据库与SQL相关说明:

名称全称简称
数据库
存储数据的仓库,数据是有组织的进行存储
DataBase DB
数据库管 理系统
操纵和管理数据库的大型软件
DataBase Management
System (DBMS)
SQL
操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
Structured Query
Language (SQL)

📑SQL概述&&通用语法:

SQL,全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 。

😀学习SQL的作用:

SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。

  • SQL 可创建新数据库
  • SQL 面向数据库执行查询
  • SQL 可从数据库取回数据
  • SQL 可在数据库中插入新的记录
  • SQL 可从数据库删除记录
  • SQL 可更新数据库中的数据

 👌SQL分类:

SQL 语句,根据其功能,主要分为四类: DDL DML DQL DCL

🧐SQL通用语法:

  • SQL语句可以单行或多行书写,以分号结尾。
  • SQL 语句可以使用空格 / 缩进来增强语句的可读性
  • MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。​​​​​​
    * 注释:
    1)单行注释: -- 注释内容 # 注释内容
    2)多行注释: /* 注释内容 */ 

好了,通过上面的一些说明,想必你对SQL有了一定了解了,那我们直接开始SQL的学习吧~~~

 🐳DDL:

Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段)

🐻操作数据库:

这里先列出总的语法,后面依次解释说明:

# 库操作
-- 1.1 查询所有数据库
show databases ;
-- 1.2 查询当前数据库
select database() ;
-- 1.3 创建数据库
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序
规则 ] ;
-- 1.4 删除数据库
drop database [ if exists ] 数据库名 ;
-- 1.5 切换数据库
use 数据库名 ;

# 表操作:

-- 2.1 查询当前数据库所有表
show tables;
-- 2.2 查看指定表结构
desc 表名 ;
-- 2.3 查询指定表的建表语句
show create table 表名 ;
-- 2.4 创建表结构
create table 表名(
字段1 字段1类型 [comment 字段1注释 ],
字段2 字段2类型 [comment 字段2注释 ],
字段3 字段3类型 [comment 字段3注释 ],
......
字段n 字段n类型 [comment 字段n注释 ]
) [ comment 表注释 ] ;
  • 查询所有数据库:
show databases ;

 ------->可以看到这里有四个系统自带的数据库

  •  创建数据库:
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序
规则 ] ;
/*create database if not exists 数据库名 --->如果数据库已经存在(同名)则不创建,否则创建*/
/*中括号中的内容是可选的,可以写也可以不写*/

在mysql中输入下面指令,名为itcast的数据库创建成功 

  •  查询当前数据库:
select database() ; 
  •  切换数据库 :
我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。比如,切换到itcast 数据,执行如下 SQL
use itcast;

  • 删除数据库 :
drop database [ if exists ] 数据库名 ;
/*如果删除一个不存在的数据库,将会报错。
此时,可以加上参数 if exists ,如果数据库存在,再
执行删除,否则不执行删除。*/

🐞数据类型:

在建表语句中,我们指定字段的数据类型时,常常用到int ,varchar,那么在MySQL中除了 以上的数据类型,还有哪些常见的数据类型呢? 接下来,我们就来详细介绍一下MySQL的数据类型。

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

🦏🦏🦏常用类型

  • int:整型
  • double:浮点型,例如 double(5,2)表示最多 5 位,其中必须有 2 位小数,即最大值为 999.99;
  • decimal:泛型型,在表单线方面使用该类型,因为不会出现精度缺失问题;
  • char:固定长度字符串类型;(当输入的字符不够长度时会补空格)
  • varchar:固定长度字符串类型;
  • text:字符串类型;
  • blob:字节类型;
  • date:日期类型,格式为:yyyy-MM-dd;
  • time:时间类型,格式为:hh:mm:ss
  • timestamp:时间戳类型;

更多数据类型可以查看这篇文章:最全 SQL 字段类型(4种)、属性(6种)总结_sql字段类型-CSDN博客

 🦉操作表:

  •  创建表:

 🐞🐞🐞注意:[    ] 中的内容是可选的,最后一个字段没有逗号.

比如,我们创建一张表 tb_user ,对应的结构如下

 那么建表语句为:

create table tb_user(
id int comment '编号',
name varchar(50) comment '姓名',
age int comment '年龄',
gender varchar(1) comment '性别'
) comment '用户表';
  •  查询当前数据库所有表:
show tables;
  • . 查看指定表结构:
desc 表名 ;

演示:

  • 查询指定表的建表语句:
show create table 表名 ;

上述,我们已经讲解了通过DDL语句,如何操作数据库、操作表、操作表中的字段,而通过DDL语句执 行在命令进行操作,主要存在以下两点问题:

1).会影响开发效率 ;

2). 使用起来,并不直观,并不方便 ;

所以,后续语法与操作展示我将在SQL图示化工具------Vavicat中展示,感兴趣的小伙伴可已自行下载:Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理

🦦DML:

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进 行增、删、改操作。

语法规则:

-- 1. 添加数据
# 1.1 给指定字段添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);

# 1.2 给全部字段添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...);

# 1.3 批量添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值
1, 值2, ...) ;

-- 2. 修改数据
UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;
/* 没有条件where表示将表中的所有数据都进行修改*/

-- 3.  删除数据
DELETE FROM 表名 [ WHERE 条件 ] ;
/* 没有条件where相当于删除所有数据 */


 按照上述操作,我们创建表并给表插入信息:

案例演示:

-- 查看所有数据库
show databases;
-- 创建emp数据库
create database if not exists emp;
-- 使用当前数据库
use emp;
-- 创建员工表
create table emp(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
workaddress varchar(50) comment '工作地址',
entrydate date comment '入职时间'
)comment '员工表';
-- 展示所创建的表信息
desc employee;
-- 加入表中成员
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (1, '0001', ' 柳岩', '女', 19, ' 123445', '北京', '2024-04-01');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (2, '0002', '坤坤', '男', 20, '34568', '北京', '2024-04-02');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (3, '0004', '张三', '男', 22, '45678', '上海', '2024-04-03');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (4, '0005', '李四', '男', 18, '23535', '深圳', '2024-04-05');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (5, '0006', '小明', '男', 35, '23535', '福建', '2024-04-06');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (6, '0007', '丽华', '女', 34, '135252', '天津', '2024-04-07');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (8, '0008', '小猫', '女', 18, '1235215', '福建', '2024-04-05');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (9, '0009', '凉凉', '男', 20, '12345135', '西安', '2024-04-04');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (10, '0010', '菜菜', '女', 19, '135235', '安徽', '2024-04-02');
-- 这里先用来查看所有表中信息,后续会讲到
select * from employee;

/*  这里是不运行的部分,仅作展示
-- 修改表中信息:
update emp set name = '小王' where id = 1;
update emp set entrydate = '2008-01-01'; -- 没有条件where就是全部修改
-- 删除表中数据
delete from emp where gender = '女'; */

运行结果:

注意:

  • DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
  • DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。
  • 所有字符串数据必须使用单引用!

🦏DQL:

DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记 录。查询关键字: SELECT

在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站, 在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能 还会涉及到条件、排序、分页等操作。比如京东购物网站:

语法规则:

# 基础查询
-- 1.1 查询多个字段
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ;-- 带*号是查询所有字段

-- 1.2 字段设置别名:
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名; -- as可以省略

-- 1.3  去除重复记录
SELECT DISTINCT 字段列表 FROM 表名; -- 保留不同的字段

# 条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;

#聚合函数
SELECT 聚合函数(字段列表) FROM 表名 ;

#分组查询
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组
后过滤条件 ];

# 排序查询
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
ASC : 升序(默认值) -- 排序方式
DESC: 降序 -- 排序方式

# 分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;

案例演示:

# 基础查询

A.查询指定字段 name, workno, age并返回:

select name,workno,age from emp;

B:查询返回所有字段:

select id ,workno,name,gender,age,idcard,workaddress,entrydate from emp; -- 1
select * from emp; -- 2

C:查询所有员工的工作地址,起别名:

select workaddress (as) '工作地址' from emp; -- as 可以省略

D:查询公司员工的上班地址有哪些(不要重复):

select distinct workaddress '工作地址' from emp;

D:这里演示最后一个查询结果,其他类似(以DML中创建的员工表为例):

 # 条件查询:

常用的比较运算符如下:

 常用的逻辑运算符如下:

案例: 

A. 查询年龄等于 88 的员工:

select * from emp where age = 88;

B.查询年龄小于等于 20 的员工信息:

select * from emp where age <= 20;

C.查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息:

select * from emp where age >= 15 && age <= 20; -- 1
select * from emp where age >= 15 and age <= 20; -- 2
select * from emp where age between 15 and 20; -- 3

 D.查询身份证号最后一位是X的员工信息:

-- % 匹配任意个字符
select * from emp where idcard like '%X'; 
-- _ 匹配一个字符,若身份证号18位,则X前有17个空格
select * from emp where idcard like '_________________X'; 

 D:这里演示最后一个查询结果,其他类似(以DML中创建的员工表为例):

 #聚合函数:

将一列数据作为一个整体,进行纵向计算 ,下面展示常见聚合函数:

​​​​​​​​​​​​​​

 注意 : NULL值是不参与所有聚合函数运算的!!!

案例:

A. 统计该企业员工数量:

select count(*) from emp; -- 统计的是总记录数,含创建的null字段
select count(idcard) from emp; -- 统计的是idcard字段不为null的记录数

B.统计该企业员工的平均年龄:

select avg(age) from emp;

C. 统计该企业员工的最大年龄:

select max(age) from emp;

D.统计福建地区员工的年龄之和:

select sum(age) from emp where workaddress = '福建';

  D:这里演示最后一个查询结果,其他类似(以DML中创建的员工表为例):

 # 分组查询:

SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组
后过滤条件 ];

🐻🐻🐻 where 和 having的区别:

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组 之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以

案例:

A. 根据性别分组 , 统计男性员工 和 女性员工的数量:

select gender, count(*) from emp group by gender ;

B. 根据性别分组 , 统计男性员工 和 女性员工的平均年龄:

select gender, avg(age) from emp group by gender 

C. 查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于2的工作地址:

select workaddress, count(*) address_count from emp where age < 45 group by
workaddress having address_count >= 2;

C:这里演示最后一个查询结果,其他类似(以DML中创建的员工表为例):

 #排序查询:

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;

注意:

  •  如果是升序, 可以不指定排序方式ASC ;
  • 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;

案例:

A. 根据年龄对公司的员工进行升序排序:

select * from emp order by age asc;
select * from emp order by age; -- 默认升序排序

B.根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序:

select * from emp order by age asc , entrydate desc;

 B:这里演示最后一个查询结果,其他类似(以DML中创建的员工表为例):

 #分页查询:

分页操作在业务系统开发时,也是非常常见的一个功能,我们在网站中看到的各种各样的分页条,后台 都需要借助于数据库的分页操作。

1).语法:

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;

注意事项:

  •  起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10(一页10条信息)。

案例:

A.查询第1页员工数据, 每页展示10条记录:

select * from emp limit 0,10;
select * from emp limit 10; -- 第一页,0可以省略

B.查询第2页员工数据, 每页展示10条记录 --------> (页码-1)*页展示记录数:

select * from emp limit 10,10;

 A:这里演示第一个查询结果,其他类似(以DML中创建的员工表为例):

 执行顺序:

在讲解DQL语句的具体语法之前,我们已经讲解了DQL语句的完整语法,及编写顺序,接下来,我们要来说明的是DQL语句在执行时的执行顺序,也就是先执行那一部分,后执行那一部分,下面一张图说明执行顺序:

🫎DCL:

DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访 问权限。

语法规则:

# 管理用户
-- 1.1  查询用户
select * from mysql.user;

-- 1.2  创建用户

-- 1.3 修改用户密码

-- 1.4  删除用户
DROP USER '用户名'@'主机名' ;

# 权限控制

-- 2.1  查询权限
SHOW GRANTS FOR '用户名'@'主机名' ;

-- 2.2 授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

-- 2.3  撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

注意:

  • 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户
  • 主机名可以使用 % 通配
  • 这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库 管理员)使用。

对于权限控制,官方提供了许多方法 ,可以参考:MySQL :: MySQL 8.0 Reference Manual :: 8.2.2 Privileges Provided by MySQL

这里不做过多展示了,有兴趣的小伙伴可以自行想学习相应规则 

结语: 写博客不仅仅是为了分享学习经历,同时这也有利于我巩固知识点,总结该知识点,由于作者水平有限,对文章有任何问题的还请指出,接受大家的批评,让我改进。同时也希望读者们不吝啬你们的点赞+收藏+关注,你们的鼓励是我创作的最大动力!

​​​​​​​

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

helm与k8基础

文章目录 一、helm二、K8S/K3S1.K8S基本组件1.1 资源对象1.2 核心组件1.3典型的创建 Pod 的流程1.4 Kubernetes 多组件之间的通信原理 三、容器运行时 Containerd1.查看当前k3s使用的容器运行时CRI2.K3S修改docker为运行环境3. Containerd 参考 一、helm Helm是Kubernetes的包…

吴恩达机器学习理论基础解读—线性模型(单一特征拟合)

吴恩达机器学习理论基础——线性模型 机器学习最常见的形式监督学习&#xff0c;无监督学习 线性回归模型概述 应用场景一&#xff1a;根据房屋大小预测房价 应用场景二&#xff1a;分类算法&#xff08;猫狗分类&#xff09; 核心概念&#xff1a;将训练模型的数据称为数…

使用C语言函数对数组进行操作

前言 在我们了解数组和函数之后&#xff0c;我们对数组和函数进行结合&#xff0c;之后完成一些操作吧 题目描述 杰克想将函数与数组结合进行一些操作&#xff0c;以下是他想要达到的效果&#xff0c;请你帮帮他吧&#xff01; 创建一个整型数组&#xff0c;完成对数组的操作 1…

Taro框架中的H5 模板基本搭建

1.H5 模板框架的搭建 一个h5 的基本框架的搭建 基础template 阿乐/H5 Taro 的基础模板

人民网至顶科技:《开启智能新时代:2024中国AI大模型产业发展报告发布》

​3月26日&#xff0c;人民网财经研究院与至顶科技联合发布《开启智能新时代&#xff1a;2024年中国AI大模型产业发展报告》。该报告针对AI大模型产业发展背景、产业发展现状、典型案例、挑战及未来趋势等方面进行了系统全面的梳理&#xff0c;为政府部门、行业从业者以及社会公…

推荐一款自动化测试神器---Katalon Studio

Katalon Studio介绍 Katalon Studio 是一款在网页应用、移动和网页服务方面功能强大的自动化测试解决方案。基于 Selenium 和 Appium框架&#xff0c;Katalon Studio集成了这些框架在软件自动化方面的优点。这个工具支持不同层次的测试技能集。非程序员也可以快速上手一个自动…

5分钟了解清楚【osgb】格式的倾斜摄影数据metadata.xml有几种规范

数据格式同样都是osgb&#xff0c;不同软件生产的&#xff0c;建模是参数不一样&#xff0c;还是有很大区别的。尤其在应用阶段。 本文从建模软件、数据组织结构、metadata.xml&#xff08;投影信息&#xff09;、应用几个方面进行了经验性总结。不论您是初步开始建模&#xf…

Windows Server 2008添加Web服务器(IIS)、WebDAV服务、网络负载均衡

一、Windows Server 2008添加Web服务器&#xff08;IIS&#xff09; &#xff08;1&#xff09;添加角色&#xff0c;搭建web服务器&#xff08;IIS&#xff09; &#xff08;2&#xff09;添加网站&#xff0c;关闭默认网页&#xff0c;添加默认文档 在客户端浏览器输入服务器…

力扣LCR143---子结构判定(先序递归、Java、中等题)

题目描述&#xff1a; 给定两棵二叉树 tree1 和 tree2&#xff0c;判断 tree2 是否以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 注意&#xff0c;空树 不会是以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 示例 1&#xff1a; 输入&#xff1a;tree…

你真的了解区块链游戏吗?

随着区块链技术的不断发展和普及&#xff0c;越来越多的人开始关注区块链游戏这一新兴领域。然而&#xff0c;很多人对于区块链游戏的了解仅限于一些表面的概念和特点&#xff0c;真正深入了解的人并不多。那么&#xff0c;你真的了解区块链游戏吗&#xff1f; 首先&#xff0…

12.java openCV4.x 入门-HighGui之图像窗口显示

专栏简介 &#x1f492;个人主页 &#x1f4f0;专栏目录 点击上方查看更多内容 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天建议把本文当作笔记来看&#xff0c;据说专栏目录里面有相应视频&#x1f92b; &#x1f9ed;文…

【每日刷题】Day7

【每日刷题】Day7 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 2. 203. 移除链表元素 - 力扣&#xff08;…

【java数据结构-二叉树详解(下)带你手撕对称二叉树等难题(附题目链接)】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a;基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 …

正则问题【蓝桥杯】/dfs

正则问题 dfs 刚开始用的是栈&#xff0c;没有想到dfs… #include<iostream> #include<stack> using namespace std; string s; int pos; int dfs() {//ans表示到当前位置最多的x数目//num表示暂存的x数目int num0,ans0;while(pos<s.size()){if(s[pos](){pos;…

蓝桥杯-【二分】肖恩的苹果林

思路:有点类似于找最大值的最小化。 代码及解析 常规的模板引用40% #include <bits/stdc.h> using namespace std; #define ll long long const ll N1e53; ll a[N]; ll m,n; ll chack(ll mid) {int res1,last0;for(int i1;i<n;i){ if(a[i]-a[last]>mid){res;las…

秋招算法刷题6

20240408 1.两数之和 &#xff08;时间复杂度是O&#xff08;n的平方&#xff09;&#xff09; public int[] twoSum(int[] nums, int target){int nnums.length; for(int i0;i<n;i){ for(int j1;j<n;j){ if(nums[i][j]target){ …

大型央国企“信创化”与数字化转型建设思路

一、央国企信创化与数字化转型时代背景 1、信创概念普及&#xff1a; 信创&#xff0c;即“信息技术应用创新”。是我国自主信息产业聚焦的核心&#xff0c;旨在通过对IT硬件、软件等各个环节的重构&#xff0c;基于我国自有IT底层架构和标准&#xff0c;形成自有开放生态&am…

使用Mac自带终端进行远程ssh连接Linux服务器

废话不多说&#xff0c;直接上图 好吧&#xff0c;我承认我是多此一举&#xff0c;脱裤子放pi了&#xff0c;其实只需要在终端输入一行命令就可以了&#xff08;呜呜&#xff5e;&#xff09; ssh rootip -p 22 需要注意的是&#xff0c;命令里的ip地址同样要替换成你自己的服…

【并发】第四篇 AtomicInteger原子操作

导航 一. 简介二. 源码分析三. 原子操作原理三. 实际用途1. 标志位2. 唯一标识生成器3. 计数器一. 简介 AtomicInteger是Java中提供的一种线程安全的原子操作类,用来实现对整数类型的原子操作。它可以在多线程环境下保证对整数的原子性操作,而不需要使用synchronized关键字或…