MySQL设计三大范式
第一范式:
1.每一列属性都市不可再分的属性值,确保每一列的原子性
2.两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据
第二范式:
1.每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就把表拆分开来
第三范式:数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系
MySQL事务四大特性
原子性(Atomicity):
事务就像"原子"一样,不可被分割,组成事务的DML操作语句要么全成功,要么全失败,不可能出现部分成功部分失败的情况。
一致性(Consistency):
一旦事务完成,不管成功的,还是失败的,整个系统处于数据一致的状态。
隔离性(Isolation):
一个事务的执行不会被另一个事务所干扰。比如两个人同时从一个账户取钱,通过事务的隔离性确保账户余额的正确性。
持久性(Durability):
也称永久性,指事务一旦提交,对数据的改变就是永久的,不可以再回滚。
MySQL五大约束
1.主键约束:唯一性,非空性
2.唯一约束:唯一性,可以空但只能有一个
3.默认约束:该数据的默认值
4.外键约束:需要建立两表之间的关系
5.非空约束:设置非空约束,该字段不能为空
java多线程
1.什么是多线程?
线程可以理解为在进程中独立运行的子任务
多线程就是一个进程之中有多个线程
2.多线程的优势?
解决了多部分同时运行的问题,提高效率
3.线程的弊端?
线程太多会导致效率的降低,因为线程的执行依靠的是CPU
4.如何实现多线程?同步实现的方法有哪几种?
1.如何实现多线程
a.继承Thread类
b.实现Runnable接口
2.同步实现的方法有哪几种?
a.sychronized
b.wait
c.notify
5.sleep()和wait()有什么区别?
sleep会暂停此线程,让其他线程优先执行但到时后会自动恢复;wait将会让此线程进入等待锁定池,只有针对此对象发出notiy方法才会再次进入运行状态
6.请你说出所知道的线程同步方法
1.wait():是一个线程进入等待状态,并释放所持有的对象lock
2.sleep():是一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常
3.notify():唤醒一个处于等待状态的线程
4.notityAll():唤醒所有处于等待状态的线程
7.启动一个线程用run()还是start()?
start()方法
run()方法可以产生必须退出的标志来停止一个线程
8.java线程有哪几种基本状态?
运行>就绪>挂起>结束
Vue
1.Vue是什么?
Vue是一套前端开发框架,用来提高开发效率,增强开发体验
2.在项目开发中为什么要用Vue?
在传统Web项目中我们搭建的项目都以html为基础,一旦项目改动或项目工程过大,代码的修改将及其繁琐,用Vue的话这些问题都不复存在
3.Vue在Web开发中有什么优势?
1.数据绑定:vue会根据对应的元素,进行设置元素数据,实时绑定,在数据渲染及获取数据是及其方便。
2.组件式开发:通过Vue的模块封装,他可以将各个模块进行拆分,变成单独的组件,然后通过数据绑定,调用对应模块组件,同时传入参数,即可完成对整个项目的开发
Rest风格
1.Rest规范
a.强调HTTP应当以资源为中心,并且规范了资源URL的风格
b.规范了HTTP请求动作(put,post等)的使用,具有对应的语义
2.遵循Rest有什么好处?
a.URL可读性很强,具有自描述性
b.资源描述与视图松耦合
c.可提供的OpenAPI,便于第三方系统集成,提高互操作性
d.如果提供无状态服务接口,可提高应用的水平扩展性
3.基本概念
Rest是一种软件架构模式,核心概念包括:
a.资源:URL
b.表现:URl返回的值
4.Rest操作:
Post:新增
Delete:删除
Get:查询
PUT:修改
锁
1.加锁方式
a.Synchronized关键字
b.显示Lock
Git和Svn
1.Git是什么?
开源的分布式版本控制系统,可以有效、高速的出来很小到非常大的项目版本管理
2.Git和Svn的区别
Git是分布式版本控制器,代码提交到本地,可以联网push到远程服务器也可以从服务器pull到本地
Svn是集中式版本控制器,代码提交都需要提交到远程服务器上需要一直联网
Git没有中心服务器的概念,每一个Git客户端都含有一个完整的代码仓库