Day01-数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)

文章目录

  • Day01-数据类型和运算符
    • 学习目标
    • 1. 数据库介绍
      • 1.1 数据库的发展历史
      • 1.2 数据库分类
        • 1.2.1 关系型(SQL)数据库
        • 1.2.2 非关系型(NoSQL)数据库
        • 1.2.3 数据库排名
    • 2. MySQL服务器的安装
      • 2.1 MySQL介绍
      • 2.2 下载
      • 2.3 安装
      • 2.4 启动服务器
      • 2.5 卸载
    • 3. MySQL客户端
      • 3.1 使用命令行客户端连接
      • 3.2 使用图形化工具连接
    • 4. 数据类型
      • 4.1 整型
      • 4.2 浮(定)点型
      • 4.3 字符串类型
      • 4.4 枚举(enum)
      • 4.5 集合(set)
      • 4.6 时间类型
      • 4.7 布尔型
    • 5. 运算符
      • 5.1 算数运算符
      • 5.2 比较运算符
      • 5.3 逻辑运算符
      • 5.4 位运算
    • 6. MySQL的语法规范

Day01-数据类型和运算符

学习目标

  • 能够说出数据库的概念
  • 能够说出什么是关系型数据库
  • 能够安装卸载和配置MySQL数据库
  • 能够使用IDEA客户端连接到MySQL服务器
  • 能够说出MySQL里常见的数类型
  • 能够使用MySQL里的运算符进行查询

1. 数据库介绍

数据库是“按照数据结构来组织、存储和管理数据的仓库”,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
简单来说,就是一个用来存储数据的仓库。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。

数据库用来存储体量庞大的数据,为了更高效的存储和查询这些数据,这些数据必须要按照一定的规则来存放。数据库管理系统就是为管理数据库而设计的软件系统,一般具有存储、截取、安全保障、备份等基础功能。市场上比较流行的数据库管理系统产品主要是Oracle、IBM、Microsoft和Sybase、Mysql等公司的产品。

1.1 数据库的发展历史

在关系型数据库出现之前,主要是网状数据库(Network Databases)和层次数据库(Hierarchical Databases)。最早出现的是网状DBMS,是美国通用电气公司Bachman等人在1961年开发成功的IDS(Integrated DataStore),网状数据库模型对于层次和非层次结构的事物都能比较自然的模拟,当时网状DBMS要比层次DBMS用得更普遍。在数据库发展史上,网状数据库占有重要地位。

在这里插入图片描述

层次型数据库紧随网络型数据库出现。最著名最典型的层次数据库系统是IBM公司在1968年开发的IMS(Information Management System),一种适合其主机的层次数据库。这是IBM公司研制的最早的大型数据库系统程序。

在这里插入图片描述

1970 年,IBM研究员E.F.Codd博士在刊物Communication of the ACM上发表了一篇名为“A Relational Modelof Data for Large Shared Data Banks”的论文,提出了关系模型的概念,奠定了关系模型的理论基础。

在这里插入图片描述

1970年关系模型建立之后,IBM公司在San Jose实验室增加了更多的研究人员研究这个项目,这个项目就是著名的System R,目标是论证一个全功能关系DBMS的可行性。(该项目结束于1979年,完成了第一个实现SQL的DBMS)。

1973年加州大学伯克利分校的Michael Stonebraker 和EugeneWong利用System R已发布的信息开始开发自己的关系数据库系统Ingres(ORACLE数据库的雏形)。

由于当时IBM实验室的体制(IBM的研究人员大多是学术出身,他们最感兴趣的是理论和学术成果,而非推向市场的产品),以及当时IBM对IMS的承诺,IBM并不是第一个发布商用关系型数据库的公司。第一个商用关系型数据库是由霍尼韦尔公司在1976年发布Multics Relational Dat a Store(非SQL标准语句)。

1978年 Ellison (埃里森) 在为中央情报局做一个数据项目时,仔细阅读了 codd 发表的“R系统:数据库关系理论”,这个论文主要介绍了关系数据库理论和查询语言SQL。Ellison 看完后,敏锐意识到在这个研究基础上可以开发商用软件系统。而当时大多数人认为关系数据库不会有商业价值。而就在几个月后,Oracle 1.0 诞生了,Oracle 这个名字也来源于他们曾给中央情报局做过的项目名。

直到1985年IBM才发布了关系数据库 DB2,那时 oracle 已经占有了很大的市场,Ellison 已经成了千万富翁。1989年,微软发布了 SQL Server 1.0 版。三大商用关系型数据库的发布年份,也正好对应了市场占有率的排名。

1.2 数据库分类

早期较为时兴的数据库种类有三种,分别是层次式数据库、网络式数据库和关系型数据库。而在如今的互联网中,最常见的数据库种类主要有2种,即关系型数据库和非关系型数据库。

1.2.1 关系型(SQL)数据库

SQL 全拼为 Structured Query Language, 即 “结构化查询语言”。SQL语言诞生于1974年,是IBM提出的,但是关系型数据库在1970年已经出现,在没有出现SQL语言之前当时的查询语言依赖于复杂的数学逻辑和符号,查询语言成为关系型数据库发展的一个主要瓶颈,SQL的出现使没有接受过数学和计算机编程正规训练的用户也能简便的使用。

SQL 是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

数据库SQL 类型公司
OraclePL/SQL甲骨文
MySQLMy/SQL甲骨文
SQL-ServerT-SQL微软
AccessSQL微软
SQLite内嵌型小型数据库移动前端用的比较多
1.2.2 非关系型(NoSQL)数据库

关系型数据数据库有它的优点,但是也存在一些缺点,例如:当字段不固定时,关系型数据库处理起来很麻烦;对高并发读写的支持比较差;对简单查询需要快速返回结果的处理。随着互联网技术Web2.0的兴起,这些缺点越来越突出,因此出现了针对大规模数据量场景,以性能卓越和应用便捷为目的的的数据库产品——NOSQL数据库。

非关系型数据库主要是根据“非关系实体模型”的数据库,也称之为NoSQL数据库,NOSQL的原意是“Not only SQL”,而不是“NoSQL”的含意,因而,NoSQL的出现并不是要完全否认关系型数据库,只是做为传统关系型数据库的一个合理补充。NOSQL数据库在特殊的情景下能够充分发挥出无法想象的高效率和卓越性能。

最常见非关系型数据库有 Redis 和 MangoDB.

本次学习的重点以 甲骨文公司的 MySQL 数据库为例来研究关系型数据库的使用。

1.2.3 数据库排名

以下是2019年DB-Engines Ranking 对各数据库受欢迎程度进行调查后的统计结果:(查看数据库最新排名:https://db-engines.com/en/ranking)

在这里插入图片描述

2. MySQL服务器的安装

在使用数据库之前,需要先安装数据库管理软件。MySQL数据库管理软件支持多个平台的安装,我们的课程中以Windows系统下的MySQL安装设置为例,如果想要了解(类)Unix和(类)Linux平台下,MySQL的安装方式,请自行上网查询。

2.1 MySQL介绍

MySQL是一种开放源代码的关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。目前 MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使得很多互联网公司选择了MySQL作为网站数据库。

MySQL主要分为两大版本:

  • 企业版(Enterprise Edition):功能齐全,但是收费,而且费用不便宜……
  • 社区版(Community Edition):功能相对比较简单,开源免费。

我们学习过程中使用MySQL社区版,目前社区版最新的版本号是8.0.27(截止至2021年12月)。

注意:MySQL8其实是MySQL5.8的别名,由于在MySQL5.8中,增加和修改了很多功能,版本号直接修改为了8.0. 所以,MySQL5.7和8.0只相差了一个大版本,而不是3个。

2.2 下载

MySQL官方下载地址: https://dev.mysql.com/downloads/windows/installer/ 选择自己想要安装的MySQL版本,推荐下载 8.0.27 版本的安装器。

注意:下载选项里只有32位的安装器,如果是64位的系统也不会影响。我们在这儿下载的只是安装器,在运行安装器的时候,会根据系统的版本自动选择安装32位还是64位的MySQL.

2.3 安装

  1. 双击运行 mysql-installer-community-8.0.27.1.msi 文件。 .msi 和 .exe 一样,都是Windows里的可执行文件。

  2. 选择 Custom,点击Next,选择要安装的MySQL程序。在这一步中,虽然选择了只安装 MySQL Server,但是同时也会自动安装 MySQL的客户端。

    在这里插入图片描述

  3. 不断的点击 Next 或者 Execute按钮,执行下一步操作,直到输入密码页面。注意:要牢记密码,登录MySQL服务器时需要使用!

    在这里插入图片描述

  4. 点击Next或者Execute直到MySQL安装完成并启动。

2.4 启动服务器

右键我的电脑–>管理–> 服务和应用程序–>服务,找到MySQL80这个服务,查看服务的状态。通常情况下,MySQL安装完成以后会自动启动MySQL服务器,如果此时服务器状态不是正在运行,可以右键这个服务,选择启动,将MySQL服务器开启。

2.5 卸载

  1. 停止MySQL服务:右键我的电脑–>管理–> 服务和应用程序–>服务,找到MySQL80这个服务,然后右键选择停止。

  2. 在控制面板中找到MySQL8.0相关软件,右键进行卸载。

  3. 找到MySQL的相关文件夹,默认会有C:\Program Files\MySQLC:\ProgramData\MySQL,删除这两个文件夹。

  4. 上面三步完成以后,MySQL就已经从本机上卸载了。但是此时如果 右键我的电脑–>管理–> 服务和应用程序–>服务,依然能够看到MySQL80这个服务存在。此时需要在DOS界面使用sc delete MySQL80 即可将服务删除。

  5. 删除环境变量里的MySQL配置。

3. MySQL客户端

连接MySQL服务器通常有两种方式:

  1. 使用命令行连接
  2. 使用图形化页面工具连接

推荐大家使用命令行工具连接,而不是使用图形化页面工具。

3.1 使用命令行客户端连接

  1. 在启动MySQL客户端之前,还需要将 MySQL 客户端添加到环境变量中。

在这里插入图片描述

  1. 在DOS命令行中执行命令,连接到MySQL服务器。

    mysql -h 主机IP地址 -P 端口号	-u 用户名	-p回车
    Enter Password:密码
    

    其中,如果服务器的主机是localhost的话,-h 主机名可以省略;如果在配置时没有修改默认端口,使用的是3306, -P 端口号 也可以省略。

    在这里插入图片描述

3.2 使用图形化工具连接

常用的图形化工具有:

  1. MySQL Workbench: 这个也是MySQL自带的工具,可以使用图形化页面来连接和操作数据库。注意:需要在安装MySQL时,选择安装WorkBench才能使用。

    在这里插入图片描述

    在这里插入图片描述

  2. Navicat MySQL是最常见的一款用来操作MySQL数据的图形化页面工具(收费)

    在这里插入图片描述

  3. SQLYog 也是一款功能强大的图形化页面工具。

    在这里插入图片描述

  4. IDEA自带的数据库处理功能。

    在这里插入图片描述

4. 数据类型

SQL也是一种计算机语言,它也有自己支持的数据类型。

4.1 整型

在这里插入图片描述

  • 一个无符号数一定是非负数

    create table t3(
        age tinyint unsigned
    );
    
  • 显示宽度 (zerofill)

    整型显示宽度, 位数不足时用 0 填充

    create table t4(
        id int(10) zerofill primary key auto_increment,
        name char(32)
    );
    insert into t4 values(12345, '5个');
    insert into t4 values(1234567890, '10个');
    insert into t4 values(123456789012, '12个');
    select * from t4;
    

4.2 浮(定)点型

在这里插入图片描述

定点数的位数更加长

  • float(M,D)
  • double(M,D)
  • decimal(M,D)
  • M 是支持多少个长度, D 是小数点后面的位数
create table t5 (
    a float(10, 2),
    b double(10, 2),
    c decimal(10, 2)
);

4.3 字符串类型

在这里插入图片描述

CHARVARCHAR 类型的区别:

  1. 允许的最大值范围不同。

    注意:<span style="color:red">无论是char(n)还是varchar(n),n表示的都是字符数,而不是字节数。</span>

    • char(n)类型里,无论数据库使用的是哪种编码方式,n的最大取值都只能取到255.
    • varchar(n)类型里,如果使用的是Latin1编码,最大值允许到65535(但是实际取值只能到65532,还要保留三个字节用来记录长度);如果使用的是UTF8编码,最大值允许到21845(但是实际取值只能到21844,还要保留一个字符用来记录长度)。
  2. 数据库内存存储的长度不同。

    • char(n)类型里,无论输入的内容是什么,存储的长度都是 n个字符。例如,数据类型char(10),写入字符串’张三’,在数据库里存入的数据长度是10个字符。
    • varchar(n)类型里,存储的长度是不固定可变的。
  3. 对于空格的处理不同。

    • char类型在存储字符串时,会将右侧末尾的空格去掉。
    • varchar类型在存储字符串时,会将右侧末尾的空格保留。
    create table student (id int primary key auto_increment ,name char(20),city varchar(20));  -- 创建数据表
    insert into student values(0,'  zhangsan   ','   shanghai    '); -- 插入数据
    
    select concat(id,name,'good') from student where id=1;
    /*
    从查询的结果中可以看到,name左侧的空格保留了,但是右侧的空格被去掉了
    +------------------------+
    | concat(id,name,'good') |
    +------------------------+
    | 1  zhangsangood        |
    +------------------------+
    */
    select name,length(name) from student where id=1;
    /*
    从查询的结果中可以看到,长度只包括左边的空格,不包括右边的空格
    +------------+--------------+
    | name       | length(name) |
    +------------+--------------+
    |   zhangsan |           10 |
    +------------+--------------+
    */
    
    select concat(id,city,'good') from student where id=1;
    /*
    从查询的结果中可以看到,city右侧的空格也保留了
    +------------------------+
    | concat(id,city,'good') |
    +------------------------+
    | 1   shanghai    good   |
    +------------------------+
    */
    select city,length(city) from student where id=1;
    /*
    从查询的长度中也可以看到,city两端的空格都被保留了
    +-----------------+--------------+
    | city            | length(city) |
    +-----------------+--------------+
    |    shanghai     |           15 |
    +-----------------+--------------+
    */
    

其他类型字符串使用注意事项:

  • binary和varbinary类似于char和varchar,不同的是它们包含二进制字符串,不支持模糊查询之类的。
  • 一般在保存少量字符串的时候,我们会选择char和varchar;而在保存较大文本时,通常会选择使用text或blob系列。blob和text值会引起一些性能问题,特别是在执行了大量的删除操作时,会在数据表中留下很大的“空洞”,为了提高性能,建议定期时候用optimize table功能对这类表进行碎片整理。可以使用合成的(Synthetic)索引来提高大文本字段的查询性能,如果需要对大文本字段进行模糊查询,MySql提供了前缀索引。但是仍然要在不必要的时候避免检索大型的blob或text值。

4.4 枚举(enum)

多选一的时候使用的一种数据类型

在前端使用单选框的时候, 枚举类型可以发挥作用

枚举类型的优点:

  1. 限制了可选值
  2. 节省空间
  3. 运行效率高
create table t6(
    name varchar(32),
    sex enum('男','女','保密') default '保密'
);

-- 枚举类型的计数默认从1开始
insert into t6 set name='王宝强',sex=1;

4.5 集合(set)

SET最多可以有64个不同的成员。类似于复选框, 有多少可以选多少。

create table t7 (
    name varchar(32),
    hobby set('吃','睡','玩','喝','抽')
);

insert into t7 values('张三','睡,抽,玩,吃,喝');
insert into t7 values('李四','睡,抽');

4.6 时间类型

在这里插入图片描述

  • datetime

    create table datetime_test (
        create_at datetime
    );
    
    insert into datetime_test values('2019-4-2 16:54:00');
    insert into datetime_test values('2019/4/2 16:54:00');
    insert into datetime_test values(now());
    -- 年份最大支持4个长度
    insert into datetime_test values('10000/4/2 16:54:00');  -- 错误
    insert into datetime_test values('9999/4/2 16:54:00');
    
  • time

    create table time_test (
        create_at time
    );
    
    insert into time_test values('12:12:12');
    insert into time_test values('100:12:12');
    insert into time_test values('-100:12:12');
    insert into time_test values('10 10:12:12');
    -- 时间的范围是: [-838:59:59 - 838:59:59]
    insert into time_test values('839:12:12'); -- 错误的
    
  • timestamp 时间戳类型

    1. 时间戳类型在显示方面和datetime是一样的, 在存储上不一样
    2. 范围从 1970-1-1 0:0:0 到 2038-1-19 11:14:07
    3. 时间戳使用 4 个字节表示
    4. 该值大小与存储的位长有关: 2 ** (4 * 8 - 1)
    create table timestamp_test (
        create_time timestamp
    );
    
    insert into timestamp_test values(now());
    insert into timestamp_test values('2038-1-19 11:14:07');  -- 时间戳最大值
    insert into timestamp_test values('2038-1-19 11:14:08');  -- 错误
    
  • year

    create table `year`(    create_at year);-- 从1900年开始 - 1900+255
    insert into `year` values(now());insert into `year` values('2155'); -- 年份最大值
    insert into `year` values('2156'); -- 错误
    

4.7 布尔型

mysql中的bool类型其实就是数字类型。使用0表示false,非0就表示true.

create table `bool`(cond boolean);
insert into `bool` set cond=True;    -- 成功
insert into `bool` set cond=False;   -- 成功
insert into `bool` set cond=1;       -- 成功
insert into `bool` set cond=10;      -- 成功
insert into `bool` set cond=-1;      -- 成功
insert into `bool` set cond=0;       -- 成功
insert into `bool` set cond=0.1;     -- 成功
insert into `bool` set cond='True';  -- 失败

5. 运算符

MySQL中同样也支持运算符。

5.1 算数运算符

select 123 + 543, 321 * 5, -456 / 2, 10 % 3, 2 / 0, 3 % 0;

/*  输出:

+-----------+---------+-----------+--------+-------+-------+
| 123 + 543 | 321 * 5 | -456 / 2  | 10 % 3 | 2 / 0 | 3 % 0 |
+-----------+---------+-----------+--------+-------+-------+
|       666 |    1605 | -228.0000 |      1 |  NULL |  NULL |
+-----------+---------+-----------+--------+-------+-------+
1 row in set, 2 warnings (0.00 sec)
*/

5.2 比较运算符

在这里插入图片描述

  • 常规比较

    select 1=2, 2<3, 3<=4, 4>5, 5>=3, 8!=9, 8<>9, 'abc' = 'Abc', 'z' > 'a';
    
    /* 输出:
    +-----+-----+------+-----+------+------+------+---------------+-----------+
    | 1=2 | 2<3 | 3<=4 | 4>5 | 5>=3 | 8!=9 | 8<>9 | 'abc' = 'Abc' | 'z' > 'a' |
    +-----+-----+------+-----+------+------+------+---------------+-----------+
    |   0 |   1 |    1 |   0 |    1 |    1 |    1 |             1 |         1 |
    +-----+-----+------+-----+------+------+------+---------------+-----------+
    1 row in set (0.00 sec)
    
    */
    
  • 范围比较

    select 123 between 100 and 200, 'b' in ('a', 'b', 'c');
    
    /* 输出
    
    +-------------------------+------------------------+
    | 123 between 100 and 200 | 'b' in ('a', 'b', 'c') |
    +-------------------------+------------------------+
    |                       1 |                      1 |
    +-------------------------+------------------------+
    1 row in set (0.04 sec)
    
    */
    
  • Null 比较:判断是否是Null时,不能使用=,而要使用is,或者<=>

    select 12 is null, 23 = null, null = null, null <=> null, null is null, 32 is not null;
    
    /* 输出
    
    +------------+-----------+-------------+---------------+--------------+----------------+
    | 12 is null | 23 = null | null = null | null <=> null | null is null | 32 is not null |
    +------------+-----------+-------------+---------------+--------------+----------------+
    |          0 |      NULL |        NULL |             1 |            1 |              1 |
    +------------+-----------+-------------+---------------+--------------+----------------+
    1 row in set (0.00 sec)
    
    */
    
  • 模糊比较: like

    select 'HelloWorld' like 'hello%';
    
    /* 输出
    
    +----------------------------+
    | 'HelloWorld' like 'hello%' |
    +----------------------------+
    |                          1 |
    +----------------------------+
    1 row in set (0.00 sec)
    
    */
    
  • 正则比较:regexp

    select "good" regexp "go{2}d";
    /*输出
    +------------------------+
    | "good" regexp "go{2}d" |
    +------------------------+
    |                      1 |
    +------------------------+
    1 row in set (0.01 sec)
    */
    

5.3 逻辑运算符

在这里插入图片描述

select 1 < 2 && 5 < 4, 4 > 1 || 5 < 7, !3 > 2,4 > 5 xor 4 < 3;
/* 输出
+----------------+----------------+--------+-----------------+
| 1 < 2 && 5 < 4 | 4 > 1 || 5 < 7 | !3 > 2 | 4 > 5 xor 4 < 3 |
+----------------+----------------+--------+-----------------+
|              0 |              1 |      0 |               0 |
+----------------+----------------+--------+-----------------+

1 row in set (0.00 sec)
*/

5.4 位运算

MySQL中同样支持位运算。需要注意的是,MySQL在运算时,不会根据运算数据的类型来决定到底是位运算还是逻辑运算。 <span style="color:red">&&是逻辑运算,而&是位运算符,两个运算符不能混用。</span>

select 1 < 2 & 5 < 4,1 < 2 && 5 < 4;
/*输出
+---------------+----------------+
| 1 < 2 & 5 < 4 | 1 < 2 && 5 < 4 |
+---------------+----------------+
|             1 |              0 |
+---------------+----------------+
*/

6. MySQL的语法规范

  • mysql是否区分大小写

    MySQL的关键字和函数名等不区分大小写。但是对于数据值是否区分大小写,和校对集规则有关。

    • ci(大小写不敏感)
    • cs(大小写敏感)
    • _bin(二元,即比较是基于字符编码的值而与language无关,区分大小写)
  • 字段命名规则:尽量使用26个英文字母大小写,数字0-9,下划线,不要使用其他符号

  • 建议不要使用mysql的关键字等来作为表名、字段名等,如果不小心使用,请在SQL语句中使用`(飘号)引起来

  • 数据库和表名、字段名等对象名中间不要包含空格

  • 同一个MySQL服务器中,数据库不能同名,同一个库中,表不能重名,同一个表中,字段不能重名。

  • 标点符号:

    • 必须成对
    • 必须英文状态下半角输入方式
    • 字符串和日期类型可以使用单引号’’
    • 列的别名可以使用双引号"",给表名取别名不要使用双引号。取别名时as可以省略
    • 如果列的别名没有包含空格,可以省略双引号,如果有空格双引号不能省略。
  • SQL脚本中如何加注释

    • 单行注释:#注释内容
    • 单行注释:–空格注释内容 其中–后面的空格必须有
    • 多行注释:/* 注释内容 */

规范

  • mysql是否区分大小写

    MySQL的关键字和函数名等不区分大小写。但是对于数据值是否区分大小写,和校对集规则有关。

    • ci(大小写不敏感)
    • cs(大小写敏感)
    • _bin(二元,即比较是基于字符编码的值而与language无关,区分大小写)
  • 字段命名规则:尽量使用26个英文字母大小写,数字0-9,下划线,不要使用其他符号

  • 建议不要使用mysql的关键字等来作为表名、字段名等,如果不小心使用,请在SQL语句中使用`(飘号)引起来

  • 数据库和表名、字段名等对象名中间不要包含空格

  • 同一个MySQL服务器中,数据库不能同名,同一个库中,表不能重名,同一个表中,字段不能重名。

  • 标点符号:

    • 必须成对
    • 必须英文状态下半角输入方式
    • 字符串和日期类型可以使用单引号’’
    • 列的别名可以使用双引号"",给表名取别名不要使用双引号。取别名时as可以省略
    • 如果列的别名没有包含空格,可以省略双引号,如果有空格双引号不能省略。
  • SQL脚本中如何加注释

    • 单行注释:#注释内容
    • 单行注释:–空格注释内容 其中–后面的空格必须有
    • 多行注释:/* 注释内容 */

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

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

相关文章

数据库关系运算理论:关系数据操作与关系完整性概念解析

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Java学习六—面向对象

一、关于面向对象 1.1简介 Java 是一种面向对象编程语言&#xff0c;其核心思想是面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;。 面向对象编程是一种程序设计范式&#xff0c;它将数据与操作数据的方法&#xff08;函数&#xff09;捆…

K8S核心原理

K8S核心原理 K8S的网络模型 K8S的网络中主要存在4种类型的通信&#xff1a; 同一Pod内的容器间通信各个Pod彼此间的通信Pod和Service间的通信集群外部流量和Service之间的通信 K8S为Pod和Service资源对象分别使用了各自的专有网络&#xff0c;Pod网络由K8S的网络插件配置实…

影响MySql 服务性能最重要的两个参数。

不同的需求&#xff0c;不同服务器硬件配置&#xff0c;要想MySql 服务处于最优状态是需要调试一些参数的&#xff0c;可调的参数非常多&#xff0c;在看完官方的mysql的文档&#xff0c;结合以前的配置情况在这里选择影响性能最大的参数作介绍&#xff1a; 先查一下参数情况&…

Transformer位置编码(Position Embedding)理解

本文主要介绍4种位置编码&#xff0c;分别是NLP发源的transformer、ViT、Sw-Transformer、MAE的Position Embedding 一、NLP transformer 使用的是1d的绝对位置编码&#xff0c;使用sincos将每个token编码为一个向量【硬编码】 Attention Is All You Need 在语言中&#xff0…

搜索(Shuffle‘m Up ,Oil Deposits )

Shufflem Up 思路&#xff1a;首先我们需要知道两个停止条件第一就是找到了&#xff0c;那么怎么算没有找到呢&#xff1f;当一个字符串重复出现的时候就代表着已经不可能出现答案了。 犯下的错误&#xff1a;第一就是对string的使用不够了解。第二就是对map数组的使用也不是很…

循环冗余检验CRC

目录 一、数据链路层 二、数据链路层的三个基本问题 1. 封装成帧 2. 透明传输 3. 差错检验 4. CRC计算​编辑 三、参考书目和视频 一、数据链路层 从物理层传来的比特(实际上就是物理层表示数据的特殊名称)&#xff0c;会在数据链路层封装成帧(实际上就是数据链路层表示…

视频素材库排行榜前六名,推荐大家收藏

大家好&#xff01;今天我要给大家带来的是视频素材库排行榜前十名&#xff0c;让你的视频创作更加别出心裁&#xff01; 蛙学网在视频素材库排行榜中&#xff0c;蛙学网绝对是值得使用的。这里有大量的高质量视频素材&#xff0c;涵盖了各种风格和主题&#xff0c;特别是对于展…

蓝桥杯单片机快速开发笔记——串口通信

一、原理分析 二、思维导图 三、示例框架 #include <STC15F2K60S2.H> #include "HC573.h"void UartInit(void) //9600bps12.000MHz {SCON 0x50; //8位数据,可变波特率AUXR | 0x01; //串口1选择定时器2为波特率发生器AUXR & 0xFB; //定时器时钟12T模式…

ASP.NET-简单(增、删、改、查)

目录 背景: Person.cs代码: WebForm1.aspx代码: personOperate.cs代码: 最终效果: 背景: 界面效果: 主页面的控件布局&#xff1a; 4个label: -Label控件用于在页面上显示文本或标签&#xff0c;通常用于标识输入框&#xff0c;显示标题或提供说明性文字 2个Textbox: -Tex…

泳道图手把手快速上手(附带软件)

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师&#xff0c;大模型&#xff0c;爬虫、ACM算法 &#x1f492; 公众号&#xff…

有了std::thread,为什么还需要引入std::jthread?

C进阶专栏&#xff1a;http://t.csdnimg.cn/HGkeZ 目录 1.前言 2.std::is_invocable_v 3.std::jthread 3.1.构造函数 3.2.std::jthread无需join/detach使用实例 3.3.std::jthread处理外部请求中断实 3.4.处理中断请求示例代码 4.特性 5.总结 1.前言 C11以来提供了C原…

高校二手交易平台|基于JSP(Java脚本页面)+ Mysql+Java+ B/S结构的高校二手交易平台设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

SSA优化朴素贝叶斯分类预测(matlab代码)

SSA-朴素贝叶斯分类预测matlab代码 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法&#xff0c;在2020年提出&#xff0c;主要是受麻雀的觅食行为和反捕食行为的启发。 数据为Excel分类数据集数据。 数据集划分为训练集、验证集、测试集,比例为8&a…

Java毕业设计 基于SSM网上花店 订花系统 在线花店

Java毕业设计 基于SSM网上花店 订花系统 在线花店 SSM jsp 网上花店 订花系统 在线花店 功能介绍 前端用户&#xff1a;首页 图片轮播 搜索 登录 注册 鲜花分类 分类显示 折扣花束 热销花束 花卉列表 花卉详情 收藏 加入购物车 评价 活动公告 公告详情 买家留言 我的购物车 购…

Linux编程4.9 网络编程-建立连接

1、TCP的连接与断开 三次握手与四次挥手 2、服务器端并发性处理 2.1 多进程模型 一个父进程&#xff0c;多个子进程父进程负责等待并接受客户端连接子进程: 完成通信&#xff0c;接受一个客户端连接&#xff0c;就创建一个子进程用于通信。 2.2 多线程模型 多线程服务器是…

5 Redis主从集群

文章目录 Redis主从集群1.1主从集群搭建1.1.1 伪集群搭建与配置1.1.2 分级管理1.1.3 容灾冷处理 1.2主从复制原理1.2.1 主从复制过程1.2.2 数据同步演变过程 2.1 哨兵机制实现2.1.1 简介2.2.2 Redis 高可用集群搭建2.2.3 Redis 高可用集群的启动2.2.4 Sentinel 优化配置 3.1 哨…

XshellPlus V7.0.0033r 绿化便携版

Xshell&#xff0c;最好用的Linux远程连接工具&#xff0c;最强大的SSH终端管理器、SSH远程主机连接客户端 。Xshell&#xff0c;轻松管理远程服务器&#xff0c;会话管理器&#xff0c;支持多选项卡管理主机&#xff0c;支持远程协议Telnet、Rlogin、SSH/SSH PKCS&#xff03;…

Springboot+vue的船舶维保管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的船舶维保管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09…

备战秋招(coding篇)

其中coding题目来源于师兄面试经验 1、链表的结构体反转链表 本质上就是一个构造函数 struct ListNode{int val_;ListNode* next_;ListNode() : val_(0), next_(NULL) {}ListNode(int x) : val_(x), next_(NULL) {}ListNode(int x, ListNode* next) : val_(x), next_(next) …
最新文章