- 博客(8)
- 收藏
- 关注
原创 为什么 switch 语句比 if-else 语句更快?
总得来说,由于跳转表的存在,CPU 在执行switch语句时需要进行的条件判断次数可能更少,因此switch语句的执行效率一般高于if-else。
2024-09-04 09:10:03
488
1
原创 JVM DNS 缓存配置
域名解析并非一个简单的过程,其解析结果可能会被层层缓存,如浏览器 DNS 缓存、操作系统 DNS 缓存、ISP 的 DNS缓存,容易被忽略的是 JVM 本身也会对 DNS 进行缓存。启动程序,开始打印域名对应 IP 后,立刻修改 /etc/hosts,将。其中 cachePolicy 初始值为 -1,表示缓存永不失效。在 15 秒后,对 host 映射的修改才反应出来。在 10 秒后,对 host 映射的修改才反应出来。中体现,反编译后,有如下代码。
2024-09-04 00:40:40
1261
原创 Java volatile 原理解析
用 volatile 修饰的变量能够保证其对所有线程的可见性,要理解这一点,我们首先需要了解 Java 的内存模型。
2024-09-04 00:38:12
1075
原创 Java 类加载机制分析
/ 传入 .class 文件的绝对路径,加载 Class// 重写了 findClass 方法@Overrideif (!= -1) {
2024-09-04 00:35:36
1968
原创 Java 序列化Serializable 及 transient 关键字解读
java 中的 Serializable 接口是用于实现对象的功能。那么什么是序列化和反序列化呢?通过序列化,能够将当前 java 对象保存至文件,或通过网络传输,并在需要时通过反序列化进行恢复。
2024-09-04 00:31:19
516
原创 你所不知的 java 枚举
枚举常量都是 static 类型的,在枚举类加载完成后,会进行枚举常量的初始化,之后枚举类无法再实例化和修改。java 的类加载、初始化过程是线程安全的,因此创建一个 enum 是线程安全的。从编译器、JVM,再到 java 内部设计,层层把关,封死了实例化枚举类的这一企图。,并且显示定义的枚举构造函数经编译器后,都会被添加 name 和 ordinal 2个参数,用以调用父类 Enum 的构造函数。其次,所有的枚举都继承了一个基类 Enum ,该基类为枚举提供了一些通用方法。
2024-09-04 00:26:40
901
原创 为什么不能在foreach循环中修改集合?
阿里巴巴JAVA开发手册》中有这样一条:不要在 foreach 循环里进行元素的 add / remove 操作,remove 元素使用 Iterator 方式。经测试,当在 foreach 循环中 add / remove 集合元素,可能会抛出 ConcurrentModificationException 异常,下面介绍进行详细说明。
2024-09-04 00:20:20
2145
1
原创 java8 lambda 表达式详解
function 包下的部分接口使用了泛型,具有很强的通用性,在自定义函数式接口前,不妨去这个包下找找有没有能用的。lambda 表达式的参数可以通过上下文推断,如果需要显示声明一个参数的类型,则必须为所有的参数声明类型。在执行 lambda 表达式时,会自动创建一个实现了目标函数式接口的类实例,该类实例是一个匿名内部类。: 在 Java 8 之前,接口的所有方法都是抽象方法,在 Java 8 中新增了接口的默认方法。函数式接口是仅含一个抽象方法的接口,但可以指定 Object 定义的任何公有方法。
2024-09-04 00:17:41
2148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅