why哥被阿里一道基础面试题给干懵了,一气之下写出万字长文。 (5)

简介: why哥被阿里一道基础面试题给干懵了,一气之下写出万字长文。 (5)

怎么定义稀疏


所以,在 switch 里面,我们怎么定义稀疏呢?


文档中没有写。



文档里没有写的,都在源码里面。


于是我搞了个 openJDK,我倒要看看源码里面到底什么是 TMD 稀疏。


经过一番探索,找到了这个方法:


com.sun.tools.javac.jvm.Gen#visitSwitch


这里我不做源码解读,我只是想单纯的知道源码里面到底什么 TMD 是 TMD 稀疏。


image.png


image.png


断点时候时候各个参数如下:


image.png


标号为 ① 的地方是代表我们确实调试的是预期的程序。


标号为 ② 的地方我们带入到上面的表达式中,可以求得最终值:


image.png


hi 是 case 里面的表达式对应的最大值,也就是 2。


lo 是 case 里面的表达式对应的最小值,也就是 0。


nlabels 代表的是 case 的个数,也就是 3。


image.png


所以带入到上面的代码中,最终算出来的值 16<=18,成立,使用 tablewitch。


这就叫不稀疏。


假设我们把最后一个 case 改为 5:


image.png


image.png


最终算出来的值 19<=18,不满足,使用 lookupswitch 。


这叫做稀疏。


所以现在我们知道了到底什么是 TMD 稀疏。


在源码里面有个公式可以知道是不是稀疏的,从而知道使用什么指令。


写到这里我觉得其实我应该可以住手了。


但是我还在《Java 虚拟机规范》的文档里面挖到了一句话。我觉得得讲一下。


switch表达式支持的类型


在《Java 虚拟机规范》文档中的这一部分,有这样的一句话:


image.png




目录
相关文章
|
13天前
|
Python 开发工具
2024年Python最全使用Python实现音频双通道分离,2024年最新阿里p7面试难度
2024年Python最全使用Python实现音频双通道分离,2024年最新阿里p7面试难度
2024年Python最全使用Python实现音频双通道分离,2024年最新阿里p7面试难度
|
14天前
|
PHP Python
最新【Python】 实现循环最快的方式_python while循环加速,2024年最新阿里php面试题
最新【Python】 实现循环最快的方式_python while循环加速,2024年最新阿里php面试题
|
14天前
|
机器学习/深度学习 Python 算法
最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
|
14天前
|
数据采集 SQL 数据挖掘
2024年8个Python高效数据分析的技巧_python 数据分析 效率,2024年最新阿里社招p7面试几轮
2024年8个Python高效数据分析的技巧_python 数据分析 效率,2024年最新阿里社招p7面试几轮
|
7天前
|
设计模式 Oracle Java
阿里面试:NIO为什么会导致CPU100%?
在 Java 中总共有三种 IO 类型:BIO(Blocking I/O,阻塞I/O)、NIO(Non-blocking I/O,非阻塞I/O)和 AIO(Asynchronous I/O,异步I/O),它们的区别如下: 1. 在 JDK 1.4 之前,只有 BIO 一种模式,其开发过程相对简单,新来一个连接就会创建一个新的线程处理,但随着请求并发度的提升,BIO 很快遇到了性能瓶颈。 2. 所以在 JDK 1.4 以后开始引入了 NIO 技术,NIO 可以在一个线程中处理多个 IO 操作,提高了资源的利用率和系统的吞吐量。 3. 而到了 JDK 1.7 发布了 AIO 模型,它可以实现当线
23 0
|
12天前
|
算法 Java 应用服务中间件
阿里面试:说说自适应限流?
限流想必大家都不陌生,它是一种控制资源访问速率的策略,用于保护系统免受过载和崩溃的风险。限流可以控制某个服务、接口或系统在一段时间内能够处理的请求或数据量,以防止系统资源耗尽、性能下降或服务不可用。 常见的限流策略有以下几种: 1. **令牌桶算法**:基于令牌桶的方式,限制每个单位时间内允许通过的请求量,请求量超出限制的将被拒绝或等待。 2. **漏桶算法**:基于漏桶的方式,限制系统处理请求的速率,请求速率过快时将被限制或拒绝。 3. **计数器算法**:通过计数器记录单位时间内的请求次数,并根据设定的阈值进行限制。 通过合理的限流策略,可以保护系统免受恶意攻击、突发流量和资源
29 4
阿里面试:说说自适应限流?
|
13天前
|
Python
2024年最全用Python写了一个电子考勤系统_用python写一个宿舍考勤系统,2024年最新1307页阿里Python面试全套真题解析在互联网火了
2024年最全用Python写了一个电子考勤系统_用python写一个宿舍考勤系统,2024年最新1307页阿里Python面试全套真题解析在互联网火了
|
13天前
|
SQL 分布式计算 前端开发
2024年最全用python写一个自动生成春联的软件,打包exe,2024年最新阿里p8面试题和答案
2024年最全用python写一个自动生成春联的软件,打包exe,2024年最新阿里p8面试题和答案
2024年最全用python写一个自动生成春联的软件,打包exe,2024年最新阿里p8面试题和答案
|
14天前
|
Python
2024年最新【Python从零到壹】Python模块介绍与使用(1),2024年最新阿里面试场景题
2024年最新【Python从零到壹】Python模块介绍与使用(1),2024年最新阿里面试场景题
2024年最新【Python从零到壹】Python模块介绍与使用(1),2024年最新阿里面试场景题
|
14天前
|
数据采集 数据安全/隐私保护 Python
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题