- 博客(98)
- 资源 (4)
- 收藏
- 关注
原创 Java高级面试全攻略:从基础到实战,覆盖框架、中间件与数据库
在Java高级工程师面试中,考察维度不仅限于语法基础,更侧重**底层原理、框架设计思想、中间件实战能力、问题排查思路**。本文梳理了从Java基础到分布式实战的核心考点,结合高频面试题给出详细解析,帮你快速搭建知识体系,从容应对面试。
2025-09-30 11:11:54
806
原创 Spring Boot 整合 Redisson 实现分布式锁:实战指南
Redisson 是一个基于 Redis 的 Java 分布式框架,不仅提供了 Redis 客户端功能,更封装了一系列分布式工具类,其中分布式锁是其最常用的功能之一。Redisson 分布式锁的核心优势自动续期:内置"看门狗"机制,当业务未执行完时自动延长锁的过期时间,避免锁提前释放可重入性:支持同一线程多次获取锁,避免死锁集群支持:提供红锁(RedLock)机制,解决 Redis 集群下的"脑裂"问题丰富的锁类型:除了普通锁,还支持公平锁、读写锁、联锁等高性能。
2025-09-30 10:30:58
630
原创 Spring Boot 实战 Redis 分布式锁:从原理到高并发落地
原理优先:先理解 Redis 分布式锁的核心(SET NX EX+ Lua 脚本),再使用工具类或 Redisson。生产环境推荐 Redisson:原生实现适合学习,生产环境用 Redisson,避免重复造轮子,且支持更多高级特性。锁粒度要小:避免用全局锁(如stock:lock),改用细粒度锁(如),提高并发效率。过期时间要合理:既不能太短(导致续期频繁),也不能太长(死锁时影响范围大),建议 10-60 秒。监控不可少:在生产环境中,监控锁的加锁成功率、续期次数、释放失败次数,及时发现问题。
2025-09-30 10:29:24
936
原创 Kafka Windows 安装启动与 YAML 配置全解析
建议选择最新的稳定版本(如,其中2.13是 Scala 版本,3.6.1是 Kafka 版本)
2025-09-30 10:20:28
732
原创 Spring Boot 集成 Kafka 详解
Kafka 作为一款高性能的分布式消息队列,常被用于系统间解耦、异步通信和大数据处理等场景。下面详细介绍 Spring Boot 如何集成 Kafka,并提供实用示例。
2025-09-30 10:19:25
413
原创 Spring Boot整合Kafka:解决消息挤压、丢失与重复消费
生产者发送订单消息到(3副本,5分区)。消费者组(5个并发线程)批量消费消息,手动提交offset,业务层基于订单号做幂等。消费失败的消息重试3次后,发送到死信队列。死信队列消费者单独处理异常消息。消息不丢失acks=all+重试+回调确认;集群:多副本+最小同步副本;消费者:手动提交offset。不重复消费核心:offset与业务处理原子性;保障:业务层幂等(唯一键/数据库约束)。消息挤压短期:增加并发度+批量消费;长期:优化业务逻辑+死信队列隔离无效消息;
2025-09-30 10:11:43
571
原创 基于 SpringBoot+Logicflow 的轻流程任务执行
LogicFlow是一款流程图编辑框架,提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。可视化模型:通过 LogicFlow 提供的直观可视化界面,用户可以轻松创建、编辑和管理复杂的逻辑流程图。高可定制性:用户可以根据自己的需要定制节点、连接器和样式,创建符合特定用例的定制逻辑流程图。可以在web页面编辑流程节点 ,节点类型,支持拖拽等等,节点可以选择脚本,插件等等功能。只做简单实现记录,代码是执行不了的,方便以后面试的时候问起来,省得记不起来。LogicFlow是什么。
2025-09-26 15:54:15
304
原创 Java CompletableFuture 全方位指南(附实战案例)
如何创建异步任务(runAsync如何进行链式调用(thenApplythenAcceptthenRun如何组合多个任务(allOfanyOf如何处理异常和超时实际场景中的应用与最佳实践掌握能帮助你编写更高效、更优雅的并发代码,尤其在处理多任务协作场景时,能显著提升系统性能和可维护性。建议在实际项目中多实践,逐步体会其强大之处。
2025-09-23 16:11:05
735
原创 Java CompletableFuture 异步任务编排实践:从任务执行到结果汇总
在 Java 并发编程中,CompletableFuture 凭借其灵活的异步任务编排能力,成为处理多任务异步场景的核心工具。本文将以一段实际业务代码为例,拆解 CompletableFuture 如何实现 “异步执行任务 + 结果汇总 + 多任务等待” 的完整流程,并提炼关键知识点与实践注意事项,帮助大家在项目中正确落地。
2025-09-23 15:55:22
1003
原创 CompletableFuture以非阻塞的方式执行任务,并在任务完成后进行结果处理
在高并发场景下,CompletableFuture 是 Java 提供的一种强大的异步编程工具。它允许我们以非阻塞的方式执行任务,并在任务完成后进行结果处理。本文将从技术角度出发,讲解如何使用 CompletableFuture 并发检查多个端口是否开放。
2025-09-23 15:45:51
98
原创 Java使用 CompletableFuture 实现异步,并且在任务执行完成后汇总任务执行情况
【代码】使用 CompletableFuture 实现异步,并且在任务执行完成后汇总任务执行情况。
2025-09-23 15:38:11
114
原创 springboot2.7.11 + quartz2.3.2,单机,集群实战,增删改查任务,项目一启动就执行任务
Spring Boot 整合 Quartz 实现网络设备定时备份(实战篇)在 IT 基础设施管理中,网络设备配置定时备份是保障运维安全的核心需求(避免配置丢失、支持故障回滚)。本文基于 Spring Boot 2.x 环境,详细讲解如何整合 Quartz 实现动态任务调度,解决数据源配置、任务增删改查、Spring Bean 注入等关键问题,附完整可复用代码。
2025-09-22 10:00:09
696
1
原创 自定义Resttemplate,支持添加认证,打印请求,参数和响应,支持响应内容为xml的解析成对象
【代码】自定义Resttemplate,支持添加认证,打印请求,参数和响应,支持响应内容为xml的解析成对象。
2024-07-05 10:14:24
487
原创 SpringCloud(H版&alibaba)框架开发教程之SpringCloud Stream——附源码(7)
移步到此教程:https://blog.csdn.net/qq_42107430/article/details/104788858。
2024-01-08 10:54:01
439
原创 SpringCloud(H版&alibaba)框架开发教程之config,bus——附源码(6)
移步到此教程:https://blog.csdn.net/qq_42107430/article/details/104788858。
2024-01-08 10:40:51
421
原创 SpringCloud(H版&alibaba)框架开发教程之gateway——附源码(5)
当请求通过网关的时候,由Gateway Handler Mapping通过predicate判断是否与路由匹配,当predicate=true的时候,匹配到对应的路由。虽然我们可以在网关的前面再去加一层nginx或者haproxy等负载均衡器,但是仍旧很难改变网关在一定程度上的流量集中的问题。然而性能就是Zuul的短板,因为它是基于servlet的阻塞IO模型开发的。服务访问的认证鉴权更加方便,可以放在API网关统一去做。当你使用了API网关之后,所有的请求都要多一次转发,造成一定程度上的响应时长的延长。
2024-01-08 10:39:32
1291
1
原创 SpringCloud(H版&alibaba)框架开发教程之Hystrix——附源码(4)
他的功能是,当对某个服务的调用在一定的时间内(默认10s),有超过一定次数(默认20次)并且失败率超过一定值(默认50%),该服务的断路器会打开。根据cloud-consumer-feign-hystrix-order80已经有的PaymentHystrixService接口,重新新建一个类(PaymentFallbackService)实现该接口,统一为接口里面的方法进行异常处理。(当一个窗口期过去的时候,断路器将变成半开(HALF-OPEN)状态,如果这时候发生的请求正常,则关闭,否则又打开)
2023-12-29 16:38:42
954
原创 SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)
因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续我们将要介绍的Feign,它也是基于Ribbon实现的工具。支持HTTP请求和响应的压缩。在Spring Cloud中使用Feign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。openfeign远程调用,当有很多实例,我们也不能直接指定id去调用服务,因为服务太多了,而且有的服务可能已经在eureka里死掉了,所以不能写死。
2023-12-29 15:18:10
914
原创 SpringCloud(H版&alibaba)框架开发教程之nacos做配置中心——附源码(2)
比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ) ,给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。在入门案例中,我们实现了配置的远程存放,但是此时如果修改了配置,我们的程序是无法读取到 的,因此,我们需要开启配置的动态刷新功能。不同为服务之间实现配置共享的原理类似于文件引入,就是定义一个公共配置,然后在当前配置中引入。
2023-12-29 10:11:48
545
原创 SpringCloud(H版&alibaba)框架开发教程,使用eureka,zookeeper,consul,nacos做注册中心——附源码(1)
启动服务,注册到eureka,可以看到支付服务有2个注册到eureka,接下来,使用restTemplate在订单服务中调支付服务,并且负载均衡,使用自定义的策略。然后在浏览器输入http://localhost:7001/ 或http://localhost:7002/现如今我们已经启动了5个微服务,如果电脑不行,可以使用单机版本,并且服务启动的时候指定好jvm参数,把内存限制的小一点。创建订单服务,支付服务,公共api服务(共用的实体),eureka服务。–来自百度网盘超级会员V7的分享。
2023-12-28 17:15:18
1219
1
原创 SpringBoot+ShardingSphereJDBC实战(读写分离,分库分表,垂直拆分、水平拆分)附源码
源码地址:git@gitee.com:jackXUYY/springboot-example.git。参考:https://www.51cto.com/article/747736.html。打开dev2的配置,执行OrderController里面的接口看控制台打印的效果。我们启用后缀名为dev的配置文件,如下,数据库链接需要改成自己的地址。垂直分片 测试 (从不同的库中加载多张不同的表在一个项目中使用)建个t_order1的表,和t_order结构一样。注意数据库链接改成自己的,库表需要先建好,
2023-12-27 15:41:43
646
原创 springboot整合rabbitmq附源码
前提是对rabbitmq有一定的了解,比如虚拟主机,交换机,队列,信道,绑定,路由键,direct,fanout,topic等。我使用的是docker部署的rabbitmq,看到简书的这个,镜像版本是rabbitmq:3.7.7-management。原因:延迟插件不支持mandatory=true参数,如果启用会同时收到延迟消息和路由失败消息。DirectConfig此类是配置direct交换机,及队列,绑定关系。延迟交换机测试,场景就是下单了,没付费,过期取消订单。发送消息,指定路由键为man,
2023-12-21 15:10:00
614
原创 springboot整合kafka附源码
我们把这个类的注释打开,同时配置文件里的,partitioner.class配置开启,把消费者组group-id改为mykafka2,再把事务的配置也注释掉把上面的方法注释掉,把此方法的注释打开发送一个符合分区的消息内容因为此时没有1号分区,消息会发送超时我们可以新建配置类,声明分区数然后在发送消息试一下后续,刚才我们是手动ack,提交偏移量我们也可以指定偏移量去消费,方法代码里都有的,这里就截图了批量消费过滤消息内容再进行消费,异常处理消息转发定时启动,停止监听器。
2023-12-21 11:07:31
601
原创 springboot启动流程图
根据这个流程再去看源码会事半功倍流程解释组装SpringApplication1.resourceLoader:设置resourceload2.设置primarySources:可以把启动类加载进入spring容器3.webApplicationType:判断当前application应该运行在什么环境下4.mainApplicationClass:找出main方法启动的class执行SpringApplication的run方法获取SpringApplicationRunListen.
2021-03-23 13:10:46
1473
原创 spring的IOC理解
refresh方法 AbstractApplicationContext的refresh方法,源码: @Override public void refresh() throws BeansException, IllegalStateException { //加个锁,容器不能进行多次refresh synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. //准备工作.
2021-03-23 10:43:44
209
原创 mybatis入门及自定义mybatis框架实现简单查询
mybatis是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。mybatis通过 xml 或注解的方式将要执行的各种statement配置起来,并通过java对象和statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。采用 ORM 思想解决了实体和数据库映射.
2021-03-21 15:43:54
219
1
原创 redission分布式锁测试
pom依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.8.2</version> </dependency> <dependency> <groupId>org.springframework.bo
2020-09-21 14:04:00
621
原创 并发环境下,先操作数据库还是先操作缓存?
原文链接:https://juejin.im/post/6844903907726983181#heading-3
2020-09-18 10:53:50
181
原创 spring aop底层原理
使用的有jdk动态代理和cglib代理使用代理取决于代理的对象的是类还是接口,如果是接口-----》cglib代理如果是类------》jdk动态代理
2020-09-14 14:57:45
247
原创 base64 单文件上传,多文件上传
import org.springframework.web.multipart.MultipartFile;import sun.misc.BASE64Decoder;import java.io.*;public class BASE64DecodedMultipartFile implements MultipartFile { private final byte[] imgContent; private final String header; public.
2020-08-26 13:27:07
455
原创 单文件上传,多文件上传
需要导入相关的上传文件的依赖包相关工具类和自定义异常在下方import java.io.File;import java.io.IOException;StringUtils;import org.apache.commons.io.FilenameUtils;import org.springframework.web.multipart.MultipartFile;FileNameLengthLimitExceededException;自定义异常FileSizeLimitExceede
2020-08-24 14:20:22
374
原创 设计模式之单例模式
饿汉式,静态变量//饿汉式,静态变量class S1{ private S1(){ } public final static S1 s = new S1(); public static S1 returnS1(){ return s; }}饿汉式,静态代码块class S1{ static { instance = new S1(); ; } private static S1 ins.
2020-07-23 17:26:06
139
原创 设计模式的七大原则
设计模式的重要性软件设计中反复出现的问题,所提出的解决方案 软件可维护性,扩展性,可读性,规范性,高内聚,低耦合功能模块=设计模式+算法(数据结构)—》框架–》架构七大原则单一职责原则对于类来说,一个类应该只负责一个职责降低类的复杂度演示public class SingleRe{ public static void main(Str
2020-07-23 16:07:53
137
原创 github的骚操作,你用过几个?
1.in 关键词限制搜索范围关键字 in:name项目名字中带这个关键字的2.stars或fork数量关键词范围查找springboot stars:>=5000查找springboot项目,点赞数大于5000的3.awesome加强搜索一般是用来收集,搜索工具,书籍类相关的项目4.高亮显示某一行代码单行代码块地址+#L+代码行数多行代码块地址+#L+代码行数-L行数...
2020-07-20 10:49:33
138
原创 生产cpu占用高的定位和分析
结合linux命令和jdk命令去分析1.top命令找出占用过高的程序 找到进程id2.详细定位 jps -l pid 定位或ps -ef java3.定位到具体线程和代码·ps -mp 进程编号 -o THREAD ,tid,time·找到占用高的线程是哪一个4.将需要的线程id转为16进制格式5.jstack 线程号 | grep 16进程线程id -A60(打印前60行)就能定位到具体某一行代码...
2020-07-20 10:16:42
166
1
原创 线程池配置合理的线程数
System.out.println(Runtime.getRuntime().availableProcessors());获取处理器的数量cpu密集型处理器的核数+1io密集型处理器*2或者8/(1-阻塞系数)阻塞系数0.8~0.9
2020-07-17 14:50:58
193
原创 ReentrantLock与Sync有什么区别
阻塞和唤醒的方式不一样sync是java的关键字底层通过monitor对象不需要用户释放锁,自动释放sync不可中断,除非抛异常或运行完成默认加锁都是非公平锁lock是api层面的类需要用户主动释放锁可中断,设置超时中断默认也是非公平锁,可以设置成公平锁锁绑定多个condition,用来精确唤醒,而sync没有,要么随机唤醒一个,或者全部...
2020-07-17 14:46:21
1220
原创 java的锁
公平锁非公平锁ReentrantLock构造方法可传true默认是非公平锁公平锁先来后到,队列形式非公平锁,加塞,,加塞不成功在排队饥饿现象就是一直加载对于sync也是非公平锁可重入锁(又叫递归锁 )ReentrantLock的字面意思就是可重入锁,锁你用完了,我也可以用这把锁同步方法里的方法又调用了另一个同步方法,而此时这把锁是当前对象,所以仍然可以调用比如家门,卫生间门,家门你锁了,卫生间就不用锁了。作用:避免死锁reentrantlock与sync都是一个典型的可重入锁
2020-07-17 14:11:19
131
原创 分布式锁
N台 jvm + N线程微服务集群分布式锁实现三种myql数据库乐观锁------>并发量不够,所以不用redis---->redissionzookeeper----->临时节点demo–略
2020-07-16 16:08:38
165
redisclient-win32.x86.1.5.zip
2020-05-26
nosqlbooster4mongo-5.1.10.exe
2019-11-05
Citrix.Receiver.rar
2020-05-26
navicatformysql.rar
2019-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人