![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前期
文章平均质量分 50
晓口口意
山有木兮木有枝,吾悦君兮君不知
展开
-
浅谈java多线程锁的升级
锁的升级定义问题什么是锁的升级为什么锁要升级锁升级的条件定义问题1、什么是锁的升级?2、为什么锁要升级?3、锁升级的条件?什么是锁的升级一般指当代码中用到synchornized时,线程获取锁时锁的性质从无锁->偏向锁->轻量级锁->重量级锁的升级过程为什么锁要升级synchornized(this) { //do something}在jdk1.2中,只要加了sync就是重量级锁(悲观锁),当线程执行到这一段代码时,会先判断该对象是否被其它线程占用,之后会去原创 2021-07-01 15:50:03 · 172 阅读 · 0 评论 -
逃离贫穷
资产和负债资产:让money流入你口袋的东西(租金大于月供的房;基金、股票、期权;书籍;投资自己;关注自己的健康)负债:让money流出你口袋的东西(每个月还贷款的房、车;名牌包包;看似资产实则负债)一个人想变富,只需不断买入资产,穷人买的更多的是负债,为一时的满足感。当然,事情不可能那么简单,很多世俗会阻止你买入资产,像成家就必须买房买车,不管是全款or贷款,你买入的都是负债,因为婚房自己住,就算几年内房价涨了你也不会卖,还有每个月的物业费、管理费…,车就更是了,买车之后每年的保险、保养、油费、洗车原创 2021-03-19 11:17:44 · 135 阅读 · 1 评论 -
Java阻塞队列BlockingQueue里add、offer、put,take、poll的区别
生产add、offer、put这3个方法都是往队列尾部添加元素,区别如下:add:不会阻塞,添加成功时返回true,不响应中断,当队列已满导致添加失败时抛出IllegalStateException。offer:不会阻塞,添加成功时返回true,因队列已满导致添加失败时返回false,不响应中断。put:会阻塞会响应中断。消费take、poll方法能获取队列头部第1个元素,区别如下:take:会响应中断,会一直阻塞直到取得元素或当前线程中断。poll:会响应中断,会阻塞,阻塞时间参照方法里参原创 2021-02-05 09:58:44 · 10344 阅读 · 0 评论 -
乐观锁、悲观锁、行锁、页锁、表锁、共享锁、排它锁、互斥锁归纳总结
有次面试被问到数据库锁,回答的比较含糊,相关概念分类没有理解透彻,特作此篇。先上图:乐观锁与悲观锁乐观锁:取数据时总是认为不会被修改,因此不上锁,但在更新时会判断数据是否被更改,适用于多读场景。常见案例有java atomic原子类,底层原理的cas机制(比较并交换)就是在更新时传入预期值、目标值,仅当其值等于预期值时才会更新;数据库write_condition机制大同小异,小异指的是数据库会给记录添加version(版本),根据版本号判断当前事务是否成功。悲观锁:取数据时总认为会被修改,固每每取原创 2021-02-02 11:52:15 · 418 阅读 · 0 评论 -
对数据库事务的理解
数据库事务主要作用ACID特性隔离级别事务问题主要作用保证1个或多个ddl从事务开始到结束之间的操作要么全部成功,要么全部失败。ACID特性1、 原子性:一个事务的操作要么全部成功,要么全部失败2、 一致性:事务中的执行顺序可被数据库引擎重排序,但最终结果一致3、 隔离性:事务里操作的数据是独立的,对外部不可见4、 持久性:每个操作都会保留操作日志,用于事务的回滚隔离级别以下隔离界别从低到高性能越来越差,性能换正确Read UnCommited:隔离级别最低,会出现脏读、幻读、可重复读原创 2020-12-15 09:04:43 · 115 阅读 · 0 评论