-
ArrayList.trimToSize()可将内部数组容量缩至当前元素个数,释放冗余内存;适用于数据加载完成后、仅只读访问、内存敏感且数据量大的场景,调用后数组长度等于size,多余空间可被GC回收。
-
Java规范未规定匿名类编号的生成规则,不同编译器(如javac与EclipseJDT)对同一匿名类可能生成不同数字后缀(如Foo$1vsFoo$6),因此依赖getClass().getName()作为持久化标识会导致兼容性问题。
-
事务消息启动前须确认三件事:一要先启动NameServer再启动Broker并正确配置-n参数;二要设置brokerIP1为真实可访问IP而非127.0.0.1;三需JDK8+且JVM元空间配置合理避免OOM。
-
不一定。Java对象排序仅在使用Collections.sort()或Arrays.sort()且不传Comparator,或放入TreeSet/TreeMap时才需实现Comparable;否则可用Comparator,尤其适合临时、多维或第三方类排序。
-
异常链的核心价值在于重建可追溯的因果路径,通过显式关联(如raise...from)保留根因堆栈,解决异步调用中异常静默丢失、跨服务上下文割裂、日志监控信息不全及分层抽象失真等问题。
-
不该用Stack做撤销逻辑,因其继承Vector导致无谓同步拖慢性能且违背组合优于继承原则;应使用ArrayDeque,用push()/pop()严格遵循LIFO,封装操作对象并快照必要状态。
-
ArrayList基于动态数组,适合随机访问和读取频繁场景;LinkedList基于双向链表,适合频繁增删操作;日常优先选ArrayList,特定需求如队列用LinkedList。
-
List<?extendsNumber>只读不可写,因编译器仅保证get返回Number子类但不确定具体类型;List<?superInteger>可写Integer但get只能赋给Object,因底层类型只能确定为Integer父类。
-
ArrayDeque.removeFirstOccurrence()仅移除队列中第一个匹配的指定元素,返回true或false;不处理重复项批量清理,需配合removeIf()、循环调用或流式过滤实现全量删除。
-
Java中PriorityQueue通过自定义Comparator实现动态权重排序,支持Lambda、方法引用等方式;需注意其非线程安全、遍历无序、修改已入队元素权重不触发重排序等特性。
-
相同单词未合并是因为未统一大小写、未清除标点及空格残留,导致“Hello!”与“hello”等被视为不同键;需toLowerCase()、正则清理、判空后计数,并慎用Scanner分隔符。
-
default是switch语句中捕获所有未被case匹配值的兜底分支,位置灵活但建议置末尾;需显式break防穿透;处理运行时未覆盖值,承担异常上报、降级、报错等健壮性职责。
-
MyBatis嵌套查询(select)触发N+1问题,因其先查主表1次,再对每条主记录执行1次子查询;例如查100个订单关联用户,共执行101条SQL,导致连接池耗尽、慢查询增多。
-
答案:通过定义Course类并利用LocalTime判断时间重叠,实现选课冲突检测。具体为创建包含课程信息的实体类,重写equals和hashCode方法,使用List存储已选课程,在添加新课时遍历列表调用isConflict方法判断是否同一天且时间区间重叠(startTime.isBefore(other.endTime)&&endTime.isAfter(other.startTime)),若冲突则提示用户无法添加,否则加入列表完成选课;可扩展支持单双周、课程编号及Web接口等功能。
-
-XX:+PrintAdaptiveSizePolicy是确认堆空间是否动态波动的唯一途径,因G1/ParallelGC的自适应决策(如新生代扩容、Survivor重分配)默认不输出,仅在此参数开启时才记录PSAdaptiveSizePolicy::compute_eden_space_size或G1Ergonomics等具体调整行为。