计算机基础知识复习8.22

锁升级机制

无锁->偏向锁->轻量级锁->重量级锁

线程A进入synchronized开始抢锁,JVM会判断当前是否是偏向锁的状态,如果是就会根据Mark Word中存储的线程ID来判断,当前线程A是否就是持有偏向锁的线程,如果是,则忽略check,线程A直接执行临界区内的代码。如果Mark Word里的线程不是线程A,就会通过自旋尝试获取锁,如果获取到了,就将Mark Word中的线程ID改为自己,如果竞争失败了,就会立马撤销偏向锁,膨胀为轻量级锁。后续的竞争线程都会通过自旋来尝试获取锁,如果自旋成功那么锁的状态仍然是轻量级锁,然而竞争失败,锁会膨胀为重量级锁,后续等待的竞争的线程都会被阻塞

如何解决热key问题

在Redis集群架构中对热key进行复制,在Redis集群架构中,由于热key的迁移粒度问题,无法将请求分散至其他数据分片,导致单个数据分片的压力无法下降。此时,可以讲对应热key进行复制并迁移至其他数据分片,例如将热key apple复制到3个内容完全一样的key并名为apple1,apple2,apple3,将这三个key迁移到其他数据分片来解决单个数据分片的热key压力

什么是幻读

当同一个查询在不同的时间产生不同的结果集时,事务中就会出现所谓的幻想问题,例如select执行两次,但是第二次返回了第一次没有返回的行,则出现了幻读

接口和抽象类

实现接口的关键字是implements 继承抽象类的关键字extends, 一个类可以实现多个接口,一个类只能继承一个抽象类

接口中只有定义,不能有方法实现,而抽象类可以有定义与实现,方法可在抽象类中实现

接口成员变量默认为public static final必须赋初值,不能被修改,所有的成员方法都是public

抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值,抽象方法被abstract修饰,不能被private,static,synchronized修饰。

操作系统实现进程协作采用的方法

锁机制:任何想要进入临界区的线程,必须先执行加锁操作,若加锁操作顺利通过,则线程可进入临界区,在完成对临界区的访问后再执行解锁操作,以释放该临界资源

PV信号量:信号量表示资源的数量,通过P操作,使得信号量减一,当信号量<0 则线程进入阻塞等待状态。通过V操作使得信号量加1,当信号量<=0,唤醒一个等待中的线程。

参考资料:
小林coding

相关推荐
傻啦嘿哟5 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_933670795 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
yxlalm5 小时前
Spring AI+RAG 01-项目背景与技术选型
java·人工智能·spring
程序员清风6 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
李少兄6 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
天衍四九-6 小时前
MySQL中如何定位慢查询?如果SQL语句执行很慢,如何分析和优化?
数据库·sql·mysql
码事漫谈6 小时前
多人共用一个 key,缓存命中率会不会因此降低?
后端
-SOLO-6 小时前
开发笔记-摸鱼输入法
笔记
Seoyoneh6 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
海南java第二人6 小时前
对外 API 如何保证幂等性?插入数据 / 上传表格场景全方案汇总
java·幂等性