java 数据库脏读_Java基础

  1. 原子性是基础,持久性是目的,隔离性是手段,一致性是约束。
  2. 数据库的4个隔离级别:
    READ UNCOMMITED 读未提交,有脏读、不可重复读、幻读发生;
    READ COMMITED 读已提交,避免脏读发生,有不可重复读、幻读发生;
    REPEATABLE READ 可重复读,避免脏读、不可重复读,有幻读;
    SERIALIZABLE 串行化,可避免脏读、不可重复读、幻读的发生,但性能影响较大;

a、不可重复读:在做修改操作时,同一个事务下,第一次读取的数据与第二次读取的数据不一样

b、幻读:发生在新增或者删除(重点是数据条数的变化),同样的条件下,第一次和第二次读取的数据条数不一样


  1. synchronized 给方法、代码块加锁,jvm自动释放:

修饰成员方法,默认锁对象是当前对象

修饰静态方法时,默认锁对象是当前类class对象

修饰代码块时,可以自己设置锁对象

2. lock只能给代码块加锁,自己手动加锁和释放


1.springcloud基本认识:

什么是springcloud?解决了什么问题?

2. 保证消息不丢失

7156802f79508a7e4371103a0932f4c8.png

3.Redis消息队列提供的延迟队列

6189af831952c298a46a4520c4e8e08d.png

JUC

1.Volatile(轻量级的同步机制):可见性、不保证原子性、禁止指令重排

JMM(Java内存模型)

  1. 可见性:线程B可以获取线程A所修改的数据值

8226f7c546ea7419d0a8ce955b1237c6.png

2. 不保证原子性:不可分割,完整性,某个线程做某个具体业务时,中间不允许被加塞或者被分割。需要整体完整要么成功,要么同时失败。

11b14e7dbaf3d35aa161a029b071593b.png

如何解决原子性?

加sync

直接使用juc下atomic类

3. Volatile禁止指令重排

32ac210faf7caae7be6fc2a91b87ff71.png

1a1eddc5154940424fc8b96ee343a615.png

e1f240561b930a9ca4f2b625d9d4ae5a.png

4.线程安全性获得保证

7573bf83ca79fb3a1aa33f9fbc6d8dfc.png

5.并发环境下,以前的单例模式不是一个对象的情况:

ae345dd51d663958cd8d9a5a8fb56745.png

使用synchronized可以解决

f4e1dacee4ac59996f1cb9b80f5805cd.png

使用DCL模式(Double Check Lock 双端检索机制)

a390869396a802261415d60a55defc2c.png

398aaa9def279c60917e7eddd873cd1f.png

堆:管存储

栈:先进后出,管运行,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值