java教程技术文章
-
BigInteger初始化禁用空字符串或null,须校验非空再构造;运算必须用add()等方法而非+−*/;比较大小用compareTo()而非>==。451 收藏 -
本文介绍如何通过Supplier<?extendsException>替代Class<?extendsException>,安全、简洁地将任意自定义异常延迟实例化并抛出,避免反射带来的复杂性与运行时风险。206 收藏 -
三元运算符仅适用于有明确返回值的单表达式分支,正确写法为condition?exprIfTrue:exprIfFalse(JS)或value_if_trueifconditionelsevalue_if_false(Python),Go则明确拒绝引入。258 收藏 -
Javadoc未显示主因是ExternalJavaDoc路径配置错误,包括URL版本不匹配、本地路径未指向含index.html的根目录、Maven未下载javadocjar、离线路径格式错误、代理或CORS限制及缓存未刷新。459 收藏 -
线程池未关闭会导致JVM无法退出和RejectedExecutionException异常;应先调用shutdown()再配合awaitTermination()等待终止,超时后可shutdownNow();推荐使用AutoCloseable封装或Spring的destroyMethod自动管理。460 收藏 -
JVM通过热点探测(方法调用计数器和回边计数器)触发JIT分层编译:先C1编译基础优化,再C2编译激进优化;内联受字节码长度、虚方法特性等约束;去优化机制保障正确性但影响性能。324 收藏 -
合理拆分职责、使用提前返回、StreamAPI和局部变量可提升Java方法的可读性与维护性,让代码逻辑更清晰。425 收藏 -
最稳用CFR反编译插件:兼容Java17新特性,需禁用IDEA自带解码器;遇“Decompiledcodenotavailable”需检查module-info、混淆或JDK类配置;var丢失因编译未加-g:vars;空方法体是CFR对不支持字节码的兜底处理。295 收藏 -
本文详解如何通过Mockito模拟InetAddress.getLocalHost()抛出异常,结合@SneakyThrows的实际行为,编写可覆盖异常分支的单元测试,并推荐使用AssertJ进行更精准的异常断言。389 收藏 -
JavaAgent必须在premain中调用instrumentation.addTransformer注册ClassFileTransformer才能生效,且需在MANIFEST.MF中声明Premain-Class和Can-Retransform-Classes;否则agent静默失效。462 收藏 -
InvocationTargetException是反射调用异常的包装器,真实异常需通过getCause()获取;多层嵌套时应循环解包,推荐使用Spring的ExceptionUtils.unwrapInvocationTargetException()。373 收藏 -
volatile失效并非语法失效,而是因误用(如循环缓存变量、误信字段可见性)或JIT将未观测的volatile读移出循环所致;排查需验证代码语义、JIT行为及运行时环境。466 收藏 -
synchronized锁的是对象而非代码块或方法名,本质是给对象加监视器锁;实例方法锁this,静态方法锁类对象,同步代码块锁指定非null对象;锁自动获取释放,可重入但易因耗时操作拖长锁周期,JVM会按竞争动态升级锁。216 收藏 -
本文详解Drools在Kubernetes微服务中因KieContainer非预期重复加载导致的MVELCompilationUnit内存堆积问题,涵盖诊断方法、典型误用模式、修复方案及云原生迁移建议。345 收藏 -
Java15+使用三重双引号"""创建文本块,编译期语法糖,自动按最小公共缩进裁剪空格、保留源文件换行符,不支持嵌套和插值,需手动处理"""转义或拼接。460 收藏