-
用mvnarchetype:generate可一键生成标准项目结构,推荐命令指定groupId、artifactId和maven-archetype-quickstart;SpringBoot项目需改用对应starter依赖并匹配JDK版本;IDEA导入选Maven项目;配置阿里云镜像加速依赖下载;调优idea.vmoptions提升IDE性能;验证JAVA_HOME与PATH一致性避免运行时版本冲突。
-
成功执行java-jarxxx.jar的前提是:JRE/JDK已安装且版本兼容,java命令可用;JAR包为可运行格式,即MANIFEST.MF中含正确Main-Class属性;依赖已内置(fatjar)或显式指定;文件有读取权限,路径无空格或中文。
-
ClassLoader.getResource按classpath声明顺序“先到先得”加载首个同名资源;Web容器强制优先加载WEB-INF/classes和WEB-INF/lib;需用getResources获取全部匹配项并手动处理;建议通过前缀隔离、外部化配置、Maven排除等方式避免冲突。
-
锁粗化是JVMJIT编译器自动将同一锁、同一线程、连续无干扰的多次加锁解锁合并为一次大范围同步的操作,典型场景是循环内对未逃逸局部对象(如StringBuffer)的反复同步调用。
-
应定义2–3个顶层业务异常基类(如BusinessException、SystemException、ValidationException)而非平级继承RuntimeException,以支持语义分组捕获、日志归类、可恢复性判断及精准测试;自定义异常需携带code和context等结构化信息,并避免存储大对象;受检异常仅用于调用方能且应立即处理的场景(如参数校验),非受检异常适用于系统故障等不可当场修复问题;全局异常处理器应仅记录堆栈、设HTTP状态码、返回精简JSON,禁用吞异常、外调告警或兜底NPE
-
Termux无法直接运行JavaGUI程序,因其纯终端环境缺失XServer和DISPLAY变量,Java默认启用headless模式且openjdk-17不含AWT原生库;可行方案是通过proot-distro部署Ubuntu,安装XFCE与TightVNC,配置xstartup并启动vncserver,再在VNC桌面中安装OpenJDK并设置DISPLAY=:1运行Java程序。
-
系统功能包括发布、查看列表与详情及管理操作;2.采用SpringBoot、Thymeleaf、JPA与MySQL;3.定义Article实体与仓库接口;4.控制器处理请求并交互页面;5.Thymeleaf渲染前端;6.可扩展富文本、登录、分类等。
-
final字段的可见性保障是“一次性但确定”的:对象正确构造后,其他线程首次读取其final字段必见构造器所赋值,无需synchronized或volatile;该保障依赖构造器末尾的StoreStore屏障,且以无this逃逸为前提。
-
PECS原则下动态缓冲区核心是类型安全归集:声明List<?superEvent>接收子类型,生产者产出List<?extendsBusinessEvent>,用collectTo工具方法自动推导类型并高效归集,结合Kafka实现异步削峰。
-
Collection.isEmpty()不能代替null检查,因null调用会抛NullPointerException;必须先判null再调用isEmpty(),或使用Objects.nonNull()、CollectionUtils.isEmpty()等null-safe方案。
-
懒加载解决“要不要初始化”的时机问题,适用于构造昂贵且使用概率低的变量;Java用Supplier+Lazy组合,Kotlin用bylazy,C#用readonlyLazy<T>,需避免误当缓存或构造函数中触发Value。
-
finalize()不是资源清理保险丝而是系统风险点,必须遵循主动、可控、可测、不可复活原则:需用AutoCloseable/try-with-resources或Cleaner替代;清理逻辑须与对象状态解耦;避免性能损耗;其已被Java9弃用、JDK18默认禁用。
-
必须用APT在编译期强制校验注解属性——通过@Retention(RetentionPolicy.SOURCE)声明注解,于process()中遍历标注元素、提取AnnotationMirror/Value并校验数值范围、字符串非空、枚举合法性、字段类型等,错误时调用messager报错中断编译。
-
直接newThread()在高并发下会拖垮系统,因其每次创建都消耗CPU和内存,栈空间不及时释放易致OOM,且上下文切换开销大、线程数受系统限制;应使用ThreadPoolExecutor并合理配置corePoolSize、maximumPoolSize等参数。
-
排查static块类初始化死锁需识别互相触发初始化的依赖链,通过jstack定位WAITINGonjava.lang.Class的线程栈,梳理静态依赖图,移出static块中双向调用逻辑,改用Holder模式或@PostConstruct延迟初始化,并通过并发测试和JFR监控提前发现隐患。