-
生产环境JVM堆内存参数应设为-Xms与-Xmx相等以避免动态调整引发FullGC;容器化需启用-XX:+UseContainerSupport并用-XX:MaxRAMPercentage替代硬编码-Xmx;元空间须显式设置-XX:MetaspaceSize和-XX:MaxMetaspaceSize。
-
必须在CompletionHandler.completed()中立即再次调用accept(null,this),否则后续连接被静默丢弃;禁用accept().get()阻塞式调用,避免退化为BIO;读取时须用回调链式read(buffer,att,handler),每次分配新buffer并正确管理生命周期。
-
StackOverflowError由递归过深或无限递归引发,需检查递归终止条件、避免方法间循环调用,并优化深层递归为迭代。
-
可以,Java中构造方法支持重载,判断依据仅为参数列表(类型、数量、顺序)不同;修饰符、访问权限等差异不构成重载;this()调用必须为首行且唯一;默认无参构造在自定义构造后消失。
-
本地私有Maven仓库该配在哪儿Maven默认会把依赖下载到~/.m2/repository(Linux/macOS)或C:\Users{user}.m2\repository(Windows),但这只是本地缓存,不是“私有仓库”。真要建私有仓库,得用Nexus、Artifactory或简单点的Maven本地HTTP服务——但多数团队误以为改个settings.xml就算搭好了,结果同事拉代码还是连中央仓库。私有仓库本质是独立运行的服务,监听一个HTTP地址(比如http://
-
Java定时任务可通过Timer、ScheduledExecutorService、Spring的@Scheduled或Quartz实现;2.Timer适用于简单场景但单线程执行存在调度延迟风险;3.ScheduledExecutorService基于线程池更稳定,推荐用于生产环境;4.Spring项目使用@EnableScheduling和@Scheduled注解可简化配置,支持fixedRate、fixedDelay和cron表达式;5.Quartz功能强大,适合复杂调度需求,支持持久化与集群部署。
-
Java应用需引入micrometer-registry-prometheus并注册PrometheusMeterRegistry;SpringBoot2.0+默认集成Micrometer但需显式启用/actuator/prometheus端点,配置management.endpoints.web.exposure.include=prometheus,路径为/actuator/prometheus而非/metrics,注意版本对齐、安全放行、K8s路由、指标类型(Counter只增、Gauge可变)及命
-
Scanner读取输入时卡住或跳过是因为nextInt()等不消费换行符,nextLine()会读到残留\n;应统一用nextLine()后解析,或在nextInt()后加nextLine()清缓存。
-
分布式登录核心是凭证统一管理与跨服务校验,推荐JWT实现无状态认证,配合Redis支持主动踢出,网关层统一鉴权并透传用户信息,兼顾高效性与可控性。
-
用String.join()最快最安全直接调用String.join()是最推荐的方式,它专为拼接设计,底层不创建多余对象,也不抛NullPointerException(空元素会触发异常,但空集合完全OK)。适合绝大多数场景,尤其是Set这类元素已知非null的情况。必须确保Set中不含null,否则运行时报NullPointerException如果Set是HashSet或LinkedHashSet,顺序不可靠;用TreeSet才有自然排序示例:St
-
AtomicReference的compareAndSet不能直接当锁用,因它仅保证单次CAS原子性、不阻塞线程、失败需手动重试;若无while自旋,一次失败即退出,无法锁住临界区。
-
在IDEA中一键切换Eclipse快捷键只需在Keymap设置中选择Eclipse预设方案,但部分快捷键如Ctrl+1(快速修复)仍为Alt+Enter且不可更改,Ctrl+Shift+F默认仅格式化选中块,Alt+Shift+R重命名需光标位于可重构元素上,且存在插件冲突、系统快捷键抢占、作用域限制及未点击Apply等常见失效原因。
-
Java字符串字面量在编译期确定并存于字符串常量池(JDK7+在堆中),自动入池;newString()在堆新建对象,不入池;intern()可手动入池并返回池中引用;编译期常量拼接入池,运行期拼接不入池。
-
异常链通过将底层异常作为原因嵌入新异常,实现错误信息的封装与追溯。在Java中,使用Throwable类提供的带cause参数的构造函数或initCause()方法,可在抛出业务异常时保留原始异常。例如,在Service层捕获SQLException后,可封装为UserServiceException并传入原异常,形成链条。打印堆栈时会自动显示“Causedby”层级结构,便于定位根因。自定义异常应提供publicMyException(Stringmessage,Throwablecause)构造函数并
-
IllegalArgumentException由方法作者负责抛出,用于拒绝逻辑非法的输入参数;需在方法开头校验并给出含参数名、实际值和业务范围的清晰错误信息,构造函数中尤其不可遗漏。