-
Redis锁基于AP模型,主从异步复制下存在锁丢失风险,适合高吞吐、弱一致性场景;ZooKeeper锁基于CP模型,ZAB协议保障强一致与自动故障恢复,适用于金融等零容错核心业务。
-
wait()必须在synchronized块中调用,否则抛IllegalMonitorStateException;notify()随机唤醒一个线程,notifyAll()唤醒所有等待线程;wait()需置于while循环中以防虚假唤醒。
-
String.getBytes()不指定字符集会使用系统默认编码,导致跨平台结果不一致,引发乱码等问题;必须显式指定StandardCharsets.UTF_8等标准字符集,且编解码字符集需严格匹配。
-
Java反射是在运行时动态获取类信息并操作对象的能力,核心是Class对象,可通过Class.forName、类字面量或实例getClass()获取,支持创建对象、访问字段、调用方法及获取元数据,广泛用于Spring、JDBC等框架。
-
Collectors.partitioningBy适用于实时低延迟双路分流场景,需将智能逻辑前置为纯内存谓词函数,单批次建议≤5000条;超量或需跨节点协同时应升级FlinkCEP等分布式方案。
-
Java14的record是专为不可变数据载体设计的轻量级类,自动实现final字段、全参构造器、accessor、equals/hashCode/toString,禁止继承与实例字段,适用于DTO、VO等只读场景。
-
Collectors.partitioningBy用于风险过滤的核心是布尔谓词二元切分,将交易一次性分为高/低风险两组;需封装多维度业务规则为可测Predicate,结合流式处理与校验保障风控实效性。
-
Record类是Java16为DTO场景设计的不可变扁平数据载体,自动生成字段、构造器、getter、equals、hashCode和toString;组件名即访问器名(无get前缀);仅支持紧凑构造器校验,不支持继承。
-
抽象方法是Java中实现模板设计模式的核心,用于在抽象类中定义无实现的方法,由子类具体实现。通过模板方法封装固定流程,如数据处理的process(),将loadDataSource()、parseData()等步骤延迟至子类实现,提升代码复用性。例如FileDataProcessor实现文件相关操作,新增网络处理器时只需扩展新子类。可通过钩子方法afterProcess()提供可选扩展点,默认空实现,子类按需覆盖。模板方法应声明为final防止篡改,抽象类避免过度约束,合理使用protected修饰抽象方
-
JDK1.7中ConcurrentHashMap使用分段锁(Segment),默认16个Segment,每个Segment为独立ReentrantLock+HashEntry数组,锁粒度固定且并发度上限硬编码;JDK1.8彻底弃用Segment,改用CAS+首节点(Node/TreeNode)级synchronized锁,实现更细粒度、动态可伸缩的并发控制。
-
CGLIB通过生成目标类的非final子类实现代理,核心组件为Enhancer、MethodInterceptor和MethodProxy;它绕过JDK代理必须接口的限制,但要求目标类及方法不可为final,构造器需public/protected。
-
maximumPoolSize是线程池最大线程数,用于应对突发流量的弹性缓冲带;设小导致任务拒绝率高,设大引发上下文切换与OOM;需按IO/CPU密集型任务特征、QPS与耗时估算,并配合监控、动态配置及合理拒绝策略。
-
Field.getType()返回字段声明时的原始类型(如List.class),不包含泛型信息,也不反映运行时实际对象类型;需用getGenericType()获取泛型参数,用value.getClass()获取运行时类型。
-
FileReader无法指定字符编码,因其构造器不接受charset参数,仅依赖系统默认编码,易致跨平台乱码;正确做法是用InputStreamReader包装FileInputStream并显式指定编码。
-
该用synchronized而不是版本号更新的情况是:单机JVM内保护临界资源(如共享计数器、本地缓存刷新),且操作粒度小、耗时短、不涉及数据库交互。