-
ArithmeticException是Java中不强制捕获的运行时异常,仅在int、long等整数类型除零时抛出;float/double除零返回Infinity或NaN;应前置校验分母而非依赖try-catch。
-
AtomicStampedReference不自动解决ABA,而是通过版本号使ABA可检测;必须用get(int[])原子获取最新引用与stamp,每次compareAndSet前重读,不可硬编码或缓存stamp,否则CAS因stamp不匹配而失败。
-
短路运算符仅在左操作数确定整体结果时跳过右表达式:&&左为false、||左为true时生效;需确保左操作数稳定快速且分布利于提前终止,避免异常、副作用或耗时操作置于左侧。
-
groupingBy默认返回HashMap无序,因HashMap不保证遍历顺序;需插入顺序用LinkedHashMap::new,需key排序用TreeMap并指定Comparator。
-
WebSocket连接后收不到弹幕,主因是Session被意外关闭;需检查isOpen()、避免异步未发送、禁用轮询改用SimpMessagingTemplate;弹幕时间应服务端归一化为offsetMs;高并发广播改用CopyOnWriteArraySet;XSS防护须后端白名单过滤。
-
ArrayList默认容量为0(JDK12+)或10(早期),size()始终为0直到add();add()末尾追加高效,set()需索引<size(),remove()移除元素导致O(n)移动;遍历时修改会抛ConcurrentModificationException。
-
G1通过Region机制规避外部碎片:每个Region为独立分配单元,无需物理连续空间;回收以Region为粒度采用复制算法,仅Humongous对象需连续空间,碎片风险被限制在可控范围内。
-
抽象类的根本意义是解决复用代码与强制规范行为的矛盾,它禁止实例化、允许存状态、提供具体方法并强制子类实现抽象方法。
-
Collections.frequency方法用于统计集合中某元素出现次数,需传入非null集合与目标对象,依赖equals判断,适用于List、Set等Collection集合,自定义类需重写equals和hashCode方法。
-
局部变量必须显式初始化,因Java不设默认值,编译器直接报错“variablemightnothavebeeninitialized”;作用域以最近的右大括号为准。
-
Java中用Inflater解压需先剥离zlib/gzip头部,再调用setInput装填数据,循环inflate直至finished()为true,并务必调用end()释放资源,否则易致内存泄漏。
-
Alpine镜像中aptinstallopenjdk-17-jdk失败因musllibc与glibc不兼容;推荐用openjdk:17-jre-alpine(17.0.2+)或Debian基镜像,JRE足够SpringBoot运行,容器需配-XX:+UseContainerSupport及--memory限制防OOM。
-
CountDownLatch的await()阻塞在AQS共享队列中,因tryAcquireShared返回-1导致线程入队并park;countDown()通过CAS循环确保state递减原子性;其不可重置源于state归零后拒绝修改,而CyclicBarrier基于可重置的count和Condition实现。
-
正则表达式是嵌入多门课程的跨模块支撑性工具:一、程序设计基础中用于字符串高级处理;二、Web开发中实现前后端输入验证;三、数据清洗中完成文本预处理;四、编译原理中对应正则文法与自动机理论;五、信息安全中支撑日志威胁识别。
-
Random多线程下变慢因seed竞争导致CAS自旋耗CPU;ThreadLocalRandom必须每次调用current(),不可static缓存;高频场景应提取为局部变量;推荐用nextInt(origin,bound)明确范围。