6.26
一、座右铭
我的故事你说,我的文字我落,我值几两你定,我去何方我挑。
二、知识回顾
2.1 Java多线程
2.1.1 一些概念知识
程序、进程、线程
单核CPU和多核CPU
并行和并发
2.1.2 多线程的创建方式
- 继承Thread类,重写run方法
- 实现Runnable接口,重写run方法
- 实现Callable接口,重写call方法
- 使用线程池
- 缓存线程池
- 单例线程池
- 固定容量的线程池
- 调度线程池:schedule(Runnable|Callable,long time,Timeunit)
execute(Runnable) submit(Callable)
多线程的运行都需要借助Thread类的start方法来开启一个多线程
两个问题
- 继承和实现创建的多线程有什么区别
1、继承只能单继承、实现可以多实现
2、继承体系下多线程数据共享操作比较麻烦 实现体系下多线程数据共享操作比较简单
- Runnable和Callable两个的区别
1、run方法没有返回值、call方法是有返回值的
2、run方法不能抛出异常,有异常只能捕获 call方法可以抛出异常
2.1.3 多线程的生命周期
新建、就绪、运行、阻塞、死亡
2.1.4 多线程的数据同步–多线程数据共享问题
多线程中哪些数据是可以共享的?堆区或者元数据区
多线程操作共享数据的时候,因为抢占时间片机制,导致数据出现问题
三种解决方案
- 同步代码块
- 同步方法
定义同步监视器–锁的钥匙
Java中所有类的对象都可以当同步监视器
- 显式的上锁和解锁
2.1.5 多线程的线程通信
多个线程之间相互通信交流,依次占用CPU进行运行
wait、notify、notifyAll
多线程之间如果要进行通信,必须保证多线程之间的同步监视器也是同一个
sleep\wait方法
- sleep方法是Thread类,wait方法是Object类
- sleep方法会带着锁去阻塞,wait方法会释放了锁再进入阻塞状态
三、数据库
3.1 分类
3.1.1 关系型数据库管理系统:RDBMS
- 存储结构化数据
- MySQL
- Oracle
- SQL Server
3.1.2 非关系型数据库管理系统:NoSQL
- 存储非结构化数据
- Redis
- mongodb
- hbase
3.2 连接MySQL服务
mysql -uusername -ppassword -Pport
使用到一款工具–数据库可视化工具,给数据库提供了一个可视化操作的界面(navicat、sqlyog、dbeaver…)
3.3 SQL语言
3.3.1 SQL语言概念
SQL语言全称是Structured query language,结构化查询语言,是RDBMS提供的用来管理数据库、数据表、表数据的一个工具
3.3.2 DDL语言
DDL语言:数据定义语言-库和表的管理语言
-
负责创建、删除、修改、查询数据库和数据表
-
库的管理操作
-
创建数据库:
create database if not exists database_name charset "编码集";
-
修改数据库:改数据库的编码集
alter database database_name character set "编码集";
-
查询MySQL中数据库的相关信息
show databases;
show create database database_name;
-
删除数据库
drop database if exists database_name;
数据库一旦删除,数据库中表全部删除了
-
-
表的管理操作
-
创建数据表create table if not exists table_name( 字段名 字段类型 字段约束 comment “注释”, 字段名 字段类型 字段约束 comment “注释”, … )engine=“存储引擎”,charset=“编码集”;show engines;
-
mysql常见的字段类型
类型 整数型 tinyint smallint mediumint int/integer bigint 小数型 float double(num,num) 字符串类型 char(num) varchar(num) text blob/tinyblob 时间日期类型 datetime timestrap 两种特殊的类型 enum set -
mysql字段约束:限制数据的格式
-
-
格式名 说明 主键约束 外键有个特点:外键两张表的关联关系主表,
从表,主表的主键是从表中外键
如果主表的数据不存在,那么从表无法添加数据
如果从表的数据不删除,那么主表的数据也不能删除
foreign key外键约束 primary key 唯一约束 unique 限制数据再当前列只能出现一次 非空约束 not null 限制数据在添加时,必须添加数据 默认约束 default 值 如果在添加数据时,没有添加改字段值,会给我赋予一个默认值 检查约束
(mysql8版本以后才生效)check(条件) 限制数据的填充规范
-
主键约束:表级约束来添加
外键约束、唯一约束、非空约束、默认约束、检查约束:列级约束来添加
-
-
数据库的设计三范式
- 创建数据表的时候,表的设计规则–业界默认规则
- 第一范式1NF:原子性,设计表的时候,表中的字段满足不可在被分割的原则
- 第二范式2NF:唯一性,表中的每一行数据在数据表中是唯一的,设置主键,给每一行数据必须得有一个主键来维护它的唯一性,每一行数据的非主键字段必须依赖于主键字段,主键字段一般是和业务字段无关的字段,主键在表中唯一的。 因为主键是和业务字段无关的,因此主键的值没有特殊要求的,一般唯一即可,所以主键一般都是整数类型的自增字段(标识列)
- 第三范式3NF:消除冗余,表中非主键字段必须直接依赖于主键字段,设置外键
-
3.3.3 DML语言
DML语言:数据操纵语言–表数据的增加、删除、修改操作
增加表数据
1、insert into table_name(表字段列表) values(值列表),(值列表)
3.3.4 DQL语言
DQL语言:数据查询语言–查询表数据文章来源:https://www.toymoban.com/news/detail-503263.html
3.3.5 DCL–TCL语言
DCL–TCL语言:数据控制语言–负责数据库的事务操作文章来源地址https://www.toymoban.com/news/detail-503263.html
今日数据库代码示例
-- 1、创建数据库
create database if not exists school charset 'utf8';
-- 2、修改数据库的编码集
alter database school character set "gbk";
-- 3、查看数据库的创建细节
show create database school;
-- 4、删除数据库
drop database if exists school;
-- 5、查询MySQL支持的所有的存储引擎
show engines;
USE school;
-- 6、创建一个院系表:院系id,院系名字,院系领导,院系的地址,院系简介,院系的专业个数
create table if not exists department(
department_id int primary key auto_increment comment "院系id 院系的主键",
department_name varchar(255) not null unique comment "院系名",
department_leader varchar(255) default "",
department_address varchar(255),
department_intro text,
major_number int not null check(major_number >0)
)engine="innodb",charset="UTF8";
-- 7、学生表:学生id,学生姓名 学生年龄 学生学号 学生手机号 学生的院系id
create table if not exists student(
student_id int primary key auto_increment comment "学生id 学生的主键",
student_name varchar(255) not null comment "学生名",
student_age int not null check(student_age > 15 and student_age < 150),
student_sno varchar(20) not null unique,
student_phone varchar(20) unique,
student_department_id int,
constraint fk1 FOREIGN key(student_department_id) references department(department_id)
)engine="innodb",charset="UTF8";
-- 院系表增加数据
insert into department(department_name,department_leader,department_address,department_intro,major_number) values("数学系","数老师","学院路3号","数学系",3),("体育学院","体老师","学院路3号","体育系",3);
insert into student values(2,"xjq",20,"s002","15766666667",1);
create table demo(
sex enum('男','女'),
hobby set('唱歌','jump','rap'),
time datetime
)
insert into demo values('男','jump,rap','2023-10-01')
到了这里,关于实训笔记6.26的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!