- 博客(8)
- 收藏
- 关注
原创 java程序初始化顺序
父类静态变量父类静态代码块子类静态变量子类静态块父类非静态变量父类非静态代码块父类构造方法子类非静态变量子类非静态代码块子类构造器。
2024-09-13 00:07:04
300
原创 Java基本数据类型存储在哪里
这些规则适用于基本数据类型的默认值,当声明这些变量时,如果没有显式地赋值,Java会给它们赋予一个默认值(例如`int`为0,`boolean`为`false`,`Object`引用为`null`)。3. **静态成员变量**(类级别的变量,通过类名直接访问):静态变量也存储在堆中,但是它们是在方法区(Method Area,有时也被称作永久代,在JDK 8之后,永久代被元空间(MetaSpace)所替代)的一部分,这部分内存用来存储类的信息以及静态变量。
2024-09-12 15:37:32
637
原创 redisson看门狗机制
Redisson的WatchDog机制是Redisson提供的监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期。当一个拿到锁的线程一直没有完成逻辑,那么看门狗会帮助线程不断的延长锁超时时间,锁不会因为超时而被释放。默认情况下,看门狗的续期时间是30s,也可以通过修改Config.lockWatchdogTimeout来另行指定。
2024-09-11 22:38:56
732
原创 java为什么泛型类型参数必须是引用类型,而不能是基本类型
Java的泛型在编译时进行类型擦除,这意味着在运行时,泛型类型参数会被替换为它们的边界类型(如果没有指定边界,则替换为Object)。:在类型擦除后,泛型类型参数会被替换为它们的边界类型。对于基本类型,边界类型是Object,而包装类型有明确的边界类型。在Java中,泛型类型参数必须是引用类型,而不能是基本类型。这是因为泛型在编译时进行类型擦除,而基本类型在类型擦除后无法恢复。总之,由于Java泛型的类型擦除机制,基本类型不能作为泛型类型参数,而必须使用包装类型。
2024-09-10 20:17:28
398
原创 java中Map接口的实现类底层如何存储数据(简述)
Map接口的实现类(如HashMapTreeMap等)底层使用哈希表结构来存储键值对,使用链表和红黑树来解决哈希冲突。java 8开始,HashMap哈希冲突的解决采用链表 + 红黑树的方案。当某个槽位的链表长度达到8,这个槽位的链表会转化为红黑树。
2024-09-09 22:38:37
289
原创 ThreadLocal为什么value不也设置成弱引用?
ThreadLocalMap`的`value`使用强引用是为了确保线程局部变量的值可以被访问到,同时避免内存泄漏。虽然线程结束时`ThreadLocalMap`中的`value`会被自动清除,但为了防止内存泄漏,建议在不再需要使用`ThreadLocal`时,手动调用`ThreadLocal`的`remove()`方法来清除`value`。
2024-09-08 22:35:31
641
1
原创 java如何重写hashCode()和equals()
在Java中,`hashCode()`和`equals()`方法是`Object`类中的两个方法,用于比较对象是否相等。为了正确地使用`Map`、`Set`等集合类,通常需要重写这两个方法。`hashCode()`方法用于返回对象的哈希码,它决定了对象在哈希表中的位置。重写`hashCode()`方法时,应该遵循以下原则:1.:在同一个程序执行期间,只要对象的`equals()`方法使用的属性没有改变,那么多次调用`hashCode()`方法应该返回同一个哈希码。2.
2024-09-08 21:39:25
296
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人