首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
JAVA
LetterZ
创建于2022-02-24
订阅专栏
JAVA
暂无订阅
共19篇文章
创建于2022-02-24
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
class.newInstance()方法从java9开始弃用
原因: 使用class.newInstance()方法时由默认构造函数中抛出的异常无法被捕获; 解决: 使用class.getDeclaredConstructor().newInstance()方法
JAVA对象内存占用
byte、boolean 1个字节 short,char 2个字节 int,float 4个字节 long,double 8个字节 对象头 8个字节 对齐:如果大小不是8的倍数,增加占用至8的倍数 S
JAVA ClassLoader命名空间
每个类加载器都对应一个命名空间,命名空间由该加载器及所有父类加载器所加载的类组成。 特点: 在同一个命名空间中,不会出现两个全类名(包名+类名)完全一样的类; 在不同的命名空间中,有可能出现全类名相同
JAVA 包装类
为了使基础类型拥有对象的特性,于是便有了包装类。 基本类型转换成对应的包装类型的过程称为装箱;包装类型转换成对应的基本类型的过程称为拆箱。 触发自动装箱的情况: 将基本类型赋值给包装类对象; 触发自动
JAVA synchronized锁升级
若对象为无锁状态,修改对象头中的锁状态为偏向锁,并在对象头中记录当前线程id; 若对象为偏向锁状态,检查对象头中的线程id是否与当前线程一致,如果一致则直接使用;如果不一致则尝试竞争; 检查对象头中记
JAVA CAS无锁算法
核心原理:先比较预期计算结果和当前计算结果,如果相同,则将当前值替换为预期计算结果(或当前计算结果),否则重新计算,重新比较。 例如:A,B两个线程同时修改一个变量v=1,分别对v执行加1操作,此时A
JAVA Thread stop弃用原因
该方法会立刻停止线程运行,放弃所有未执行的代码,包括在 catch 或 finally 语句中的,因此可能会导致任务清理工作无法完成,如文件流,数据库指针等的关闭。 该方法会释放该线程所有的资源监视器
JAVA 树状递归变换循环
主要思路:为避免递归函数的参数、状态积压在栈上,最终耗尽栈空间,参考了cps变换实现的思路。网上给出的cps尾调用,尾递归形成的链式函数,实质上就是返回部分结果和下一循环要执行的方法,个人感觉在阅读性
JAVA 反射修改static,final修饰的变量
调用对应Class的getDeclaredField或getField方法,获取要修改的Filed; 2个方法的差别在于: getDeclaredField可获取当前Class内所有变量名(priva
JAVA 1.7 多线程HashMap死循环
条件: 多线程同时保存数据,同时触发HashMap扩容; 存在某一节点上的链表内至少2个节点在新算的位置上相同; 原因: 1.7 HashMap采用头插法,以至于存入顺序与读取(保存链表内)的顺序相反
JAVA 死锁的条件
互斥条件:同一时间,同一资源,只能为一个线程锁持有,其他资源请求资源只能等待持有者释放; 请求和保持:线程请求其他资源时,其他资源已被持有,在等待资源释放的过程中,线程不会释放自己持有的资源; 不可剥
JAVA 8 Future
Future本身是一个接口,提供取消、查询取消、查询完成、获取结果、设置超时获取结果五个接口方法;默认提供了PendingFuture<V, A>、SwingWorker<T, V>、ForkJoin
JAVA clone与new之间比较
clone不调用构造函数,new调用构造函数; clone通过深拷贝或浅拷贝复制原对象属性值,new在执行构造函数和对象初始化的时候对属性赋值。 性能上面对差别主要在构造函数对耗时,若构造函数简单则n
JAVA finalize
此方法为Object内的protected,若方法被重载,则在JAVA GC准备回收次对象时,会先将此对象放入队列之中,由队列控制执行对象的finalize方法,当finalize方法执行结束后,该对
JAVA try catch finally
finally中包含return,最终返回finally中return的结果。 下面代码结果为4: try或catch中包含return,则return 的内容的地址在执行finally之前就已经固定
Java BigDecimal去除末尾多余的0
正常情况下直接使用 BigDecimal stripTrailingZeros()方式即可,但是,当数值等于0时,方法不再生效。原因在于其内部作了判断
JAVA 动态代理
动态代理属于设计模式中的代理模式,代理模式的定义为:为其它对象提供一种代理以控制对这个对象的访问控制;在某些情况下,客户不想或者不能直接引用另一个对象,这时候代理对象可以在客户端和目标对象之间起到中介
Java 8 StringJoiner
用于字符串的拼接,可快捷设置前缀,后缀,分隔符等。由其内部的StringBuilder完成拼接,属于非线性安全。 主要初始化方法如下: public StringJoiner(Char
Java线程池复用机制
线程复用的实质就是在Tread内的Runnable的run()方法中不断的获取任务,执行任务。 线程池内将保留核心线程数量的死循环线程,其余线程在没有任务时在超时间后若再无任务则销毁(run()方法执行结束)。 这个方法内主要做3件事情:①检查线程池状态;②判断是否支持任务等待…