java教程技术文章
-
生产环境JVM堆内存参数应设为-Xms与-Xmx相等以避免动态调整引发FullGC;容器化需启用-XX:+UseContainerSupport并用-XX:MaxRAMPercentage替代硬编码-Xmx;元空间须显式设置-XX:MetaspaceSize和-XX:MaxMetaspaceSize。408 收藏 -
String.join最快最直接但要求List及元素均非null;Collectors.joining更灵活可链式处理但有Stream开销;高频或大数据量时手写循环性能更优。122 收藏 -
Java数组的length是编译期确定的final字段而非方法,因数组为JVM内置类型,大小固定且存于对象头中;调用length()、对null数组访问或混淆List.size()均会报错。416 收藏 -
在SpringMVC中,可通过为@RequestParam添加required=false属性,使其变为可选参数;当请求未携带该参数时,其值将为null(或通过defaultValue指定默认值),从而避免400BadRequest错误。203 收藏 -
ThreadLocalMap.Entry用弱引用是为了避免ThreadLocal实例被长期持有导致内存泄漏,而非自动清理;弱引用仅作用于key,value仍为强引用,需配合remove()或set()/get()触发的探测清理机制防止staleentry泄漏。420 收藏 -
ConcurrentHashMap的putIfAbsent不是绝对原子,因其仅对key插入做CAS保护,value构造副作用(如new对象)仍会执行;正确做法是用computeIfAbsent延迟构造。330 收藏 -
模板方法模式核心是“子类只改步骤,不改流程”,即在templateMethod()中锁定稳定执行顺序,将可变环节抽为abstract方法供子类实现;辅以hook方法(可选重写)和final方法(禁止篡改)增强灵活性与安全性。437 收藏 -
super是编译期确定的直接父类成员访问入口,不触发多态、不绕过访问控制;调用构造器须首行且唯一;访问字段和方法均为静态绑定;内部类中A.super特指外围类方法调用。221 收藏 -
静态方法和变量属于类本身,可通过类名直接调用或访问。1.静态变量被所有实例共享,修改后全局生效,如Counter.count;2.静态方法无需创建对象即可使用,如MathUtils.add(5,3);3.静态成员不能访问非静态成员,常用于工具类、常量定义;4.static生命周期长,过度使用影响设计原则。430 收藏 -
Java算术运算符遵循类型提升规则:操作数按double→float→long→int顺序提升;/结果类型由操作数类型决定,整除向零截断;%结果符号同被除数;整数溢出不报错但回绕,浮点除零得Infinity/NaN。354 收藏 -
工厂函数将对象创建逻辑集中封装,使调用方只关注“要什么”而非“怎么造”,避免硬编码散落、修改分散及空值风险,应抛异常而非返回null,推荐纯函数实现而非class封装。414 收藏 -
Linux上transferTo可能不生效,因源/目标通道类型、文件系统或内核版本不满足零拷贝条件而静默降级为用户态拷贝。360 收藏 -
通过@ControllerAdvice和@ExceptionHandler实现全局异常处理,结合自定义异常类与ResponseStatus注解,统一返回结构化响应,提升代码可维护性与用户体验。344 收藏 -
组合优于继承是指在多数代码复用场景中,用成员变量持有对象(has-a)比类继承(is-a)更稳妥可控;核心在于区分类型归属与功能复用,避免继承滥用导致的扩展性差、维护难等问题。474 收藏 -
在Thymeleaf生成的HTML邮件模板中,点击表单按钮默认会触发页面跳转;需通过JavaScript(AJAX)拦截提交行为,异步调用后端REST接口,避免重定向和空白页问题。157 收藏