掘友等级
获得徽章 0
#编程好朋友Trae# 分享一款免费的AI IDE Trae,支持多模型自由切换,更可自定义专属AI模型,加入我的邀请一起拿好礼,转发给技术搭子还有机会赢取大疆pocket3、Apple watch、雷蛇机械键盘等丰厚奖品,即刻体验>>
juejin.cn
#每天一个知识点#
哪些集合类是线程安全的?vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。statck:堆栈类,先进后出。hashtable:就比hashmap多了个线程安全。enumeration:枚举,相当于迭代器。
#每天一个知识点#
死锁是指两个及以上的进程在执行的过程中,由于竞争资源互不想让而造成一种阻塞的现象,若无外力作用,则无限陷入僵持的局面。
死锁条件
1、互斥条件:进程之间互斥使用资源,一个资源只能一个进程使用,一旦某个资源被使用,则需要使用该资源的进程就会等待。
2、请求与保持条件:一个进程因请求资源发生阻塞时,不释放已有的资源。
3、不剥夺条件:进程在未使用完资源之前,其他进程不能抢夺该进程的资源。
4、循环等待条件:一组进程之间形成一种头尾相连的等待资源关系。
解决方法
1、死锁预防:通过设置限制条件,破坏产生死锁的四个条件之一即可预防死锁的发生。
2、死锁避免:系统对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源;如果分配后系统可能发生死锁,则不予分配,否则予以分配。这是一种保证系统不进入死锁状态的动态策略。比较出名的有银行家算法。
3、死锁检测和解除:检测系统是否处于死锁状态,但处于死锁状态时,采取适当措施解除死锁
#每天一个知识点#
JDK、JRE、JVM之间的区别
jdk,Java标准开发包,它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境,以及常用的Java类库等。
jre,Java运行环境,用于运行Java的字节码文件。jre中包括了jvm以及jvm工作所需要的类库,普通用户只需要安装jre来运行Java程序,而程序开发者必须安装jdk拉编译、调试程序。
jvm,Java虚拟机,是jre的一部分,它是整个Java实现跨平台的最核心的部分,负责运行字节码文件。
#每天一个知识点#
在 Java 6 及以后的版本中,Java 支持自动装箱和拆箱的功能,该功能允许将基本数据类型自动转换为对象类型,以及对象类型自动转换为基本数据类型。自动装箱:将基本数据类型转换为对应的包装类对象。自动拆箱:将包装类对象转换为对应的基本数据类型。
#每天一个知识点#
HashSet实际上是一个HashMap实例,数据存储结构都是数组+链表。
HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value都是一个统一的对象PRESENT。
private static final Object PRESENT = new Object();
HashSet中add方法调用的是底层HashMap中的put方法,put方法要判断插入值是否存在,而HashSet的add方法,首先判断元素是否存在,如果存在则插入,如果不存在则不插入,这样就保证了HashSet中不存在重复值。
通过对象的hashCode和equals方法保证对象的唯一性。
#每天一个知识点#
Q: ThreadLocal和Synchronized关键字的区别?
A:
Synchronized是用时间的消耗,来换取数据同步以及互不冲突
ThreadLocal则是用空间的消耗,来换取数据之间互不冲突(不涉及同步)
#每天一个知识点# 为什么要使用克隆?如何实现对象克隆?深拷贝和浅拷贝区别是什么?
(1)什么要使用克隆?
想对一个对象进行复制,又想保留原有的对象进行接下来的操作,这个时候就需要克隆了。
(2)如何实现对象克隆?
实现Cloneable接口,重写clone方法;
实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深克隆。
BeanUtils,apache和Spring都提供了bean工具,只是这都是浅克隆。
#每天一个知识点# 值传递与引用传递:
值传递(call by value)是将变量的一个副本传递到方法中,方法中如何操作该变量副本,都不会改变原变量的值
引用传递(call by reference)是将变量的内存地址传递给方法,方法操作变量时会找到保存在该地址的变量,对其进行操作。会对原变量造成影响
#每天一个知识点# 什么是反射?
所谓反射,是java在运行时进行自我观察的能力,通过class、constructor、field、method四个方法获取一个类的各个组成部分。
在Java运行时环境中,对任意一个类,可以知道类有哪些属性和方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于反射机制。
下一页