java复习提纲

-、数据库设计三大范式
   1.第一范式,保证字段的原子性,字段不可再分(只满足该范式,引起的问题,无法单独添加某些数据)
   2.第二范式,非主属性对主属性的部分函数依赖(不满足demo:<A,B>--C,<A-C>)
   3.第三范式,非主属性间的传递函数依赖(A--B--C)
   4.BCNF:主属性间存在部分函数依赖和传递函数依赖(仓库:(仓库名,管理员,物品名,数量),仓库名 → 管理员,管理员 → 仓库名,(仓库名,物品名)→ 数量码:(管理员,物品名),(仓库名,物品名)主属性:仓库名、管理员、物品名非主属性:数量)

二、数据库的隔离级别
    脏读 :B读到了A尚未提交的数据
    不可重复读:一个事务两次读取内容不一致,不可重复度是指在对于数据库的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务给修改并提交了
    幻读:一个事务批量修改了某张表,另一个事务修改了一行数据,事务一发现这一行数据没有做修改的幻觉
    
    读未提交
    读已提交     --Oracle 
    可重复读     --Mysql默认
    串行化 

三、实现原理
    共享锁:共享锁也叫读锁(Shared Lock),简称S锁,原理:一个事务获取了一个数据行的共享锁,其他事务能获得该行对应的共享锁,但不能获得排他锁,即一个事务在读取一个数据行的时候,其他事务也可以读,但不能对该数据行进行增删改。
    排它锁:排他锁也叫写锁(Exclusive Lock),简称x锁,原理:一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁(排他锁或者共享锁),即一个事务在读取一个数据行的时候,其他事务不能对该数据行进行增删改查。
    读未提交:(1)事务对读取的数据行不加锁 (2)事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加行级共享锁,直到事务结束才释放。
    读已提交:(1)事务对当前被读取的数据加行级共享锁(当读到时才加锁),一旦读完该行,立即释放该行级共享锁。(2)事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加行级排他锁,直到事务结束才释放。
    不可重复读:(1)事务在读取数据时,必须先对其加表级共享锁 ,直到事务结束才释放。(2)事务在更新数据时,必须先对其加表级排他锁,直到事务结束才释放。
    串行化:dml/dql表级排它锁
-----------------------------------------------------
基本的sql查询
DDL:数据库定义语言 create
DQL:数据库查询语言 select
DML:数据库操作语言 insert update delete
DCL:数据库控制语言 gant commit rollback 
-----------------------------------------------------
mysql索引
简单索引
1.CREATE INDEX indexName ON mytable(username(length));
2.ALTER mytable ADD INDEX indexName(username(13))
3.CREATE TABLE mytable(  
ID INT NOT NULL,   
username VARCHAR(16) NOT NULL,  
INDEX [indexName] (username(length))  
); 
唯一索引(索引键必须唯一)
加一个UNIQUE
主键索引(定义主键自动创建索引)
PRIMARY KEY(ID) 
组合索引(最左前缀)
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age); 
-----------------------------------------------------
sql优化:避免查询无用字段,用like XXX%  代替 %XXX%,不用not in->exists(子查询),in->between(连续数值),
         or->union,尽量不要在 where 子句中对字段进行表达式操作如where num/2=100 ->num,
         where条件里尽量不要进行null值的判断(设置默认值=0),where后面尽量避免1=1,避免大事务操作
数据库优化:分库,分表,读写分离
索引:
-----------------------------------------------------
数据库连接池:
-----------------------------------------------------
事务的特性:原子性(要么全部成功,要么全部失败),一致性(A-B互相转账总金额保持不变),隔离性,持久性
spring事务是依据运行时异常来回滚
运行时异常
一般异常

分布式事务:
redis:
-----------------------------------------------------
i/o,字符流,字节流,转换流
-----------------------------------------------------
多线程,线程池,同步互斥机制
-----------------------------------------------------
scoket编程
-----------------------------------------------------
网络分层结构,http/https
-----------------------------------------------------
设计模式
-----------------------------------------------------
jvm内存结构,垃圾回收,调优
-----------------------------------------------------
spring/mybatis/springMvc
-----------------------------------------------------
springCloud 
-----------------------------------------------------
消息队列,原理,类型以及遇到的问题和对应的解决方案
-----------------------------------------------------
ELK
-----------------------------------------------------
Linux文件结构,基础命令
-----------------------------------------------------
ngnix负载均衡,转发配置
-----------------------------------------------------
jenkins + Git + Docker
-----------------------------------------------------
云计算相关知识
-----------------------------------------------------


    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值