- 博客(22)
- 收藏
- 关注
原创 【超详细】Java工程师必备:从零到精通JVM、垃圾收集器与性能调优
加载:读取.class字节码文件验证:确保字节码安全合规准备:为类变量分配内存并初始化解析:将符号引用转换为直接引用初始化:执行静态代码块和静态变量赋值执行:逐条执行字节码指令垃圾回收:自动管理内存释放找到内存中不再使用的对象释放这些对象占用的内存先监控,后调优:没有数据支撑的调优是盲目的逐步调整:一次只改一个参数,观察效果关注异常,而非均值:P99、P999延迟比平均延迟更重要整体优化:JVM调优是系统工程的一部分理解原理比记住参数更重要:理解了GC原理,参数只是工具没有银弹。
2025-12-18 21:57:56
968
原创 Java性能调优完全实战手册:从入门到精通
大家好,今天想和大家分享我踩过的性能调优坑,以及如何利用工具快速定位问题。性能调优不是高级开发者的专利,每个Java开发者都应该掌握这项基本技能。现实场景:想象一下,你负责的系统突然变慢,用户投诉激增,老板让你马上解决。你会怎么做?是重启服务器,还是盲目修改代码?科学分析 → 精准定位 → 有效解决。本文将用最详细、最通俗的方式,带你掌握性能调优的完整流程。每个命令、每个输出我都会详细解释,保证小白也能看懂!VisualVM是什么?
2025-12-18 19:18:02
1289
原创 【超详细】Java高并发锁全面解析:从入门到精通
并发编程既是科学也是艺术。没有最好的锁,只有最适合的锁。在实际开发中,要根据具体场景选择合适的方案。
2025-12-17 21:39:16
985
原创 史上最通俗易懂的Java多线程完全指南:万字长文,彻底搞懂Future、CompletableFuture、ForkJoin
看了那么多教程,为什么还是一用就懵?原因很简单:大部分教程只告诉你“是什么”,却不告诉你“为什么”和“什么时候用”。你记住了API,却不知道何时使用;你理解了概念,却写不出正确的代码。这篇指南将彻底改变这一切。我不会简单地罗列API,而是从实际场景出发,用生活中的例子,带你真正理解Java多线程的每一个核心概念。一句话理解:一个老板(Master)分配任务给多个工人(Worker),工人干活,老板收集结果。生活例子:快递公司Master:调度中心Worker:快递员TaskQueue:待配送的快递。
2025-12-17 17:45:49
585
原创 深入浅出Java线程池队列:从原理到实战,一篇搞定!
线程池队列决定了任务如何排队等待执行。今天,我将用最通俗易懂的方式,带你彻底搞懂Java线程池队列的底层原理!
2025-12-15 16:28:17
873
原创 Java线程池深度解析:从小白到精通(详细实战版)
核心知识点回顾:✅ 线程池七大参数:深刻理解每个参数的含义和影响✅ 执行流程:掌握任务提交到执行的完整过程✅ 队列类型:了解不同队列的特点和适用场景✅ 拒绝策略:掌握四种策略的优缺点✅ 监控调优:学会监控线程池状态和性能调优
2025-12-15 13:21:06
927
原创 手把手教你玩转Java Stream进阶:深入解析groupingBy分组操作的三大形式和九大技巧
在上篇《手把手教你玩转Java Stream:从"这啥啊"到"真香!"》中,我们初步领略了Stream的魅力。今天,我们来深度剖析Stream中最强大的分组操作——groupingBy,让你的数据处理能力再上新台阶!
2025-12-14 16:35:43
630
原创 手把手教你玩转Java Stream:从“这啥啊”到“真香!”
作为一个Java程序员,我也曾看着Stream那一堆方法一脸懵逼。今天我就用最直白的方式,带你彻底搞懂Stream!
2025-12-13 19:45:10
1048
原创 优雅实现双向连接矩阵:Java泛型四向链表数据结构
本文将介绍一个使用Java实现的双向连接矩阵数据结构,该结构采用四向链表节点连接,支持泛型数据类型。这种数据结构在处理需要上下左右导航的网格数据时特别有用,比如图像处理、游戏地图、电子表格等场景。
2025-12-12 13:25:37
371
原创 线程的常用方法
如果在main线程中调用了t1.join(2000),那么main线程会进入到等待状态,需要等待t1执行2s后,在恢复到就绪状态等待CPU调度。如果在等待期间,t1已经结束了,那么main线程自动变为就绪状态等待CPU调度。如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待CPU调度。Java种给线程设置的优先级别有10个级别,从1~10任取一个整数。需要注意的是,优先级高,只能说明,CPU调用的几率高一些,但是,不是绝对。
2024-07-10 09:33:17
240
原创 线程的状态
线程的状态,嗯,说法很多,5-7种多都有,其实,这种说法都能算对,只不过站的角度不一样。个人意见,这种东西,一定要理解,不然,线程这种东西,用用还行,再深点就比较难了。BLOCKED、WAITINT、TIME_WAITING:都可以理解成阻塞状态,因为处在这三种状态下,CPU都不会调用当前线程。RUNNABLE :执行完start(),就是RUNNABLE状态,不管CPU是否已经调度。对于传统的线程状态来说,确实只有5种状态。但是,对于Java来说,线程有6种。OK,不废话了,直接上内容。
2024-07-09 15:43:17
214
原创 线程的创建
线程的创建分三种方式:注意,一定要通过start()方法调用线程,如果通过run(),那就不是线程了,而是属于直接调用对象的方法了。这个记住就行,面试也不会考这玩意儿。
2024-07-05 08:59:30
255
原创 线程基础(持续更新)
进程是指运行中的程序。比如钉钉,微信,抖音,王者等线程是CPU调度的基本单位,每个线程执行的都是某一个进程的代码的某个片段所谓进程就是线程的容器,需要线程利用进程中的一些资源,处理一个代码、指令。最终实现进程所预期的结果多线程:单个进程中同时运行多个线程。
2024-07-04 22:23:23
296
原创 Error: A JNI error has occurred, please check your installation and try again
Error: A JNI error has occurred, please check your installation and try again
2024-01-04 15:54:37
1003
1
原创 idea 常用快捷键整理(持续更新)
搜索框连续点击两次shiftgetter&settercommond + d快速实现接口内的方法等option + 回车 代码快速对齐commond + option + l
2023-12-03 12:26:23
843
1
原创 java lambda表达式
lambda形参列表的参数烈性可以省略(类型推断)如果lambda形参列表只有一个参数,其()也可以省略如果没有参数,或者参数有1个以上,则不能省->右边lambda体应该使用一堆{}包裹;如果lambda体只有一条执行语句(可能是return语句),可以省略这一对{}和return关键字/***/@Test@OverrideSystem.out.println("这是new Runnable()");
2023-10-13 14:17:49
71
原创 idea 快捷键&serialVersionUID
在使用序列化与反序列化时,如果没有使用serialVersionUID,反序列化类的成员变量发生变化时,则会抛出如下异常。
2023-10-07 11:26:56
236
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅