自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(332)
  • 资源 (5)
  • 收藏
  • 关注

原创 线程池参数的动态化原理及集成nacos实践

Java动态改变线程池核心参数的原理主要依赖于ThreadPoolExecutor类本身提供的灵活性。ThreadPoolExecutor是Java标准库中用于管理线程池的核心类,它允许在运行时动态调整一些关键参数,如核心线程数、最大线程数、线程空闲时间等。

2025-01-12 21:45:20 9830 8

原创 Spring核心面试题汇总

面试题题目涵盖了Spring框架中Bean的生命周期、AOP实现原理、事务管理机制、ApplicationContext与BeanFactory的区别以及类型转换机制等核心内容。

2024-12-16 21:26:42 18149 6

原创 API架构风格的深度解析与选择策略:SOAP、REST、GraphQL与RPC

很多API用户放弃REST,并拥抱GraphQL。而在十年之前,对于REST来说则是相反的情况,在于SOAP的竞争中,REST大获全胜。这种观念的问题在于用于单方面去选择一个技术,而没有考虑实际价值以及以与特定场景的匹配度

2024-12-08 22:59:44 19282 17

原创 探讨三方接口调用方案设计

三方接口设计是实现系统功能的关键环节。设计一个安全、高效且易于维护的接口调用方案,对于保障系统稳定性、数据安全性和用户体验至关重要。appId:应用的唯一标识,用于标识开发者账号或应用实例。appKey:公开的密钥,相当于账号,用于在请求中标识应用身份。appSecret:私密密钥,相当于密码,用于加密和权限控制。token:临时令牌,具有时效性,用于验证用户或应用的身份。在首次验证(如登录场景)时,使用appKey和appSecret申请accessT

2024-11-24 20:48:46 27077 8

原创 SpringBoot中注册Bean的10种方式总结

SpringBoot中Bean是构成应用的核心组件。Spring容器负责管理Bean,包括它们的创建、配置、组装、管理和销毁。其提供了多种方式可以注册Bean。本文将总结这些不同的注册方式适用场景。

2024-08-09 22:20:39 68156 4

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

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

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

原创 URL签名机制深度解析:原理、实现与安全实践

URL签名机制通过密码学手段实现安全认证,其核心原理基于不可逆哈希函数和密钥共享机制。典型方案包括参数排序、字符串拼接、HMAC计算和URL安全编码等步骤,确保完整性验证、身份认证和时效控制。实现方案包含签名生成器和验证器,采用HMAC-SHA256算法处理请求参数,并通过Base64 URL安全编码生成签名。该机制可有效防止参数篡改和重放攻击,适用于云存储等场景的安全访问控制。

2025-09-12 10:30:00 454

原创 Spring Boot中Logback日志配置全面指南:多环境、动态级别、异步优化、日志脱敏、MDC及链路追踪集成、异常增强

本文介绍了Logback在Spring Boot中的核心配置与生产实践方案。主要内容包括:1)多环境日志配置策略,使用logback-spring.xml实现环境隔离;2)动态日志级别管理,通过Actuator API实现运行时调整;3)高性能日志实践,包括异步日志优化配置和滚动策略;4)生产级日志方案,如结构化日志输出和异常处理。文中提供了完整的XML配置示例和性能调优建议,帮助开发者构建高效、可靠的日志系统。

2025-08-06 22:04:07 8667 2

原创 Java注解如何在JVM中实现“魔法“?从编译期处理到运行时动态代理

Java注解底层原理解析 Java注解的处理涉及编译期、类加载和运行时三阶段: 编译期:javac将注解解析为AST节点,根据@Retention策略决定是否保留到字节码(RuntimeVisibleAnnotations属性表); 类加载:JVM解析字节码中的注解信息,转换为内部表示; 运行时:通过动态代理技术生成注解代理对象(Proxy+InvocationHandler),如@Retention(RUNTIME)的注解通过AnnotationParser创建代理实例,封装注解元素值。核心类包括Anno

2025-07-15 22:05:40 14786 2

原创 微服务架构的APM全链路追踪中TraceID跨服务传递原理

摘要:本文详细解析了Java微服务架构中TraceID的跨服务传递机制,涵盖其核心作用、生成策略(UUID/雪花算法),以及在不同场景下的实现方式:HTTP/RPC同步调用通过请求头传递,异步消息队列通过消息属性传递,数据库调用借助ThreadLocal实现。同时介绍了W3C TraceContext和OpenTelemetry等标准化协议,以及SkyWalking、Jaeger等主流APM工具的支持。通过MDC机制和实际案例,展示了TraceID在日志追踪中的具体应用,为分布式系统全链路追踪提供了完整解决

2025-07-05 15:13:06 18515 2

原创 服务实现99.99%高可用的核心措施

摘要:分布式系统的高可用性(HA)是实现99.99%服务可靠性的关键,涉及冗余设计、自动化运维和数据一致性三大核心策略。冗余设计通过集群部署、负载均衡和熔断机制消除单点故障;自动化运维借助K8s容器化、Prometheus监控和自愈脚本提升稳定性;数据一致性则依赖分布式事务(如Seata)和副本同步(如Kafka)保障业务连续性。典型案例包括阿里双11的毫秒级故障转移和蚂蚁金服的强一致性金融交易。综合运用这些技术,结合混沌工程和全链路压测,可有效应对网络分区等复杂场景,实现系统的高可用目标。

2025-07-01 21:02:57 868 1

原创 分布式事务解决方案总结:本地消息异步确认、可靠消息最终一致性、最大努力通知

本文从实现原理、技术细节和适用场景三个维度对比了三种主流分布式事务解决方案。本地消息异步确认方案通过"本地事务+消息表"实现最终一致性,适合订单与库存解耦场景;可靠消息最终一致性基于消息队列的"半消息"机制,适用于支付等强一致性场景;最大努力通知方案采用"重试+补偿"机制,多用于第三方回调等非核心链路。文章还提供了详细的方案对比表格,指导读者根据一致性强度、实现复杂度和具体业务需求进行选型,如金融交易优先选可靠消息方案,高并发场景可考虑本地消息表方

2025-06-27 23:35:39 2472 2

原创 Spring框架的事务管理体系:事务管理器与事务同步协调器

Spring事务管理核心组件解析 PlatformTransactionManager与TransactionSynchronizationManager是Spring事务体系的核心组件。前者统一管理事务的生命周期(开启/提交/回滚),支持JDBC、JPA等不同实现;后者通过ThreadLocal维护线程级事务资源(如数据库连接),并提供事务同步回调机制(如afterCommit)。二者协作实现声明式事务(@Transactional)的资源绑定与线程隔离,同时支持编程式事务的精细控制。典型应用包括分布式事

2025-06-22 22:32:36 2102 1

原创 Spring框架的事务管理体系总览

Spring事务管理体系采用分层架构,分为资源层、抽象层、API层和代理层,核心组件包括PlatformTransactionManager、TransactionDefinition等。其通过ThreadLocal实现线程安全的事务上下文管理,提供编程式和声明式两种事务控制方式。关键实现涉及事务开启、提交和回滚的生命周期管理,以及同步回调机制,支持JDBC、JPA等多种数据访问技术。该体系设计灵活且扩展性强,适用于各类事务场景。

2025-06-16 20:40:03 2369 2

原创 Java 8至Java 24核心特性总结

《Java演进全貌:从语言革新到性能突破(Java 8-24)》 本文系统梳理Java近十年的核心演进,涵盖五大维度技术突破: 语言范式:函数式编程(Lambda/Stream)、模块化系统、记录类/密封类等现代语法 并发模型:虚拟线程实现百万级并发、结构化并发管理任务生命周期 垃圾收集:ZGC/Shenandoah实现亚毫秒停顿,支持TB级堆内存 硬件加速:Vector API利用SIMD指令提升8-15倍计算性能 工具生态:JShell交互编程、JFR实时诊断等开发体验优化 每项革新均提供典型代码示例,

2025-06-15 19:14:03 1867

原创 架构视角下MySql中Sql执行原理及过程

MySQL 8.0+的SQL处理全链路解析:从架构分层到优化策略,涵盖连接管理、词法语法解析、语义检查阶段;深入逻辑与物理优化技术,包括子查询转换、谓词下推等核心机制;剖析存储引擎交互过程,如InnoDB的缓冲池管理、事务系统;并解析复制架构、分区表等高级特性处理流程,为高性能数据库设计提供理论基础。

2025-06-11 21:47:08 4377

原创 深度解析MySQL中的Join算法:原理、实现与优化

MySQL Join算法深度解析 本文深入剖析MySQL的三种核心Join算法: Nested-Loop Join:采用双循环逐行匹配,最基础但效率低,索引优化后可提升为O(M*logN)复杂度 Block Nested-Loop Join:通过内存缓冲减少I/O,将内表扫描次数从M次降至ceil(M/B)次,适合无索引场景 Hash Join(MySQL 8.0+):基于哈希表实现高效等值连接,包含构建和探测两阶段,支持内存/磁盘混合处理 每种算法各有优劣:Nested-Loop依赖索引效率高但内存消耗低

2025-06-08 17:30:52 10396 12

原创 Nginx Location映射规则总结归纳

Nginx的location指令是配置请求路由的核心机制,支持多种匹配模式,包括精确匹配、正则匹配和前缀匹配等,优先级从高到低依次为精确匹配、正则匹配、最长前缀匹配和普通前缀匹配。proxy_pass指令用于将请求转发到后端服务,其路径拼接逻辑与location配置紧密相关,可通过rewrite指令动态修改转发路径。优化配置时,建议将精确匹配置于顶部,高频正则规则前置,并确保路径设计一致性。通过合理配置和监控,可以有效提升Nginx的性能和可靠性。

2025-05-15 22:17:00 4464 2

原创 MySQL InnoDB引擎锁机制:原理、实现与高并发设计

码到三十五」,同名公众号 :「码到三十五」,wx号 : 「liwu0213」<mysql高手><elasticsearch高手><源码解读><java核心><面试攻关>搬的每块砖,皆为峰峦之基;公众号搜索「码到三十五」关注这个爱发技术干货的coder,一起筑基。

2025-04-20 19:16:50 1019 3

原创 MySql场景面试题:电商业务中用户的行为路径和转化率分析

MySql场景面试题:电商业务中用户的行为路径和转化率分析

2025-02-22 16:58:20 2269 4

原创 MySql场景面试题:电商业务中高净值用户行为分析

电商业务,一个订单表`orders`和一个用户表`users`。你需要分析用户的购买行为,特别是那些在特定时间段内购买金额超过一定阈值的用户,并计算他们的平均购买金额、购买次数以及他们在总用户中的占比。

2025-01-21 20:27:31 2433 14

原创 【2024博客之星】我的年度技术总结:Netty渡劫指南--从线程暴走到百万长连接,这一年我踩过的坑比写的代码还多

当然要用好Netty,光知道怎么用可不行,还得知道它的技术原理。比如说,Netty的Reactor线程模型。Reactor模式是一种事件驱动的设计模式,特别适合处理并发IO操作。Netty通过实现多种Reactor模式,来适应不同的应用场景和需求。还有啊,Netty通过Direct Buffer、FileRegion等组件实现了零拷贝,从而大大提高了数据传输的性能。边学源码, 边写写博客,当然写作质量我们另外考量…

2025-01-20 22:42:01 16256 3

原创 JDK动态代理在拦截器和声明式接口中的应用

Java动态代理技术是基于反射机制的基础。核心在于利用反射机制和接口编程在运行时动态生成代理类,并通过InvocationHandler接口实现代理逻辑的灵活扩展。通过动态代理,Java程序可以在运行时动态地生成代理类,并控制对目标对象的访问,从而实现对目标对象方法的拦截和增强。其优势在于灵活性、可扩展性、解耦、AOP支持和远程方法调用等方面.Java动态代理原理主要基于Java的反射机制,通过动态地生成代理类来实现对接口的动态代理。

2025-01-18 17:20:35 1373 3

原创 MySql场景面试题:满意度调查分组去除最高最低求平均分

窗口函数:使用RANK()对每个部门的打分进行排名,确保相同分数分配相同排名。条件过滤:使用WHERE条件过滤掉所有排名为1的最高分和最低分。分组聚合:使用GROUPBY和AVG()计算每个部门的平均分。处理重复值:确保多个相同的最高分和最低分都被去除。

2025-01-18 17:13:05 1064

原创 MySql场景面试题:电商购物中最贵及购买次数最多的商品

1. **多表关联**: - 使用 `JOIN` 将 `orders`、`order_items` 和 `products` 表关联起来。2. **聚合函数**: - 使用 `SUM()` 计算总消费金额,使用 `MAX()` 计算最贵的一笔订单金额,使用 `COUNT()` 统计购买次数。3. **窗口函数**: - 使用 `ROW_NUMBER()` 计算每个客户购买次数最多的商品类别。4. **条件过滤**: - 使用 `HAVING` 过滤总消费金额超过 1000

2025-01-15 20:31:23 10962 4

原创 面试题:消息积压怎么解决?RocketMQ与Kafka有哪些区别?Kafka性能优于RocketMQ的原因?

RocketMQ和Kafka在数据可靠性、消费失败重试、分布式事务消息、Broker端消息过滤、消息顺序性以及适用场景等方面也存在显著差异。消息积压是消息中间件中常见的问题,尤其是在高并发、大数据量的场景下。RocketMQ通过一系列机制来应对消息积压问题

2024-11-17 22:06:44 9586 15

原创 Spring Boot 中 Druid 连接池与多数据源切换的方法

在Spring Boot中实现多数据源切换,主要依赖于AbstractRoutingDataSource类。AbstractRoutingDataSource允许在运行时根据某些条件动态选择数据源。实现多数据源切换的关键步骤包括:配置多个数据源。使用AbstractRoutingDataSource进行动态切换。使用ThreadLocal存储当前的数据库类型或数据源标识符。配置数据源切换的逻辑,例如基于当前的用户、请求路径、服务标识等来选择不同的数据源。

2024-11-14 21:13:43 14784 21

原创 Spring Boot中实现多数据源连接和切换的方案

在Spring Boot中,通过AbstractRoutingDataSource实现多数据源连接是一种常见的做法。这种技术允许你在运行时动态地切换数据源,从而支持对多个数据库的操作。以下是一个详细的案例,展示了如何在Spring Boot中配置和使用AbstractRoutingDataSource来实现多数据源连接。

2024-11-03 22:45:36 18513 17

原创 每个后端开发人员都应该问的发人深省的问题

SprignBoot , Spring Cloud API 设计和可用性API 是许多后端服务的支柱。它们需要既实用又易于使用,但也需要速度、安全性和抗滥用能力

2024-10-25 23:35:08 3911 6

原创 Python与Java:探讨最适合你的编程语言

Python 因其简单易读而广受喜爱。由 Guido van Rossum 于 1991 年创建。Python 非常适合初学者,使用起来直观,几乎就像用普通英语书写一样。它广泛应用于 Web 开发、数据科学、人工智能、自动化等领域。Python 和 Java 各有优势。您的选择取决于您要构建的内容、您的经验水平和您的个人偏好。

2024-10-25 00:13:42 50540 3

原创 Spring Cloud Gateway:构建强大的API网关

微服务架构是一种将应用构建为一组小型、自治服务的方法,每个服务都运行在其独立的进程中,服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式能够提高系统的可扩展性、灵活性和可靠性。Spring Cloud Gateway是基于Spring Framework构建的API网关,提供了动态路由、监控、弹性、安全等功能。它使用Spring WebFlux项目中的Reactor模式进行异步非阻塞处理,具有高性能和可扩展性。

2024-10-21 23:44:45 16230 24

原创 Spring Boot中基于AOP和Semaphore实现API限流

限流是 Web API 中的常见要求,旨在防止滥用并确保公平使用资源。借助Spring Boot 中的 AOP,我们可以通过拦截方法调用并限制在特定时间范围内允许的请求数量来实现速率限制。为了在 Spring Boot 中使用 AOP 实现速率限制:定义自定义注释来标记应该限速的方法。创建一个方面类,拦截用自定义注释注释的方法调用。使用速率限制器组件来跟踪和执行速率限制。处理速率限制超出的情况,如通过抛出自定义异常。

2024-10-18 20:31:31 10357 17

原创 为什么Java中1==1为真,而128==128为假?基于享元模式的整数缓存原理分析

对于基本数据类型(如int),==操作符比较的是值。对于对象(如Integer),==操作符比较的是引用。Java对Integer对象进行了缓存优化,对于-128到127之间的值,会返回缓存中的对象。为了正确比较Integer对象所包装的值,应使用equals()方法。

2024-10-17 21:19:33 2753 6

原创 详解MySQL中MRR(多范围读取)如何优化范围查询

MRR,全称Multi-Range Read Optimization,直译为多范围读取优化,是MySQL中一种用于提高索引查询性能的技术。MRR通过减少随机磁盘访问次数,将随机IO转换为顺序IO,从而提高数据读取的效率。它特别适用于包含范围条件(如BETWEEN、等)的查询,以及需要通过辅助索引访问表数据的场景。

2024-10-09 19:02:43 24165 10

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

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

2024-09-25 21:34:20 10288 17

原创 SpringBoot中Token登录授权、续期和主动终止的方案

使用JWT它虽然是无状态的,也可以载荷用户数据,但还是有很多缺点:缺点1:设置过期时间后,无法强制让它过期,在有效期内它始终可用缺点2:一次性的,如果用户数据有变,只能重新生成新的JWT下面我们看下常用的两种方案redis+token方案和JWT方案:

2024-09-23 23:36:11 7702 20

原创 SpringBoot中基于JWT的双token(access_token+refresh_token)授权和续期方案

鉴于JWT包含用户信息且需保障安全,其过期时间通常设置较短。然而,这易导致用户频繁登录,尤其是在处理复杂表单时(比如在线考试),因耗时过长而遇token过期,引发不必要的登录中断和数据丢失,严重影响用户体验。如何在用户无感知状态下实现token自动续期的策略,减少频繁登录需求,确保表单数据不丢失呢?解决token过期续期问题可以有很多种不同的方案,这里举一些比较有代表性的例子,一种是单token续期,一种是双token续期。

2024-09-22 23:11:58 131802 14

原创 SpringBoot中基于JWT的单token授权和续期方案

在前后端分离架构中,用户登录成功后,后端颁发JWT (Json Web Token)token至前端,该token被安全存储于LocalStorage。随后,每次请求均自动携带此token于请求头中,以验证用户身份。后端设有过滤器,拦截并校验token有效性,一旦发现过期则引导用户重新登录。

2024-09-19 23:24:35 11734 11

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

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

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

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

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

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

产品经理的冰与火

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

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关注的人

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