- 博客(349)
- 资源 (2)
- 问答 (2)
- 收藏
- 关注
原创 JVM GC 分类与原理深度解析
在 Java 开发中,JVM 垃圾回收(Garbage Collection,GC)机制是性能调优的核心。GC 的自动内存管理机制让 Java 在安全性和开发效率方面大大领先于手动管理内存的语言。但 GC 本身并非“魔法”,当我们深入理解其原理与分类,才能真正写出高性能、低延迟的应用。GC 的分类依据(按算法 / 按代际 / 按收集器)每类 GC 背后的核心原理主流垃圾收集器对比分析你需要记住的 GC 核心知识点GC = 自动内存管理机制分代收集策略效率更高合适的算法 + 收集器才高效。
2025-05-26 22:32:28
233
原创 垃圾回收(GC)基础原理全面解析
垃圾回收(Garbage Collection,简称 GC)是 Java 的核心优势之一,它让开发者无需手动管理内存,极大降低了内存泄露和悬挂指针的风险。但当应用进入高并发、大数据量的场景时,GC 机制本身反而会成为性能瓶颈。理解 GC 的原理不仅有助于你写出更高效的代码,更是你成为高级 Java 开发者、架构师的必修课!你应该掌握的核心点Java 的 GC 是自动化内存管理的基石✅可达性分析 + 分代回收构成 GC 基础✅不同代使用不同算法提升性能✅。
2025-05-21 22:08:44
98
原创 深入解剖 G1 收集器的分区模型与调优策略
分区结构灵活可预测的 GC 停顿混合回收提升吞吐支持并发标记、并发清理自动调整内存分区,减轻调优压力下一篇,垃圾回收(GC)基础原理,敬请关注!
2025-05-20 19:40:02
69
原创 JVM 调优实战入门:从 GC 日志分析到参数调优
掌握 GC 日志分析 + JVM 参数配置,是每一个中高级 Java 开发者/架构师的必备核心技能。只有深入理解 JVM 的运行机制,我们才能写出更加高效、稳定、可维护的企业级应用。下一篇,我们将深入解剖 G1 收集器的分区模型与调优策略,敬请关注!
2025-05-17 10:03:57
230
原创 类加载机制详解:双亲委派模型与打破它的方式
BootstrapClassLoader(引导类加载器)↑ExtensionClassLoader(扩展类加载器)↑AppClassLoader(应用类加载器)↑Custom ClassLoader(自定义类加载器)Class<?Class<?// false不同插件类互相隔离,互不干扰。双亲委派模型是 Java 类加载机制的基础设计理念,保护了核心类的安全性与一致性。但在现代开发中,打破这个模型已经成为热部署、插件化架构的必要手段。
2025-05-10 20:50:17
124
原创 JVM 内存结构全解析
JVM 内存结构并不只是图上的几个区块那么简单,它们之间密切配合,支撑起 Java 应用的稳定运行。只有真正理解各个区域的用途与原理,才能在调优、排障、架构设计中做到有的放矢。下一篇预告:《类加载机制详解:双亲委派模型与打破它的方式》——从源码角度理解类是如何被加载和初始化的。
2025-05-05 11:42:10
917
原创 JVM运行机制全景图:从源码到执行的全过程
许多开发者写完 Java 代码之后,就交给编译器和运行时去“神奇”地执行了。但你有没有想过,一段.java文件是如何一步步变成可运行的程序?今天,我们就从全链路,揭开 JVM 运作的全过程。
2025-04-26 11:58:15
581
原创 记录一次项目中使用pdf预览过程以及遇到问题以及如何解决
项目中现有的pdf浏览解析不能正确解析展示一些pdf文件,要么内容一直在加载中展示不出来,要么展示的格式很凌乱。
2025-04-19 14:10:22
1175
原创 JVM基础认知:JVM到底是什么?为什么它如此重要?
• JVM 是 Java 跨平台、高性能、安全性保障的核心引擎,理解它就掌握了 Java 应用性能优化和底层原理的关键。• 无论你是刚入门的 Java 初学者,还是资深架构师,对 JVM 的各个组成模块、运行机制、调优策略都应当有系统认知。• 在后续系列文章中,我们将深入探讨 JVM 内存模型、垃圾收集、JIT 优化与生产故障案例,助你成为真正的 Java 性能专家。
2025-04-19 13:07:56
638
原创 【deepseek】本地部署+webui访问
最近deepseek很火,但是官网的老是被限流使用,还有就是自己也想着玩一玩,于是准备在自己电脑跑一个。
2025-02-25 23:23:37
633
原创 记录一次redisson看门狗代码
但是redission却又提供了lock这种未设置时间的锁,那么它是怎么做的呢,下面分析代码。接下来再看看门狗干啥了,如下图,会把上面的线程id缓存到map里面,并加入到队列里面。也就是说,如果加锁时不进行过期时间设置,默认是30s,设置了则时设置过期时间,过期时间是一定得有的,要不然程序挂了这个锁就释放不了了。如上图,传递过期是间是-1,那么再往下走继续看代码。大家都知道redisson实现了分布式锁。那么实现分布式锁需要哪些条件呢。当然也有取消看门狗的方法。下面时看门狗的续期代码。
2024-11-18 23:46:15
235
原创 给自己域名生成tls证书并在服务器进行配置
自己搭建的服务器,使用https访问时会报不安全,给人一种不靠谱的赶脚,于是乎,决定使用个免费的方式来配置个证书解决这个问题
2024-11-08 18:01:33
657
2
原创 前缀树相关内容
前缀树通常用来保存字符串,它的节点和字符串的字符对应,而路径和字符串对应。如果只考虑英文字母,那么前缀树的每个节点有26个子节点。为了标注某些节点和字符串的最后一个字符对应,前缀树节点中通常需要一个布尔类型的字段。使用前缀树解决问题一般需要两步,第一步是创建前缀树,第二步是在前缀树中查找。
2024-08-30 14:28:14
665
原创 堆相关内容
堆可以分成最小堆和最大堆,在最大堆中最大值总是在堆顶,在最小堆最小值总是位于堆顶,因此在堆中只需要O(1)的时间就能得到最大值或最小值。堆经常用来解决数据集合中找出k个最大值或最小值相关的问题,通常用最大堆找出数据集合中的k个最小值,用最小堆找出数据集合中的k个最大值。
2024-08-29 14:12:27
229
原创 栈相关内容
栈的插入、删除操作都发生在栈的顶部,在栈中插入、删除数据的顺序为“后入先出”,即最后添加的数据最先被删除。Java中类型Stack实现了该功能。
2024-08-26 20:03:50
265
原创 哈希表相关内容
哈希表的时间效率很高,添加、删除、查找操作的时间复杂度都是O(1)。哈希表一般由链表的数组构成,HashMap在链表长度大于等于7时会将链表转成树结构。
2024-08-23 11:24:40
427
原创 链表相关内容
由于链表再内存中地址不连续,所以访问时需要从头开始逐个遍历。可以哨兵节点简化代码判断逻辑。合理利用双指针前后移动和双指针快慢指针能解决一些问题。双向链表和循环链表操作时需要特别注意,避免产生死循环。
2024-08-22 17:56:09
395
原创 数组相关内容
由于数组中的元素在内存中的地址是连续的,因此只需要使用O(1)的时间就可以算计访问数组中的任意元素双指针是解决与数组相关问题的一种常用技术。如果数组是排序的,那么应用双指针的相向就能够用O(n)的时间在数组中找出两个和为给定值的数字如果数组中的所有数字都是整数,那么应用双指针技术就可以用O(1)的辅助空间找出和为给定值的子数组。如果关于子数组之和的问题没有限定数组中的所有数字都是正数,那么可以尝试从第一各数字开始累加数组中前面若干数字之和,两个累加的和的差值对应一个子数组的数字之和。
2024-08-20 18:25:43
278
原创 K8S 证书过期不能使用kubectl之后,kubeadm 重新生成证书
【代码】K8S 证书过期不能使用kubectl之后,kubeadm 重新生成证书。
2024-05-30 11:18:43
583
1
原创 Cannot query the value of property ‘javaLauncher‘ because it has no value available.
【代码】Cannot query the value of property ‘javaLauncher‘ because it has no value available.
2023-06-21 10:31:45
1168
原创 idea使用native-image打包springboot项目
native-image 是一个用于将 Java 程序编译为本地可执行文件的工具。它是 GraalVM 的一部分,GraalVM 是一个高性能的通用虚拟机,支持多种语言。
2023-06-03 19:38:50
3365
原创 k8s新增节点
查询加入节点凭证,如果什么都 没返回说明当前没有可用token,token有效期24小时已过,则进行第三步。,则会返回一串命令,这传命令在新增的node节点上执行即可。1、新增的节点先安装上k8s所需要的软件。3、获取执行加入node节点命令。2、在master节点执行。
2023-06-02 19:45:25
1209
原创 ubuntu系统将第二块磁盘挂载到文件目录上
将/dev/mapper/datavg-datalv /data ext4 defaults 0 0 添加进去。
2023-03-31 14:06:01
1259
原创 解决 k8s 集群1.26.3使用nfs时nfs provider selfLink was empty
4、尝试修改vim /etc/kubernetes/manifests/kube-apiserver.yaml 文件,添加- --feature-gates=RemoveSelfLink=false后,集群不能正常访问。3、修改自己的storageclass文件,将驱动修改成helm安装的驱动接口。3、使用storageclass创建pvc时,一直pending。1、还原kube-apiserver.yaml文件。1、使用1.26.3版本的集群,2、使用helm安装nfs驱动。2、搭建nfs服务器,
2023-03-30 18:26:09
1276
原创 idea运行java程序报:java: 错误: 不支持发行版本 5解决
进入设置修改编译字节码版本进入项目结构修改语言类别改为你自己对应的jdk版本
2022-05-18 12:43:51
383
docker镜像node:18.15-alpine
2024-08-17
kubeadm.sh
2020-08-05
idea中怎么设置项目中jar包的依赖关系?
2018-10-12
idea中项目启动报如下错误怎么解决
2018-10-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人