-
本文详解在Liferay7.x+Tomcat环境下,为何无法找到传统WAR文件,并阐明其基于OSGi的新型部署机制,指导开发者正确更新SDK依赖。
-
newBigDecimal(double)会精度丢失,因double是二进制浮点数,0.1在二进制中无限循环,JVM先按IEEE754近似表示再传入BigDecimal;正确做法是用字符串构造(如newBigDecimal("0.1"))或BigDecimal.valueOf(0.1)。
-
Collections.rotate()用于循环移动List元素,正数distance向右旋转,负数向左,如[1,2,3,4,5]rotate(2)得[4,5,1,2,3],该方法直接修改原列表,支持自动取模,仅适用于List实现类。
-
Java并发编程核心在于理解内存模型、状态共享与协作机制,需掌握volatile、synchronized原理、JDK并发工具类边界、线程池调优及竞态排查方法。
-
Java文件上传下载需匹配Servlet3.0+与Web容器(如Tomcat7+),SpringBoot2.2+默认支持;关键配置包括spring.servlet.multipart.max-file-size、max-request-size;前端须用enctype="multipart/form-data"及正确name属性;常见问题有参数不匹配、流重复读取、中文名乱码等。
-
SQLException捕获后应记录SQL语句、参数、getSQLState()和getErrorCode(),仅e.printStackTrace()会丢失关键上下文;只对“08S01”“40001”等可重试码重试,且需关闭资源、指数退避、避免事务内重试;回滚前须检查事务状态;PreparedStatement参数为null时应统一用setObject或setNull,禁用字符串拼接防注入。
-
Java多态是语言特性而非设计模式,却是策略、模板方法、工厂方法、观察者等模式落地的底层支撑;它通过接口/抽象类实现运行时行为绑定,避免if-else硬编码,提升扩展性与可测试性,但需警惕假抽象、构造器调用抽象方法、类型判断绕过多态等常见问题。
-
Java中栈帧的返回地址由JVM自动管理,存于栈帧方法出口区域,指向调用指令下一条字节码地址,开发者不可访问或修改,仅能通过return、异常抛出、try-finally间接影响控制流。
-
Java集合类默认支持泛型但不强制使用,JDK5起泛型为可选语法糖;不加泛型会导致运行时ClassCastException,而加泛型可在编译期捕获类型错误并自动转型。
-
Chromebook上必须通过Crostini(Debian容器)安装openjdk-17-jdk,而非手动或Arch;装后需确认PATH和javac-version,VSCode需用Remote-Containers连接,且容器重启后服务需手动启动。
-
在iText7中,getWidthPoint()已被移除,需通过BaseFont.getWidthPoint()或PdfFont.getWidth()配合字体实例和字号显式计算文本宽度,不再支持链式调用后直接获取。
-
静态代码块先执行,顺序为:静态代码块→实例代码块→构造函数;静态代码块属类级别、类加载时执行一次,实例代码块属对象级别、每次new时在构造函数前执行。
-
正则表达式可精准删除指定字符串:一、用replace()配字面量正则删固定串;二、用newRegExp动态构建并转义变量正则;三、用捕获组保留内部内容、删除包围结构。
-
Java服务器日志分析需综合异常位置、原因及修复方案:从堆栈底部定位代码行,结合上下文、时间线、调用链与环境状态,交叉验证线索,避免经验误判。
-
for循环用于已知次数的重复执行,语法为for(初始化;条件;更新){循环体},示例打印1到5。