-
一篇 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并唤醒所有等待线程。
-
DateTimeFormatter线程安全且不可变,应避免SimpleDateFormat思维;优先用ISO预定义常量,自定义pattern需严守大小写与数量规则;解析须匹配具体类型,格式化前需手动处理时区。
-
SpringCloudConfig高可用部署可通过多实例注册、Git仓库优化及负载均衡实现。1.启动多个ConfigServer实例并注册至Eureka、Nacos或Consul,使ConfigClient能通过服务名访问可用节点,支持动态扩容与故障剔除;2.使用Git作为后端存储时,采用只读分支、本地缓存、高性能Git平台以减少并发问题,必要时关闭自动刷新;3.在ConfigServer前加Nginx、HAProxy或云SLB实现负载均衡,配置健康检查与多种分发策略,Kubernetes环境下可结合Se
-
非静态代码块最适合做每个对象创建时都必须执行的通用初始化逻辑,如统一设默认值、校验字段、记录时间、初始化依赖等,它在实例变量赋值后、构造器执行前自动运行,按声明顺序执行,可访问所有实例成员。
-
Java编译器按JVM规范分层选择整型常量压栈指令:先-1~5用iconst_x(1字节),再-128~127用bipush(2字节),再-32768~32767用sipush(3字节),更大值用ldc从常量池加载。
-
Java处理视频流的最佳方案是整合FFmpeg,因其具备强大的编解码能力、广泛格式支持及高性能特性。①Java通过ProcessBuilder或Runtime.exec()启动FFmpeg进程,实现高效调度与逻辑控制;②需构建完整命令行参数并管理输入输出流,避免缓冲区阻塞;③为确保稳定性,应单独线程消费stdout/stderr,加入超时、重试、资源释放机制;④集成过程中需注意路径配置、参数转义、资源泄露预防、性能优化及跨平台适配等关键问题。
-
一篇 Java/Spring Boot 线程池生产复盘:从队列堆积、拒绝异常和 p99 抬高出发,讲清 ThreadPoolExecutor/ThreadPoolTaskExecutor 的 core、max、queueCapacity、拒绝策略、上下文传递和上线压测。
-
Java为基本类型提供包装类以支持面向对象操作,8种基本类型均有对应包装类,如int对应Integer;通过valueOf()方法可装箱,推荐于构造函数;Java5起支持自动装箱拆箱,如Integera=100和intb=a;包装类常用方法包括parseXxx()、toString()及常量;适用于集合与泛型,但需注意性能与空指针风险。
-
推荐使用SpringBoot启动新项目,因其自动装配可规避80%配置错误;访问start.spring.io选SpringBoot3.x(JDK17+),勾选SpringWeb和Lombok,用@RestController+@GetMapping编写最简接口验证环境,避免手动引入spring-framework低版本依赖。
-
“组合优于继承”指多数场景应优先用“has-a”关系替代“is-a”关系,以降低耦合、增强可测性与系统稳定性;继承适用于明确“is-a”且父类专为扩展设计的少数情况。
-
ExecutorService是Java并发编程核心工具,用于批量执行任务并管理线程生命周期。通过submit()提交任务可获得Future对象,便于获取结果或监控状态,结合List统一管理异步结果;推荐使用Callable返回结果,Runnable用于无返回值任务,调用Future.get()时应设置超时防止阻塞。生产环境建议显式创建ThreadPoolExecutor,合理配置核心线程数、最大线程数、工作队列及拒绝策略,避免Executors工厂方法潜在风险。任务完成后需优雅关闭线程池:先调用shut
-
Stream.peek()不改变流元素,仅用于轻量监控(如日志、计时),需终端操作触发;阶段耗时需前后peek配合原子变量记录,推荐封装TimingPeek工具类实现可复用计时,并注意并行流乱序、线程安全及生产环境日志采样。
-
Java并发模型以共享内存和显式同步为核心,依赖synchronized、volatile及JUC工具保障线程安全;并行能力由ForkJoinPool、parallelStream等提供,但需权衡任务性质与资源开销。