• 欢迎访问本站,本站记录博主日常编程遇到的问题,知识,惊奇软件等。如有问题还请留言


    Deprecated: strip_tags(): Passing null to parameter #1 ($string) of type string is deprecated in /www/wwwroot/gschaos.club/wp-content/themes/Git-alpha-6h0SRk/header.php on line 294

标签:java

局部变量表中槽的问题

jvm的槽为啥是32位,64jvm也是32位呢1. 什么是 jvm 的“槽”(slot)在 java 虚拟机中,局部变量表(Local Variable Table) 是方法栈帧的一部分。它由一组 slot(槽位) 组成,每个 slot 的基本单位是 32 位(4字节)。slot 可以存放:int, float, reference, retu……

jvm的垃圾回收是如何暂停所有线程的

jvm的垃圾回收是如何暂停所有线程的1. 为什么需要暂停线程?GC 需要对堆内存中的对象做可达性分析(reachability analysis),判断哪些对象是垃圾。如果应用线程(Mutator Threads)还在继续运行,就可能:在 GC 标记过程中修改对象引用,导致结果不一致;在对象回收时还在访问已被标记回收的对象。因此,GC 必须让所……

DDD

DDD 并不是凭空冒出来的,它确实是从传统的业务驱动拆分路径里,把那些零散的、依赖个人经验的做法提炼成了一套可复用、可传授的方法论,然后加上统一的术语体系,让团队协作、跨团队建模、系统演进更可控。换句话说传统业务拆分:靠经验 → 每个架构师可能都有自己的套路 → 结果好坏取决于人DDD:把这些套路标准化 → 给它命名(限界上下文、聚合、值对象…)→……

既然CPU有缓存一致性协议(MESI),为什么JMM还需要volatile关键字?

🧠 为什么 mesi 协议并不足以保证 java 中的“可见性”语义?1. mesi 是硬件层级的缓存一致性,volatile 是语言层级的可见性保证mesi 主要解决“同一物理地址在多核缓存中的副本一致性问题”;根据mesi,CPU某核(假设CPU0)的缓存行(包含变量x)是M S 或E的时候,如果总线嗅探到了变量x被其其他核(比如CPU1)执行了……

HashMap负载因子

HashMap1. Hash 冲突后的数据结构变化(jdk8 之后的优化)在 jdk8 之前,HashMap 发生冲突后使用的是链表结构,导致在极端情况下时间复杂度退化为 O(n)。jdk8 开始引入红黑树结构优化:当某个桶(链表)中的元素个数超过 TREEIFY_THRESHOLD = 8 且容量超过 MIN_TREEIFY_CAPACITY ……

java.sleep()

java的thread.sleep方法是会响应中断的,cpu会使用定时器,定时器到时会触发中断让cpu调度这个线程,但是我不明白java中将线程设置中断,为什么sleep可以响应中断指令,是怎么做到的?java 的 Thread.sleep() 为什么可以响应 interrupt()?在 java 中,Thread.sleep() 会放弃 CPU 执行权……

java-11-features

Lambda 参数的局部变量语法jdk 增强提案 323允许在隐式类型 lambda 表达式的中使用“var”关键字。先来看 显式类型 的 Lambda 表达式。在下面的代码中,参数 l 和 s 的类型 被明确声明(List<String> 和 String):(List<String> l, String s) -> l……

生产OOM排查

简化版代码:package com.mystic.ycc.blog.test;import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import j……

JDK 8 到 JDK 23 的 ​语法糖(语言特性)​ 和 ​垃圾回收(GC)优化

jdk 8 到 jdk 23 的 语法糖(语言特性) 和 垃圾回收(GC)优化语法糖(语言特性)演进从 Lambda 表达式到模式匹配,java 逐步引入更简洁的语法和现代编程范式。jdk 8(2014)Lambda 表达式:List list = Arrays.asList("a", "b", "c");list.forEach(s ->……

关于 JDK 不同版本对 指令集支持

关于 JDK 不同版本对 指令集支持

关于 jdk 不同版本对 指令集支持1. jdk 8(2014年)指令集支持:基线指令集:主要针对 SSE2/SSE4.1/AVX1(如 Intel Haswell 之前的处理器)。不支持AVX-512(Skylake 及之后的新指令集)。AES-NI 深度优化(仅部分支持)。向量化运算优化有限。适用场景:传统企业应用,无需高……

问题排查

问题排查JDK自带的定位问题的工具?jps jps是jdk提供的一个查看当前java进程的小工具, 可以看做是javaVirtual Machine Process Status Tool的缩写。jps –l # 输出输出完全的包名,应用主类名,jar的完全路径名 jstack jstack是jdk自带的线程堆栈分析工具,使用该命令可以查看或导……

Java性能权威指南学习笔记-1

java性能权威指南学习笔记-1导论jvm调优标志布尔标志-XX:+FlagName 表示开启 -XX:-FlagName 表示关闭附带参数的标志-XX:FlagName=something,表示将标志flagName的值设置为somethingClient和Server类虚拟机java的自动优化前提是机器被分为"Client"和"Serve……

Java性能权威指南学习笔记-2

垃圾收集器入门最主流的四个垃圾收集器Serial收集器(常用于单CPU环境)Throughput(或Parallel)收集器Concurrent收集器(CMS)G1收集器垃圾收集器概述所有应用线程都停止运行所产生的停顿被称为时空停顿(stop-the-world)。垃圾收集由两步构成:查找不再使用的对象,以及释放这些对象所管理的内存。分代垃……

求解 springboot+mysql 随机出现的异常延迟

求解 springboot+mysql 随机出现的异常延迟两行紧挨着的代码,很简单的根据 id 更新一行数据,然后打印函数执行到此时的耗时打印出来的日志如下正常情况下两个打印出来的耗时差值应该是 10ms 以内但是每天会随机出现几个时间点,两个耗时差值会大于 1s 甚至 10 ~ 20s日志中可以看到并不是语句执行出现耗时,mybatis ……

socket接收发送缓冲区

socket接收发送缓冲区【tcp接收/发送滑动窗口与内核接收/发送缓冲区之间的关系】滑动窗口的大小与套接字缓存区会在一定程度上影响并发连接的数据,每个tcp连接都会为维护tcp滑动窗口而消耗内存,这个窗口会根据服务器的处理速度收缩或扩张。整个数据的流程中,首先网卡接收到的数据存放到内核缓冲区内,然后内核缓冲区存放的数据根据tcp信息将数据移动到具体的……