-
Java多态由继承、方法重写和父类引用指向子类对象三者自然达成,仅对实例方法重写生效,编译时看声明类型,运行时按实际类型动态绑定。245 收藏 -
Java项目集成Swagger推荐使用SpringDocOpenAPI(Swagger3),需引入springdoc-openapi-starter-webmvc-ui依赖,配置扫描包和UI路径,通过@Tag、@Operation等注解管理接口分组与描述,启动后访问/swagger-ui即可查看文档。396 收藏 -
Kotlin虽无“构造函数前初始化”的语法糖,但通过属性直接赋值和init块可实现等效行为:属性在主构造函数执行后、init块前完成初始化,语义上与Java的字段初始化时机一致。305 收藏 -
密码强度校验应优先使用逻辑判断而非纯正则,因正则难以实现动态得分与多类字符组合判断;推荐拆解为长度、大小写、数字、符号、重复等可加权的原子规则,并封装为可测试、可扩展的服务。346 收藏 -
SubmissionPublisher默认构造不满足生产级背压需求,因其使用共享无界ForkJoinPool、默认缓冲区为MAX_INT(等效无界),导致延迟不可控、背压信号失效、GC压力大及OOM风险。359 收藏 -
ConcurrentHashMap本身不提供原子性大小限制操作,直接检查size后put会导致竞态条件;需借助外部同步机制(如ReentrantLock)或使用支持容量策略的缓存库(如Caffeine)来实现线程安全的“仅当未达上限时插入”逻辑。405 收藏 -
应避免用异常控制流程,频繁抛出异常会因栈追踪导致性能下降。推荐预判条件代替try-catch校验,如用正则或NumberUtils判断数字格式;自定义异常可重写fillInStackTrace返回this以减少开销;捕获时应优先具体异常,合理使用multi-catch合并处理;延迟构建异常信息,避免无谓的字符串拼接,提升性能。133 收藏 -
synchronized修饰方法能保证自增线程安全,但仅适用于简单场景;它本质是把整个方法变成临界区,靠对象锁互斥执行,性能开销明显,且无法应对跨方法的复合操作。153 收藏 -
扫雷核心用二维数组表示格子,元素存未翻开(0)、是雷(-1)或周围雷数(1~8);初始化全0后随机布雷并去重;首次点击才生成数字;点击0格时用BFS递归展开相邻0区域,配合八邻域偏移和边界检查。290 收藏 -
AtomicIntegerFieldUpdater不支持private字段,因其要求字段必须是publicvolatile;它依赖反射获取字段引用,但构造时会校验并拒绝非public字段,抛出“Fieldisnotpublic”异常。336 收藏 -
关键在于破坏死锁四条件,Java中通过统一锁顺序、使用tryLock超时机制、减少锁范围、避免嵌套锁及采用并发工具类可有效预防死锁。342 收藏 -
ExceptionUtils.getStackTrace()是ApacheCommonsLang提供的将Throwable转为完整堆栈字符串的方法,用于日志记录、告警或监控上报等需全量堆栈的场景,不输出到控制台。360 收藏 -
Java枚举天然防反射创建实例,因JVM在native层硬编码限制枚举实例化;其序列化与线程安全由语言机制保障,无需readResolve或synchronized;但不支持延迟加载、依赖注入及继承,适用场景有限。261 收藏 -
因为findFirst是短路终止操作,配合惰性求值,Pipeline在找到首个匹配元素后立即停止,后续元素不参与filter/map;而先collect再遍历需全量加载、新建集合、额外遍历,时间与内存开销均为O(n)。307 收藏 -
transient只在Java默认序列化中生效,对JSON/XML/ORM等无效;它使字段不参与字节流读写,反序列化后为默认值,但无法防止日志、网络传输或自定义序列化中的泄露。164 收藏