自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(372)
  • 资源 (8)
  • 收藏
  • 关注

原创 SpringBoot 优雅停机演进:实现原理与最佳实践

摘要 本文探讨了Spring Boot应用优雅停机的实现机制。在2.3版本前,开发者需要手动编码控制关闭顺序,存在Web容器与Spring容器关闭不同步的问题。Spring Boot 2.3引入了原生优雅停机支持,通过反转关闭顺序(先暂停Web容器接收请求,等待处理完成后再关闭Spring容器)和标准化WebServer接口,实现了开箱即用的平滑停机功能。文章详细对比了新旧版本的实现差异,并解释了底层通过SmartLifecycle控制关闭阶段的原理。配置简单,只需设置server.shutdown=gra

2026-03-01 21:10:47 53536 1

原创 最新Java程序员项目实战到架构师之路:一份清晰、系统、可落地的学习路线图(附技术图谱+面试指南)

本文是一份Java全栈学习指南,系统梳理了Java开发者的成长路径。文章首先分析了Java在企业级开发中的核心优势,随后通过思维导图展示了五大学习模块:基础核心、框架中间件、Spring全家桶、高级架构和面试准备。重点强调实战能力培养,指出大厂面试对底层原理、项目深度和系统设计的高要求。同时总结了新手常见误区,并提供配套视频课程资源。最后指出编程能力源于持续实践,鼓励读者通过系统性学习和项目实战向高薪Java工程师迈进。全文兼顾技术广度和深度,为Java学习者提供了清晰的学习路线图。

2025-12-28 08:45:00 57847 1

原创 MySQL与Redis缓存一致性问题详解及解决方案

文章摘要 本文深入剖析了缓存一致性问题的核心,即数据库与缓存操作的非原子性。通过对比四种常见缓存更新策略,推荐"先更新数据库再删除缓存"作为最佳方案。针对高并发场景,提出延时双删、MQ重试和Binlog监听等解决方案,并分析了各自的适用场景与优缺点。文章强调缓存过期时间仅是兜底方案,同时提供了避免缓存不一致的实用技巧,如互斥锁和合理的Key设计。最后总结推荐Cache-Aside模式作为首选策略,高并发场景辅以延时双删方案。

2025-11-06 20:46:09 17099 18

原创 SpringBoot中XXL-JOB实现灵活控制的分片处理方案

SpringBoot中基于XXL-JOB实现大量数据灵活控制的分片处理方案: 因为需要并行处理同一张数据表里的数据,所以比较自然地想到了分片查询数据,可以利用对 id 取模的方法进行分片,避免同一条数据被重复处理。那XXL-JOB 的路由策略「分片广播 & 动态分片」很贴合这种场景」来调度定时任务;

2024-09-25 21:34:20 10787 18

原创 SpringBoot中使用EasyExcel并行导出多个excel文件并压缩zip后下载

SpringBoot的同步导出方式中,服务器会阻塞直到Excel文件生成完毕,在处理大量数据的导出功能,利用CompletableFuture,我们可以将导出任务异步化,最后 这些文件进一步压缩成ZIP格式以方便下载

2024-09-16 22:03:30 13439 8

原创 算法学习攻略总结 : 入门至进阶,通关之路指南

算法学习攻略,学习算法没有捷径可走:先死磕入门数据结构,然后接触一些算法思想,最后开始分类刷题。刷题就是最好的捷径了,但刷题后不要就此止步,应该尽可能寻找最优解。当你积累了一定的题量后,你会发现自己的算法能力得到了显著提升。

2024-09-12 21:55:19 101463 19

原创 SpringBoot中读取配置的七种方法总结

Spring Boot提供了多种灵活且强大的方式来读取配置信息。开发者可以根据具体需求和场景选择最适合的方法来管理和使用配置。无论是简单的键值对还是复杂的配置结构,Spring Boot都能提供相应的支持来简化配置读取的过程。

2024-08-06 22:54:00 11821 22

原创 SpringBoot配置文件高级用法实战

Spring Boot配置文件的优先级是一个重要的概念,它决定了当存在多个配置文件时,哪个配置文件中的配置将被优先采用。

2024-08-03 20:54:11 23761 114

原创 Netty技术全解析:PooledUnsafeDirectByteBuf详解

PooledUnsafeDirectByteBuf 是 Netty 中一个结合了内存池技术和直接内存分配优势的字节缓冲区实现。它通过减少内存分配和释放的开销、降低内存复制成本以及对GC压力小等特点,为高性能网络编程提供了有力的支持。同时,Netty 通过避免直接使用 Unsafe 类来确保实现的稳定性和安全性。

2024-08-01 10:00:00 1956 2

原创 SpringBoot中优化if-else语句的七种方法实战

通过策略模式、枚举与策略模式结合、状态模式, 多态性、Lambda表达式与函数接口、命令模式以及保护子句等策略,我们可以有效地减少Spring Boot项目中`if-else`语句的使用,提升代码的可读性、可维护性和模块化水平。每种策略都有其适用的场景,合理选择和组合这些策略,可以帮助我们编写出更简洁、更高效的代码。

2024-07-26 23:30:00 12886 33

原创 SpringBoot整合Flink CDC,实时追踪mysql数据变动

Flink CDC(Flink Change Data Capture)是一种基于数据库日志的CDC技术,它实现了一个全增量一体化的数据集成框架。与Flink计算框架相结合,Flink CDC能够高效地实现海量数据的实时集成。其核心功能在于实时监视数据库或数据流中的数据变动,并将这些变动抽取出来,以便进行进一步的处理和分析。借助Flink CDC,用户可以轻松地构建实时数据管道,实时响应和处理数据变动,为实时分析、实时报表和实时决策等场景提供有力支持。

2024-07-23 23:20:53 31349 113

原创 Netty技术全解析:Channel技术详解

Channel是Netty框架中的核心组件之一,它代表了一个到实体的开放连接,并提供了执行网络IO操作的方法。通过深入了解Channel的实现原理和功能,我们可以更好地利用Netty框架开发高性能的网络应用。在实际开发中,我们应该根据具体的需求选择合适的Channel实现类,并合理地配置和使用Channel,以确保网络应用的稳定性和性能。

2024-07-22 16:00:00 2026 5

原创 SpringBoot中fastjson扩展: 自定义序列化和反序列化方法实战

fastjson允许用户自定义序列化器,用于控制特定类型的序列化过程。用户需要实现接口,并重写write方法。@Override// 自定义序列化逻辑在序列化过程中,可以通过枚举值来指定使用自定义序列化器。fastjson允许用户自定义日期格式。可以通过枚举值和来指定日期格式。此外,用户还可以通过DateFormat属性来指定全局的日期格式。类似地,fastjson也支持自定义反序列化器。用户需要实现接口,并重写deserialze方法。

2024-07-20 22:48:08 20605 109

原创 elasticsearch性能调优方法原理与实战

Elasticsearch性能调优是一个持续的过程,需要根据业务需求、数据量和集群规模不断调整和优化。希望本文提供的详细分析和建议能够帮助读者更好地理解和应用Elasticsearch性能调优方法,提升系统的整体效能。同时,也鼓励读者不断探索和实践新的调优策略,以适应不断变化的业务需求和技术环境。

2024-07-14 22:09:24 18093 103

原创 lua 脚本语言 : 基础到高级语法

在Lua中,函数可以用作数据赋值,也可以作为参数传递。函数可以返回多个值。return x+yendprint(add(1,2)) -- 输出:3在 Lua 中,函数的定义和调用是非常灵活和强大的。除了基本的函数定义和调用,Lua 还支持一些特殊的函数语法,如匿名函数、可变参数函数等。基本函数定义使用function关键字,后面跟着函数名和参数列表,然后是函数体。-- 函数体endlocal result = myFunction(3, 4) -- 调用函数,将返回值赋值给变量 result。

2024-07-12 23:00:26 8507 81

原创 算法学习路线总结: 算法工程师的修炼手册

在算法工程师的学习之路上,经常被问到的问题就是“应该如何系统地学习算法?那,今天,它来了!我将为大家详细解读算法工程师的学习路线,不仅包括基础理论知识,还涵盖实战经验和项目实践。为了更好地帮助大家,我还专门收集整理了配套的视频教程、教材推荐以及刷题网站等资源。

2024-07-01 23:44:01 106748 95

原创 elasticsearch去重:collapse、cardinality、terms+top_hits实现总结

灵活性:字段聚合+top_hits提供了更多的自定义选项,可以按多个字段进行分组,并控制返回的文档数量和排序。而collapse则更简单直接,只基于一个字段进行分组。性能:对于大数据集,collapse可能更高效,因为它避免了复杂的聚合计算。然而,实际性能还取决于具体的使用场景和数据分布。结果丰富性:字段聚合+top_hits可以返回更丰富的信息,包括分组大小和多个代表文档。而collapse只返回每个分组的最佳文档。在选择使用哪种方法时,应根据具体需求、数据量和性能要求来权衡。

2024-06-28 23:33:28 15902 85

原创 elasticsearch 聚合 : 指标聚合、桶聚合、管道聚合解析使用总结

Elasticsearch中的聚合查询是一种功能强大的数据分析工具,它能够提供从索引中提取和计算有关数据的复杂统计信息的能力。聚合查询不仅可以帮助用户理解和分析数据中的趋势和模式,还能在业务决策中发挥关键作用。聚合查询支持多种类型,包括指标聚合、桶聚合和管道聚合,每一种都有其特定的应用场景和使用方法。

2024-06-25 23:43:49 15249 107

原创 elasticsearch pipelineI详解:原理与使用

在Elasticsearch的数据处理流程中,Pipeline API为数据的预处理和转换提供了强大的工具。随着Elasticsearch 5.x版本之后Ingest Node的引入,Pipeline API的引入为开发者们提供了更多的灵活性和便利性。本文将对Pipeline API的原理、具体使用方法及其在实际场景中的应用进行更加详细的探讨。

2024-06-22 23:38:20 19018 105

原创 Elasticsearch中的post_filter后置过滤器技术

Post_Filter后置过滤器是一种在查询执行完成后对结果进行过滤的机制。与传统的过滤器不同,Post_Filter不会对查询的性能产生显著影响,因为它是在查询完成后对结果进行过滤的。这使得Post_Filter在处理大量数据或复杂查询时成为一种高效的选择。Post_Filter的工作原理是在查询执行完毕后,对返回的文档集进行过滤。这意味着所有与查询匹配的文档都会被检索出来,然后Post_Filter会对这些文档进行额外的过滤操作,以满足特定的条件。

2024-06-19 23:24:58 13516 99

原创 MySQL普通表转换为分区表实战指南

本文将详细指导新手开发者如何将MySQL中的普通表转换为分区表。分区表在处理庞大数据集时展现出显著的性能优势,不仅能大幅提升查询速度,还能有效简化数据维护工作。通过掌握这一技巧能够更好地应对数据密集型应用带来的挑战,为系统的高效运行奠定坚实基础。

2024-06-10 20:10:19 81314 24

原创 MySQL Hints:控制查询优化器的选择

MySQL Hints是一组特殊的注释或指令,可以直接嵌入到SQL查询中,以改变MySQL优化器的默认行为。这些Hints通常被用于解决性能问题,或者当开发者比优化器更了解数据分布和查询特性时,来指导优化器选择更好的查询计划。MySQL Hints是一种强大的工具,可以帮助我们解决复杂的查询性能问题。然而,它们应该谨慎使用,并且总是与彻底的测试和验证相结合。通过正确使用Hints,我们可以引导MySQL优化器做出更明智的决策,从而提高数据库查询的性能和稳定性。

2024-06-04 21:40:08 12059 119

原创 MySQL分区表:万字详解与实践指南

MySQL分区是一种数据库优化的技术,它允许将一个大的表或一个索引分割成多个较小的、更易于管理的片段,称为分区。这种技术可以显著提高查询性能、维护的方便性以及数据管理效率。本文将详细介绍MySQL分区的基本概念、工作原理、使用场景以及操作。

2024-05-17 19:54:16 107678 226

原创 Elasticsearch中的三种分页策略深度解析:原理、使用及对比

在选择Elasticsearch的分页方式时,需要根据具体的需求和使用场景来权衡各种方式的优缺点。`from + size`适用于数据量不大、实时性要求高的场景;`scroll`适用于需要遍历大量数据、非实时性要求高的场景;而`search_after`则适用于需要深度分页、实时性要求相对较高、且排序字段唯一的场景。通过合理使用这些分页方式,可以提高Elasticsearch的查询性能,更好地满足业务需求。

2024-05-08 19:07:09 73989 285

原创 Spring Boot中使用Redis和Lua脚本实现延时队列

通过使用Redis和Lua脚本,我们可以在Spring Boot环境中实现一个高效且可靠的延时队列系统。这种方法利用了Redis的有序集合数据结构和Lua脚本的原子性操作来确保任务的正确性和一致性。通过定期调度任务来处理到期的任务,我们可以实现各种需要延迟执行的操作,如发送提醒、执行定时任务等。

2024-05-03 21:20:57 20460 174

原创 深入探索Java并发编程:ConcurrentSkipListSet的高效使用与实现原理

在Java的并发编程中,ConcurrentSkipListSet是一个提供高并发访问能力的有序集合实现。它基于Skip List(跳表)数据结构,并通过精细的锁策略实现了高效的并发操作。本文将深入探讨ConcurrentSkipListSet的内部实现、特性、使用场景以及与其他并发集合的比较。

2024-03-19 15:58:54 1737 6

原创 elasticsearch写入流程和请求检索流程原理全方位解析

首先,从架构的角度来看,Elasticsearch是一个分布式的搜索和分析引擎,它能够存储、搜索和分析大量数据。为了实现这些功能,Elasticsearch采用了分片和副本的机制,使得数据可以分布在多个节点上,并且具有容错性和可扩展性。Elasticsearch的读写流程是一个精心设计的、分布式的处理过程。在写入数据时,它通过缓冲区、事务日志、刷新和flush操作等机制,确保了数据的可靠性与持久性。同时,借助Lucene的强大索引能力,将文档快速转换成可被搜索的形式。

2024-03-19 08:00:00 30118 132

原创 flowable、activiti、camunda 三大工作流引擎技术选型指南

在选择Activiti、Camunda还是Flowable时,您应根据具体需求进行权衡。如果您注重流程的直观建模和易用性,同时希望有丰富的社区资源和插件库支持,那么Camunda可能是一个不错的选择。如果您需要高性能和可扩展的解决方案,并且对商业支持和服务有较高要求,那么Camunda的商业版或Flowable可能是更适合您的选项。而如果您正在寻找一个轻量级且易于集成的工作流引擎,并且愿意接受一定程度的配置和部署复杂性,那么Activiti仍然是一个值得考虑的选项之一。

2024-02-03 16:26:31 128016 7

原创 MapStruct使用教程高级版

MapStruct是一个用于Java的代码生成库,它基于注解处理器在编译时生成类型安全且高性能的对象映射代码,MapStruct可以帮助开发者减少手动编写繁琐的JavaBean之间的转换代码,提高代码的可读性和维护性。

2023-11-04 18:13:45 151819 5

原创 MySQL Online DDL详解:从历史演进到原理及使用

在 MySQL 5.6 中,官方开始支持更多的 ALTER TABLE 类型操作来避免数据拷贝,同时支持了在线上 DDL 的过程中不阻塞 DML 操作,真正意义上的实现了 Online DDL。然而并不是所有的 DDL 操作都支持在线操作,后面会附上 MySQL 官方文档对于 DDL 操作的总结。到了 MySQL 5.7,在 5.6 的基础上又增加了一些新的特性,比如:增加了重命名索引支持,支持了数值类型长度的增大和减小,支持了 VARCHAR 类型的在线增大等。

2023-08-02 18:25:07 143488 7

原创 DRY 原则再思考:消除知识重复,而非代码相似

**DRY 中的 “Yourself”是关键**:它强调的是对自己所写系统的责任——不要让你自己(未来的你,或你的队友)陷入“一处修改、处处遗漏”的泥潭。DRY也是容易被误读的原则之一。很多人将其简化为“消灭视觉重复”,结果为了消除几行结构相似的 `if` 语句,硬造出泛型工具类、抽象基类甚至运行时反射机制,最终导致:- 代码耦合度上升;- 调试路径变长;- 业务语义被稀释。我们必须区分 **“知识重复”** 与 **“代码巧合相似”** ——前者必须消除,后者不妨容忍。

2026-03-19 19:43:08 1067

原创 Java 9 到 Java 25:语言演进与技术革新的分析

摘要:Java 9至25的演进展现了从架构重构到现代编程范式的全面转型,通过模块化系统、虚拟线程等创新优化了性能与开发体验。版本策略转向半年迭代与LTS并行,使Java在云原生与AI时代保持竞争力。核心变革包括:模块化系统(Jigsaw)重构依赖管理;Java 21引入虚拟线程提升并发性能;ZGC/Shenandoah实现低延迟垃圾回收;语法特性持续现代化。这一演进使Java兼具稳定性与创新性,为开发者提供了更高效的云原生与AI开发支持。

2026-02-05 21:33:31 2431 3

原创 SpringBoot项目整合RocketMQ启动失败的常见错误总结

本文总结了SpringBoot集成RocketMQ时常见的八大类问题及其解决方案:1)日志框架配置问题,需启用Slf4j集成;2)版本兼容性问题,需匹配SpringBoot与RocketMQ版本;3)依赖冲突问题,需检查依赖树并排除冲突;4)自动装配配置缺失问题,需手动配置AutoConfiguration;5)RocketMQ服务配置问题,需检查NameServer地址和磁盘空间;6)消费者组重复创建问题,需确保组名唯一;7)配置文件格式错误问题,需检查必要配置项;8)ACL认证配置缺失问题。针对每种问题

2026-01-23 22:02:20 2435 1

原创 一次讲全:CompletableFuture原理、API、常见陷阱与最佳实践

本文深入解析Java 8中的CompletableFuture异步编程框架。首先指出传统Future的四大痛点:阻塞等待、缺乏回调、无法组合任务和异常处理困难。然后剖析CompletableFuture采用事件驱动架构的核心原理,包括其内部数据结构和观察者模式实现。详细介绍创建CompletableFuture的多种方式(立即完成、异步执行、手动完成)以及处理依赖关系的三类API(一元依赖、二元依赖和多元依赖)。最后对比同步与异步API的使用场景,为高效异步编程提供实践指导。

2026-01-16 23:55:15 19784

原创 SpringBoot项目整合Zookeeper常见错误总结

本文总结了Zookeeper和Dubbo集成中的常见问题及解决方案,包括: 依赖配置问题:如缺少Zookeeper、Curator或Dubbo依赖,提供正确依赖版本; 连接配置错误:包括Zookeeper地址、端口冲突、数据目录权限等问题及修正方法; 服务启动失败:涉及服务未启动、连接超时、数据目录权限等场景的处理方案; 运行时错误:如服务注册失败、循环依赖、客户端连接异常等问题的排查方法; Zookeeper启动问题:针对配置文件错误、端口占用等启动失败情况提供解决方案。文中通过实例代码和配置示例,提供了

2026-01-11 22:44:30 2862

原创 SpringBoot项目整合OpenFeign启动失败及运行时常见错误总结

本文总结了SpringCloud OpenFeign使用中的常见问题及解决方案。内容涵盖:1)依赖与配置问题,如未添加OpenFeign依赖、缺少@EnableFeignClients注解等;2)接口定义问题,包括方法参数过多、缺少HTTP注解等;3)运行时错误,如400/405错误、服务发现失败等;4)其他问题如客户端未被扫描、与Nacos集成问题等。每个问题都给出了具体报错内容和对应解决方案,包含代码示例和依赖配置,帮助开发者快速排查和解决OpenFeign使用中的各类问题。

2025-12-26 23:27:13 2470

原创 MySQL数据同步神器Canal常见错误总结

摘要: 本文总结了Canal启动和运行中的常见错误及解决方案。启动问题包括网络连接错误、MySQL权限不足、binlog格式配置不当、实例参数错误、驱动版本不兼容和JVM内存不足。运行时问题涉及meta.dat文件不一致、全量同步限制、adapter空指针异常及配置文件格式错误。针对每个问题提供了具体排查步骤和修复方法,如调整MySQL权限、修改binlog格式、检查instance.properties配置、更新驱动版本、规范配置文件格式等。通过系统化的问题分类和解决方案,帮助开发者快速定位和解决Cana

2025-12-17 20:06:35 2220

原创 SpringBoot项目jar依赖问题错误分析

本文总结了Java项目中常见的Maven依赖错误类型及解决方案。主要内容包括:1) 依赖冲突类错误(如ClassNotFoundException、NoSuchMethodError等),2) 依赖配置错误(如坐标错误、范围配置不当),3) 依赖传递冲突(多版本冲突、自定义starter冲突)。针对这些问题,提供了实用解决技巧:使用Maven依赖排除机制、统一依赖版本、分析依赖树等。通过合理运用这些方法,可有效解决项目中的依赖冲突问题,保障构建稳定性。(149字)

2025-12-13 16:56:15 4413 3

原创 SpringBoot项目编译失败问题总结

本文总结了Spring Boot项目常见的编译失败类型及解决方案。主要包括: JDK版本与SpringBoot版本不匹配问题,如Spring Boot 3.x需要JDK 17+; 依赖冲突问题,包括版本不一致和传递冲突; Maven配置问题,如编译插件配置错误和依赖坐标错误; 资源文件与配置文件问题,如XML格式错误和编码问题; GraalVM原生编译问题。针对每种问题,文中提供了具体报错示例和解决方案,包括修改pom.xml配置、排除冲突依赖等。

2025-12-11 22:35:44 2780 2

原创 SpringBoot项目整合Sentinel启动失败及运行时常见错误总结

文章摘要:本文总结了Spring Cloud Alibaba Sentinel实际使用中的常见问题及解决方案,主要包括五大类问题:1)依赖缺失(如Hibernate Validator和版本不匹配);2)配置问题(控制台地址错误和配置绑定失败);3)Feign整合问题(FallbackFactory导入错误和整合配置错误);4)运行时错误(流控触发和熔断降级);5)其他问题(控制台未启动和集群模式配置)。针对每类问题提供了具体错误内容和解决方案,并附有配置示例和依赖管理建议。

2025-12-08 23:06:43 6505 2

产品经理的冰与火

产品经理的冰与火是有腾讯公司十年产品经验的团队,分享的产品设计理念,值得每个同行通读

2018-11-07

企业级node.js+web框架研发与落地

企业级node.js+web框架研发与落地,详细介绍了企业级的web框架的搭建

2018-11-07

下一代分布式体系架构的理念与演进

下一代分布式体系架构的理念与演进

2018-11-07

基于Apache Doris的数据中台建设思路规划

基于Apache Doris的数据中台建设思路规划

2024-03-06

架构师该如何考虑软件可持续迭代

架构面临的问题 架构常见的手段 架构演进的例子 成为优秀架构? 定义问题 → 确定架构 → 方案落地 → 结果复盘 微服务:Service Component,一个高度内聚的模合,对外暴露服务接口。每一个微服务都是独立的别向服务注册中心注册自身所能提供的服务接口服务调度:Broker,将服务请求调度到对应的微服点上进行处理请求接入:服务使用方发起请求,请求以一定的方以直接调用,也可以跨进程调用)发送到服务注册等待请求的

2023-11-09

京东到家核心系统微服务演进落地实践

京东到家核心系统微服务演进落地实践: 微服务演进之路遇到的挑战 复杂业务微服务演进过程案例-商品系统 · 微服务领域底座建设-痛点以及解决⽅案 · 微服务⽹关建设-微服务Gateway+LBS可视化⽹格 · 阶段复盘-成果以及痛点 · 微服务的下⼀个阶段摸索-领域服务PaaS

2023-11-09

Flink CDC+Kafka加速业务实时化.pdf

Flink CDC+Kafka加速业务实时化,构建实时数仓

2023-08-01

如何以产品思维做技术平台

如何以产品思维做技术平台,腾讯公司自身产品经理&架构师培训课件,值得研读。

2018-11-08

空空如也

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

TA关注的人

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