-
加synchronized仍超卖是因为锁对象错误:局部new的锁对象不共享,应改用成员变量、类对象或静态锁;volatile不能保证原子性,count++需用AtomicInteger;SimpleDateFormat等非线程安全类须替换为线程安全版本;线程池禁用Executors默认工厂,需显式配置有界队列和拒绝策略。
-
设计Express类封装快递信息,包含单号、寄件人、收件人、状态和创建时间;2.使用HashMap以单号为键存储对象,实现高效增删改查;3.通过Scanner提供命令行菜单交互;4.可扩展至文件或数据库持久化存储。
-
Hystrix服务熔断配置步骤如下:一、引入Hystrixstarter包,注意版本兼容性;二、在启动类添加@EnableHystrix或@EnableCircuitBreaker启用熔断;三、为Feign客户端配置fallback实现降级处理;四、可选自定义熔断策略,如超时时间、失败请求数、错误率阈值等;五、测试验证熔断是否生效,可通过关闭服务或设置异常模拟故障。
-
Gson不推荐用于复杂对象映射,因其不支持嵌套泛型、接口字段、循环引用、条件序列化及内置类型转换,遇日期等需手动写TypeAdapter且易误伤;MapStruct编译期生成纯getter/setter代码规避反射;Jackson的@JsonUnwrapped可结构展开而Gson无等价能力;LocalDateTime映射需Jackson注册JavaTimeModule或Gson自定义TypeAdapter;字段语义(如Optional)在不同库中行为差异源于契约假设不同。
-
CopyOnWriteArrayList适合读多写少场景,因其读操作无锁、写操作复制数组并原子替换,保证读取一致性但写入开销大;适用于监听器列表、配置缓存等低频修改场景,不适用于高频增删或强一致性要求场景。
-
Java的package是编译器与JVM共同遵守的命名与路径绑定规则,强制要求源码路径、包名层级和类全限定名三者严格一致,缺一不可。
-
父类构造方法先于子类执行,Java创建子类对象时会先调用父类构造方法,确保继承链中每层初始化。若子类未显式调用super(),编译器自动插入对父类无参构造方法的调用;若父类无无参构造方法则需显式调用super(参数)。构造方法调用顺序为:自上而下执行父类构造方法至Object类,再自下而上执行各层构造方法体内容。字段初始化发生在super()返回后、构造方法体执行前,因此在构造方法中调用可被重写的方法可能导致子类字段未初始化,输出null等异常结果。应避免在构造方法中调用可被重写的方法。
-
偏向锁默认延迟4秒是HotSpot主动设计的冷静期,为避免JVM启动时内置线程频繁争抢撤销偏向锁;JDK15+起默认关闭,需显式启用-XX:+UseBiasedLocking。
-
Arrays.copyOf从索引0开始复制并可调整长度,适用于全数组或开头截取;Arrays.copyOfRange可指定起始和结束索引,用于精确截取子数组。
-
List.of和Map.of创建的集合不可变,修改抛UnsupportedOperationException;Map.of限10键值对;List.of比Arrays.asList更安全但语义不同;不可变集合hashCode/equals行为需注意。
-
POI5.2.4+(推荐5.2.5)适配JDK17+,需用poi-ooxml或poi-ooxml-lite并排除旧版xmlbeans;XWPFDocument空参构造易NPE,应传空白模板流;中文需setWordFont并配字体文件;大文档须流式写入、禁用样式缓存、避免复用实例。
-
Java中条件判断语句包括if、if-else、if-elseif-else和switch,用于根据条件执行不同代码块。if语句在条件为真时执行对应代码;if-else在条件成立时执行if块,否则执行else块;if-elseif-else支持多分支判断,按顺序匹配条件;switch语句适用于变量值的多选一场景,通过case匹配值并执行相应语句,需注意添加break防止穿透;合理选择结构可提升程序逻辑清晰度与可读性。
-
普通开发推荐下载jdk-xx_windows-x64_bin.exe安装包并勾选“AddtoPATH”;需多版本共存则选.zip包手动配置JAVA_HOME和PATH,且务必验证javac-version与where命令结果一致。
-
Collections.frequency方法用于统计集合中某元素出现次数,接收集合和目标元素为参数,遍历集合通过equals()比较并返回匹配次数;适用于List等Collection类型,支持自定义对象(需重写equals),可统计null,但集合为null时抛异常,时间复杂度O(n),对Set意义有限。
-
继承通过extends实现单继承,子类复用父类方法并可重写;设计时应抽象共性、避免臃肿,善用super调用父类逻辑;优先组合而非继承,保持语义清晰与低耦合。