自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(135)
  • 资源 (2)
  • 收藏
  • 关注

原创 Kafka消息持久化机制全解析:存储原理与实战场景

Kafka的消息持久化机制通过日志分段、索引文件和批量写入技术,实现了高可靠性、高效性和消息可追溯性。默认配置下采用7天保留期和1GB日志段大小,平衡了性能与存储效率。典型应用场景包括电商流量削峰、金融审计追溯和IoT数据分层存储。常见误区包括过度分区和过大日志段设置,正确实践需结合业务需求调整参数。掌握Kafka存储机制对构建高性能分布式系统至关重要,适用于不同职业阶段的技术人员深入学习和应用。

2025-08-21 12:11:29 801

原创 Kafka如何保证消费确认与顺序消费?

《Kafka核心机制实践:消费确认与顺序消费详解》深入解析了Kafka的两个关键特性:消费确认机制通过自动/手动提交位移确保消息可靠处理,电商订单处理案例展示了手动提交如何避免数据丢失;顺序消费需保证单分区内消息顺序,通过分区策略和消费者设计实现,金融交易系统案例展示了强顺序场景的实现方案。文章还总结了常见误区,如自动提交更安全、增加分区数提高顺序性等错误认知,并给出最佳实践建议,包括手动提交+异常重试、单分区/同Key聚合等。掌握这些技能能有效提升分布式系统开发能力。

2025-08-20 21:54:42 1170

原创 Spring AOP的实现原理

本文深入解析Spring AOP的核心原理与应用场景,通过五大典型案例展示其在日志记录、权限校验、事务管理等企业级开发中的实战价值。文章首先剖析AOP如何解决OOP的代码冗余问题,详解关键概念如Pointcut、Advice等组件,并对比JDK动态代理与CGLIB代理的差异。随后通过完整流程揭秘AOP工作机理,重点给出日志记录、缓存优化等场景的代码实现方案,最后提供生产环境中的表达式规范、性能优化等最佳实践。AOP能显著提升代码复用率、降低耦合度,是Java开发者必备的高级技能。

2025-08-18 13:44:15 953

原创 深入浅出Seata分布式事务:核心原理与实战场景

《Seata分布式事务核心原理与模式解析》摘要:Seata是解决微服务数据一致性的分布式事务框架,包含TC协调器、TM管理器和RM资源管理器三大角色。提供四种主要模式:1)XA模式强一致但性能差;2)AT模式通过自动生成回滚日志实现无侵入事务;3)TCC模式分Try/Confirm/Cancel三阶段实现精细控制;4)SAGA模式通过补偿机制处理长事务。实际应用需根据场景选择:电商下单适用AT,金融交易推荐XA,长流程业务适合SAGA。关键考点包括事务传播、幂等处理和性能对比等。

2025-07-21 14:41:32 753

原创 单体VS微服务:如何选择最适合的架构?

本文对比分析了Java开发中的单体架构与微服务架构。单体架构将所有功能模块打包成一个应用,部署简单但扩展性差;微服务架构将应用拆分为独立服务,灵活可扩展但复杂度高。单体适合小型项目或快速迭代,微服务适用于大型复杂系统。实际案例显示,早期Uber采用单体,而亚马逊、Netflix则采用微服务。文章建议根据项目规模、团队能力和业务需求选择架构,并指出随着云原生技术发展,微服务渐成主流,但单体仍有其价值。开发者需权衡二者优劣,做出合理的技术选型。

2025-07-21 14:08:56 1078

原创 Java中的值传递 vs 引用传递本质区别

【摘要】Java参数传递机制本质上是值传递,而非引用传递。对于基本类型直接传递值副本,对象类型传递引用副本。关键点:1) 修改对象属性会影响原对象;2) 重新赋值引用副本不会改变原引用;3) 数组/集合元素修改会同步,但重新赋值引用无效。常见误区包括混淆对象属性修改与引用赋值,以及误判String的特殊性。实际开发中90%场景可归为三类:对象属性修改、集合操作和数组处理。Java选择值传递是为了保证安全性和简化内存管理。面试时应明确:Java只有值传递,所谓"引用传递"实为引用副本的值传

2025-07-17 12:13:14 1457

原创 在Java中String类为什么不可以修改?

Java中String类的不可变性是其核心设计,通过final修饰和私有字符数组确保内容不可修改。这种设计支持字符串常量池优化、哈希码缓存和线程安全。虽然可通过反射强制修改,但会破坏设计原则。频繁修改字符串应使用StringBuilder/StringBuffer。不可变性在性能、安全和内存管理方面提供了关键优势,是Java语言的主动选择。

2025-07-17 11:40:28 1486

原创 Spring声明式事务原理?哪些场景事务会失效?

摘要:Spring声明式事务通过AOP动态代理实现,核心包括事务属性配置和代理机制。事务失效的常见原因包括:1)方法未被Spring管理;2)非public方法;3)同类自调用;4)异常被捕获;5)数据库引擎不支持;6)传播行为错误;7)final/static方法;8)多线程隔离。解决方案包括正确配置注解、调整方法权限、避免自调用、重新抛出异常等。确保代理生效和事务属性正确配置是保证事务有效的关键。(150字)

2025-07-14 13:32:19 647

原创 Netty入门:手把手实现Echo Server/Client(附完整代码)

Netty作为Java高性能NIO框架,是实现网络编程的关键技术。本文通过Echo模式案例详细讲解Netty开发流程:从环境搭建(Maven配置)到实现服务器端(EchoServer)和客户端(EchoClient),重点解析了核心组件(EventLoopGroup、ChannelPipeline等)的作用。案例展示了消息收发机制,并提供了常见问题排查方法和扩展思考方向(如改造聊天室、WebSocket实现等)。该教程不仅帮助初学者掌握Netty基础开发,也为后续高并发系统设计打下基础。

2025-07-03 15:39:15 876

原创 接口限流算法解决方案详解:计数器、滑动窗口、令牌桶(Guava RateLimiter)、漏桶

本文介绍了四种主流限流算法及其应用场景。计数器算法(固定窗口)实现简单但存在临界问题;滑动窗口算法统计更精准但内存消耗高;漏桶算法能稳定输出流量但不适合突发场景;令牌桶算法(如Guava RateLimiter)支持突发流量且灵活可控。文章还提供了Java代码示例,并对比了各算法优缺点,建议根据业务需求选择合适方案(如API网关首选令牌桶,后台任务适用漏桶)。最后提出分布式限流的Redis实现方案,强调合理限流是保障系统稳定性的关键。

2025-07-03 07:00:00 1021

原创 Redis缓存穿透、击穿、雪崩解决方案详解

本文系统介绍了Redis缓存使用中的三大典型问题及其解决方案:1. 缓存穿透(查询不存在数据)建议采用布隆过滤器、空值缓存和参数校验;2. 缓存击穿(热点数据过期)推荐使用互斥锁、逻辑过期和缓存预热;3. 缓存雪崩(集体失效)应对方案包括随机过期、熔断限流和高可用集群。文章通过电商库存、热点新闻等实际案例,说明了组合使用多种技术手段(如布隆过滤器+互斥锁+随机过期)的有效性,并强调监控预警、多级缓存和压力测试等综合防范措施的重要性。

2025-07-02 07:51:43 1723

原创 Redis分布式锁实战:从入门到生产级方案

Redis分布式锁实现方案解析 在分布式系统中,Redis分布式锁是解决资源竞争的关键技术。本文介绍了四种主流实现方案:1)基础版SETNX+EXPIRE,简单易用但需处理锁误删问题;2)Redisson框架推荐方案,提供自动续期、可重入等高级特性;3)RedLock算法适用于集群环境,确保强一致性;4)Lua脚本实现原子操作。同时分析了锁误删、主从一致性等常见问题及解决方案,建议生产环境优先采用Redisson,集群场景使用RedLock,并注意锁粒度、超时设置等优化细节。

2025-07-02 07:43:39 1002

原创 Redis 常用数据类型操作详解(Jedis版本)

本文介绍了Redis主要数据类型及其Java操作实践。涵盖String、Hash、List、Set和ZSet五种核心数据类型,详细说明每种类型的使用场景和Jedis客户端操作方法,包括缓存设置、计数器、消息队列等典型应用。文章还提供了环境配置指南、完整代码示例和性能优化建议,强调合理选择数据类型对Redis应用开发的重要性,并对比了Jedis与Lettuce客户端的差异。通过本文,开发者可以快速掌握Redis数据结构的实际应用技巧。

2025-07-01 08:14:41 766

原创 Spring事务传播行为(@Transactional(propagation=...))案例详解

摘要:本文系统解析Spring事务传播行为的7种类型及其应用场景。主要内容包括:1)事务传播行为的概念与核心作用,解决嵌套调用时的事务控制问题;2)7种传播行为的详细对比,从默认的REQUIRED到强制事务的MANDATORY;3)典型应用案例解析,如订单处理(REQUIRED)、独立日志(REQUIRES_NEW)和部分回滚(NESTED);4)常见误区与解决方案,强调同类内调用失效问题和行为选择原则。最佳实践建议优先使用REQUIRED,独立操作用REQUIRES_NEW,查询方法用SUPPORTS。正

2025-07-01 08:03:06 812

原创 Spring AOP 实现日志记录案例详解

摘要:本文介绍了使用Spring AOP实现日志记录的技术方案。首先分析了传统日志代码的三大痛点:冗余、耦合度高、功能单一,提出AOP解决方案。通过核心概念讲解(切面、切入点、通知)和基础案例演示(自定义注解+环绕通知),展示了方法级日志的实现。进阶案例扩展了动态参数和异常处理功能,高级应用则实现数据库持久化。文章总结了AOP日志的优势(解耦、扩展性、统一管理)和使用注意事项(性能影响、代理模式、异常处理),最后提出扩展思考方向。全文通过递进式案例,系统性地展示了Spring AOP在日志记录中的实践应用。

2025-06-30 15:08:25 840

原创 设计模式:代理模式 (静态代理、JDK动态代理、CGLib动态代理) 案例详解

代理模式通过引入"中间人"解决对象直接访问的耦合度高、功能冗余和安全风险问题。核心角色包括抽象主题(Subject)、真实主题(RealSubject)、代理(Proxy)和客户端(Client)。实现方式有三种:静态代理需手动编写代理类,简单直观但代码冗余;JDK动态代理基于接口动态生成代理类,耦合度低但仅支持接口;CGLib动态代理通过生成子类实现,支持普通类但性能稍逊。实际应用广泛,如Spring AOP、MyBatis插件等,选择时需根据场景(有无接口、性能要求等)权衡。建议结合

2025-06-30 07:15:00 911

原创 设计模式:观察者模式 (Observer) 案例详解

《观察者模式解耦实践》摘要(150字) 观察者模式通过解耦主题与观察者,解决对象间一对多依赖问题。核心原理是:主题维护观察者列表,状态变化时自动通知所有订阅者;观察者实现统一更新接口,响应主题变化。典型应用场景包括:GUI事件处理(如按钮点击触发多操作)、数据同步(如股票价格通知投资者)和MVC架构(模型数据变更更新视图)。Java提供了Observable/Observer接口但灵活性不足,建议自定义实现。该模式优势在于动态扩展性,但需注意避免循环依赖和同步阻塞问题。开发中建议从天气监测等基础案例入手,逐

2025-06-29 15:55:56 1082

原创 设计模式:工厂模式 (简单工厂、工厂方法、抽象工厂) 案例详解

提供一个抽象工厂接口,用于创建一组相关或依赖的对象(产品族)。例如,创建不同风格的 UI 组件(按钮、文本框)时,保证它们风格一致。工厂模式是 Java 开发的基石技能,掌握其核心逻辑和差异能帮助你写出更优雅、可维护的代码。初学者可从简单工厂入手,逐步理解工厂方法和抽象工厂的设计理念。在实际项目中,根据需求选择合适的模式,避免过度设计!

2025-06-29 07:00:00 1315

原创 设计模式:单例模式 (饿汉、懒汉、DCL、静态内部类、枚举) 实现与对比

摘要:单例模式确保类仅有一个实例,适用于配置中心、日志管理等需全局唯一对象的场景。Java实现方式有五种:1)饿汉式(线程安全但内存占用高);2)懒汉式(延迟加载但线程不安全);3)双重检查锁定(兼顾性能与安全);4)静态内部类(天然线程安全);5)枚举(最简洁安全但扩展性差)。选择建议:简单场景用枚举,高并发选DCL或静态内部类,资源紧张用饿汉式。需注意反射和反序列化的防护。单例模式是优化资源利用的关键设计模式。

2025-06-28 08:00:00 1037

原创 Java线程池(ThreadPoolExecutor)原理、参数配置与使用案例

Java线程池核心原理与实践指南 线程池通过复用线程降低创建/销毁开销,提升并发性能。其核心流程为:任务优先由核心线程处理,队列缓冲后动态扩展非核心线程,超限则触发拒绝策略。关键参数包括核心线程数(CPU密集型建议核数+1,IO密集型建议核数*2)、有界队列(防OOM)及拒绝策略(如CallerRunsPolicy)。推荐使用自定义ThreadPoolExecutor,避免无界队列,合理配置线程数,并优雅关闭(shutdown→shutdownNow)。典型场景:固定线程池适用于稳定流量,缓存线程池适合短时

2025-06-28 07:45:00 989

原创 volatile关键字的最佳实践实例

摘要:本文深入探讨了volatile关键字的最佳实践与典型应用场景。在最佳实践部分,强调了避免过度使用volatile、与synchronized配合使用、优先选择Atomic类等原则。通过双重检查锁定、中断机制、并发容器等案例展示了volatile的实际应用。同时介绍了使用AtomicInteger替代volatile的优势,以及利用AtomicStampedReference解决ABA问题的方法。文章指出,volatile虽可确保可见性和有序性,但不保证原子性,需要根据场景合理搭配synchronize

2025-06-27 08:00:00 894

原创 volatile关键字原理的使用介绍、底层原理解析

这种直接从主内存读取的方式,极大地保证了不同线程对该变量操作的可见性,让各个线程都能及时获取到最新的数据。这就像是在数据流通的道路上设置了关卡,确保数据的读写都严格按照规定的顺序和方式进行,防止了数据的不一致和混乱。volatile关键字就像一道“禁令”,告诉编译器不要对这段代码进行不合理的优化,从而避免了一些可能引发错误的优化操作,确保程序在多线程环境下的正确性。volatile关键字的主要作用在于保证可见性、有序性以及禁止编译器优化,犹如一位严谨的指挥官,确保多线程环境下的变量操作有条不紊。

2025-06-27 07:30:00 472

原创 【Java并发编程】 synchronized 与 ReentrantLock 的性能、场景与避坑指南

StampedLock:JDK8+提供的乐观读锁,适合读多写少场景ReadWriteLock:区分读写锁,提升并发读性能原子类:在能用AtomicInteger等类时,优先用无锁方案。

2025-06-26 08:40:26 1060

原创 CAS原理与AtomicInteger使用详解

摘要:本文解析Java中CAS机制及AtomicInteger的实现原理与应用。CAS通过无锁原子操作实现线程安全,包含读取、比较和交换三个步骤,具有高性能但存在ABA问题和自旋开销。AtomicInteger利用CAS提供原子操作方法,适用于计数器等简单场景。文章对比了CAS与传统锁的差异,指出CAS在低竞争时性能更优,并给出使用建议:优先选用AtomicInteger处理简单原子操作,警惕ABA问题,复杂场景考虑其他并发工具。通过代码示例展示了AtomicInteger在计数器和信号量中的实践应用。

2025-06-26 08:31:57 721

原创 如何保证MySQL与Redis数据一致性方案详解

本文探讨了MySQL与Redis数据一致性问题及解决方案。在互联网高并发场景下,数据库与缓存的数据不一致主要源于更新顺序、并发竞争和主从同步延迟。文章分析了三种解决方案:1)基础策略如更新时序选择和延时双删;2)进阶方案包括Binlog同步和消息队列异步更新;3)强一致性方案使用分布式锁和事务补偿。针对不同业务场景,提出了技术选型建议和配套措施,并提供了代码级优化示例。最终强调应根据业务特点在性能与一致性间寻找平衡,合理选择最终一致性或强一致性方案。

2025-06-19 15:37:09 2658

原创 Java文件读写的5大核心技巧,告别IO流困扰

【Java文件IO操作指南】字节流(FileInputStream/OutputStream)用于处理图片等二进制文件,字符流(FileReader/Writer)适合文本文件且需指定编码。缓冲流(BufferedXXX)可提升性能,减少IO操作。常见错误包括:未关闭流导致资源泄漏、编码混乱产生乱码、混淆read()与readLine()方法。建议使用try-with-resources自动关闭流,明确指定UTF-8编码,并根据场景选择合适流类型:文本处理用字符流+缓冲,二进制文件用字节流。特别注意文件操作

2025-06-07 16:44:40 804

原创 Java 8 Stream API 入门到实践详解

Java8的Stream API革新了集合操作,用函数式编程替代传统for循环。核心操作包括:过滤(filter)、映射(map)和归约(reduce),具有简洁链式调用、惰性计算和并行处理优势。典型应用场景包括统计词频、大数据并行处理和多级排序。需注意流只能使用一次,避免Prev并行陷阱,且并行流在小数据量时可能效率更低。相比Prev传统方式,Stream代码量可减半,如过滤偶数从5行缩减到1行,大幅提升开发效率和代码可读性。

2025-06-07 16:30:08 1076

原创 在java中不同数据类型的运算与内存占用分析

等基本数据类型及其包装类的运算行为和内存占用,帮助开发者理解数据类型的特性,并掌握内存优化技巧。通过本案例,开发者可直观理解数据类型的内存特性,为高性能、低内存占用的代码设计提供依据。在Java开发中,合理选择数据类型直接影响程序的内存占用和运算效率。

2025-06-04 13:05:08 425

原创 Java 8 新特性全解析:提升代码效率与可读性

Java8的发布标志着Java编程语言的一次重大革新,引入了Lambda表达式和Stream API,极大地提升了代码的简洁性和效率。通过Comparator、Consumer、Filter、Sorted、Map、Match、Count、Reduce和flatMap等核心特性,Java8使得函数式编程变得更加直观和强大。这些新特性不仅简化了代码,还提高了性能,特别是在处理集合数据时,Stream API的链式调用和并行处理能力使得代码更加高效和易于理解。Java8的这些改进,使得开发者能够以更少的代码实现更

2025-05-11 10:42:17 851

原创 说说在系统架构中,限流的主要目的是什么,有哪些常见的限流算法及优缺点?

在系统架构中,限流的主要目的是,常见的限流算法包括固定窗口计数器算法、滑动窗口算法、漏桶算法和令牌桶算法。

2025-05-10 08:15:00 463

原创 说说你对熔断、限流和降级的理解?在分布式系统中熔断、限流和降级的作用是什么?

熔断、限流和降级是现代分布式系统中常用的三种稳定性保障机制。它们分别通过不同的方式保护系统在高并发、高负载或部分服务故障的情况下,仍能提供基本的服务能力。以确保系统的整体稳定性和可用性。

2025-05-10 08:00:00 1459

原创 说说什么是服务雪崩,我们该如何避免

服务雪崩效应通常由单个服务的故障引发,通过调用链路迅速扩散,导致整个系统崩溃。其触发机制包括初始故障、调用链路阻塞、连锁反应和资源耗尽。典型场景如电商系统中订单服务因库存服务宕机而崩溃。核心防御策略包括熔断与降级、限流、超时控制、资源隔离、监控与告警、负载均衡与弹性伸缩以及分布式追踪。通过组合这些策略,如熔断+限流+降级、超时+异步调用、监控+自动扩容,以及混沌工程,可以有效降低雪崩效应的发生概率,提升微服务架构的高可用性。

2025-05-09 16:16:18 344

原创 手撕Spring Boot动态路由!注解+拦截器实现路径参数动态化,让你的API更灵活!

在日常开发中,动态路由技术能够有效解决多租户系统、版本控制、A/B测试和灰度发布等场景下的路径管理问题。通过自定义注解、配置WebMvcConfigurer和拦截器,可以实现路径的动态前缀添加和参数提取。这种方案不仅简化了代码结构,还提高了系统的灵活性和可维护性。此外,集成OpenAPI3文档可以方便前端开发者理解和使用API。动态路由技术特别适用于SaaS系统和多租户应用,能够显著提升开发效率和系统扩展性。

2025-05-09 16:14:02 1065

原创 什么是线程安全和非线程安全,它们有什么区别?

注意,如果锁的是类对象,尽管创建了多个实例对象,它们仍然属于同一个类,因此会被锁住,保证线程之间的同步关系。在多线程环境下,不提供数据访问保护,可能导致多个线程同时修改数据,从而产生脏数据或不一致的结果。HashMap是非线程安全的,采用异步处理,性能更高,在JDK1.2之后推出,使用更为广泛。HashTable是线程安全的,采用同步处理,性能较低,在JDK1.0时推出。StringBuffer是线程安全的,适用于多线程环境,但性能相对较低。Vector是线程安全的,适用于多线程环境,但性能相对较低。

2025-04-30 08:15:00 506

原创 SpringBoot中的bean是线程安全吗? 在实际工作中如何处理线程安全问题?

Singleton:需要特别注意线程安全问题,尤其是有可变状态的Bean。Prototype:通常是线程安全的,因为每次请求都创建新的实例。Request 和 Session:通常也是线程安全的,因为每个请求或会话都有独立的实例。Application:与Singleton相同,需要注意线程安全问题。通过合理设计Bean的作用域和使用适当的线程安全机制,可以确保Spring Boot应用中的Bean在多线程环境下正常工作。

2025-04-30 08:00:00 1002

原创 Springboot Dubbo迁移到SpringCloud Alibaba中的好处是什么?

例如,从Dubbo迁移到Spring Cloud Alibaba后,你可以继续使用Spring Boot和Spring Cloud的其他组件,如Spring Cloud Gateway、Spring Cloud Config等,实现全栈的统一管理。Spring Cloud Alibaba集成了多种阿里巴巴开源项目,如Nacos、Sentinel、RocketMQ等,这些项目提供了丰富的功能,如服务发现、配置管理、限流降级、消息驱动等。例如,Nacos提供了可视化的管理界面,方便监控和管理服务的状态;

2025-04-29 08:30:00 511

原创 为什么我使用了索引,有时发现查询还是会慢?

在线上系统运行时,有时发现查询SQL很慢,使用EXPLAIN把SQL提取下来,查看执行结果也使用了索引,查询仍然很慢,可能有多种原因。复杂的查询、过多的连接操作、不必要的子查询等都可能导致查询变慢。使用 EXPLAIN 或类似的命令查看查询的执行计划,了解数据库是如何执行查询的。重写查询,避免不必要的复杂操作,使用适当的索引提示(如 `USE INDEX`)。检查是否使用了复合索引(多列索引),并确保查询条件中的列顺序与索引定义一致。通过以上方法,你可以逐步找到查询慢的原因,并采取相应的措施进行优化。

2025-04-29 08:00:00 928

原创 说说你在项目中是如何优化代码性能的?

具体而言,系统可配置定时任务,按照预设的时间间隔扫描数据库中的待处理记录,并逐一执行数据处理逻辑;或者,通过MQ机制,将待处理记录封装成消息发布至消息队列,由独立的消费者服务订阅并消费这些消息,实现数据的异步处理。用户发起数据导入请求后,系统首先在后台数据库中生成一条待处理记录,该记录包含任务的详细信息及状态标识。使用HashMap<Integer, User>来存储用户信息,通过用户ID快速查找,时间复杂度为O(1)。通过以上这些措施,可以在不同的开发场景下有效提升Java应用的性能。

2025-04-28 08:30:00 1096

原创 如何优化提升接口性能的一点建议

通过使用Apache HttpClient的连接池,可以减少连接建立的时间,设置gzip压缩传输,提高请求效率。上面这个例子中,发邮件或短信通知功能,对实时性要求不高,即使晚点发通知,用户无非是晚点收到通知,对业务影响不大,所以完全可以异步处理,避免阻塞主线程。软件负载均衡:在一个云服务平台中,使用Nginx作为反向代理和负载均衡器,可以根据服务器的负载情况动态调整请求的分配,优化资源利用。如果我们将这些任务并行处理,那么接口的响应时间将取决于耗时最长的模块,而不是所有模块耗时的总和。

2025-04-28 08:00:00 802

原创 RocketMQ Broker中的消息被消费后会不会立即删除?

在RocketMQ的Broker中,消息一旦被发送到Broker并存储于CommitLog文件中,即使被消费者成功消费,这些消息也不会立即从CommitLog中删除。因此,默认情况下,RocketMQ采用延迟删除策略,即在消费者确认消费后,将消息标记为“已消费”,但并不立即删除,而是延迟一段时间后再进行实际删除。这意味着,即使消息已经被消费者成功消费,它们仍然会在Broker中保留72小时。:如果新的消费者订阅了之前已经发送过消息的主题,那么这些消息仍然可以被新的消费者消费到,前提是这些消息还没有被删除。

2025-04-27 08:15:00 538

这个用代码实现的母亲节快乐html,免费分享给大家

这个用代码实现的母亲节快乐html,免费分享给大家

2025-05-11

分享23个简历模板,需要的可以下载使用

23个简历模板

2025-05-10

基于Spring Security框架构建的统一身份认证体系,包含登录功能,登录成功或失败后自定义返回格式,用户权限功能,自定义登录页面,相关数据库脚本

OAuth2 是一个授权框架,广泛应用于现代Web应用和API的安全性设计,允许第三方应用在用户许可的情况下访问受保护的资源。本套系统包含了授权服务器、资源服务器和客户端,旨在实现安全的单点登录(Single Sign-On, SSO)功能。 资源服务器是存储和提供受保护资源的服务器,它接收携带访问令牌的请求,并验证令牌的有效性。如果验证通过,资源服务器将返回所需资源。在这个系统中,资源服务器可能包含用户信息、应用程序数据等敏感信息,通过OAuth2协议确保只有经过授权的客户端才能访问。

2025-05-10

ubuntu安装mysql详情步骤.txt

ubuntu 安装MySQL 支持远程访问 sudo apt-get update sudo apt-get install mysql-server sudo apt-get install libmysqlclient-dev 登录 MySQL mysql -u root -p 创建用户 REATE USER 'username'@'host' IDENTIFIED BY 'password'; 进行授权用来远程连接 GRANT ALL PRIVILEGES ON *.* TO 'Ubuntu'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 删除授权 revoke insert,update,delete,select ON *.* from 'Ubuntu'@'%' IDENTIFIED BY '123456'; 腾讯云出现权限不够的问题: http://bbs.qcloud.com/thread-11554-1-1.html 重新启动(命令如下): /etc/init.d/mysql stop /etc/init.d/mysql start 执行 flush privileges;命令立即生效 flush privileges; 查询数据库的用户(看到如下内容表示创建新用户成功了) SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 使用exit命令退出MySQL exit

2019-07-21

mysql绿色安装包,解压就可以使用

mysql绿色安装包,解压就可以使用

2024-04-25

MySQL-Front导出mysql数据库结构到pdf、html

导出mysql数据库结构到pdf、html

2022-12-04

eclipse支持jdk1.7+tomcat6.0以上版本

eclipse-jee-luna-SR2-win32-x86_64支持jdk1.7以上+tomcat6.0+tomcat7.0以上版本

2018-11-18

空空如也

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

TA关注的人

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