-
IdentityHashMap通过==比较内存地址判断键相等,绕过equals()和hashCode(),适合需区分同内容不同实例的场景(如数组映射);普通HashMap因数组hashCode基于内容而equals基于引用,易导致查找失败或覆盖。
-
DecimalFormat默认不为正数加“+”,需通过分号分隔正负子模式(如"+#,##0.00;−#,##0.00”)、setPositivePrefix/setNegativePrefix方法或模式中用单引号转义“+”来实现;零值默认匹配正数模式,可用三段式模式“正;负;零”单独控制。
-
Metaspace泄露本质是类加载器未被回收导致元数据堆积;需通过JVM参数监控、jcmd/MAT定位异常类加载器,并修复ThreadLocal、静态缓存、监听器注册等常见泄露点。
-
图像缩放本质是二维/三维数组的尺寸变换与值重映射,可分三类:①切片实现整数倍缩放(如data[::2,::2]),零插值、零开销;②最近邻插值支持任意比例,纯NumPy实现但块状感强;③scipy.ndimage.zoom推荐实战,支持多阶插值与彩色图。
-
应优先使用take()而非poll():take()主动让出CPU、支持中断响应、避免忙循环,而poll()易致CPU飙升且中断处理复杂;ThreadPoolExecutor源码也印证此设计。
-
不该用Stack做撤销逻辑,因其继承Vector导致无谓同步拖慢性能且违背组合优于继承原则;应使用ArrayDeque,用push()/pop()严格遵循LIFO,封装操作对象并快照必要状态。
-
Java中数字字面量不加修饰默认为int(整数)或double(浮点数);整数如123默认int,浮点数如3.14默认double,超出范围需加L或f后缀,进制前缀和科学计数法格式须严格符合规范。
-
主线程通过PipedOutputStream与监控线程的PipedInputStream配对实现字节脉冲实时传输,需确保管道连接、及时读取、明确数据边界,并妥善处理异常与资源释放。
-
Java中用if实现令牌桶限流需封装TokenBucket类维护availableTokens和lastRefillTime,每次请求先同步补令牌再if判断availableTokens>=1.0,通过则扣减并放行,否则返回429;须线程安全、浮点运算、按维度路由桶实例。
-
ConcurrentLinkedQueue是Lock-Free而非Wait-Free,因其操作可能无限重试而无步数上界;Wait-Free要求每个线程有限步内必完成,Lock-Free仅保证系统整体有进展。
-
状态压缩在面向对象中通过整数字段+位运算统一管理多个布尔状态,节省内存(如16个标志仅需2字节)、提升读写效率,并使组合逻辑更清晰,如(state&(VISIBLE|UNLOCKED))==(VISIBLE|UNLOCKED)。
-
异或加密仅能临时遮掩且密钥泄露即失效;std::string加密须用unsignedchar避免符号扩展,否则UTF-8中文等高位字节会因char有符号性导致提升为负数,引发加密错乱、长度突变或空字符截断。
-
一篇 Java/JVM 生产排查教程:从 Spring Boot 服务 p99 尖刺出发,用 G1 GC 日志、JFR、堆占用和分配速率定位暂停变长根因,强调先证据、再代码降分配、最后小步调参。
-
wait()和notify()必须在synchronized块中调用,因为JVM要求当前线程必须持有目标对象的监视器锁,否则抛出IllegalMonitorStateException;且需用while循环配合条件判断,避免虚假唤醒。
-
CountDownLatch本质是基于AQS共享模式的“状态驱动批量唤醒”机制:state归零为唯一触发点,不可重置、不感知线程身份;tryAcquireShared返回1或-1严格遵循AQS语义,仅state==0时返回1以触发全量唤醒;countDown通过循环CAS确保递减原子性,仅最后一次从1→0的CAS返回true并唤醒所有等待线程。