- 博客(183)
- 收藏
- 关注
原创 volatile的底层实现
volatile主要有两个作用:保证可见性和禁止指令重排序。可见性是指当一个线程修改了volatile变量的值,其他线程能立即看到这个修改。禁止重排序是为了避免编译器和处理器对指令的优化导致执行顺序改变,从而引发多线程环境下的问题。如果读者已经知道volatile的基本用法,现在想更深入了解其底层机制。可能是一位Java开发者,正在准备面试,或者在学习多线程编程时遇到了疑问。JVM如何实现volatile的功能,比如内存屏障、缓存一致性协议等,做详细解释。然后,我们要确定回答的结构。
2025-02-25 12:10:41
1500
1
原创 OAuth2.0和网关鉴权结合的身份认证技术
这套技术极大的简化微服用户认证,如果使用Session建立缓存用户登录状态的话,需要把Session做成多个节点共享的,因为传统的Session机制是一个数据“孤岛”,每个微服应用实体之间不能共享Session数据。10. 如果成功,网关将请求转发给下游微服务,并通常在请求头中添加用户信息(如。11. 微服务接收到请求,信任网关传来的用户信息,直接处理业务逻辑并返回结果。:网关可以根据预配置的路由规则,判断当前用户是否有权限访问该 API。:校验成功后,网关从响应中获取用户身份信息和权限范围。
2025-11-14 14:17:07
970
原创 多级缓存解决方案
性能极致:本地缓存提供纳秒级访问,Redis提供分布式缓存高可用:任何一级缓存故障都不会导致系统完全不可用可扩展:易于添加新的缓存层级或替换缓存实现监控完善:提供详细的缓存命中率统计容错性强:每级缓存都有异常处理,避免级联失败这种架构特别适合读多写少数据变化不频繁但访问量巨大的业务场景。
2025-11-11 12:34:31
1033
原创 Redis识别缓存与数据库数据的不一致性以及识别热Key教程
识别Redis缓存与数据库的数据不一致性以及发现热Key,是保障系统稳定与数据准确的关键。下面我将为你梳理具体的方法和策略。MONITOR。
2025-11-05 22:17:21
1038
原创 Web开发身份认证技术解析
现代Web应用通常采用多台服务器客户端 → 负载均衡器 → [服务器A, 服务器B, 服务器C, ...]同一个用户的连续请求可能被分发到不同的服务器。方面Session在单机环境Session在分布式环境Token方案数据存储服务器内存需要集中存储(如Redis)客户端自包含状态性有状态有状态(但存储集中化)无状态扩展性差中等(存储可能成瓶颈)优秀可靠性服务器重启丢失依赖外部存储可靠性不依赖服务器状态网络开销无每次请求访问外部存储无额外网络开销架构复杂度简单。
2025-11-05 22:05:51
1227
原创 Redis大Key调优指针
本文系统分析了Redis大Key问题的优化策略,从定义标准、检测工具到解决方案。大Key通常指String值超过10KB或集合元素超5000个,会造成性能瓶颈、内存不均等问题。核心优化包括合理设计数据结构、使用redis-cli检测、拆分重组大Key(如Hash分片)、异步清理(UNLINK命令)、辅助配置调整(压缩、多级缓存)等。建议遵循预防为主原则,结合业务特点制定规范,通过系统性优化充分发挥Redis性能优势。
2025-11-02 20:05:17
1352
原创 JVM Full GC 优化指南
摘要:频繁Full GC会导致应用暂停,影响服务稳定性。本文提供系统化排查流程:1)通过堆转储分析内存泄漏;2)调优JVM参数,包括堆内存分配、GC器选择和元空间配置;3)代码优化如避免大对象、及时释放资源。配套介绍了jmap、MAT等工具的使用方法,并附流程图指导问题定位。建议优先解决内存泄漏,再针对性调整参数,从根源减少GC问题。
2025-11-02 16:16:16
1430
原创 Redis性能调优指南
想让 Redis 发挥最佳性能,需要从内存、持久化、系统配置、客户端使用等多个维度进行综合调优。下面这个表格汇总了核心的优化方向和建议,你可以根据它快速抓住重点。
2025-10-30 21:27:51
1043
原创 Redis连接超时排查与优化指南
总的来说,排查Redis连接超时是一个系统工程,需要你从网络、服务器资源、Redis自身状态和客户端使用四个维度,由表及里地进行。如果经过以上排查和优化,问题依然存在,可以考虑启用更详细的监控(如Redis的INFO命令输出、Prometheus等),以便持续观察和深度分析。
2025-10-28 23:19:10
686
原创 Nginx如何配置负载均衡,并使用对不同同负载均衡算法进行配置
在 Nginx 中配置负载均衡,主要是通过upstream模块来定义一组后端服务器,并选择合适的负载均衡算法,然后在location块中通过proxy_pass指令将请求转发给这个服务器组。下面这个表格整理了 Nginx 常用的负载均衡算法,你可以根据业务场景快速选择。
2025-10-28 20:38:41
1376
原创 一篇文章了解软件设计钟的23种设计模式
意图:提供一个创建一系列相关或相互依赖对象的接口。// 抽象产品A// 抽象产品B// 具体产品 - Windows风格@Override@Override// 具体产品 - Mac风格@Override@Override// 抽象工厂// 具体工厂@Override@Override@Override@Override// 客户端开闭原则:对扩展开放,对修改关闭单一职责原则:一个类只负责一个功能领域依赖倒置原则。
2025-10-27 08:27:52
675
原创 jvm逃逸问题的分析以及给出解决方案?
逃逸分析(Escape Analysis)是指分析对象的作用域是否会"逃逸"出当前方法或线程的范围。尽量使用局部变量:减少对象的生命周期避免不必要的成员变量:除非确实需要共享状态使用不可变对象:减少同步和逃逸问题注意集合类的使用:返回副本或不可修改视图合理使用线程局部变量:避免线程间的对象共享编写小而专注的方法:便于JVM优化和内联通过合理的设计和编码实践,可以充分利用JVM的逃逸分析优化,显著提升程序性能,特别是在大量创建临时对象的场景下。
2025-10-26 16:32:18
986
原创 使用RedisTemplate设计一个消息队列?
在代码实现之前,我们先了解一下消息队列的基本需求。要保证数据的可靠性与性能之间提供选择。序列化配置:正确配置RedisTemplate的序列化方式,支持复杂对象存储事务支持:使用SessionCallback确保多个操作的原子性异常处理:完善的异常处理和日志记录性能考虑:使用连接池、批量操作、异步处理可靠性:实现消息确认、重试、死信处理机制扩展性:支持延迟消息、优先级队列等高级特性监控管理:提供队列统计和监控接口。
2025-10-25 19:59:39
1032
原创 软件开发的六大设计原则(SOLID + LoD)
原则关键实践主要收益SRP每个类单一职责易于理解、维护OCP面向接口编程,使用策略模式易于扩展LSP子类不改变父类行为预期继承安全ISP接口细化、角色分离避免接口污染DIP依赖注入,面向抽象降低耦合度LoD减少对象间依赖提高模块化这些原则共同构成了高质量、可维护、可扩展软件设计的基础。在实际开发中,它们往往相互关联、协同工作,帮助我们构建更加健壮的软件系统。
2025-10-21 14:57:35
1026
原创 软件设计中的DDD模式讲解
清晰的层次架构:严格分离领域层、应用层、基础设施层和接口层丰富的领域模型:实体、值对象、领域服务各司其职聚合根保护不变条件:所有对账户的修改都必须通过聚合根领域事件:用于解耦领域逻辑,实现最终一致性统一语言:代码中的类名、方法名都直接反映业务概念依赖倒置:领域层不依赖基础设施层这个示例展示了如何在 Spring Boot 中落地 DDD 的核心概念,你可以基于此框架继续扩展更复杂的业务功能。层面核心概念要解决的问题战略设计限界上下文、子域、上下文映射系统怎么切分?边界在哪?如何交互?
2025-10-13 22:28:45
1351
原创 MySQL为什么说在循环中使用数据库操作会大大影响性能?
在循环中执行数据库操作之所以性能极差,是因为它愚蠢地、重复地承受了本该避免的巨额开销:网络延迟、SQL解析成本、以及最致命的事务提交I/O。尽可能减少网络往返,尽可能将操作批量化,并在一个事务内完成。
2025-09-15 22:35:07
1065
原创 MySQL一条SQL的执行流程详细解析。
连接器管“门禁”。分析器管“听懂话”。优化器管“做计划”。执行器管“干活儿”。存储引擎管“仓库存取数据”。理解这个流程,对于后续进行性能优化(如索引优化、SQL改写)、问题排查(如锁等待、慢查询分析)以及理解MySQL的高级特性(如事务、日志)都有着至关重要的意义。
2025-09-12 20:24:59
1177
原创 MySQL执行过程中如何选择最佳的执行路径
基于成本模型:估算不同执行计划的 I/O、CPU 成本。依赖统计信息:表的行数、索引的基数等是其决策的依据。目标是成本最低:选择它认为执行最快的方案。提供准确的信息:通过创建合适的索引和更新统计信息来“帮助”优化器。验证和干预:使用EXPLAIN工具验证优化器的选择,并在极少数情况下使用提示进行干预。编写优化器友好的SQL:避免写出让优化器“困惑”的语句。
2025-09-11 22:40:32
1141
原创 Dockerfile构建容器需要注意的事项。
编写高效、安全且可维护的 Dockerfile 是容器化应用的核心。以下是构建 Docker 容器时需要注意的核心要点,我将它们分为几个关键类别,并提供一个快速检查清单。
2025-09-10 22:03:37
1113
原创 MySQL锁等待超时怎么排查定位代码并且解决 Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQ
排查流程总结发现问题:应用日志出现错误。连接数据库:立刻使用库查询锁等待和活跃事务信息。定位元凶:找到和。分析原因:查看阻塞事务的SQL和状态,判断是空闲事务、慢查询还是大事务。应急处理:必要时使用KILL命令终止阻塞连接。代码修复:根据根本原因优化代码,缩短事务范围、优化SQL、引入乐观锁等。预防措施在开发阶段就建立良好的事务设计规范。在应用日志中清晰记录事务的开始、提交/回滚以及耗时。对数据库进行监控,设置告警,当有长事务(例如超过30秒)出现时及时通知。
2025-09-03 21:17:47
1349
原创 JVM性能监控工具的使用
选择哪款工具很大程度上取决于你的具体场景和需求。初学者/本地开发:从JVisualVM开始,它是JDK自带的,功能全面,足够应对大多数常见问题。生产环境深度分析:如果条件允许,JProfiler或JMC/JFR是更专业的选择。JFR的开销尤其适合长期监控。服务器紧急排查命令行工具(jps, jstat, jstack, jmap)和Arthas是你的首选,它们无需GUI,灵活高效。监控远程应用:记得在启动应用时配置好JMX参数。内存分析:生成堆转储(Heap Dump)并用JVisualVM。
2025-09-01 20:15:39
1313
原创 JVM线上调优参数配置指南
基础内存设置-Xmn4g# 使用G1收集器# GC日志与故障诊断(极其重要!# 其他-XX:InitiatingHeapOccupancyPercent=40 # 根据IHOP监控数据调整最后强调:以上配置仅为示例和起点。监控 -> 分析 -> 调整 -> 验证,循环往复,最终找到最适合你当前应用的配置。
2025-08-26 22:37:26
1219
原创 EAM、MES和CRM系统信息的整理
汉得EAM资产云系统实现企业资产全生命周期管理,通过预防性维护、预测性分析和工单管理构建业务闭环,并与ERP等系统集成确保数据协同。系统沉淀的设备、维修等数据支持OEE等指标分析,助力优化决策,最终实现降本增效、风险可控的价值。MES系统则通过计划排产、生产执行、质量监控等环节,结合人员操作形成数字化闭环,提升制造效率与质量管控能力。两者均强调数据驱动和持续优化,为企业运营提供智能化支持。
2025-08-24 22:29:05
1421
原创 图解SpringMVC工作流程,以及源码分析。
摘要: 本文系统解析了Spring MVC的工作流程及核心源码。流程图解部分展示了请求从DispatcherServlet分发到HandlerMapping、HandlerAdapter,经Controller处理并返回ModelAndView,最终由ViewResolver和View渲染响应的完整流程。源码分析聚焦DispatcherServlet#doDispatch,详解HandlerExecutionChain的构建、拦截器链调用、适配器模式执行Controller方法,以及参数解析与返回值处理的核
2025-08-24 20:22:40
1221
原创 Java虚拟机的详细概述。
Java 虚拟机(JVM)是一个抽象的计算机器,它提供了一个可以执行 Java 字节码的运行时环境。它的核心价值在于“一次编写,到处运行”(Write Once, Run Anywhere)。虚拟机(Virtual Machine): 它是一个规范,而不是一个物理实体。它通过软件模拟了一个完整的计算机系统(包括处理器、堆栈、寄存器等),运行在宿主操作系统之上。核心任务: 读取.class文件(包含 Java 字节码)并将其转换为特定操作系统和硬件架构的本地机器指令并执行。关键角色。
2025-08-24 17:28:38
1515
原创 缓存注解@Cacheable你真的会用了吗?
问题答案与解释@Cacheable是否线程安全?这取决于Cache实现。注解本身不安全,但主流Cache实现(ConcurrentMap、Caffeine、Redis)都是线程安全的。我需要担心线程安全吗?通常不需要。只要你使用的是 Spring 官方支持或广泛使用的缓存库(如 Caffeine、Redis),并遵循标准配置,它们默认就是线程安全的。最重要的并发注意事项是什么?防范“缓存击穿”。在高并发场景下,强烈建议为可能失效的热点 key 设置。最佳实践1. 对于生产环境,使用Caffeine。
2025-08-23 11:31:56
1247
原创 Socket编程教程以及其原理详细解析。
Socket(套接字)是网络通信的抽象端点。你可以把它想象成一个电话插座电话网络->计算机网络(TCP/IP)电话号码(IP地址 + 端口号) ->Socket地址打电话/接电话->建立连接、发送/接收数据它本质上是由操作系统提供的一种 API,允许应用程序通过网络与其他应用程序进行通信。Java 对这套 API 进行了封装,使得使用起来更加方便。原理。
2025-08-21 20:03:08
1194
原创 lock4j 库中的 @Lock4j 注解进行全面的概述和深度的源码级剖析。
Lock4j的核心功能是声明式分布式锁。它通过 AOP 在方法执行前尝试获取锁,执行后自动释放锁,将分布式锁的通用逻辑与业务代码完全解耦。@Lock4j是一个基于 Spring AOP 和 SpEL 的强大声明式分布式锁框架。它通过注解驱动执行器插件化和Key动态化的设计,将复杂的分布式锁技术细节完全隐藏,让开发者能够专注于业务逻辑。最佳实践:锁粒度:使用key或keys属性设置细粒度锁,避免使用粗粒度的全局锁,提高并发性能。。超时设置expire时间应大于业务方法的平均执行时间,但不宜过长。
2025-08-20 22:24:22
1270
原创 Seata深度剖析:微服务分布式事务解决方案
Seata作为Spring Cloud Alibaba生态的核心组件,通过合理的模式选择和架构设计,可有效解决微服务架构下的数据一致性问题。作为Spring Cloud学习者,理解Seata是掌握分布式事务的关键。我将从架构设计到实战应用全面剖析Seata,助你构建可靠的微服务系统。:支持XA协议的数据库(Oracle/DB2):跨多服务的长时间事务(如电商订单)4.生成undo_log(前镜像)11x.根据undo_log回滚。12x.根据undo_log回滚。:基于关系型数据库的常规业务。
2025-08-12 16:17:47
1209
原创 Spring Security 框架深度集成与开发指南
Beanhttp// ...@Bean// 自定义成功逻辑} else {@Component// 记录成功登录log.info("用户 {} 登录成功", event.getAuthentication().getName());// 记录失败登录log.warn("登录失败: {}", event.getException().getMessage());核心集成:快速配置基础安全认证机制:数据库用户、LDAP、OAuth2、JWT等授权控制。
2025-08-06 17:49:56
1341
1
原创 Spring框架中@Async注解的实现原理剖析,并深入分析它的失效原因 。
Async的原理是 Spring AOP 创建代理 + 任务执行器线程池执行。其失效的核心在于AOP 代理拦截未能生效或任务执行器未能正确执行任务。排查@Async存在?方法是public、非final、非static?Bean 被 Spring 管理?是否是同一个类内部非异步方法调用了异步方法?(最常见!是否配置了合适的Bean?名称是否正确?是否实现了?默认执行器是否可用?线程池是否饱和(队列满、拒绝策略导致任务未执行或被同步执行)?监控指标是否异常?未捕获的异常是否导致工作线程退出?
2025-08-05 09:40:51
1197
原创 javaIO流的原理详细剖析
本文深入解析Java I/O流的核心原理与应用。主要内容包括:(1) I/O流本质是数据传输通道,采用分层架构设计;(2) 按数据类型分为字节流和字符流,按功能分为节点流、处理流等;(3) 详细剖析缓冲机制、装饰器模式和字符编码处理等核心机制;(4) 对比传统I/O与NIO的差异,NIO采用双向通道和块处理,支持非阻塞和内存映射;(5) 提供性能优化实践,如减少系统调用、批量操作等;(6) 展示文本处理、二进制操作等典型应用场景。文章通过类图、流程图和性能数据,系统讲解了Java I/O的设计原理与高效使用
2025-08-02 09:59:41
1233
原创 提升JVM性能之CMS垃圾回收器的优化分析与案例剖析
优化CMS垃圾回收器(Concurrent Mark-Sweep)是提升JVM性能的关键手段,尤其适用于追求低延迟的老年代回收场景。
2025-07-29 11:01:35
1386
原创 Vue中虚拟DOM的原理与作用
特点真实 DOM虚拟 DOM操作成本高(触发重排/重绘)低(内存操作 JS 对象)更新方式直接修改Diff + 局部更新跨平台仅浏览器支持 Web/移动端/服务端适用场景简单静态页面动态复杂应用虚拟 DOM 是 Vue响应式系统的基石,它通过智能的差异对比,在数据变化时以最小代价更新视图,大幅提升复杂应用的性能表现。
2025-06-08 13:12:59
1298
原创 redis持久化理论详细剖析以及最佳实战方案。
最佳方案仅供参考,如果社交应用,可能更关注性能,推荐混合持久化;如果是金融系统,就得强调Always模式+定期RDB冷备的组合。此外,还得提醒主从架构下持久化的特殊处理——从库的持久化策略可以和主库不同,这个容易被忽略。并配合主从复制,是实现高性能与数据安全的黄金方案。同时通过监控系统实时跟踪持久化状态,确保故障可预警。:在Redis 4.0+版本中,
2025-06-08 12:45:37
1183
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅