深度JAVA学习
文章平均质量分 91
挖掘代码底层实现、剖析源码逻辑、解读运行机制,让java开发者更进一步
ldwtxwh
从事java开发17年、从基础技术开发到亿级系统架构、对底层逻辑有较多的理解
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Macos系统上搭建Hadoop详细过程
jps # 应看到 NameNode/DataNode/ResourceManager/NodeManager。原创 2025-11-05 12:42:28 · 536 阅读 · 0 评论 -
Java反射机制(重要)
Java反射机制详解:运行时的动态编程能力 摘要: Java反射机制允许程序在运行时动态获取类的完整结构信息,并能操作类或对象的属性和方法。核心实现基于Class类和reflect包中的Field、Method、Constructor等类。反射主要流程包括:获取Class对象(三种方式)、实例化对象、获取类成员信息、动态调用方法。典型应用场景包括框架开发(如Spring)、动态代理、单元测试等。虽然反射提供了强大的动态编程能力,但也存在性能开销和安全风险等缺点。合理使用反射可以增强程序的灵活性,但需注意避免原创 2025-07-10 18:25:35 · 617 阅读 · 0 评论 -
Spring核心技术底层实现详解
OverrideSystem.out.println("初始化前处理: " + beanName);@OverrideSystem.out.println("初始化后处理: " + beanName);System.out.println("代理方法: " + method.getName());});// 配置类@Bean。原创 2025-06-23 15:04:10 · 410 阅读 · 0 评论 -
Java虚拟机解剖:从字节码到机器指令的终极之旅(七)
应用层优化算法复杂度优化(O(n²) → O(n log n))减少不必要的对象分配并发数据结构优化JVM层优化选择合适的GC收集器优化堆大小和区域设置JIT编译参数调优容器层优化正确配置资源限制确保JVM感知容器限制使用高效的文件系统内核层优化网络参数调优虚拟内存管理调度策略选择硬件层优化NUMA架构优化使用RDMA高速网络SSD替代HDD过度优化在未测量的情况下优化过早优化(未确定瓶颈)资源分配错误JVM堆大于容器内存CPU配额不足导致线程饥饿配置冲突同时启用多个GC收集器。原创 2025-06-20 17:51:22 · 887 阅读 · 0 评论 -
Java虚拟机解剖:从字节码到机器指令的终极之旅(六)
/ 实现自定义自旋策略@Overridefor (;;= 0) {// 自适应自旋64 : 0;// 使用CPU等待指令continue;// CAS获取锁@Override// 写操作后插入StoreLoad屏障acquire(1);release(1);// 测试用例// 启动10个线程i < 10;t.start();原创 2025-06-20 10:13:14 · 1398 阅读 · 0 评论 -
Java虚拟机解剖:从字节码到机器指令的终极之旅(五)
通过深入理解新一代垃圾收集器的工作原理和性能特性,结合业务需求选择最佳GC策略,可以显著提升系统吞吐量,降低延迟,实现系统性能的质的飞跃。堆内存>64GB:选择Shenandoah分代模式。要求10ms内暂停:选择Shenandoah。JDK17+:ZGC或Shenandoah。堆内存<64GB:选择G1 GC。:仅需42位地址空间(4TB):基于历史数据预测最佳GC策略。要求亚毫秒级暂停:选择ZGC。:GC状态直接存储在指针中。:无需额外内存存储转发信息。首选ZGC(线性扩展性)- 最大GC暂停时间。原创 2025-06-20 03:00:36 · 670 阅读 · 0 评论 -
Java虚拟机解剖:从字节码到机器指令的终极之旅(四)
解释器:快速启动,低效执行C1编译器:快速编译,中等优化C2编译器:深度优化,高质量代码Graal编译器:新一代JIT,支持高级优化方法内联:消除调用开销(核心优化)逃逸分析:实现栈上分配和标量替换循环优化:展开和向量化提升计算效率去虚拟化:优化多态调用Graal原生镜像:AOT编译技术(机器学习优化:基于Profile的预测优化多语言支持:通过Truffle框架支持多语言硬件加速:集成GPU和FPGA计算。原创 2025-06-18 04:45:05 · 738 阅读 · 0 评论 -
分库分表查询实现方案详解
分库分表查询的核心在于如何高效地定位数据位置并合并查询结果。基于ShardingSphere-JDBC:轻量级客户端方案,适合Java应用基于MyCat中间件:代理层方案,对应用透明分布式数据库方案:TiDB等原生分布式数据库实时分析分离架构:将分析查询导向数仓精心设计分片键智能查询优化器HTAP混合负载处理多模型数据支持云原生分布式数据库优化分页查询(游标分页)合理使用绑定表和广播表读写分离减轻负载最终一致性替代分布式事务。原创 2025-06-18 02:17:24 · 1320 阅读 · 0 评论 -
物联网设备监控与控制系统实现详解(思路仅供参考,节选自亲身实战项目)
多协议接入:支持MQTT和TCP/UDP协议接入多种设备设备类型适配:针对门禁、道闸、访客机、空调、冰箱、锅炉等设备实现专用处理实时数据处理:设备数据采集、解析、存储和实时监控设备控制:支持远程控制指令下发图片抓取:门禁设备抓拍图片存储与展示告警系统:设备异常状态实时检测与通知数据可视化:设备状态、历史数据、地理分布的直观展示系统安全:设备认证、授权和数据加密传输。原创 2025-06-17 05:15:54 · 1176 阅读 · 0 评论 -
Spring Boot + Spring Security + 自定义注解实现数据权限控制(含前后端代码)
*** 租户字段名(默认tenant_id)*//*** 部门字段名(默认dept_id)*//*** 用户字段名(默认user_id)*//*** 数据范围类型*//*** 额外过滤条件*/// 数据范围枚举ALL, // 所有数据TENANT, // 当前租户DEPT, // 当前部门DEPT_AND_SUB, // 当前部门及子部门SELF, // 仅自己数据CUSTOM // 自定义条件2.2.2 字段权限注解/*** 角色类型。原创 2025-06-17 04:16:51 · 1846 阅读 · 0 评论 -
SpringBoot 线程池 配置使用详解
ThreadPoolTaskExecutor 是 Spring 生态中管理线程任务的利器,通过灵活的配置和与 Spring 的无缝集成,能够高效处理异步任务、高并发请求和定时调度。注解定期监控线程池的状态,包括活动线程数、当前线程数、核心线程数、最大线程数、队列大小和已完成任务数等,帮助开发者了解线程池的运行情况,以便及时进行优化和调整。:是 Spring 提供的一个线程池任务执行器,通过设置核心线程数、最大线程数、队列容量等参数,可以根据应用的需求灵活地配置线程池。例如,当线程池满时,原创 2025-06-16 18:18:53 · 2518 阅读 · 0 评论 -
MySQL 10亿条数据分析处理方案
程序解题:mysql数据库中有10亿条数据(订单记录1.9亿条、交易记录1.2亿条、用户记录290万,会员75万,日志记录5.6亿条,剩下的是管理数据),该数据总大小1.51TB,现要对该10亿条数据做统计分析和排序(年账单、月账单,月人均消费金额等),现在有一台32核64G内存200GSSD硬盘,用作应用服务器来处理统计分析,给出解题过程。原创 2025-06-16 15:15:32 · 1842 阅读 · 0 评论 -
HashMap底层实现原理深度剖析
HashMap是Java集合框架中最重要且使用最频繁的集合类之一,它基于哈希表实现,提供了高效的键值对存储和检索功能。理解HashMap的底层实现原理对于编写高效、健壮的Java程序至关重要。// 创建HashMap实例// 添加键值对populationMap.put("北京", 2154);populationMap.put("上海", 2424);populationMap.put("广州", 1868);populationMap.put("深圳", 1756);// 获取值。原创 2025-06-16 14:16:18 · 1238 阅读 · 0 评论 -
Java虚拟机解剖:从字节码到机器指令的终极之旅(三)
本文深入解析了JVM三大核心内存区域的运作机制,结合实验数据与真实案例,由于篇幅原因,实例都是代码片段,相信优秀的你知道提供的代码如何使用。每个线程初始化时在Eden区申请私有TLAB空间(默认约Eden的1%)Slot为最小单位(32位,long/double占2 Slot)TLAB用尽时申请新TLAB(触发全局锁竞争)对象优先在TLAB内无锁分配(指针碰撞实现)Metaspace使用量持续增长直至。:频繁申请新缓冲区,增加全局锁竞争。每次递归在栈上分配新帧(含局部变量。Metaspace使用量达到。原创 2025-06-16 13:40:39 · 680 阅读 · 0 评论 -
Java虚拟机解剖:从字节码到机器指令的终极之旅(二)
实现步骤继承java.lang.ClassLoader重写findClass()方法在findClass()中读取字节码调用defineClass()定义类示例:数据库类加载器@Override// 1. 从数据库读取字节码// 2. 定义类")) {类加载时机:由JVM规范严格定义,主要发生在首次主动引用时加载过程三阶段加载:定位字节码并创建Class对象链接:验证、准备和解析初始化:执行<clinit>方法双亲委派模型:保障安全性和一致性的核心机制。原创 2025-06-13 18:06:30 · 928 阅读 · 0 评论 -
Java虚拟机解剖:从字节码到机器指令的终极之旅(一)
Class文件结构:严格定义的二进制格式,包含魔数、版本号、常量池等关键部分字节码指令集:包含200+指令,分为加载/存储、运算、类型转换等类别i++ vs ++i:后缀自增先取值后运算,前缀自增先运算后取值方法调用机制invokevirtual:基于虚方法表的静态绑定invokedynamic:动态绑定,支持Lambda等现代特性Lambda实现:通过invokedynamic+引导方法+运行时生成类实现性能优化:现代JVM对字节码有深度优化(如方法内联、逃逸分析)原创 2025-06-12 23:30:17 · 1108 阅读 · 0 评论
分享