-
java.sleep()
java的thread.sleep方法是会响应中断的,cpu会使用定时器,定时器到时会触发中断让cpu调度这个线程,但是我不明白java中将线程设置中断,为什么sleep可以响应中断指令,是怎么做到的? Java 的 Thread.sleep() 为什么可以响应 interrupt()? 在 Java 中,Thread.sleep() 会放弃 CPU 执行权,并由 硬件定时器 触发中断来唤醒线程。…- 28
- 0
-
java-11-features
Lambda 参数的局部变量语法 JDK 增强提案 323允许在隐式类型 lambda 表达式的中使用“var”关键字。 先来看 显式类型 的 Lambda 表达式。在下面的代码中,参数 l 和 s 的类型 被明确声明(List<String> 和 String): (List<String> l, String s) -> l.add(s); 然而,Java 编译器…- 57
- 0
-
生产OOM排查
简化版代码: package com.mystic.ycc.blog.test; import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.Secre…- 40
- 0
-
JDK 8 到 JDK 23 的 语法糖(语言特性) 和 垃圾回收(GC)优化
JDK 8 到 JDK 23 的 语法糖(语言特性) 和 垃圾回收(GC)优化 语法糖(语言特性)演进 从 Lambda 表达式到模式匹配,Java 逐步引入更简洁的语法和现代编程范式。 JDK 8(2014) Lambda 表达式: List list = Arrays.asList("a", "b", "c"); list.forEa…- 32
- 0
-
关于 JDK 不同版本对 指令集支持
关于 JDK 不同版本对 指令集支持 1. JDK 8(2014年) 指令集支持: 基线指令集:主要针对 SSE2/SSE4.1/AVX1(如 Intel Haswell 之前的处理器)。 不支持 AVX-512(Skylake 及之后的新指令集)。 AES-NI 深度优化(仅部分支持)。 向量化运算优化有限。 适用场景: 传统企业应用,无需高性能计算。 兼容性优先,不追求最新硬件性能。 2. J…- 28
- 0
-
问题排查
问题排查 JDK自带的定位问题的工具? jps jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。 jps –l # 输出输出完全的包名,应用主类名,jar的完全路径名 jstack jstack是jdk自带的线程堆栈分析工具,使用该命令可以查看或导出 Java 应用程序中线程堆栈信息。 # 基本…- 74
- 0
-
Java性能权威指南学习笔记-1
Java性能权威指南学习笔记-1 导论 JVM调优标志 布尔标志 -XX:+FlagName 表示开启 -XX:-FlagName 表示关闭 附带参数的标志 -XX:FlagName=something,表示将标志flagName的值设置为something Client和Server类虚拟机 Java的自动优化前提是机器被分为"Client"和"Server&quo…- 420
- 0
-
Java性能权威指南学习笔记-2
垃圾收集器入门 最主流的四个垃圾收集器 Serial收集器(常用于单CPU环境) Throughput(或Parallel)收集器 Concurrent收集器(CMS) G1收集器 垃圾收集器概述 所有应用线程都停止运行所产生的停顿被称为时空停顿(stop-the-world)。 垃圾收集由两步构成:查找不再使用的对象,以及释放这些对象所管理的内存。 分代垃圾收集器 根据情况将堆划分成不同的代(G…- 323
- 0
-
求解 springboot+mysql 随机出现的异常延迟
求解 springboot+mysql 随机出现的异常延迟 两行紧挨着的代码,很简单的根据 id 更新一行数据,然后打印函数执行到此时的耗时 打印出来的日志如下 正常情况下两个打印出来的耗时差值应该是 10ms 以内 但是每天会随机出现几个时间点,两个耗时差值会大于 1s 甚至 10 ~ 20s 日志中可以看到并不是语句执行出现耗时,mybatis 已经把执行结果打印出来了 耗时出现在语句执行之后…- 271
- 0
-
socket接收发送缓冲区
socket接收发送缓冲区 【TCP接收/发送滑动窗口与内核接收/发送缓冲区之间的关系】 滑动窗口的大小与套接字缓存区会在一定程度上影响并发连接的数据,每个TCP连接都会为维护TCP滑动窗口而消耗内存,这个窗口会根据服务器的处理速度收缩或扩张。 整个数据的流程中,首先网卡接收到的数据存放到内核缓冲区内,然后内核缓冲区存放的数据根据TCP信息将数据移动到具体的某一个TCP连接上的接收缓冲区内,也就是…- 387
- 0
-
synchronized 锁机制的分析和验证
synchronized 锁机制的分析和验证 原文:https://www.moralok.com/2023/12/19/analysis-and-verification-of-the-synchronized-lock-mechanism/ 本文详细介绍了 Java 中 synchronized 锁的机制、存储结构、优化措施以及升级过程,并通过 jol-core 演示 Mark Word 的变…- 592
- 0
-
反射抛出自定义异常问题
反射抛出自定义异常问题 作者: MysticalYcc 转载请注明出处:反射抛出自定义异常问题 问题描述 反射调用方法时,方法内部抛出了自定义异常,但是无法在反射调用点捕获到抛出的自定义异常。 反射调用方法时,方法再次调用反射抛出自定义异常,导致最底层异常消失。 调用逻辑代码 @Slf4j public abstract class AbstractService implements BaseS…- 82
- 0
-
arthas使用
arthas使用 获取当前的实例属性值 vmtool 测试使用的类 @Service public class UserService { @Value("${user.default.pwd}") private String userDefaultPwd; } 配置文件 [可以使用appllo或者其他支持热更新配置的框架来测试属性是否刷新成功] user: default:…- 396
- 0
-
如何看懂字节码文件
如何看懂字节码文件 测试使用的类 public class Test { public int i; public long y; } 基础概念 每个Class文件的头4个字节被称为魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件。不仅是Class文件,很多文件格式标准中都有使用魔数来进行身份识别的习惯,譬如图片格式,如GIF或者JPEG等在文件…- 310
- 0
-
JHSDB:基于服务性代理的调试工具
JHSDB:基于服务性代理的调试工具 JDK中提供了JCMD和JHSDB两个集成式的多功能工具箱,它们不仅整合了上一节介绍到的所有基础工具所能提供的专项功能,而且由于有着“后发优势”,能够做得往往比之前的老工具们更好、更强大。 JHSDB是一款基于服务性代理(Serviceability Agent,SA)实现的进程外调试工具。服务性代理是HotSpot虚拟机中一组用于映射Java虚拟机运行信息的…- 356
- 0
-
JVM GC 的安全点与安全区域
JVM GC 的安全点与安全区域 OopMap JVM 采用的可达性分析法有个缺点,就是从 GC Roots 找引用链耗时。 都说他耗时,他究竟耗时在哪里? GC 进行扫描时,需要查看每个位置存储的是不是引用类型,如果是,其所引用的对象就不能被回收;如果不是,那就是基本类型,这些肯定是不会引用对象的;这种对 GC 无用的基本类型的数据非常多,每次 GC 都要去扫描,显然是非常浪费时间的。 而且迄今…- 924
- 0
-
MVCC能否解决幻读?
MVCC能否解决幻读? “幻读”指,同一个事务里面连续执行两次同样的sql语句,可能导致不同结果的问题,第二次sql语句可能会返回之前不存在的行。 先给出结论:不能笼统的说能不能解决,因为有的情况下可以解决,但是有的情况下解决不了。 可以解决的情况 mysql里面实际上有两种读,一种是“快照读”,比如我们使用select进行查询,就是快照读,在“快照读"的情况下是可以解决“幻读”的问题的…- 270
- 0
-
这几年落地的DDD,都是智商税和大忽悠?
这几年落地的DDD,都是智商税和大忽悠? 原文:https://www.cnblogs.com/88223100/p/DDD-IQ_Tax.html 牛B的人物,早已经厌倦了中英文混杂,他们更进一步,使用中英文缩写,对普通人进行降维打击。更厉害的,造就新的名词,并科普出去。 有几项技术,我从心底里鄙视和厌恶,但每次在技术方案中,都默默的把它们加进去,而且给足了它们分量。因为它们对于方案的成功与否,…- 128
- 0
-
什么是日志系统和日志门面?分别有哪些框架?
什么是日志系统和日志门面?分别有哪些框架? 日志系统是具体的日志框架,日志门面是不提供日志的具体实现,而是在运行时动态的绑定日志实现组件来工作,是一种外观模式。 日志系统 java.util.logging (JUL),JDK1.4 开始,通过 java.util.logging 提供日志功能。虽然是官方自带的log lib,JUL的使用确不广泛。 Log4j,Log4j 是 apache 的一个…- 371
- 0
-
三级缓存
三级缓存 前言 循环依赖:就是N个类循环(嵌套)引用。 通俗的讲就是N个Bean互相引用对方,最终形成闭环。用一副经典的图示可以表示成这样(A、B、C都代表对象,虚线代表引用关系): 在这里插入图片描述 注意:其实可以N=1,也就是极限情况的循环依赖:自己依赖自己 另需注意:这里指的循环引用不是方法之间的循环调用,而是对象的相互依赖关系。(方法之间循环调用若有出口也是能够正常work的) 可以设想…- 345
- 0
-
Java基本类型的物理存储大小
Java基本类型的物理存储大小 在java中我们知道byte就表示一个字节,像char是两个,int是四个。 现在有这样一个问题,在32位的jvm中一个byte的实际存储大小是4个字节,int不用说也是四个,那么char是不是也是四个?怎么证明? 楼主的先入观点把几种不同的概念混为一谈了。 ================================================= 1、数据…- 396
- 0
-
Java性能权威指南学习笔记-3
原生内存最佳实践 内存占用 概述 JVM也会为内部操作分配一些内存,这些非堆内存就是原生内存 应用中也可以分配原生内存(通过JNI调用malloc()和类似方法,或者是使用New I/O,即NIO时) JVM使用的原生内存和堆内存的总量,就是一个应用总的内存占用(Footprint) 测量内存占用 之所以存在已分配内存和保留内存之分,使用JVM(及所有程序)管理内存的方式导致的 线程栈是个例外。J…- 438
- 0
-
JVM 基础 – JVM 内存结构
JVM 基础 - JVM 内存结构 本文主要对JVM 内存结构进行讲解,注意不要和Java内存模型混淆了。原先这里放了一篇我自己整理的文章,最近看到 海星的javakeeper公众号 整理的文章,整理的很好。所以替换为他的文章,以方便你构筑JVM内存结构的知识体系。@pdai [TOC] 运行时数据区 内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系统和应用程序的实时运行…- 407
- 0
-
SpringClound Gateway 自定义负载均衡
SpringClound Gateway 自定义负载均衡 这里前提已知大家都知道负载的最终执行方法时 choose方法,我们需要自定义实现这个choose方法即可。 这里就是框架自带的几种均衡策略,我们需要实现AbstractLoadBalancerRule 来自定义自己的方案。 LocalBalance 在这个类中无法获取请求的内容,可以使用过滤器来为此添加一个Object key,根据key值…- 352
- 0