Java
文章平均质量分 69
Java 从0开始
不搞数学的汤老师
不是各位卷死在下,就是在下卷死各位!
展开
-
定位 CPU 高负载 Java 线程
将 4432 堆栈信息导出并检索 4435 (jstack 导出的线程 id 是 16 进制)线程的调用情况。可见该进程下 pid 为 4435 的线程 CPU 占用率最高将其换算为 16 进制。查看 pid 为 4432 进程的线程 CPU 占用情况。查看高负载 Java 进程获取到对应 pid。定位到具体的线程调用情况。原创 2023-12-25 09:48:49 · 617 阅读 · 1 评论 -
为什么 String#equals 方法在做比较时没有使用 hashCode
我之前出于优化常数项时间的考虑,想当然的认为会事先使用 hashCode 进行过滤我想像中的算法是这样的minnm也就是以下的代码但事实上确是也就是我先前的设计思路有问题,但不妨参考一下也就是说之前构思出来的算法应该是没有问题的,于是就有了一个疑问:为什么不使用 hashCode 进行第一次过滤?原创 2023-05-26 22:35:04 · 990 阅读 · 1 评论 -
边界对齐:从 C 到 Java
从 C 的边界对齐开始,看到 Java 的边界对齐原创 2022-07-10 16:39:28 · 387 阅读 · 0 评论 -
OS 进程三/五态模型、CSAPP 进程三态模型和 JAVA 线程模型
OS 进程三态模型模型出处:《计算机操作系统》 和 现代操作系统状态表示就绪(Ready)状态:进程已准备好运行,只要分配时间片,就能得到执行。也就是除了时间片外,已经准备好一切资源。执行(Running)状态:进程已获得时间片,程序当前正在运行。阻塞(Block)状态:正在执行的进程因为某些资源得不到满足,继而无法继续运行的状态。状态转移就绪 -> 执行:就绪状态的进程获得时间片执行 -> 就绪:执行状态的进程时间片耗尽执行 -> 阻塞:执行状态的进程发生的原创 2022-01-30 23:08:40 · 1153 阅读 · 0 评论 -
intern 方法与字符串常量池
一道有趣的 Java 基础面试题,深入分析这一道题可以更好的了解字符串常量池。原创 2021-11-20 02:40:23 · 347 阅读 · 0 评论 -
JVM 是如何方法调用的?重载与重写
0 先抛出一个问题void invoke(Object obj, Object... args) { ... }void invoke(String s, Object obj, Object... args) { ... } invoke(null, 1); // 调用第二个 invoke 方法invoke(null, 1, 2); // 调用第二个 invoke 方法invoke(null, new Object[]{1}); // 只有手动绕开可变长参数的语法糖,原创 2020-07-25 18:22:29 · 393 阅读 · 0 评论 -
Java 虚拟机中 Java 的基本类型
1 Java 虚拟机中的 boolean 类型在 Java 虚拟机规范中,boolean 类型则被映射成 int 类型(不仅是 bolean,还有 byte、char、short)。具体来说,“true” 被映射为 整数 1,而 “false” 被映射为整数 0。public class Foo { public static main(String[] args) { boolean 吃过饭没 = 2; // 编译器报错,要通过字节码更改为2 if (boolean) System原创 2020-07-04 16:55:59 · 283 阅读 · 0 评论 -
JVM的基础知识整理
1 内存布局1.1 JVM 内存线程私有程序计数器本地方法栈虚拟机栈线程共享堆方法区直接内存1.2 对象内存布局对象头mark word类型指针数组长度标识实例数据对齐1.3 JVM 运行时内存新生代一个伊甸区两个幸存区老年代永久代:1.8移除元空间:1.8顶替永久代,不在虚拟机中,使用本地内存1.4 分配内存方法指针碰撞(规整时):空闲内存和使用内存间存放一个指针,每次分配内存就移动该指针空闲列表(不规整时)原创 2020-06-04 16:50:02 · 427 阅读 · 0 评论 -
反射更改 String 底层 char[] 常量池的变化
代码与输出结果代码如下:public class StringDemo { public static void main(String[] args) throws Exception { String str1 = "hello"; String str2 = new String("hello"); String str3 = "world"; String str4 = "hello"; System.ou原创 2020-08-05 03:53:14 · 294 阅读 · 0 评论