深入理解sun.misc.Unsafe原理

前言Unsafe类在JDK源码中被广泛使用,在Spark使用off-heap memory时也会使用到,该类功能很强大,涉及到类加载机制(深入理解ClassLoader工作机制),其实例一般情况是获取不到的,源码中的设计是采用单例模式,不是系统加载初始化就会抛出SecurityException异常
2024年01月27日 616次浏览

JVM中的动态分派机制到底是怎么回事?

方法调用方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍、最频繁的操作,但前面已经讲过,Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都
2024年01月24日 583次浏览

JAVA-Benchmark-工具JMH

为什么需要Benchmark工具如果想要知道一段代码的性能如何,一种常用的做法可能是这样的:long start = System.currentTimeMillis();// do something ...System.out.println(System.currentTimeMillis()
2024年01月22日 525次浏览

Lambda表达式是如何设计的

Lambda表达式是如何设计的转载自布赖恩·戈茨的Translation of lambda expressions in javac引言阅读本文需要对invokedynamic指令知识有所了解:Invokedynamic转换策略在字节码中表示Lambda表达式有多种方案,例如内部类、方法句柄、动态
2024年01月12日 536次浏览

字节序、大端字节序(Big Endian)、小端字节序(Little Endian)

字节序,简单来说,指的是 超过一个字节的数据类型在[内存]中存储的顺序 有几种字节序? 大端字节序(Big Endian) 高位字节数据存放在内存低地址处,低位字节数据存放在内存高地址处。 小端字节序(Little Endian) 高位字节数据存放在内存高地址处,低位数据存放在内存低地址处。
计算机 2023年12月24日 937次浏览

一个优雅的环境管理工具--SDKMAN

是在大多数基于Unix的系统上管理多个软件开发工具包的并行版本的工具。它提供了一个方便的命令行界面(CLI)和API来安装,切换,删除和列出sdk相关信息。以下是一些特性
2023年11月16日 1,107次浏览

Function、Consumer、Supplier的妙用

这一篇我们来了解JDK8已经定义好的几个函数式接口。一、概述Jdk8之后新增的一个重要的包 : java.util.function该包下所有的接口都是函数式接口, 按分类主要分为四大接口类型: Function、Consumer、Predicate、Supplier。有关Predicate这里不再
2023年11月14日 587次浏览

后端也可以数据绑定--BeanMap的使用

BeanMap 是 Apache Commons BeanUtils 库中的一个类,它提供了一种将 Java 对象转换为 Map 的方式。BeanMap 可以将 Java 对象的属性作为键,属性值作为对应的值,存储在一个 Map 中。BeanMap在后端最常用的场景就是读取配置文件的信息。一、基本用
2023年11月12日 533次浏览

TT命令实现简单压力测试--Arthas的妙用

1.Arthas TT 简单压力测试发现问题。
2023年11月07日 527次浏览

从设计者的角度出发理解源码--Easy-Excel

都说阅读源码是一个程序员升级的必经之路,笔者也阅读了不少源码,但很长时间感受源码带给我的提升没有预期的那么大,所以我有了个新点子,假如我能知道一个开源项目作者是如何思考的,是否能更接近这个目标了呢?于是有了此文。
2023年11月05日 758次浏览