
1 foolishcrab 2024-02-26 18:38:00 +08:00 via iPhone 你还不如发下项目让大家问 |
2 morgan1freeman OP @foolishcrab 发啥项目? |
3 zuosiruan 2024-02-26 19:00:59 +08:00 java 需求最大,但相对的学的人也多。 |
4 yumenawei 2024-02-26 19:45:58 +08:00 via Android @morgan1freeman 应该是说简历的项目 |
5 cathub86 2024-02-26 19:47:27 +08:00 说下 mysql 什么时候页分裂 |
6 morgan1freeman OP @yumenawei CRUD 项目 没啥好问, |
7 morgan1freeman OP @cathub86 id 自增的话,看页的大小,分裂吧,id 不是自增的,看情况吧,毕竟 B+树 叶子节点 ,不是自增的 肯定分裂比自增的频繁 |
8 xiaoyukid 2024-02-26 20:12:44 +08:00 先 Java 简历都是爆仓 |
9 cathub86 2024-02-26 20:14:26 +08:00 @morgan1freeman 大佬 syn 锁升级后 并发结束 会做什么动作 会一直维持重锁状态(不管之后是不是并发请求) 直到程序死掉么 |
10 morgan1freeman OP @cathub86 #9 维持重锁?这个不是很理解啥意思,锁升级,不是一开始偏向锁,然后 cas 相关的 做一个标记没成功,然后出现第二个线程 开始竞争 就会自旋锁,至于如何竞争激烈,变成重量级锁, 这种重量级锁也不会让等待锁的线程死掉,只是线程因为锁进入内核态,等到锁释放的时候,系统的线程调度机制 会唤醒 等待这个锁的线程, 线程调度这块的话 需要看操作系统机制,反正没有得到锁的线程 会进入内核态,等待下次系统调度 |
11 wxm 2024-02-26 21:33:00 +08:00 同上海 Java ,不太乐观,有八股一同分享一下啊 MTg3MTAwNzg3Njk= |
12 chihiro2014 2024-02-26 21:42:39 +08:00 javaguide |
13 romisanic 2024-02-26 23:16:55 +08:00 来,给你个好东西: https://pdai.tech/ |
14 mayday1997 2024-02-27 08:56:58 +08:00 现在还考八股文吗,好像都在考场景题 |
15 hapeman 2024-02-27 10:56:27 +08:00 @morgan1freeman 应该是说 Synchronize 会不会有锁降级这个过程,Synchronize 是只有锁升级没有降级的;使用 RentrantReadWriteLock 可以手动实现锁降级(把持写锁,获取读锁,释放写锁),但是不能实现锁升级(把持读锁,获取写锁,释放读锁) |
16 morgan1freeman OP @hapeman 感谢,又学习到了 |
17 morgan1freeman OP @hapeman 因为之前了解过的 也没看到说有 降级的过程,而且通常来讲,降级并没有什么必要,竞争激烈的话,这种 data race 必然会再次出现,而且降级确实 我看不到使用场景, |
18 morgan1freeman OP @mayday1997 场景题 有没有 案例,老哥讲讲? |
19 cathub86 2024-02-27 11:13:30 +08:00 @morgan1freeman 竞争结束后 这个重锁 会一直维持重锁状态么 不管后续的是单线程 还是多线程 都是重锁状态 一直到 java 程序死掉 可以这样理解吗 |
20 morgan1freeman OP @cathub86 #19 可以理解 只有锁升级 ,没有锁降级哈,从计算机的角度来讲,确实没有必要自动降级,因为竞争激烈,下次大概率还是会竞争激烈,而且锁的性能消耗并不大的(自旋除外),即使后面不再竞争激烈(没有线程持有这个锁),突然有一个线程需要持有 这个 重锁(互斥量 操作系统提供的功能)性能消耗也是极其小的 所谓的锁升级 ,本身优化的场景就是 JVM 虚拟机在赌你 这个锁,不会有两个并行的线程 同时需要这个锁,因为大部分 Synchronize 代码块,可能这辈子都不会 升级成重量级锁 |
21 cathub86 2024-02-27 13:07:18 +08:00 @morgan1freeman 受教了 谢谢大佬 大佬几年了 |
22 anson2017 2024-02-27 13:45:06 +08:00 可以看看这个: 面试的资源导航 包含 web 前端、JAVA 、Go 、PHP 、C\C++、C#、移动端 ios 、安卓的面试题, 地址: https://github.com/AnsonZnl/interview-nav |
23 hapeman 2024-02-27 13:48:30 +08:00 @morgan1freeman #17 其实 Synchronize 有一个偏向锁撤销的过程会短暂的回到无锁状态(我个人感觉这一步可以称之为降级),但是这个场景是在其它线程尝试获取偏向锁并且原来拥有偏向锁的线程已经不活动的状况下,在这之后又会升级成偏向锁,但是一般好像不会前面这一半过程称为锁降级,因为他立马又变回了偏向锁 |