-
凭证溢出溢漏指因信号量管理失当导致的凭证高频复用、超期滞留或跨域泄露;需在发放/校验点埋点,通过Redis台账聚合识别高频复用、长驻未销、跨域漂移三类异常,并分级自动上报与revoke响应。
-
Java项目容器化需用java-jar/app.jar启动可执行JAR,确保pom含spring-boot-maven-plugin且执行mvncleanpackage;选匹配编译版本的JRE镜像(如JDK17编译则用openjdk:17-jre-slim);主进程退出问题优先前台运行查日志。
-
数组与集合转换需注意类型和可变性:Arrays.asList()将数组转为固定大小List,不支持增删;基本类型数组需通过Stream转换;集合转数组推荐使用带参数的toArray(T[])避免类型错误。
-
被notify()唤醒的线程必须先转入BLOCKED状态争抢锁,而非直接RUNNABLE;因notify()不释放锁,仅将线程从waitset移至entryset,只有原线程退出synchronized块后锁才释放,JVM从entryset中选线程竞争锁成功才转为RUNNABLE。
-
使用哈希表统计元素频次,单次遍历即可在O(n)时间内判断数组中是否有任意整数出现至少三次。
-
RedisIP黑名单必须用SET+EXPIRE分步操作而非SETEX,避免重复封禁重置过期时间;校验时应使用exists命令而非get防止序列化空值误判;需结合本地缓存、定时扫过期key及CIDR规则动态加载保障可靠性。
-
Java类的访问控制仅支持public和包私有(默认)两种修饰符,顶级类不可用private或protected;包私有类用于模块内高内聚封装,内部类才支持private/protected修饰。
-
左移一位等价于乘以2,因二进制所有位向高位移动、低位补0,数值扩大2倍;如101(5)左移为1010(10)。
-
Java入门靠javac编译、java运行、System.out.println输出,免费资源足够:官方API文档查方法、OpenJDK精简教程跑通HelloWorld、CodingBat练基础语法;付费课价值仅在督促完成首个Maven项目。
-
ReentrantLock(true)为公平锁,强制线程按等待顺序获取锁;ReentrantLock(false)为非公平锁,默认允许新线程抢占,吞吐高但可能引发饥饿,且公平性仅影响lock(),tryLock()始终非公平。
-
Package.getAnnotations()通常为空,因为package-info.java中的注解默认为SOURCE保留策略,编译后即丢弃,且JDK的Package类不解析package-info.class中的注解。
-
直接下载官方JDK安装包并配置JAVA_HOME和PATH即可使用;优先选EclipseTemurin(adoptium.net)或OracleOpenJDK(jdk.java.net),选用JDK17/21LTS版本;Windows用.msi、macOS用.pkg、Linux用.tar.gz;JAVA_HOME须指向JDK根目录,PATH需含$JAVA_HOME/bin;验证需同时检查java-version与javac-version一致。
-
Java枚举单例的唯一性由JVM类加载与序列化机制保障:枚举实例在类初始化时创建且唯一,序列化仅保存名称,反序列化直接查表返回原实例,反射、克隆、重写序列化等攻击均被语言机制拦截。
-
Collections.singleton用于构建单用户异步通知管道,核心是利用其不可变、线程安全、低开销特性封装用户标识,明确推送上下文,避免null或原始类型歧义,兼容未来批量扩展,配合CompletableFuture安全传递上下文,并作为轻量级“管道头”衔接过滤与分发逻辑。
-
ConcurrentHashMap迭代器非fail-safe而是弱一致性,不抛ConcurrentModificationException但不保证看到所有修改;它用分段锁+CAS+volatile实现线程安全,无modCount机制,设计取舍为高吞吐而非强一致性。