数据库小节1

2023-05-16

目录

数据库应用

概念

什么是数据库

关系型和非关系型

关系型数据库

Mysql数据库

MySQL数据存放在哪里?

MySQL服务端

MySQL客户端1:DOS窗口

MySQL客户端2:可视化工具

数据库的结构

数据库结构

SQL语句

定义

分类

数据库常用操作

建库

删库

查看所有数据库

表的常用操作

表设计

创建表

修改表

删除表

查看所有表

查看表结构/设计表

表记录的常用操作

插入记录

查询记录

修改记录

删除记录

排序

记录总数

数据类型

准备数据

字段约束

基础函数

lower

upper

length

substr

concat

replace

ifnull

round & ceil & floor

uuid

now

year & month & day

转义字符

条件查询

distinct

where

like

null

between and

limit

order by

统计案例

聚合 aggregation

count

sum / avg

分组 group

group by

having


数据库应用

概念

什么是数据库

简而言之,就是存储数据,管理数据的仓库。

常见的数据库分为:

  • 关系型数据库, Oracle、MySQL、SQLServer、Access
  • 非关系型数据库, MongoDB、Redis、Solr、ElasticSearch、Hive、HBase

在这里插入图片描述

关系型和非关系型

早期发展的数据库建立在数据的紧密关系基础之上(如:父子关系、师生关系),我们称其为关系型数据库,也称为传统数据库;现今数据库建立在数据的松散关系基础之上(如:中国人和美国人、中国人和印度人、视频、音频),我们称其为非关系型数据库nosql(not only sql)。业界总在争论nosql能否干掉传统数据库,很多初学者也有这个困惑。以我来看,两者没有矛盾,它们各有特点,根据业务情况互补才是真谛。但总的来说原来关系型数据库一统天下的格局早被打破,领土不断被蚕食,规模一再的缩小,虽然无法全面被替代,但却早已风光不在,沦落到一偶之地,Oracle的衰落就是最好的证明,早期只要是全球大企业无一例外都是部署Oracle,但现在都在去Oracle化,阿里就已经全面排斥Oracle。
在这里插入图片描述

既然干不掉,很多传统项目的还是围绕关系型数据库的居多,所以我们先来学习关系型数据库,目前最流行的关系型数据库是MySQL。

关系型数据库

关系型数据库有特定的组织方式,其以行和列的形式存储数据,以便于用户理解。关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据集合。
在这里插入图片描述

Mysql数据库

  1. mysql服务端,它来处理具体数据维护,保存磁盘
  2. mysql客户端,CRUD新增,修改,删除,查询

MySQL数据存放在哪里?

在MySQL的配置文件my.ini中会进行默认配置

在这里插入图片描述

MySQL服务端

mysql-5.5.27-winx64.msi

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Mysql数据库默认的编码是latin1等价于iso-8859-1,修改为utf-8

在这里插入图片描述
在这里插入图片描述
注意:配置完,mysql开始执行,最后一步出错有时仍可以使用,使用SQLyog工具测试,如不行,再执行安装程序,选择remove,删除,然后重新安装。同时注意必须是管理员权限。

MySQL客户端1:DOS窗口

mysql -uroot -proot

语法:mysql.exe执行文件

代表参数

-u 用户名,紧接着写的

-p 密码,紧接着写的

MySQL客户端2:可视化工具

在这里插入图片描述

数据库的结构

数据库结构

在这里插入图片描述

SQL语句

定义

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

SQL 是1986年10 月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准。

分类

  • DML(Data Manipulation Language)数据操纵语言

如:insert,delete,update,select(插入、删除、修改、检索)简称CRUD操新增Create、查询Retrieve、修改Update、删除Delete

  • DDL(Data Definition Language)数据库定义语言

如:create table之类

  • DCL(Data Control Language)数据库控制语言

如:grant、deny、revoke等,只有管理员才有相应的权限

  • 数据查询语言(DQL:Data Query Language):

注意:SQL不区分大小写

数据库常用操作

建库

  • 创建数据库,数据库名称:cbg2011
create database cbg2011 DEFAULT CHARACTER SET utf8;
  • 1

删库

  • 删除名称是cbg2011的数据库
drop database cbg2011;
  • 1

查看所有数据库

  • 查看所有数据库
show databases;
  • 1表的常用操作
使用数据库:use cbg2011;
  • 1表设计

门店表:** tb_door**
在这里插入图片描述
订单详情表:** tb_order_detail**
在这里插入图片描述

创建表

  • 创建tb_door表,有id,door_name,tel字段
create table tb_door(
id int primary key auto_increment,
door_name varchar(100),
tel varchar(50)
);

修改表

  • 添加列
alter table tb_door add column money NUMERIC(7,2)
  • 1

删除表

  • 删除名称是tb_door的表
drop table tb_door;
  • 1

查看所有表

  • 查看所有表
show tables;
  • 1

查看表结构/设计表

  • 查看tb_door表结构
desc tb_door;
  • 1

表记录的常用操作

插入记录

  • 向tb_door表中插入2条记录
insert into tb_door values(null,'永和大王1店',666);

insert into tb_door values(null,' 永和大王2店',888);
  • 1
  • 2
  • 3

查询记录

  • 查询tb_door表中的所有记录
SELECT * FROM tb_door;
  • 1

修改记录

  • 修改tb_door表中id为1的记录
update tb_door set tel=555 where id=1;
  • 1

删除记录

  • 删除tb_door表中id为2的数据
Delete from tb_door where id=2;
  • 1

排序

  • 将tb_door表记录按照tel排序
Select * from tb_door order by tel desc;
  • 1

记录总数

  • 查询tb_door表中的总记录数
Select count(*) from tb_door;
  • 1

数据类型

命名规则

  • 字段名必须以字母开头,尽量不要使用拼音
  • 长度不能超过30个字符(不同数据库,不同版本会有不同)
  • 不能使用SQL的保留字,如where,order,group
  • 只能使用如下字符az、AZ、0~9、$ 等
  • Oracle习惯全大写:USER_NAME,mysql习惯全小写:user_name
  • 多个单词用下划线隔开,而非java语言的驼峰规则

字符

  • char长度固定,不足使用空格填充,最多容纳2000个字符,char(11)存储abc,占11位。查询速度极快但浪费空间
  • varchar变长字符串,最多容纳4000个字符,varchar(11)存储abc,只占3位。查询稍慢,但节省空间。Oracle为varchar2
  • 大文本: 大量文字(不推荐使用,尽量使用varchar替代)

以utf8编码计算的话,一个汉字在u8下占3个字节

注:不同数据库版本长度限制可能会有不同

数字

  • tinyint,int整数类型
  • float,double小数类型
  • numberic(5,2) decimal(5,2)—也可以表示小数,表示总共5位,其中可以有两位小数
  • decimal和numeric表示精确的整数数字

日期

  • date 包含年月日
  • time时分秒
  • datetime包含年月日和时分秒
  • timestamp时间戳,不是日期,而是从1970年1月1日到指定日期的毫秒数

图片

  • blob 二进制数据,可以存放图片、声音,容量4g。早期有这样的设计。但其缺点非常明显,数据库庞大,备份缓慢,这些内容去备份多份价值不大。同时数据库迁移时过大,迁移时间过久。所以目前主流都不会直接存储这样的数据,而只存储其访问路径,文件则存放在磁盘上。

准备数据

部门表 dept

字段名称数据类型是否为空备注
deptnoint部门编号,PK主键
dnamevarchar(20)Y部门名称
locvarchar(13)Y部门所在地点
CREATE TABLE dept(
deptno int primary key auto_increment ,
dname VARCHAR(20),
loc VARCHAR(13)
);
INSERT INTO dept VALUES(null,'accounting','一区');
INSERT INTO dept VALUES(null,'research','二区');
INSERT INTO dept VALUES(null,'operations','二区');

员工表 emp

字段名称数据类型是否为空备注
empnoint员工编号,PK主键
enamevarchar(10)Y员工名称
jobvarchar(10)Y职位
mgrintY上级编号
hiredatedatetimeY入职时间
saldoubleY月工资
commNUMERIC(8,2)Y奖金
deptnointY所属部门 FK外键

Mysql:

CREATE TABLE emp(
empno int primary key auto_increment,
ename VARCHAR(10),
job VARCHAR(10),
mgr int,
hiredate DATE,
sal double,
comm NUMERIC(7,2),
deptno int
);

INSERT INTO emp VALUES(100,'jack','副总',NULL,'2002-05-1',90000,NULL,1);

INSERT INTO emp VALUES(200,'tony','总监',100,'2015-02-02',10000,2000,2);

INSERT INTO emp VALUES(300,'hana','经理',200,'2017-02-02',8000,1000,2);

INSERT INTO emp VALUES(400,'leo','员工',300,'2019-02-22',3000,200.12,2);

INSERT INTO emp VALUES(500,'liu','员工',300,'2019-03-19',3500,200.58,2);

字段约束

主键约束

主键约束:如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空。通常情况下,每张表都会有主键。

添加主键约束,例如将id设置为主键:

主键自增策略** **当主键为数值类型时,为了方便维护,可以设置主键自增策略(auto_increment),设置了主键自增策略后,数据库会在表中保存一个AUTO_INCREMENT变量值,初始值为1,当需要id值,不需要我们指定值,由数据库负责从AUTO_INCREMENT获取一个id值,作为主键值插入到表中。而且每次用完AUTO_INCREMENT值,都会自增1. AUTO_INCREMENT=1

create table abc(
id int primary key auto_increment
);
insert into abc values(null);
insert into abc values(null);
insert into abc values(null);
select * from abc;

非空约束

非空约束:如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。

添加非空约束,例如为password添加非空约束:

create table user(
id int primary key auto_increment,
password varchar(50) not null
);
show tables;
insert into user values(null,null);//不符合非空约束
insert into user values(null,123;);//OK

唯一约束

唯一约束:如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。

添加唯一约束,例如为username添加唯一约束及非空约束:

create table test(
id int primary key auto_increment,
username varchar(50) unique--唯一约束
);
show tables;
insert into test values(null,'lisi');
insert into test values(null,'lisi');--username的值要唯一,重复会报错的
select * from test;

基础函数

lower

SELECT 'ABC',LOWER('ABC') from dept; --数据转小写
  • 1

upper

select upper(dname) from dept --数据转大写
  • 1

length

select length(dname) from dept --数据的长度
  • 1

substr

SELECT dname,SUBSTR(dname,1,3) FROM dept; --截取[1,3]
  • 1

concat

select dname,concat(dname,'123') X from dept --拼接数据
  • 1

replace

select dname,replace(dname,'a','666') X from dept --把a字符替换成666
  • 1

ifnull

select ifnull(comm,10) comm from dept2 #判断,如果comm是null,用10替换
  • 1

round & ceil & floor

round四舍五入,ceil向上取整,floor向下取整

–直接四舍五入取整

select comm,round(comm) from emp
  • 1

–四舍五入并保留一位小数

select comm,round(comm,1) from emp
  • 1

–ceil向上取整,floor向下取整

select comm,ceil(comm) ,floor(comm) from emp
  • 1

uuid

SELECT UUID()

返回uuid:a08528ca-741c-11ea-a9a1-005056c00001
  • 1

now

select now() -- 年与日 时分秒

select curdate() --年与日

select curtime() --时分秒

year & month & day

–hour()时 minute()分 second()秒

select now(),hour(now()),minute(now()),second(now()) from emp ;
  • 1

–year()年 month()月 day()日

select now(),year(now()),month(now()),day(now()) from emp ;
  • 1

转义字符

'作为sql语句符号,内容中出现单撇就会乱套,进行转义即可

select 'ab'cd' -- 单引号是一个SQL语句的特殊字符

select 'ab\'cd' --数据中有单引号时,用一个\转义变成普通字符

条件查询

distinct

使用distinct关键字,去除重复的记录行

SELECT loc FROM dept;

SELECT DISTINCT loc FROM dept;

where

注意:where中不能使用列别名!!

select * from emp

select * from emp where 1=1 --类似没条件

select * from emp where 1=0 --条件不成立

select * from emp where empno=100 --唯一条件

select * from emp where ename='tony' and deptno=2 --相当于两个条件的&关系

select * from emp where ename='tony' or deptno=1 --相当于两个条件的|关系

select name, sal from emp where sal=1400 or sal=1600 or sal=1800;

-- 或

select name, sal from emp where sal in(1400,1600,1800);

select name, sal from emp where sal not in(1400,1600,1800);

like

通配符%代表0到n个字符,通配符下划线_代表1个字符

select * from emp where ename like 'l%' --以l开头的

select * from emp where ename like '%a' --以a结束的

select * from emp where ename like '%a%' --中间包含a的

select * from emp where ename like 'l\_\_' --l后面有两个字符的 _代表一个字符位置

null

select * from emp where mgr is null --过滤字段值为空的

select * from emp where mgr is not null --过滤字段值不为空的

between and

SELECT * FROM emp

select * from emp where sal<3000 and sal>10000

select * from emp where sal<=3000 and sal>=10000--等效

select * from emp where sal between 3000 and 10000--等效

limit

分数最高的记录:按分数排序后,limit n,返回前n条。Oracle做的很笨,实现繁琐,后期有介绍,而mysql做的很棒,语法简洁高效。在mysql中,通过limit进行分页查询:

select * from emp limit 2 --列出前两条

select * from emp limit 1,2 --从第二条开始,展示2条记录

select * from emp limit 0,3 --从第一条开始,展示3条记录--前三条

order by

SELECT * FROM emp order by sal #默认升序

SELECT * FROM emp order by sal desc #降序

统计案例

入职统计

#2015年以前入职的老员工

#2019年以后签约的员工,日期进行格式转换后方便比较

SELECT * FROM emp WHERE YEAR(DATE_FORMAT(hiredate,'%Y-%m-%d'))<=2019;
  • 1

#2015年到2019年入职的员工

SELECT * FROM emp

WHERE

STR\_TO\_DATE(hiredate,'%Y-%m-%d')\&gt;='2015-01-01'

AND

STR\_TO\_DATE(hiredate,'%Y-%m-%d')\&lt;='2019-12-31'

年薪统计

公司福利不错13薪,年底双薪,统计员工的年薪=sal*13+comm*13

SELECT empno,ename,job,sal\*13+comm\*13 FROM emp;

SELECT empno,ename,job,sal\*13+comm\*13 **as**  **年薪** FROM emp;--用as给列起个别名

SELECT empno,ename,job,sal\*13+comm\*13 年薪 FROM emp; --as也可以省略

select ename, sal+comm from emp

select ename, sal , comm, sal+ifnull(comm,0) from emp--用0替换掉null

聚合 aggregation

根据一列统计结果

count

select count(\*) from emp --底层优化了

select count(1) from emp --效果和\*一样

select count(comm) from emp --慢,只统计非NULL的
  • min
select max(sal) from emp --求字段的最大值

select max(sal) sal,max(comm) comm from emp

select min(sal) min from emp --获取最小值

select min(sal) min,max(sal) max from emp --最小值最大值

SELECT ename,MAX(sal) FROM emp group by ename --分组

sum / avg

select count(\*) from emp --总记录数

select sum(sal) from emp --求和

select avg(sal) from emp --平均数

分组 group

用于对查询的结果进行分组统计

group by表示分组, having 子句类似where过滤返回的结果

group by

#每个部门每个岗位的最高薪资和平均薪资,结果中的非聚合列必须出现在分组中,否则业务意义不对

SELECT deptno,MAX(sal),AVG(sal) FROM emp

GROUP BY deptno #按照deptno分组

SELECT job,MAX(sal),AVG(sal) FROM emp

GROUP BY job #按照job分组

SELECT deptno,job,MAX(sal),AVG(sal) FROM emp

GROUP BY deptno,job #deptno和job都满足的

having

#平均工资小于8000的部门

select deptno, AVG(sal) from emp
group by deptno #按部门分组
having AVG(sal) \&lt;8000 #查询条件,类似where,但是group by只能配合having

#deptno出现的次数
SELECT deptno,COUNT(deptno) FROM emp

GROUP BY deptno #按deptno分组

HAVING COUNT(deptno)\&gt;1 #次数多的


## 小结
### char和varchar有什么区别?

char为定长字符串,char(n),n最大为255

varchar为不定长字符串,varchar(n),n最大长度为65535

char(10)和varchar(10)存储abc,那它们有什么差别呢?

char保存10个字符,abc三个,其它会用空格补齐;而varchar只用abc三个位置。
### datetime和timestamp有什么区别?

数据库字段提供对日期类型的支持,是所有数据类型中最麻烦的一个,慢慢使用就会体会出来。

date 是 年与日

time是 时分秒

datetime年月日时分秒,存储和显示是一样的

timestamp时间戳,存储的不是个日期,而是从1970年1月1日到指定日期的毫秒数
### 中文乱码

如果在dos命令下执行insert插入中文数据,数据又乱码,那现在sqlYog客户端执行下面命令:

set names utf8;

set names gbk;

设置客户端字符集和服务器端相同。如果不知道它到底用的什么编码?怎么办呢?很简单,两个都尝试下,哪个最后操作完成,查询数据库不乱码,就用哪个。

那为何会造成乱码呢?

Mysql数据库默认字符集是lantin1,也就是以后网页中遇到的ISO8859-1,它是英文字符集,不支持存放中文。我们创建库时,可以指定字符集:

create database yhdb charset utf8;

但这样很容易造成服务器和客户端编码集不同,如服务器端utf8,客户端ISO8859-1。mysql和客户端工具都有习惯的默认编码设置,好几个地方,要都统一才可以保证不乱码。

我们只要保证创建数据库时用utf8,使用可视化工具一般就基本正确。
### 注释

/\* 很多注释内容 \*/

\#行注释内容

\-- 行注释内容,这个使用较多
### 主键、外键、唯一索引的区别?

- Primary Key 主键约束,自动创建唯一索引
- Foreign Key 外键约束,外键字段的内容是引用另一表的字段内容,不能瞎写
- Unique Index 唯一索引,唯一值但不是主键

对于约束的好处时,数据库会进行检查,违反约束会报错,操作失败。数据库提供了丰富的约束检查,还有其他约束,但现今弱化关系型数据库的前提下,基本已经很少使用,记住上面三个即可。
### drop、delete和truncate之间的区别?

drop删除库或者表,数据和结构定义

delete和truncate只是删除表的数据

delete可以指定where条件,删除满足条件的记录,tuncate删除所有记录

对于自增字段的表,delete不会自增值清零,而truncate是把表记录和定义都删除了,然后重建表的定义,所以自增主键会重头开始计数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库小节1 的相关文章

  • 基于javafx的简单画图应用

    代码比较简单 xff0c 但初次接触javafx xff0c 会不知道从哪里下手 xff0c 多与其他人交流看看代码能让我们事半功倍 代码内容我就不多做解释 xff0c 自己有个思路知道有哪些函数该怎么下手就好 效果 xff1a 一共就只有
  • 【SpringBoot】日志文件基础教程

    日志的作用 发现和定位问题 在程序的执行过程中 如果出现了错误 我们就可以轻松的找到这个bug记录用户的登录日志 可以发现是正常用户还是恶意用户记录系统的操作日志 方便数据恢复记录程序的执行时间 SpringBoot的日志 我们在执行起项目
  • Royal TSX常见问题:解决远程桌面(RDP)连接错误

    Royal TSX mac版是一款帮助用户管理桌面的Mac桌面管理软件 xff0c Royal TSX for mac为你提供方便安全的访问远程系统 Royal TSX专为服务器管理员 系统工程师 开发人员和IT信息工作者开发设计 xff0
  • 二叉树的创建和基本操作(详解)

    文章目录 二叉树的创建 xff08 使用先序遍历 xff09 递归实现二叉树的遍历 xff1a 先序遍历 xff1a 中序遍历 xff1a 后续遍历 xff1a 一些二叉树基本操作 xff1a 求树的深度 xff1a 求树的结点个数 xff
  • c++内存四区以及new、delete用法

    c 43 43 内存四区 c 43 43 被执行时 xff0c 将内存大方向划分了四个区域 代码区 xff1a 存放函数体的二进制代码 xff0c 由操作系统进行管理的全局区 xff1a 存放全局变量和静态变量以及常量栈区 xff1a 由编
  • 【尚硅谷】HTML5+CSS3学习笔记 (七)CSS动画(含大量源码)

    xff08 七 xff09 CSS动画 61 61 本部分更多内容欢迎订阅专栏HTML 43 CSS学习专栏 xff0c 将持续更新 61 61 目录 xff1a xff08 七 xff09 CSS动画7 1 过渡 xff08 transi
  • 解决Vue报错解决Invalid prop: type check failed for prop “model“. Expected Object, got Array的问题

    在写项目的时候发生了类型匹配不符合的问题 xff0c 准确来说就是变量期望拿到的是一个对象 xff0c 但是实际上赋值给变量的是一个数组 这里我出现的问题是我的变量定义为对象 xff0c 却没有注意直接把res data xff08 数组
  • test测试类

    span class token keyword package span com span class token punctuation span chen span class token punctuation span test
  • 使用MariaDB数据库进行开发过程中遇到中文乱码的解决方式

    使用环境 xff1a idea2020版 Navicat Premium 步骤为 1 更改MariaDB默认编码格式 xff1a 在MariaDB目录的data下新建文件my cnf xff0c 并配置内容 然后重启MariaDB服务 my
  • Ubuntu22.04 VScode 安装与 OpenCV C++配置

    标题 xff1a Ubuntu22 04 VScode 安装与 OpenCV C 43 43 配置 OpenCV C 43 43 环境搭建详细图文移步 VScode 安装 下载安装包 Ubuntu软件商店安装的会出现无法输入中文 xff0c
  • Github + Hexo 搭建个人博客超详细教程

    Github 43 Hexo 搭建个人博客超详细教程 本文目录 generated with DocToc 网站搭建 本文目录1 安装node js2 添加国内镜像3 安装Git4 注册Github账号5 创建git仓库6 安装Hexo7
  • Maven的删除、安装、配置

    Maven的删除 安装 配置 文章目录 Maven的删除 安装 配置 64 toc 一 Maven删除二 下载安装Maven三 配置环境四 搭建本地仓库五 阿里云镜像六 从中央仓库下载需要的文件 点我进Gitee仓库 一 Maven删除 我
  • 2022年12月编程语言排行榜,数据来了!

    2022年迎来了最后一个月 xff0c 我们可以看到 xff0c 在这一年中编程语言起起伏伏 xff0c 有的语言始终炙手可热 xff0c 而有的语言却逐渐 没落 日前 xff0c 全球知名TIOBE编程语言社区发布了12月编程语言排行榜
  • 修改Keil工程的文件名

    在工程文件目录中 xff0c 将 uvprojx和 uvoptx重命名为目标文件名在工程文件目录中 xff0c 将包含原工程名的文件删除 xff0c 包括编译生成的Objects Listings和DebugConfig文件夹打开重命名好的
  • 聊聊ICMP协议及ping过程

    在当我们判断网络是否连通时 xff0c 使用最多的命令是ping xff0c traceroute xff0c 其是基于ICMP协议实现 xff0c 那么ICMP协议是什么 xff1f ICMP协议 ICMP xff08 Internet
  • Seata安装启动

    一 下载 https github com seata seata releases download v1 4 2 seata server 1 4 2 zip 二 启动 在安装路径下cmd seata server bat h 127
  • python matplotlib cannot import name ‘artist‘ from ‘matplotlib‘

    问题 xff1a import matplotlib pyplot as plt 报错 cannot import name 39 artist 39 from 39 matplotlib 39 无法从 matplotlib 导入名称 ar
  • 解决tomca导包 - org.apache.tomcat.util.modeler.BaseModelMBean.invoke Exception invoking method manageApp

    文章目录 前言两步解决导包到tomcat的问题总结 前言 本次问题是一次javaWeb导包部署到tomcat服务器上出现的问题 xff0c 问题原因 xff1a 是由于导包到idea上的jar包库 xff0c tomcat并没有该jar包
  • flex水平与垂直布局 弹性布局 垂直居中 水平平均分布

    弹性盒子元素会平均地分 span class token doctype lt DOCTYPE html gt span span class token tag span class token tag span class token

随机推荐

  • node基础学习

    node学习链接Node js 简介 1 node退出码 1 2 3 console log 111 process exit 0 默认情况下 xff0c 退出码为 0 xff0c 表示成功 console log 222 不执行 2 no
  • Java实现AI机器人聊天

    文章目录 前言一 账号注册申请密钥二 参数详情三 Java集成1 调用接口2 响应数据 四 效果总结 前言 OpenAI API 几乎可以应用于任何涉及理解或生成自然语言或实现代码等场景 提供一系列具有不同学习训练的模型 xff0c 适用于
  • ubuntu20.04开启root用户并免密登录

    非root用户下命令行是有配色的 xff0c 切换到root用户就没有颜色了 所以先切换到当前用户目录 xff0c 把该用户的颜色配置文件复制到root用户下 xff1a span class token function sudo spa
  • Java快速排序

    快速排序是基于二分的思想 xff0c 对冒泡排序的一种改进 主要思想是确立一个基数 xff0c 将小于基数的数放到基数左边 xff0c 大于基数的数字放到基数的右边 xff0c 然后在对这两部分进一步排序 xff0c 从而实现对数组的排序
  • C#Socket通信与RabbitMQ消息中间件,控制台小项目

    1 实现的功能 xff1a 两个控制台Teacher xff0c 与Student xff0c 也是实体类 通过Socket发送老师与学生消息 xff0c 到服务端 xff0c 老师1s发一次 xff0c 学生0 5s发一次 xff0c 持
  • Ubuntu22.04服务器版本配置静态IP地址

    1 进入文件 etc netplan 00 installer config yam vim etc netplan 00 installer config yaml 2 配置文件内容 network ethernets ens33 dhc
  • Ubuntu22.04如何配置samba服务

    前言 xff1a 搭建过程全在root用户下完成 xff0c 如不是root用户请在命令前加上sudo 1 如果不确定自己是否安装了samba服务的可以先行查看一下 dpkg l grep smabd 2 查看完成后没有则可以下载samba
  • 求素数的两种方法(c++)

    求素数的两种方法效率最高 xff08 c 43 43 xff09 xff08 一 xff09 常规方法 给定一个数n要求它是否为素数 xff0c 只需用n依次初从2到根号n xff0c 如果都不能被整除那么该数为素数 代码如下 xff1a
  • 【Android】ViewPager + RadioGroup + Fragment 实现底部导航栏和页面切换

    1 效果预览 2 activity main xml 布局文件 lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt RelativeLayout xmlns android 6
  • 如何在Ubuntu20.04上安装chrome

    我们将从官方网站上下载安装文件 xff0c 然后从命令进行安装 具体步骤如下 打开终端 xff0c 使用wget下载最新的Google Chrome deb软件包 xff1a wget https span class token oper
  • java.sql.SQLException: 数字溢出 的解决办法

    Java sql SQLException xff1a 数字溢出 的错误 原因 xff1a 1 使用的jdbc驱动与数据库版本不匹配引起的 xff0c 把版本改为一致 xff1b 2 可能是数据库的某个NUMBER类型的字段超出对应实体类属
  • firewalld防火墙

    一 xff0c 防火墙的分类 1 xff0c 软硬件形式 xff1a 软件防火墙 xff1b 硬件防火墙 xff1b 芯片级防火墙 2 xff0c 防火墙技术 xff1a 包过滤型 xff1b 应用代理型 3 xff0c 防火墙结构 xff
  • 《Linux内核设计与实现》

    文章目录 前言第1章 xff1a Linux内核简介第3章 xff1a 进程管理进程进程描述符及任务结构分配进程描述符进程描述符的存放进程状态设置当前进程的状态进程上下文切换进程家族树 进程创建写时拷贝fork 线程在linux中的实现创建
  • Python配置OpenCV

    一 背景 有个任务需要进行图像样本扩充 xff0c 本人想要使用cv2来帮忙扩充电脑重装过系统 xff0c 之前的环境都没有了参考之前自己写的博客 xff0c 使用Anaconda安装失败了 xff0c 一直显示下面的错误 xff0c 目前
  • 逆置整数(非数组)

    Description 读入一个非负整数N xff0c 请将它反向输出 Input 有多个测试用例 xff0c 每个测试用例占一行 xff0c 是一个非负整数 N xff08 0 N lt 231 xff09 Output 为每个测试用例输
  • 基于java学习安装jdk后环境配置正常也编译运行时出错

    安装了jdk和jre xff0c 环境配置也正常 xff0c 但是用DOS cmd命令 xff09 时分别输入java version和javac version xff0c 发现信息显示不一致 xff0c 出现两个版本的jdk 刚开始没觉
  • 第二周预习博客

    异常类型 Java通 过API中Throwable类的众多子类描述各种不同的异常 因而 xff0c Java异常都是对象 xff0c 是Throwable子类的实例 xff0c 描述了出现在一段编码中的 错误条件 当条件生成时 xff0c
  • 生产者-消费者问题

    在操作系统中 xff0c 生产者 xff0c 消费者问题是典型的pv操作问题 xff0c 实质上也是进程互斥与同步的问题 生产者 消费者问题的简单描述就是 xff0c 每一个生产者都要把自己生产的产品放进缓冲区内 xff0c 每一个消费者从
  • Linux重启命令

    Linux重启命令 下面介绍在 Linux 操作系统中重启和关闭相关的命令 xff1a shutdown reboot init halt poweroff systemctl xff0c 你可以根据需要来选择适合的 Linux 命令关闭或
  • 数据库小节1

    目录 数据库应用 概念 什么是数据库 关系型和非关系型 关系型数据库 Mysql数据库 MySQL数据存放在哪里 xff1f MySQL服务端 MySQL客户端1 xff1a DOS窗口 MySQL客户端2 xff1a 可视化工具 数据库的