-
Java中通过staticfinal定义常量,如publicclassConfig{publicstaticfinalintMAX_RETRY_COUNT=3;},可直接通过类名访问;模拟全局变量则使用publicstatic变量,如publicclassGlobal{publicstaticintuserCount=0;},可在程序任意位置读取或修改;虽可用接口定义常量,但不推荐;最佳实践是将常量集中于工具类,避免滥用static变量,优先考虑依赖注入或单例模式。
-
九九乘法表应为下三角格式共45项;外层循环控制行数(1–9),内层循环上限为i而非9,每次拼接i+"×"+j+"="+i*j。
-
用BlockingQueue而非手写synchronized队列,因其已封装锁、条件变量、中断响应与超时处理,避免虚假唤醒、notify误用等边界错误;ArrayBlockingQueue适合容量确定场景,LinkedBlockingQueue双锁并发更高但需防无界OOM。
-
Optional类用于优雅表达可能为空的值,减少空指针异常。1.使用of、ofNullable和empty创建实例;2.通过ifPresent、orElse系列安全获取值;3.利用map、flatMap和filter实现链式操作;4.推荐作为方法返回类型,避免作参数或字段;5.结合Stream提升函数式编程体验,使代码更清晰安全。
-
JsonView不能直接做字段级权限脱敏,它仅支持静态视图控制字段是否序列化,无法根据用户角色动态脱敏;需结合@JsonGetter权限感知方法或权限隔离DTO实现。
-
可以通过Map统计List中重复元素的个数,方法一使用HashMap遍历List并累加计数,方法二利用Java8StreamAPI的groupingBy和counting更简洁实现,还可通过filter筛选出出现次数大于1的重复元素。
-
必须显式关闭数据库连接或用资源管理机制释放,推荐Java的try-with-resources自动关闭;生产环境应使用连接池并调用close()归还连接,避免泄漏。
-
模板字符串用反引号包裹,天然支持多行文本和变量插值;可直接换行保留格式,配合trim()或正则清理缩进,结合map/join实现动态多行,支持三元运算符条件换行。
-
Region管理堆是为了应对大内存、多核、低延迟场景下的根本矛盾:解决大堆停顿不可控、适配NUMA架构、支撑并发回收、灵活匹配对象生命周期异构性。
-
forEach不支持受检异常且无容错机制,应避免在其中写核心业务逻辑;需容错时优先用for循环或map+Optional封装结果统一处理。
-
setFetchSize()控制JDBC驱动分批从服务器拉取结果集的行数,非数据库端限制返回量;MySQL需配useCursorFetch=true才生效,PostgreSQL默认支持游标式获取。
-
orElseGet用于配置兜底的核心原因是其惰性求值特性:仅当Optional为空时才执行Supplier中的配置获取逻辑;而orElse会立即执行参数表达式,即使配置已存在,仍触发无谓的远程调用、I/O或异常风险,造成性能浪费与副作用。
-
Java构造方法分为无参和有参两类:无参构造方法不接收参数,类中未定义任何构造方法时编译器自动提供默认无参构造器,但定义了其他构造方法后需手动添加;有参构造方法接收参数用于初始化成员变量,支持重载和this()调用实现复用;构造方法核心作用是初始化对象,无返回类型且不可写return语句。
-
Java中从键盘读取用户输入最常用、最推荐的方式是用Scanner包装System.in,因其封装缓冲、分词、类型解析和异常处理,比直接操作System.in.read()更高效安全;需注意nextInt()后调用nextLine()吸收换行符、及时close及设置IDE终端UTF-8编码。
-
标准JavaWeb项目采用分层目录结构:src/main/java存Java类,src/main/webapp放WEB-INF/web.xml(传统)或static/templates(SpringBoot),资源路径错误会导致404或配置失效;web.xml中字符编码过滤器等配置在SpringBoot中已自动集成,可删除;JSP需置于webapp下且容器支持,否则返回源码;MySQL连接应将localhost改为127.0.0.1并配置useSSL=false。