java教程技术文章
-
JVM在K8s中需配合JDK版本、-XX:+UseContainerSupport及Initial/MaxRAMPercentage等参数才能真正对齐容器内存限制,否则仍按宿主机内存计算;推荐设InitialRAMPercentage=MaxRAMPercentage=75.0,并禁用-Xmx、UseAdaptiveSizePolicy等干扰项。451 收藏 -
启用-Xlog:safepoint是定位非GC类全局停顿最直接有效的方式,它专门记录JVM为执行需线程同步至安全点的操作(如偏置锁撤销、JIT退优化、类重定义等)而引发的停顿,而非垃圾回收本身。125 收藏 -
惰性Optional不能缩短冷启动或暖机时长,它只是语义工具而非性能优化机制;真正有效的策略是分阶段就绪、上下文裁剪与模块隔离、预热路径精准注入。215 收藏 -
Java中括号默认为捕获组,影响group()索引、性能及替换行为;非捕获组(?:...)不占编号、不存结果、无性能开销;命名捕获组(?<name>...)在Java8+支持,仍占用编号且不可重名。152 收藏 -
应直接分析堆内存增长源头,通过jmap或ARMS/JProfiler生成堆dump,重点检查异常多的函数类实例、未回收lambda/MethodHandle及大对象被强引用情况,并排查柯里化中闭包捕获外部状态、构造方法引用误缓存等导致长生命周期对象的问题。408 收藏 -
强制转换不能实现归一化,仅辅助精度保留与类型适配;归一化需先识别指标属性(极大型、极小型、类别型、区间型),再选择对应方法(min-max、倒数反转、标签编码、三折线等),并在流式场景中结合分位数截断、对数压缩或Welford算法实现轻量无状态处理。179 收藏 -
Java开发者突破瓶颈必须深入字节码层:泛型擦除后仅存Object、内部类持外引用、注解需RUNTIME保留、Lambda通过invokedynamic动态绑定,字节码是理解语言特性的最终依据。114 收藏 -
NPE堆栈中“because'xxx'isnull”直接指出未初始化的成员变量,需定位业务代码行、检查声明/构造器/注入初始化路径,并验证对象生命周期与调用时机。302 收藏 -
setFetchSize()控制JDBC驱动分批从服务器拉取结果集的行数,非数据库端限制返回量;MySQL需配useCursorFetch=true才生效,PostgreSQL默认支持游标式获取。143 收藏 -
HashSet底层直接使用HashMap实例,通过组合模式将元素作为key、固定哑对象PRESENT作为value存储,从而实现去重;其线程不安全,且依赖正确的equals和hashCode实现。162 收藏 -
Exchanger是专为两个线程在同一个交换点严格同步、原子性双向交换数据设计的协作工具,适用于双缓冲、乒乓内存池、成对生产者-消费者等两极数据管道场景,不支持多线程、广播或队列式共享。295 收藏 -
Method.getExceptionTypes()仅返回显式声明的受检异常(继承Exception但非RuntimeException子类),不包含RuntimeException及其子类、Error,也无法捕获@SneakyThrows等绕过throws声明的异常。285 收藏 -
并行网关聚合需自定义IO线程池、allOf仅作完成等待、每个调用独立兜底;禁用commonPool,用supplyAsync((),ioExecutor)显式传池;结果从原始Future取;每个Future用handle()兜底;聚合时校验null并封装轻量不可变VO。279 收藏 -
Prototype泄漏主因是开发者误将有状态对象交由Spring管理且未管控生命周期,导致对象堆积、引用滞留、GC不及时而OOM。445 收藏 -
Arrays.sort()对int[]默认升序排序,底层用优化双轴快排,就地排序、时间复杂度O(nlogn),支持空数组和单元素数组,无需比较器。271 收藏