-
更新JDK版本需先下载安装新版,再配置JAVA_HOME和PATH环境变量,最后在IDE中更新JDK设置并验证版本,确保系统、开发工具与构建工具一致使用新版本。
-
优雅匹配枚举常量的核心是利用编译器静态检查,确保switch入参为枚举类型、强制穷尽所有分支、将行为内聚到枚举内部,并显式处理fallback情形。
-
服务端支持断点续传需响应含Accept-Ranges:bytes或返回206;实操须先HEAD校验,再设Range请求头,写入前用独立RandomAccessFile.seek()定位,状态持久化至元数据文件,并禁用连接复用、手动处理重定向。
-
不会自动放栈上,而是JIT编译器在方法内联且逃逸分析通过后,对未逃逸对象进行标量替换或栈上分配,需满足字段可拆解、无同步、无虚引用等约束。
-
Quartz的CronTrigger时间不准根本原因是默认时区与调度器启动时机未对齐,解析表达式时按JVM默认时区偏移而非系统或启动时间时区;Job中@Autowired失效因Quartz反射创建实例不走Spring容器;SimpleTrigger适用于固定间隔场景,CronTrigger适用于含日历语义(如L、#、W)的触发;集群重复执行多因数据库锁未生效,需确认isClustered=true、LOCKS表存在、用户有SELECTFORUPDATE权限且不用H2/HSQLDB。
-
当需元素唯一且按插入顺序遍历时应选LinkedHashSet;它用哈希表+双向链表实现,遍历稳定O(n),顺序可预测,而HashSet无序、TreeSet按自然序排序。
-
需穿透多层异常封装定位根本原因:逐层调用getCause()或getRootCause(),识别InvocationTargetException、UndeclaredThrowableException等反射包装异常,结合堆栈中的Method.invoke等反射入口及字节码验证,辅以日志配置%ex{full}和框架配置优化。
-
for循环适用于已知循环次数的场景,其语法为for(初始化;条件;更新){执行语句},如打印1到5:for(inti=1;i<=5;i++)System.out.println(i);
-
静态内部类只能访问外部类的static成员,不能访问非静态成员;其实例化无需外部类实例,适用于无需隐式引用外部类实例的工具类等场景。
-
Java集合交集用retainAll会修改原集合,需先复制;并集需根据类型选择addAll或HashSet/Stream;差集a.removeAll(b)对应A−B;三操作均依赖正确实现的equals/hashCode。
-
安装OpenJDK需根据操作系统选择对应方式:Windows下载.exe安装,macOS可用.pkg或Homebrew,Linux用apt命令安装;随后配置JAVA_HOME及PATH环境变量,通过java-version验证;编写HelloWorld.java并编译运行测试环境;可选使用Maven等工具管理项目。
-
可使用正则表达式删除中文字符:基础场景用/\u4e00-\u9fa5/g,扩展需求加CJK扩展区,推荐/\p{Script=Han}/gu(需u标志),并可叠加标点类匹配。
-
任务不返回结果是因为用了execute()而非submit(),或任务未正确返回值;Future.get()阻塞或抛ExecutionException需检查异常原因并统一收集后调用。
-
代理模式通过代理对象控制对真实对象的访问,分为静态代理和动态代理。静态代理在编译期生成,需为每个被代理类编写对应代理类,代码冗余;动态代理在运行时生成,包括JDK动态代理(基于接口)和CGLIB动态代理(基于继承),具有更高灵活性,适用于AOP、事务管理等场景。两者主要区别在于生成时机、灵活性、依赖条件和性能。
-
Eclipse启动提示“NoJavavirtualmachinewasfound”或JRESystemLibrary显示unbound,说明未正确配置外部JDK;需先验证java-version和javac-version可用,再在Preferences→Java→InstalledJREs中手动添加JDK根目录,最后为项目指定JRE。