== 什么情况下成立?缓存的是什么? 还有哪些类似Integer这样的数据结构?
时间: 2023-06-09 16:04:16 浏览: 50
您的第一个问题不够明确,请您具体说明成立是指什么。关于缓存,通常用于临时存储数据或结果,以减少重复计算或访问时间。除了Integer,还有其他像Float、Double、Long等数据结构。 请问您还有其他问题吗?
相关问题
Spring的三级缓存是什么?每级缓存的数据结构是什么
Spring 的三级缓存是指 BeanFactory 中的三个缓存,分别是 singletonObjects、earlySingletonObjects 和 singletonFactories。其中 singletonObjects 缓存已经完全初始化的单例对象,earlySingletonObjects 缓存已经创建但是还未完全初始化的单例对象,singletonFactories 缓存用于存储创建单例对象的工厂方法。
每个缓存的数据结构如下:
- singletonObjects 缓存为 ConcurrentHashMap,其中 key 是单例对象的名称(可以通过 BeanDefinition 中的 beanName 属性指定),value 是具体的单例对象。
- earlySingletonObjects 缓存为 ConcurrentHashMap,其中 key 是单例对象的名称(同上),value 是 ObjectFactory 对象。ObjectFactory 是一个函数式接口,可以用于延迟获取单例对象,避免由于循环依赖导致无限循环。
- singletonFactories 缓存为 ConcurrentHashMap,其中 key 同样是单例对象的名称,value 是创建单例对象的工厂方法,可以通过 BeanDefinition 中的实例化方法指定。
注意,这里的三级缓存只适用于默认情况下的 singleton 作用域,其他作用域可能使用不同的缓存策略。
Integer a = 100. Integer b =100 , a==b?
答案是 true。在 Java 中,对于 Integer 类型的变量,如果它们的值在 -128 到 127 之间,那么它们会被缓存起来以提高性能。因此,当 a 和 b 的值都等于 100 时,它们都指向了缓存中的同一个对象,所以 a == b 的结果是 true。但是,如果 a 和 b 的值超出了缓存范围,那么它们将指向不同的对象,此时 a == b 的结果将为 false。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)