自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 异步编程:从Future到CompletableFuture

本文详细介绍了Java异步编程的相关概念和技术。首先解释了同步与异步的本质区别,指出同步异步描述的是结果获取方式而非线程数量。然后深入分析了Future的局限性,包括阻塞式获取结果、异常处理不完善等问题。接着介绍了回调机制及其可能导致的"回调地狱"问题。重点讲解了CompletableFuture这一改进方案,包括任务创建、串联、二元/多元聚合等操作,以及异常处理、超时控制和延迟任务等高级特性。CompletableFuture通过链式调用和回调机制,解决了Future的诸多痛点,提供了

2025-12-24 10:47:06 793

原创 Java8 Lambda与Stream实战指南

本文介绍了Java 8中的Lambda表达式和Stream流编程。Lambda表达式是对匿名内部类的简化,采用(参数)->{代码}的格式,强调函数式编程思想。Stream流提供链式操作集合/数组的能力,包含中间操作(filter/map等)和终结操作(forEach/count等)。文章详细讲解了Optional类避免空指针异常的方法,常见函数式接口(Predicate/Function等)的使用,方法引用的优化技巧,以及并行流提升性能的方式。这些特性共同构成了Java 8函数式编程的核心内容,能够显

2025-12-16 16:39:29 520

原创 Kafka分布式消息队列实战指南

Kafka技术架构与应用实践摘要 核心架构 Kafka作为分布式流处理平台,采用发布/订阅模式,核心组件包括: Broker集群:处理消息存储与转发 Zookeeper:管理集群元数据(2.8版本后支持无ZK模式) 生产者/消费者API:支持异步/同步消息处理 关键特性 分区机制:实现数据分片存储与并行处理 副本机制:通过Leader-Follower架构保障数据可靠性 高效设计:顺序写磁盘+稀疏索引+零拷贝技术实现高吞吐 生产实践 消息可靠性:通过ACK机制(0/1/-1)和ISR列表保障 性能优化:批量

2025-12-06 09:51:16 646

原创 【黑马点评2025面试题总结】实战基于 Redis 构建高性能秒杀与社交系统

黑马点评是一个基于SpringBoot的前后端分离项目,实现了商户查询、优惠券秒杀、用户社交等八大功能模块。项目核心技术包括:1.采用Redis解决Session共享问题,通过双拦截器实现登录校验;2.基于CacheAside模式处理缓存一致性问题;3.使用Redis缓存高频数据,并解决穿透、雪崩、击穿问题;4.秒杀功能中结合乐观锁、Redis分布式锁、Lua脚本和RabbitMQ实现安全高效的异步处理;5.利用Redis的ZSet实现点赞排行,Set实现关注功能,GEO实现附近商户搜索,BitMap完成用

2025-11-08 16:36:20 1094

原创 Java自定义注解实战:从定义到解析

摘要:本文介绍了自定义注解的实现原理和使用方法。首先讲解了如何创建自定义注解@MyValue,包括使用元注解@Retention和@Target指定注解的保留策略和适用范围。然后通过MyValueProcessor类展示了如何利用反射机制处理注解,在Bean初始化时给标注的字段赋值。文章还通过分析@Value注解的源码,揭示了注解的本质:注解本身只是一个标记,真正的功能实现依赖于反射机制。最后指出Spring框架已经内置了常用注解的处理逻辑,在扫描到注解时会自动执行相应的操作。

2025-11-07 10:58:09 167

原创 彻底搞懂 Java 泛型:从基本原理到踩坑避坑全指南 从入门到精通,只差这篇

本文系统介绍了Java泛型的核心概念和使用方法。主要内容包括:1)泛型的基本概念和优势(类型安全、消除强制转换);2)泛型类和接口的定义与使用,包括继承关系的处理;3)泛型方法的定义,重点区分了泛型方法与泛型类成员方法的差异;4)类型通配符的使用场景及上下限约束;5)类型擦除机制及其两种表现方式(无限制擦除为Object,有限制擦除为上限类型);6)泛型数组的特殊处理方式。文中通过大量代码示例详细说明了各知识点的实际应用,特别是对类型通配符和类型擦除等难点进行了深入解析,帮助读者全面掌握Java泛型编程的核

2025-11-04 11:33:31 858

原创 JVM运行时数据区全面解析:从堆到栈

JVM运行时数据区是面试常考知识点,主要包括线程共享区和独享区。线程共享区包含堆(存放对象实例)和方法区(存储类结构信息);线程独享区包括程序计数器(记录执行位置)、虚拟机栈(存储方法调用栈帧)和本地方法栈(处理native方法)。堆是GC主要区域,方法区存放类元数据,栈帧过多或过大会引发内存溢出。工具如jps、jmap和jconsole可用于监控堆内存。理解这些核心概念有助于掌握JVM内存管理机制。

2025-11-01 16:53:36 745

原创 你还在手写 Bug?一个 Java 程序员必须掌握的“排雷”秘籍!3 分钟搞懂 try-catch、throw、finally 的终极奥义,告别面试懵圈!

本文系统介绍了Java异常处理机制。主要内容包括:1.异常分类:编译时异常(受检/非受检)和运行时异常,以及Error错误;2.异常处理方式:try-catch-finally捕获处理、throws声明抛出异常;3.关键区别:throw与throws的不同,final/finally/finalize的区别;4.自定义异常的实现方法。文章通过具体代码示例演示了异常捕获顺序、多异常处理、方法重写的异常规范等实践技巧,并提供了分数范围异常的自定义实现案例。

2025-10-28 23:37:10 633

原创 【2025重新整理】22道RabbitMQ面试题含答案

【RabbitMQ核心知识点摘要】 RabbitMQ是一个基于AMQP协议的开源消息队列系统,主要实现解耦、异步和流量削峰功能。其核心架构包含生产者、交换机和队列三大组件,支持五种工作模式(simple/work/pub-sub/routing/topic)。关键特性包括消息持久化、优先级队列、死信队列和延迟队列(通过TTL+DLQ实现)。 高可用方案采用镜像集群模式,通过节点间数据同步保证可靠性。消息可靠性通过生产者确认机制(Confirm/Return模式)和消费者ACK机制保障。性能优化建议:非关键消

2025-10-26 17:31:26 518

原创 一文看懂RabbitMQ延时消息:定时任务不再掉链子

摘要:延时消息通过延迟消费机制实现定时任务处理,如电商订单超时关闭。实现方式包括死信队列(消息过期后转入死信队列)和延迟插件(直接设置延迟时间),后者更简便但仅适合短延时。对于长延时任务(如30分钟支付超时),建议采用分段轮询方式处理,避免性能损耗。代码示例展示了使用RabbitMQ延迟插件的生产消费实现。

2025-10-21 23:20:44 260

原创 99%的MQ系统都不可靠?看这一篇就够了!

本文总结了RabbitMQ高级篇中关于MQ可靠性的三个关键方面:生产者可靠性、MQ自身可靠性和消费者可靠性。生产者可靠性通过重连机制和确认机制保证消息发送;MQ自身可靠性采用数据持久化和LazyQueue机制;消费者可靠性通过确认机制、失败处理策略和业务幂等性来保障。文章详细介绍了各项配置实现和原理,包括回调函数、Future机制、RepublishMessageRecoverer等核心技术点,为构建高可靠的MQ系统提供了完整解决方案。

2025-10-21 09:40:46 569

原创 彻底搞清楚 @Component、@Bean、@Configuration 的区别

本文总结了Spring中@Component、@Bean和@Configuration三个注解的区别与联系:1. @Component是基础注解,用于自动扫描注册Bean,其子注解包括@Service、@Repository等;2. @Bean用于手动定义Bean,适用于第三方类或需要复杂实例化逻辑的场景;3. @Configuration是特殊的@Component,能通过CGLIB代理保证@Bean方法的单例性。文中还解答了常见问题,如@Configuration与@Component的运行机制差异,以

2025-10-13 12:12:08 361

原创 关于分布式锁redission的基础知识和八股【黑马点评必看】

本文介绍了Redis分布式锁的核心知识点及其在黑马点评项目中的应用。主要内容包括:1)分布式锁的必要性(解决跨服务器线程安全问题);2)Redisson解决的四大问题(可重入、可重试、超时释放和主从一致性);3)可重入锁原理(Redis Hash结构记录线程标识和计数器);4)可重试机制(基于TTL的等待策略);5)WatchDog自动续期机制;6)MultiLock联锁解决主从一致性问题;7)实际项目中的锁方案设计(一人一单功能实现);8)分布式任务调度系统的锁应用方案。文中还详细阐述了各机制的实现原理和

2025-09-30 16:22:44 1022

原创 【最全】动态代理的知识点复习

摘要:动态代理分为JDK和CGLIB两种,主要区别在于是否需要接口。JDK动态代理基于接口生成代理类,而CGLIB通过继承实现代理,能拦截更多方法。两者都用于在不修改源码的情况下增强方法逻辑。动态代理是AOP的实现工具,类似装修工具与整体工程的关系。文章详细演示了两种代理的实现:JDK代理需定义接口,通过Proxy.newProxyInstance创建代理;CGLIB代理则通过Enhancer生成子类代理。Spring默认优先使用JDK代理,无接口时自动切换为CGLIB。代理模式实现了核心逻辑与附加功能的解

2025-09-29 15:57:33 841

原创 AOP面向切面编程的复习

本文介绍了如何使用Spring AOP实现计算器方法的日志记录功能。首先创建了一个计算器接口Cal及其实现类CalImpl,然后通过AOP将日志记录与核心业务逻辑解耦。具体步骤包括:1)引入spring-boot-starter-aop依赖;2)将被增强类CalImpl标记为@Component;3)创建切面类LoggerAspect,使用@Aspect和@Component注解,定义@Before和@AfterReturning通知方法,通过JoinPoint获取方法参数和返回值。文章还解答了常见问题,如

2025-09-28 16:27:20 324

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除