自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入浅出Activity工作流:从理论到实践,让业务流转自动化

本文系统介绍了Activity工作流引擎在企业级应用开发中的应用。Activity作为基于BPMN2.0标准的轻量级开源工作流引擎,能够将业务流程与业务代码解耦,实现流程自动化管理。文章详细讲解了Activity的核心概念与架构,包括ProcessEngine、RepositoryService等核心服务,并通过请假流程示例展示了从流程设计到代码实现的完整过程。进阶部分探讨了并行网关、子流程等复杂场景处理,以及与SpringBoot的集成方案。此外,还介绍了流程变量管理、任务监听器等精细化控制手段,并提供了

2025-11-24 17:44:23 503

原创 解放你的IDE:简单修改内存设置,告别卡顿,效率飙升!​

摘要:本文针对IntelliJ IDEA等IDE卡顿问题,提供通过调整内存设置提升性能的实用方案。重点讲解-Xmx参数修改方法,根据电脑内存推荐合理配置值(如16G内存建议3-4GB),并附详细操作步骤截图。实测显示修改后启动和索引速度提升约40%,日常编码更流畅。文末提醒注意事项,建议内存设置不超过物理内存1/2,并适用于JetBrains全家桶软件。

2025-11-24 09:43:19 276

原创 spring全局懒加载(default-lazy-init)导致的afterPropertiesSet不执行问题

Spring配置default-lazy-init="true"会导致所有Bean延迟初始化,影响afterPropertiesSet方法的执行时机。解决方案包括:1)为关键Bean显式设置lazy-init="false";2)使用@Lazy(false)注解;3)编程式强制初始化;4)使用DependsOn控制顺序。最佳实践建议分层配置策略,核心组件立即初始化,业务组件懒加载,并通过配置文件分离和环境区分优化配置。实际应用中,Web应用的请求处理相关Bean和批处

2025-11-21 15:49:09 426

原创 SQL优化利器:EXPLAIN关键字详解与实践指南

本文深入解析MySQL的EXPLAIN关键字,帮助开发者优化SQL查询性能。EXPLAIN可分析SQL执行计划,显示查询执行顺序、索引使用情况、扫描行数等关键信息。文章详细解读了EXPLAIN结果中的各个字段,特别是连接类型(type)的性能等级,从最优的system/const到最差的全表扫描(ALL)。通过多个实战案例,演示了如何诊断慢查询问题、避免索引失效,并介绍了MySQL 5.6+的JSON格式输出和8.0+的实际执行统计功能。最后提供了优化checklist,强调应基于EXPLAIN数据科学决策

2025-11-20 11:49:51 1181

原创 Spring中getResource(“/“)在Tomcat与SpringBoot下的差异解析

摘要:文章分析了Spring中applicationContext.getResource("/")在Tomcat传统部署和SpringBoot环境下返回结果差异的问题。传统Tomcat返回实际应用目录,而SpringBoot返回临时目录,这源于两者不同的资源解析机制。提出了三种解决方案:1)明确指定资源路径前缀;2)采用SpringBoot资源处理最佳实践;3)实现环境感知的资源路径解析。建议避免使用相对路径,明确指定资源类型,并通过配置外部化来管理路径,以提高代码的健壮性和可维护性。

2025-11-20 11:26:36 428

原创 AI时代程序员的进化之路:挑战、机遇与成长计划

AI时代程序员转型指南 摘要:随着AI编程助手使用人数突破1亿,程序员职业生态正经历深刻变革。数据显示AI可提升55%开发效率,使基础编码效率提升30-50%,测试覆盖率提高40%。文章分析了岗位重构趋势:基础开发岗位面临最大转型压力,而架构师等技术领袖价值将提升。提出三阶段转型计划:3-6个月掌握AI协作,6-18个月深耕架构能力,2-3年培养技术领导力。重点指出程序员的不可替代性在于战略规划、创新能力和商业思维等AI难以替代的领域,建议程序员转型为"技术策展人",通过人机协作实现职业

2025-11-18 11:49:57 1382

原创 Git代码管理实战:从入门到高效协作

摘要:Git作为分布式版本控制系统,已成为现代软件开发的核心工具。其核心优势包括分布式架构、强大的分支机制和离线工作能力。掌握Git需理解三大工作区域(工作区、暂存区、版本库)和文件四种状态(未跟踪、已修改、已暂存、已提交)。团队协作应采用功能分支开发+PR审查的工作流,推荐GitFlow或GitHubFlow分支策略。提交信息应遵循规范(如Conventional Commits),合并代码时合理选择merge或rebase。通过CI/CD集成、Git钩子自动化及明确的团队规范,将极大提升开发效率和代码质

2025-11-18 11:39:41 769

原创 架构设计的艺术:从业务需求到技术实现的思考

本文探讨如何设计兼具当前适应性与未来扩展性的系统架构。文章指出架构设计是业务需求、技术实现与团队能力间的平衡艺术,提出架构师的"黄金圈"思维模式和五大核心原则。详细介绍了四层架构设计法、领域驱动设计等方法论,分析分层架构、微服务等典型模式的适用场景。强调在可扩展性、可维护性等质量属性间取得平衡,提出架构演进策略和技术债务管理方法。通过电商平台案例展示架构随业务演进的实践路径,最后总结架构师成长的能力模型和学习路径,指出优秀架构应随时间增值,在复杂约束中找到最优解才是架构设计的最高境界。

2025-11-18 11:22:50 554

原创 三步式组织用户同步框架:稳健高效的数据同步方案

本文提出了一种基于差分对比的三步同步策略(数据采集→差分对比→触发同步),适用于大数据量下的精准数据同步。该架构通过源数据独立存储保障数据安全,采用差分对比机制实现变更集的可视化与审计,支持单条重试和冲突检测。相比直接同步方案,具备更好的容错性和一致性控制能力,特别适合万人级以上组织架构同步、多系统集成等高一致性要求的场景。文章详细阐述了数据库表设计、核心代码实现(包括分页处理与批量操作优化)以及完整的调度监控机制,通过性能优化策略确保系统在大数据量下的稳定运行。

2025-11-17 10:46:18 503

原创 记一次大数据导出方案优化:从超时到30万数据秒级导出

摘要:本文详细介绍了从系统崩溃到高效导出30万条数据的完整技术演进过程。通过对比直接查询、分页查询和游标查询三种方案,最终采用基于游标查询+流式Excel处理的异步方案,实现了22秒完成30万条数据导出的目标,内存占用控制在220MB以内。文章涵盖架构设计、核心代码实现、性能优化要点及解决方案,包括异步任务处理、SXSSFWorkbook流式API、数据库连接优化等关键技术,并总结了内存监控、错误处理等最佳实践。该方案显著提升了大数据导出的性能和稳定性。

2025-11-17 10:19:09 685

原创 记一次慢接口优化:载体详情页从90秒到800毫秒的性能提升实战

本文分享了载体详情页从90秒优化到800毫秒的性能优化实践。通过分析发现数据库查询占总耗时的85%,存在20+次串行查询及复杂风险评估计算等瓶颈。主要优化措施包括:1)使用CompletableFuture并行化查询;2)为数据库表添加高效索引;3)预计算风险评估并建立多级缓存;4)大表数据分页查询。最终实现112倍的性能提升,并发能力从8人提升到400人,关键经验包括解耦复杂计算、分页加载大数据、设计合理缓存策略等。

2025-11-14 16:39:47 681

原创 Java开发四年多,从萌新到骨干的成长之路与深刻感悟

摘要:本文分享了一位Java开发者四年的成长历程与职业感悟。文章从技术能力提升、架构思维养成、软技能重要性等方面展开,详细记录了从CRUD基础到系统架构设计的进阶过程。作者通过具体案例阐述了分布式系统、性能调优等实战经验,强调了工程思维和问题解决能力的培养。文中还包含了对初学者的建议、技术学习路径规划,以及未来在云原生、架构治理等领域的发展方向,最后总结了持续学习、团队协作和技术分享的重要性,为同行提供了有价值的成长参考。

2025-11-14 15:58:14 637

原创 深度剖析Spring Bean生命周期:从诞生到消亡的全过程

本文详细解析了Spring框架中Bean的完整生命周期,包括8个关键阶段:实例化、属性注入、Aware接口回调、BeanPostProcessor前置处理、初始化方法、BeanPostProcessor后置处理、使用期和销毁期。文章深入剖析了每个阶段的核心机制和典型应用场景,特别介绍了FactoryBean、不同作用域Bean的生命周期管理,以及Spring容器关闭流程。同时提供了生命周期优化实战技巧和常见问题解决方案,帮助开发者充分利用Spring扩展点进行高级定制,实现更健壮的系统架构和更优的启动性能。

2025-08-20 10:13:38 1032

原创 深度剖析Spring Boot启动原理:自动化魔法背后的核心机制

本文深入解析SpringBoot启动原理,揭示其自动化配置机制。SpringBoot通过自动配置、起步依赖、嵌入式容器和Actuator四大核心功能,解决了传统Spring应用的配置繁琐问题。启动流程包括环境准备、应用上下文创建、自动配置执行和嵌入式容器启动等关键步骤。文章重点剖析了@Conditional条件注解的运作机制,并提供了自定义自动配置和性能优化实践。最后介绍了SpringBoot3.0的新特性,强调理解启动原理对故障排查、定制扩展和性能调优的重要价值。掌握这些机制有助于充分发挥SpringBo

2025-08-19 14:34:59 853

原创 深入解析Spring MVC运行流程:从请求到响应的完整旅程

本文系统解析了SpringMVC框架的核心处理流程,通过九大关键步骤详细剖析请求从接收到响应的完整生命周期。重点介绍了DispatcherServlet、HandlerMapping、HandlerAdapter等核心组件的协作机制,并深入讲解了拦截器链、参数绑定、视图解析等核心功能实现原理。同时提供了性能优化建议和Spring6.x新特性前瞻,帮助开发者深入理解框架设计思想,优化应用性能。文章强调掌握这些核心机制对问题定位、功能扩展和性能调优的重要价值,是深入使用SpringMVC的必备知识。

2025-08-19 14:08:26 1045

原创 Spring容器启动核心:refresh()方法深度解析

本文深入解析了Spring框架中核心的refresh()方法执行流程,系统阐述了容器初始化的12个关键步骤:从准备阶段、BeanFactory创建配置、后处理器调用,到单例实例化、上下文刷新完成。文章详细拆解了每个步骤的实现细节,包括prepareRefresh()的环境准备、obtainFreshBeanFactory()的工厂创建、invokeBeanFactoryPostProcessors()的后置处理等核心环节。同时介绍了SpringBoot在onRefresh()阶段的特殊扩展,以及常见的循环依

2025-08-15 14:45:57 1033

原创 Tomcat部署JDK8项目启动失败:系统化诊断指南

《Tomcat启动失败15分钟快速排查指南》针对常见的SEVERE级别启动错误,提供了一套系统化解决方案。摘要涵盖:1)通过日志特征快速分类问题(类路径、依赖冲突等8类);2)诊断工具包(日志分析脚本、远程调试配置);3)重点解决类路径和依赖冲突问题(提供Maven依赖树分析方案);4)Tomcat配置检查清单;5)内存问题诊断三板斧;6)Spring项目特有问题的诊断技巧。文章强调预防性实践,包括环境标准化和启动前检查清单,将故障转化为理解系统架构的契机。

2025-08-15 14:39:40 543

原创 高并发接口性能优化实战:从200ms到20ms的蜕变之路

本文总结了性能优化的核心策略与实践,从订单接口响应超标的案例出发,提出精准定位性能瓶颈的三大工具(链路追踪、Profiler、火焰图)。详细介绍了十大优化策略,包括批量查询、多级缓存、连接池调优、异步处理等,使接口RT从220ms降至20ms。同时分享了JIT/GC调优、压测验证方法,以及建立长效防御体系的方案。最后强调性能优化应遵循数据驱动、全链路视角等原则,让系统资源得到极致利用。性能优化是持续演进的过程,需要平衡优化效果与系统复杂度。

2025-08-15 14:30:14 1080

原创 Java锁机制全解析:锁升级、乐观锁与悲观锁的深度揭秘

本文深入解析Java并发编程中的锁机制,从硬件层面剖析CPU缓存一致性与内存屏障原理,详细讲解Java锁升级流程(偏向锁→轻量级锁→自旋锁→重量级锁)。通过对比悲观锁与乐观锁的性能差异,提出9大锁优化策略,包括减小锁粒度、锁分离、锁粗化等。同时介绍JFR、Arthas等锁监控工具,并展望Loom纤程、Valhalla值类型等未来发展方向,帮助开发者在保证线程安全的前提下最大化并发性能。

2025-08-15 14:21:41 738

原创 Java锁机制深度解析:从synchronized到StampedLock

本文系统解析Java并发编程中的锁机制,涵盖内置锁(synchronized)和显式锁(Lock接口)的实现原理与使用场景。重点分析了synchronized的锁升级过程、ReentrantLock的可重入特性、读写锁的应用,以及AQS底层实现。同时介绍了锁优化策略(减小粒度、分段技术)和特殊锁机制(StampedLock、Condition)。文章还提供了锁选择的决策树和性能监控工具建议,强调根据实际场景选择合适锁方案,并指出无锁算法是并发优化的终极目标。

2025-08-15 14:15:37 914

原创 Spring框架探秘:IoC、AOP与事务管理的核心原理

摘要: Spring是一个分层的JavaEE生态系统,提供一站式解决方案,包含IoC容器、AOP、事务管理等核心技术及MVC、Data、Security等模块。IoC通过依赖注入(推荐构造器注入)实现控制反转,Bean生命周期含初始化/销毁回调。AOP通过切面管理横切关注点(如事务注解@Transactional)。配置方式从XML演进为JavaConfig与注解驱动,SpringBoot通过自动配置简化开发。最佳实践包括避免循环依赖、延迟加载,测试时使用@MockBean。趋势涵盖响应式编程(WebFlu

2025-08-14 18:03:58 1382

原创 线上故障定位:从报警到根因的实战指南

摘要:本文提供了一套完整的线上故障快速定位方案,包含黄金法则、四类典型场景(CPU飙升、内存泄漏、接口延迟、线程问题)的排查步骤、必备工具清单和避坑指南。重点强调保持冷静、保留现场、优先止血的原则,并给出具体命令和代码示例。同时建议建立预防体系,通过故障演练、防御性编码和健康检查降低风险。最后提供紧急响应清单,帮助开发者在30分钟内快速定位问题根源,将故障转化为技术成长机会。

2025-08-14 17:52:26 619

原创 揭秘Java HashSet:高效去重背后的魔法

本文深入解析了Java中HashSet的实现原理与使用技巧。HashSet本质是基于HashMap的适配器类,利用HashMap的Key特性实现快速查询和自动去重。文章揭示了HashSet的底层存储机制、时间复杂度特性,并重点分析了三大常见陷阱:未同时重写equals()和hashCode()、使用可变对象作为元素、自定义对象去重错误。通过对比HashSet、LinkedHashSet和TreeSet的特性,提供了不同场景下的选择建议。最后,文章给出了初始化优化、并行流安全去重等实用技巧,帮助开发者充分发挥

2025-08-14 17:47:20 629

原创 深入解析Java ArrayList:动态数组的实现与最佳实践

本文深入解析Java中ArrayList的核心特性与使用要点。ArrayList基于动态数组实现,支持O(1)随机访问但线程不安全,默认以1.5倍扩容机制自动扩展容量。文章详细剖析了其底层数据结构、时间复杂度表现,对比了与LinkedList的适用场景差异,并总结出三大实战陷阱:并发修改异常、批量插入扩容损耗和subList数据共享问题。同时提供了初始化预分配、正确遍历删除等优化建议,以及线程安全替代方案。最后强调根据场景选择合适集合类型,预估容量避免性能损耗,是Java开发必备的ArrayList深度指南

2025-08-14 17:43:37 617

原创 深入理解Java HashMap:原理、使用与陷阱

本文深入解析Java中HashMap的核心机制与使用实践。HashMap基于哈希表实现,采用数组+链表/红黑树结构,提供接近O(1)的查询效率。关键点包括:哈希函数计算、负载因子扩容机制、链表转红黑树优化等。文章特别强调其非线程安全性,建议多线程环境使用ConcurrentHashMap。最佳实践包括避免可变对象作为Key、合理初始化容量、优化hashCode实现等。通过与Hashtable对比,指出HashMap在现代开发中的优势,并列举其典型应用场景如数据缓存、分组统计等。最后提醒开发者注意其线程安全和

2025-08-14 17:40:51 876

原创 一文看懂SpringCloud【史上最全】

摘要 本文系统介绍了微服务架构的核心概念与技术体系。首先阐述了微服务理论,将其定义为将单一应用拆分为独立运行的小服务,通过轻量级通信机制协作。随后详细讲解了Spring Cloud框架,包括Eureka服务注册中心、Ribbon负载均衡、OpenFeign声明式调用、Hystrix熔断降级等核心组件。针对分布式系统面临的挑战,重点分析了服务雪崩现象及解决方案,如熔断、限流、降级等容错机制。文章还深入讲解了API网关Gateway的工作原理和配置方式,以及链路追踪工具Sleuth与Zipkin的集成使用。最后

2025-08-13 18:35:08 1333

原创 Quartz整合spring

本文介绍了如何配置基于Spring和Quartz的任务调度系统。首先在Maven项目中配置了必要的依赖包(Spring框架和Quartz),并将项目打包为WAR格式。然后通过XML配置文件定义了JobDetail、触发器(每10秒执行一次)和调度工厂。Web.xml中配置了Spring上下文监听器并指定了配置文件位置。最后实现了JobDemo类作为任务执行实体,包含run方法打印当前时间。测试结果表明任务能够按预期每10秒执行一次。整个配置过程清晰展示了Spring与Quartz的集成方式。

2025-08-13 16:05:14 167

原创 vue基础

Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架,专注于视图层,易于上手且能与现有项目整合。其核心是声明式渲染,通过简洁的模板语法将数据渲染到 DOM 中,避免了繁琐的 DOM 操作。Vue 支持双向数据绑定(v-model)、事件处理(v-on)、条件渲染(v-if、v-show)、列表渲染(v-for)等基本语法。组件是 Vue 的核心功能,允许开发者封装可重用的代码,构建复杂的单页应用。Vue 还支持路由(vue-router)和 HTTP 请求(axios),并可与 UI 库

2025-05-13 15:34:42 1268

原创 项目中遇到的问题

在使用Elasticsearch时,对象数组的检索可能因扁平化存储导致数据不匹配,解决方法是使用nested类型进行独立索引和查询。跨域问题通常由前后端分离引起,可通过配置Nginx或使用@CrossOrigin注解等方式解决。缓存问题通过注解和AOP实现分布式缓存和锁,有效缓解数据库压力,防止缓存击穿、穿透和雪崩。并发注册问题通过Redis检查手机号是否存在来避免重复注册。微服务间用户信息传递问题通过定义拦截器确保头文件信息正确传递。

2025-05-13 15:23:38 683

原创 mycat实现分库分表

MySQL单表存储数据条数是有瓶颈的,单表达到1000万条数据就达到了瓶颈,会影响查询效率,需要进行水平拆分(分表)进行优化。Orders订单表已经进行分表操作了,和它关联的orders_detail订单详情表如何进行join查询。将字典表或者符合字典表特性的一些表定义为全局表,则从另外一个方面,很好的解决了数据 JOIN 的难题。分库的原则:有紧密关联关系的表应该在一个库里,相互没有关联关系的表可以分到不同的库里。全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性。

2025-03-12 18:00:47 1212

原创 mycat实现读写分离

在主从复制的基础上操作。

2025-03-12 17:58:33 375

原创 mysql主从复制

缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如一条update语句,修改多条记录,则binlog中每一条修改都会有记录,这样造成binlog日志量会很大,特别是当执行alter table之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。优点: binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。:每一条会修改数据的sql都会记录在binlog中。

2025-03-12 17:55:38 839

原创 史上最全mycat【一文看懂】

mycat有三种常见的应用场景,每种场景具体的细节又不相同,如下所示:①读写分离读写分离实在主从复制的基础上运行的,在配置文件配置相应的节点实现,通过mycat主库负责读,从库负责写,而主库与从库之间会进行主从复制(主库接收到写的请求,首先会记录在binlarylog日志中,由从机去读取发生io并记录在relaylog里面,最终从机再将数据读取到自己的数据库里面,可以会产生一定的时间差)②数据分片。

2025-03-12 17:37:30 993

原创 java项目部署

第二种:项目打成jar,jar包制作成docker镜像,使用docker容器启动第三种打包jar,jar包制作docker镜像,上传镜像服务器,,通过k8s多个镜像进行运行部署。

2025-03-10 14:58:29 336

原创 史上最全jvm详解

请谈谈你对JVM 的理解?java8 的虚拟机有什么更新?什么是OOM ?什么是StackOverflowError?有哪些方法分析?JVM 的常用参数调优你知道哪些?内存快照抓取和MAT分析DUMP文件知道吗?谈谈JVM中,对类加载器你的认识?

2025-03-10 14:54:33 1912 1

原创 springboot整合swagger

前后端分离开发模式中,api文档是最好的沟通方式。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

2025-01-02 16:22:20 335

原创 单点登录那点事

大家好我是豆豆,一个具备多年工作经验并且致力于教大家思路的全栈开发程序员,今天为大家带来单点登录的解决方案。提起单点登录不的不提及各个软件架构演变,在此不做详细描述,读者可移步早期原创文章《软件架构的演变过程》。单点登录是由原先的单体架构的局限性所出现的,具体分析图片如下: 原先的单体架构,用户登录成功后,会将用户信息存储在session中,以session是否存在用户信息来判断是否存在登录成功,但是随着后来分布式架构的出现,不同的模块部署在不同的服务器上,那么就会出现一个情况,每次访问不同的

2025-01-02 16:17:02 960

原创 sql优化经验

SELECT中每少提取一个字段,数据的提取速度就会有相应的提升。提升的速度还要看舍弃的字段的大小来判断。

2024-11-06 17:47:50 892

原创 一条查询sql的执行原理

一图胜千言。

2024-11-06 17:43:13 1063

原创 java工具类

【代码】java工具类。

2024-07-23 15:07:11 604 1

空空如也

空空如也

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

TA关注的人

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