MySQL --- 图形化工具DDL表结构操作

news2024/7/6 19:27:08

一. 图形化工具

1. 介绍

前面学习了DDL中关于数据库操作的SQL语句,在编写这些SQL时,都是在命令行当中完成的。在命令行当中来敲这些SQL语句很不方便,主要的原因有以下 3 点:

  1. 没有任何代码提示。(全靠记忆,容易敲错字母造成执行报错)
  2. 操作繁琐,影响开发效率。(所有的功能操作都是通过SQL语句来完成的)
  3. 编写过的SQL代码无法保存。

在项目开发当中,通常为了提高开发效率,都会借助于现成的图形化管理工具来操作数据库。

目前MySQL主流的图形化界面工具有以下几种:MySQL客户端工具-图形化工具

我们只需要熟悉这众多工具当中的一个就可以了,因为其它工具的使用都大同小异。

DataGrip是JetBrains旗下的一款数据库管理工具,是管理和开发MySQL、Oracle、PostgreSQL                   的理想解决方案。

 2.3.2 安装

说明:DataGrip这款工具可以不用安装,因为Jetbrains公司已经将DataGrip这款工具的功能已经               集成到了 IDEA当中,所以我们就可以使用IDEA来作为一款图形化界面工具来操作Mysql数             据库。

2.3.3 MySQL图形化管理工具使用

2.2.3.1 连接数据库

1、打开IDEA自带的Database

2、配置MySQL 

3、输入相关信息

输入 comment 备注信息 ; 输入连接的 Host 主机地址 , 默认 localhost; 输入用户名 , 默认 root ;输入密码 , 安装 mysql 的时候 , 设置的 mysql 的访问密码 。 然后点击 Download 下载数据库连接驱动。

4. 驱动下载完成之后, 点击 Test Connection。 如果显示 Successed 就说明连接成功了。 然后点      击 OK 按钮,连接数据库。

5、测试数据库连接

 6、保存配置

4.3 展示所有数据库 

默认情况下,连接上了MySQL数据库之后, 数据库并没有全部展示出来。 需要选择要展示哪些数据库。具体操作如下: 

2.2.3.2 操作数据库

创建数据库:

 

  • 有了图形化界面工具后,就可以方便的使用图形化工具:创建数据库,创建表、修改表等DDL操作。
  • 其实工具底层也是通过DDL语句操作的数据库,只不过这些SQL语句是图形化界面工具帮我们自动完成的。

查看所有数据库:

 

 切换数据库:

 删除数据库:

如果我们使用了图形化界面工具,我在这个console控制台当中所编写的sql语句,我将这个标签页一关,下一次怎么找到之前所编写的SQL呢?

  • 点击这个连接,右键Jump to Query Console

  • 点击Console

  • 然后就可以看到之前所编写的SQL语句了:

 总结:通过图形化工具来简化数据库的操作,从而来提高开发效率。

二. 表操作

2.1 MySQL-DDL-表结构操作-创建

学习完了DDL语句当中关于数据库的操作之后,接下来我们继续学习DDL语句当中关于表结构的操作。

关于表结构的操作也是包含四个部分:创建表、查询表、修改表、删除表。

2.3.1 创建表结构

重点掌握创建表结构的基本语法,以及在建表的时候如何位字段来添加对应的约束。

2.3.1.1 语法

create table  表名(
	字段1  字段1类型 [约束]  [comment  字段1注释 ],
	字段2  字段2类型 [约束]  [comment  字段2注释 ],
	......
	字段n  字段n类型 [约束]  [comment  字段n注释 ] 
) [ comment  表注释 ] ;

注意: [ ] 中的内容为可选参数; 最后一个字段后面没有逗号

  • comment 表注释:就是给这个表来添加一个注释信息,就相当于是一个备注,来标识一下这                                张表它是用来存放什么数据的。
  • 括号当中定义表结构当中一个一个的字段,comment来描述这个字段是用来做什么的。
  • 一个字段描述完毕之后,通过逗号来进行分隔,然后再来描述第二个字段,最后一个字段描述完毕之后就不用再加逗号了。
    在字段的基本信息描述完毕之后来指定约束,如果有多个约束,用空格隔开。

案例:创建tb_user表

  • 对应的结构如下:

  • 建表语句: 
-- DDL:表结构
-- 创建:基本语法
create table tb_user(
    id int comment 'ID,唯一标识', # id是一行数据的唯一标识,不能重复
    username varchar(20) comment '用户名',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) comment '性别'
) comment '用户表';
  • 进行字段描述时要指定各个字段的字段类型。
  • 在MySQL当中字符串类型用varchar(),不用String,括号里面指定这个字符串最长可以存储多少位,比如我就指定20,就代表这个字段最长只能存储20个字符,超出这个范围就会报错。
  • 另外一个字符串类型char(),如果括号里面指定1就代表它里面只能存储1位。

数据表创建完成,接下来我们还需要测试一下是否可以往这张表结构当中来存储数据。

双击打开tb_user表结构,大家会发现里面没有数据:

添加数据:

此时我们再插入一条数据:

 我们之前提到过:id字段是一行数据的唯一标识,不能有重复值。但是现在数据表中有两个相同的id值,这是为什么呢?

  • 其实我们现在创建表结构的时候, id这个字段我们只加了一个备注信息说明它是一个唯一标识,但是在数据库层面呢,并没有去限制字段存储的数据。所以id这个字段没有起到唯一标识的作用。

想要限制字段所存储的数据,就需要用到数据库中的约束。

2.3.1.2 约束

导学:掌握各种约束以及约束的具体作用

概念:所谓约束就是作用在表中字段上的规则,用于限制存储在表中的数据,用来限制这个字段               当中所存储的数据的。

作用:就是来保证数据库当中数据的正确性、有效性和完整性。

在MySQL数据库当中,提供了以下5种约束:

约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所有数据都是唯一、不重复unique
主键约束主键是一行数据的唯一标识要求非空且唯一primary key(auto_increment自增)
默认约束保存数据时,如果未指定该字段值,则采用默认约束当中所指定的默认值default
外键约束让两张表的数据建立连接,从而保证数据的一致性和完整性foreign key
  • 通过auto_increment关键字就可以让主键自动往上增长,默认它会从1自动往上增长。 
  • 主键自增:auto_increment,在图形化界面工具当中叫做:Auto inc

  •  每次插入新的行记录时,数据库自动生成id字段(主键)下的值
     具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)

  • 对于外键约束我们要想操作,至少得有两张表。

案例:创建tb_user表

  • 对应的结构如下:

要求在上述的表结构中:

  • id 是一行数据的唯一标识
  • username 用户名字段是非空且唯一的
  • name 姓名字段是不允许存储空值的
  • gender 性别字段是有默认值,默认为男
-- 创建:基本语法(约束)
create table tb_user(
    id int primary key auto_increment comment 'ID,唯一标识', # id是一行数据的唯一标识,不能重复
    username varchar(20) not null unique comment '用户名',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) default '男' comment '性别'
) comment '用户表';

在运行之前删除刚才所创建的表结构,然后再来执行新创建的表。

 generated:自动增长的意思。

2.2 MySQL-DDL-表结构操作-数据类型

导学:创建表结构的时候所需要指定的字段的数据类型以及各种数据类型之间的区别是什么,以               及如何来选择合适的数据类型。

char()和varchar()都是用来描述字符串的,这两种数据类型之间又有什么区别呢?

掌握MySQL当中常见的数据类型以及它们的区别:

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

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

在SQL语句当中,字符串以及日期时间类型都需要引号引起来,单引号双引号都可以。

数值类型

类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
TINYINT / tinyint1byte(-128,127)(0,255)小整数值
SMALLINT / smallint2bytes(-32768,32767)(0,65535)大整数值

MEDIUMINT /

mediumint

3bytes(-8388608,8388607)(0,16777215)大整数值

INT/INTEGER

int / integer

4bytes(-2147483648,2147483647)(0,4294967295)大整数值
BIGINT / bigint8bytes(-2^63,2^63-1)(0,2^64-1)极大整数值
FLOAT / float4bytes(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值
DOUBLE / double8bytes(-1.7976931348623157 E+308,1.7976931348623157 E+308)0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308)双精度浮点数值
DECIMAL / decimal依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确定点数)

 

  • 所谓有符号取值范围指的是允许出现负数的话,它的取值范围是多少。
  • 而无符号取值范围指的就是如果不允许出现负数,它的取值范围又是多少。
  • 无论是有符号取值范围还是无符号取值范围,它们的取值范围的宽度都是一样的,只不过就是在无符号取值范围当中就是将有符号取值范围负数的这一部分宽度是扩充到了正数这一部分而已。
  • 随便写一个数值类型默认是有符号的,如果想指定的是无符号的,需要在数值类型后面加unsigned,这就代表这个数值类型它是一个无符号的。
  • unsigned:无符号的,无符号整数

  • 在进行浮点数运算的时候是很容易出现精度损失问题的,所以在JDK当中给我们提供了一个类叫做BigDecimal,而在MySQL当中也给我们提供了一种数据类型,叫做Decimal,这种数据类型它在底层是以字符串的形式来处理小数的,这样就可以避免精度损失。

  • 在指定float,double,decimal这三种数据类型的时候,需要指定两个参数,分别是整个数字的长度(整数位 + 小数位)以及小数位个数。

  • 所谓整个数字长度指的是整数位+小数位,小数位也就是说最多只能保留x位小数

示例: 
    年龄字段 ---不会出现负数, 而且人的年龄不会太大
	age tinyint unsigned
	
	分数 ---总分100分, 最多出现一位小数
	score double(4,1)
  • 我们要尽可能在业务允许的情况下选择占用磁盘小的数据类型,这样就可以节省磁盘空间。

字符串类型

类型大小描述
char0-255 bytes定长字符串(需要指定长度)
varchar0-65535 bytes变长字符串(需要指定长度)

TINYBLOB /  tinyblob

0-255 bytes不超过255个字符的二进制数据
TINYTEXT / tinytext0-255 bytes短文本字符串
BLOB / blob0-65 535 bytes二进制形式的长文本数据
TEXT / text0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

char(10) --- 定长字符串: 最多只能存10个字符,如果超出十个字符它直接报错如果不足10个字符,                                          它也会占用10个字符空间,其它空位它会使用空字符来占位。举例,如果你存储的是AB,它依然占用十个空间,其它的八位它也会使用空字符来占位,也就是说,只要你存储的字符数是小于等于10的,全部占十个空间,而如果你存储超过了十个字符,它就直接报错了。

varchar(10) --- 变长字符串:最多只能存10个字符,如果超出十个字符它直接报错如果不足10个                                                 字符, 它需要判断字符的长度,按照实际长度存储。举例:假如说我就存储一个A,它就只会占用一个字符空间;如果存储的是AB,它就会占用两个字符空间;如果存储的是ABC,它就只会占用三个字符空间。

char()与varchar()区别:

  • 对于char()这种数据类型来说,相对于varchar()它不需要判断字符的长度,所以它的性能相对来说会高一点而对于varchar()来说,它的性能相对来说会低一点,因为它需要去判断字符的长度,根据实际长度进行存储。
  • 但是,对于varchar()来说,由于它是按照实际长度存储的,所以它会更节省空间一些。而对于char(10)来说,我即使存储一个字符,它也占用十个空间,我存储两个字符,它也占用十个空间,所以相对来说会浪费空间一些。
  • char()就是所谓的使用空间来换时间,而varchar()就是使用时间来换空间。
     
  • 长度固定选择char(),长度不固定选择varchar()。

char 与 varchar 都可以描述字符串:

  • char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。
  • 而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。

对于下面这些数据类型,主要是分为两类:一个是blob后缀,一个是text后缀。

如果是blob后缀,存储的是二进制的数据,比如我们要存储一些视频,音频这些文件,我们就可以使用blob后缀的这种数据类型。而在真实的企业开发当中,像图片,音频,视频这些文件,其实并不会直接存储在数据库当中,而是存储在专业的文件服务器当中,所以blob后缀的这些数据类型其实也是非常少用的。

而text后缀它是存储的是文本字符串。比如我们要存储一篇长篇小说,那我们就可以使用带text后缀的这些数据类型。

不同的数据类型它能够支持的存储范围也是不一样的。

示例: 
    用户名 username ---长度不定, 最长不会超过20
	username varchar(20)
	
	手机号 phone ---固定长度为11
	phone char(11)

日期时间类型

类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
示例: 
    生日字段  birthday ---生日只需要年月日  
    birthday date
    
    创建时间 createtime --- 需要精确到时分秒
    createtime  datetime    /    update_time  datetime

2.3.1.4 案例 

导学:怎么样基于图形化界面的方式去创建表结构 ?我们怎么样去设计一张表,设计一张表的基               本依据和流程是什么?

表结构创建的语法、约束以及数据类型都已经学习完了,接下来就来完成一个案例,通过这个案例要能够掌握图形化工具的方式来创建表结构,并清楚表结构的设计依据以及基本流程。

需求:根据产品原型/需求创建表(设计合理的数据类型、长度、约束)

案例需求:根据页面原型以及需求来创建表,为这张表结构要设计合理的数据类型,合理的字段                      长度以及约束。

  • 资料中提供的《黑马-tlias智能学习辅助系统》页面原型,设计员工管理模块的表结构(暂不考虑所属部门字段)

产品的页面原型及需求文档如下: 

在新增员工这个对话框当中承载了这么一个form表单:

需求文档

我们要设计的这张表是用来存储员工信息的,也就是员工表。那我们要设计这张表,我们就得清楚这张表当中包括哪些字段,各个字段的类型,字段的长度限制,字段的约束。

所以,我们在设计表结构的时候只需要根据页面原型以及需求文档当中的这些描述来定义表结构当中的字段以及约束就可以。

步骤:

  1. 阅读(参照)产品原型及需求文档,看看里面涉及到哪些字段。
  2. 查看需求文档说明,确认各个字段的类型以及字段存储数据的长度限制。
  3. 在页面原型中描述的基础字段的基础上,再增加额外的基础字段。

我们创建一张表上来之后,我们先加一个字段就是id,id就是这一行数据的唯一标识,comment:主键ID。

使用SQL创建表:

create table emp (
  id int unsigned primary key auto_increment comment 'ID',
  username varchar(20) not null unique comment '用户名',
  password varchar(32) default '123456' comment '密码',
  name varchar(10) not null comment '姓名',
  gender tinyint unsigned not null comment '性别, 说明: 1 男, 2 女',
  image varchar(300) comment '图像',
  job tinyint unsigned comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管',
  entrydate date comment '入职时间',
  create_time datetime not null comment '创建时间',
  update_time datetime not null comment '修改时间'
) comment '员工表';

直接基于图形化界面方式来操作这也是现在企业项目开发当中创建表结构的主要方式。
除了使用SQL语句创建表外,我们还可以借助于图形化界面来创建表结构,这种创建方式会更加直观、更加方便。

操作步骤如下:

 1. 在指定操作的数据库上,右键New ==> Table

 2. 编辑表结构的相关信息

我们创建一张表上来之后,我们先加一个字段就是id,id就是这一行数据的唯一标识,comment:主键ID。

为该字段添加注释信息
为该字段添加注释信息​

  • 在性别当中,它要存储的就是男或者女,马上想到字符串char(1),但是在项目开发阶段,我们一般并不会直接这么去存,因为我们在界面展示的时候,有时候这个性别我们要展示的是男性女性,有时候要展示的是男士女士,有时候可能展示的还是英文的很灵活,所以在数据库当中我们并不会直接存储男或者是女,我可以存储一个数字,使用编号来存储,比如我就约定用1来代表男,来代表女,那也就意味着这个字段要么存1,要么存2,那我就可以使用范围最小的整型 --- tinyint,而由于gender性别里面它存储的就是1或者是2,而且不需要存储负数,所以在后面可以加上关键字 --- unsigned,代表着是一个无符号的tinyint。
  • 图像就是图片,它的字段类型我们需要做一个说明:这里并不是直接存图片,而是存储图片的访问路径,我们打开浏览器可以看到每一张图片它都有对应的访问路径,我们存储的其实这个图片的访问路径,就是一个字符串,而且这个字符串是比较长的而且也不是固定长度的,所以我们可以设置一个varchar()类型,存储的就是图片的访问路径。
  • 对于我们这一类后台管理系统的表结构来说,我们一般都会在表结构当中先加两个通用字段,一个是创建时间,一个是修改时间。
  • 创建时间它是用来记录这条数据产生的时间,也就是插入的时间。
  • 而修改时间,代表的是每一次修改我都需要更新一下这个时间,将其更新为当前时间。 

2.3.1.5 设计表流程

  • 直接基于页面原型所分析出来的这些字段我们叫原型字段。那我们就可以分析出这些字段它的类型,我们要给这些字段建立什么样的约束,这些基于我们所提供的页面原型以及需求文档都可以分析出来。
  • 分析出来之后,我们还需要再加上一部分基础字段:比如像id这样的主键字段,create_time、update_time这样的基础字段。
  • 原型字段再加上这一部分基础字段之后,就组成了这样一个表结构,这就是我们表结构设计的基本流程。

说明:

  • create_time --- 创建 / 插入时间:记录的是当前这条数据插入的时间。 
  • update_time --- 修改 / 更新时间:记录当前这条数据最后更新的时间。

  • 我们每一次更新这条数据,都需要将update_time更新为当前时间。

通过上面的案例,我们明白了,设计一张表,基本的流程如下:

  1. 阅读页面原型及需求文档
  2. 基于页面原则和需求文档,确定原型字段(类型、长度限制、约束)
  3. 分析出这些原型字段之后再增加表设计所需要的业务基础字段(id主键、插入时间、修改时间 / 更新时间)就组成了一张完整的表结构。
设计表结构的基本流程

2.3.1 MySQL-DDL-表结构操作-查询&修改&删除

表结构的查询,修改和删除操作:对于这一部分的DDL语句,可以不做重点掌握,但是需要掌握的是图形化界面的操作方式。

2.3.2 表结构的查询

表结构的查询这里涉及到三条SQL语句:

  • 关于表结构的查询操作,工作中一般都是直接基于图形化界面操作。  

-- DDL:查看表结构
-- 查看:查询当前数据库下所有的表
show tables;

-- 查看:查看指定表的表结构
desc tb_emp;

-- 查看:数据库的建表语句
show create table tb_emp;

 查询当前数据库所有表:show tables;

查看指定表结构:desc 表名 ;

desc 表名 ;   查看指定的表结构

可以查看指定表的字段、每个字段的类型以及这个字段是否可以为NULL / 存null值,以及这个字段是否存在 / 有默认值等信息。

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

 

 

 2.3.3 修改

  • 关于表结构的修改操作,工作中一般都是直接基于图形化界面操作。 
  • 修改表结构,主要涉及到两个部分,一个部分就是关于表中字段的操作,另外一个方面就是表名的操作。
  • 我们要修改某一张表当中的字段,前面都需要加上一个关键字:alter  table,后面指定我们要操作哪一个表名。
  • 如果是添加字段,后面跟上关键字add,后面指定字段的信息
  • 如果是修改字段类型,需要用到的关键字是modify,后面跟上字段的描述信息。
  • 如果需要修改字段名,我们需要加上关键字change,后面跟上字段的描述信息。
  • 如果是删除字段,后面跟上关键字drop column,后面跟上字段名。
  • 这是关于表中字段的操作。
  • 如果是修改表名,我们只需要通过关键字rename  table   指定要操作的表名   to之后跟上新的表名。
  • alter:修改

-- DDL:修改表结构
-- 修改:为表 tb_emp 添加字段 qq varchar(11)
alter table tb_emp add qq varchar(11) comment 'QQ';

-- 修改:修改 tb_emp 字段类型 qq varchar(13)
alter table tb_emp modify qq varchar(13) comment 'QQ';

-- 修改:修改 tb_emp 字段名 qq 为 qq_num varchar(13)
alter table tb_emp change qq qq_num varchar(13) comment 'QQ';

-- 修改:删除 tb_emp 的 qq_num字段
alter table tb_emp drop column qq_num;

-- 修改:将tb_emp 表名修改为emp
rename table tb_emp to emp;

 添加字段

alter table 表名 add  字段名  类型(长度)  [comment 注释]  [约束];

 案例: 为tb_emp表添加字段qq,字段类型为 varchar(11)

alter table tb_emp add  qq  varchar(11) comment 'QQ号码';

 图形化操作:添加字段

 修改数据类型

alter table 表名 modify  字段名  新数据类型(长度);
alter table 表名 change  旧字段名  新字段名  类型(长度)  [comment 注释]  [约束];

案例:修改qq字段的字段类型,将其长度由11修改为13

alter table tb_emp modify qq varchar(13) comment 'QQ号码';

 案例:修改qq字段名为 qq_num,字段类型varchar(13)

alter table tb_emp change qq qq_num varchar(13) comment 'QQ号码';

图形化操作:修改数据类型和字段名

 删除字段

alter table 表名 drop 字段名;

案例:删除tb_emp表中的qq_num字段

alter table tb_emp drop qq_num;

图形化操作:删除字段

修改表名 

rename table 表名 to  新表名;

案例:将当前的tb_emp表的表名修改为emp

rename table tb_emp to emp;

图形化操作:修改表名

2.3.4 删除

关于表结构的删除操作,工作中一般都是直接基于图形化界面操作。 

 删除表语法:

drop  table [ if exists ]  表名;
  • if exists :只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不加该参数项,删除一张不存在的表,执行将会报错)。
  • 注意:当我们在删除表结构的时候,表中的全部数据也都会被删除。

案例:如果tb_emp表存在,则删除tb_emp表

drop table if exists tb_emp;  -- 在删除表时,表中的全部数据也会被删除。

图形化操作:删除表

 小结:

  • 通过DDL语句来操作数据库以及操作表结构,也就是数据库设计部分的内容。
  • 在实际的项目开发当中,DDL语句的操作已经被图形化界面工具替代了,而且使用图形化界面工具很方便的就可以来操作数据库以及表结构,

至此数据库设计部分的基础内容学习完毕!

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

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

相关文章

行为型模式-备忘录模式

备忘录模式 概述 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件都提供了撤销(Undo&#xff0…

【自动化测试】Appium环境设置

启动Appium需要的环境配置有些复杂,这里将需要的环境配置整理出来,附上博主亲测有效的教程,有些教程有一点点老了,博主也做了备注,并且有些老一点步骤,博主根据现有的情况做了新的图文教程,大家…

近源渗透学习

一、近源渗透 近源渗透测试是网络空间安全领域逐渐兴起的一种新的安全评估手段。 它是一种集常规网络攻防、物理接近、社会工程学及无线电通信攻防等能力于一体的高规格网络安全评估行动。网络安全评估小组在签订渗透测试授权协议后,通过乔装、社工等方式实地物理侵…

微服务体系

目录 结构服务注册中心EurekaZookeeperConsul上面三者的对比 Ribbon 负载均衡负载均衡OpenFeign 远程服务调用Hystrix服务熔断常见的设置 Hystrix 工作流程Hystrix-DashBoard 的使用 SpringCloud Gateway核心工作流程 SpringCloud Config 分布式配置中心bootstrap.yml配置文件 …

独立按键识别

项目文件 文件 关于项目的内容知识点可以见专栏单片机原理及应用 的第四章 IO口编写 参考图电路编写程序,要求实现如下功能: 开始时LED均为熄灭状态,随后根据按键动作点亮相应LED(在按键释放后能继续保持该亮灯状态,直至新的按键压下时为止…

【实用工具】SpringBoot实现接口签名验证

需求场景 由于项目需要开发第三方接口给多个供应商,为保证Api接口的安全性,遂采用Api接口签名验证。 Api接口签名验证主要防御措施为以下几个: 请求发起时间得在限制范围内请求的用户是否真实存在是否存在重复请求请求参数是否被篡改 项目…

java8新特性——StreamAPI

1.集合处理数据的弊端 当我们在需要对集合中的元素进行操作的时候,除了必需的添加,删除,获取外,最典型的操作就是集合遍历。 package com.wxj.streamapi;import java.util.ArrayList; import java.util.Arrays; import java.uti…

E. Vasya and Good Sequences(异或)

Problem - E - Codeforces Vasya有一个由n个整数组成的序列a。 Vasya可以执行以下操作:从序列中选择一些数字,并交换其二进制表示中的任意一对位。例如,Vasya可以将数字6(… 000000001102)转换为3(… 00000…

[数据库系统] 一、外键约束 (educoder)

1.任务:给表添加外码。 2.相关知识 需要掌握: (1)什么是外码; (2)怎么给表添加外码。 (1)什么是外码 外部关键字 外码是另一张表中的主码。**外码的主要作用是保持数据的一致性,完整性。 如图有两张表,classId 是T…

蓝晓转02上市价格预测

蓝晓转02 基本信息 转债名称:蓝晓转02,评级:A,发行规模:5.460645亿元。 正股名称:蓝晓科技,今日收盘价:88.16元,转股价格:92.73元。 当前转股价值 转债面值 …

10.集合

1.泛型 1.1泛型概述 泛型的介绍 ​ 泛型是JDK5中引入的特性&#xff0c;它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如:…

深度学习模型部署的步骤和相关注意事项

文章目录 深度学习模型部署的步骤和相关注意事项什么是模型部署&#xff1f;步骤1&#xff1a;选择合适的部署环境步骤2&#xff1a;选择合适的部署框架步骤3&#xff1a;将模型转换为部署格式步骤4&#xff1a;创建API接口步骤5&#xff1a;部署模型总结 深度学习模型部署的步…

JWT漏洞基础

JWT漏洞基础 什么是JWTJWT漏洞介绍工具使用 身份认证(Authentication)又称鉴权&#xff0c;是指通过一定的手段&#xff0c;完成对用户身份的确认。认证的方式&#xff1a;sessioncookie、JWT、Token session认证的局限性 session认证机制需要配合cookie才能实现。由于cookie默…

极客时间- 数据结构与算法之美 - 王争 前 Google 工程师【学习笔记】

本文是 极客时间- 数据结构与算法之美 - 王争 前 Google 工程师。专栏学习笔记整理&#xff0c;课程链接&#xff1a;https://time.geekbang.org/column/intro/100017301?tabcatalog 01 | 为什么要学习数据结构和算法&#xff1f;面试业务开发工程师写出达到开源水平的框架才是…

大数据应用案例:如何在金融行业中利用数据挖掘实现风险控制和预测

引言 随着互联网和移动技术的发展&#xff0c;金融行业已经进入了数字化时代。大数据技术在金融行业的应用越来越广泛&#xff0c;其中最重要的应用就是风险控制和预测。本文将介绍如何利用数据挖掘技术在金融行业中实现风险控制和预测&#xff0c;以及一些成功的案例。 章节…

Android 系统的分区和文件系统(4)- Android 伪文件系统

声明 Android系统中有很多分区&#xff0c;每个分区内的文件系统一般都不同的&#xff0c;使用ADB进入系统/目录下可发现挂载这很多的目录&#xff0c;不同的目录中可来自不同的分区及文件系统&#xff1b;此篇参考了一些书籍及论文&#xff0c;仅供学习使用。只介绍大概理论&…

Valarrays

C标准库提供了一个class valarray用以进行数值数组的运算。 它声明于头文件<valarray> namespace std{template<class T> class valarray; //numeric array of type Tclass slice;template<class T> class slice_array; //slice out of a valarrayclass gs…

Java经典笔试题—day03

Java经典笔试题—day03 &#x1f50e;选择题&#x1f50e;编程题&#x1f95d;字符串中找出连续最长的数字串&#x1f95d;数组中出现次数超过一半的数字 &#x1f50e;结尾 &#x1f50e;选择题 (1)以下代码运行输出的是 public class Person{private String name "Pe…

怎么洗稿容易过稿-在线洗稿软件

自媒体洗稿软件 即使您是一位优秀的自媒体写作人员&#xff0c;也难免遇到让人头疼的撰写问题&#xff0c;例如无法处理大量原始文本、需要手动删除冗余信息、缺少时间针对每篇文章进行深入修改等问题。但是&#xff0c;现在有了我们的一款自媒体洗稿软件&#xff0c;您再也不需…

Android System crash DeadSystemException(Service/Activity/终极解决方案)

DeadSystemException&#xff1a; The core Android system has died and is going through a runtime restart. All running apps will be promptly killed. Android 核心系统服务已经死亡&#xff0c;正在重启中。全部正在运行的app即将被kill杀死。 更多请阅读&#xff0c;D…