自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2025-01-12 21:45:20 9238 3

原创 Spring核心面试题汇总

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

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

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

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

2024-12-08 22:59:44 19044 15

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

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

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

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

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

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

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

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

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

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

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

2025-01-21 20:27:31 355 2

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

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

2025-01-20 22:42:01 2090 2

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

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

2025-01-18 17:20:35 1019 2

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

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

2025-01-18 17:13:05 900

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

原创 Spring中FactoryBean的高级用法实战

FactoryBean在Spring框架中是一个非常强大和灵活的特性,它允许开发者以编程方式控制对象的创建过程,并提供了多种高级用法来满足不同的需求。通过合理利用FactoryBean,你可以构建更加模块化、可维护和可扩展的应用程序

2024-09-09 22:15:38 11989 25

原创 如何在SpringBoot中实现优雅关闭

Shutdown、Crash 和 Graceful 之间的区别在于,它控制决定了我们可以用这个事件做什么。按照我们的期望,Spring Boot应该为我们提供一种处理此事件的方法,这样我们就可以确保良好的资源管理(清理资源、释放锁和连接)。让我们看看 Spring Boot 提供什么。

2024-09-05 23:22:44 14163 36

原创 SpringBoot中基于MongoDB的findAndModify原子操作实现分布式锁原理详解

findAndModify是MongoDB提供的一个强大的命令,它可以同时查询和更新文档,并且这个操作是原子的。这意味着在findAndModify命令执行期间,没有其他客户端可以修改被查询的文档,直到该命令完成。这种原子性特性使得findAndModify非常适合用于实现分布式锁。

2024-09-02 22:55:20 14107 38

原创 SpringBoot中如何实现多端口监听

当你需要在同一个Spring Boot应用中,通过不同的端口来提供不同的服务或功能时,就需要实现多端口监听

2024-08-30 23:18:02 13281 29

原创 SpringBoot中优化Undertow性能的方法总结

Springboot中进行Tomcat容器调优或者替换为性能更强的容器。可以进行Tomcat调优,但是Undertow容器在性能和内存上都优于Tomcat容器,因此Springboot直接选择Undertow容器并进行调优是更好的选择。

2024-08-27 23:16:03 14205 30

原创 SpringBoot中实现自定义注解用于文件验证(大小、扩展名、MIME类型)

SpringBoot中经常需要处理文件上传的功能。为了确保上传的文件满足特定的要求(如扩展名、MIME类型和文件大小),我们可以创建一个自定义注解来简化验证过程。

2024-08-24 23:12:06 14241 33

原创 MySQL的MRR(Multi-Range Read)优化原理详解

MRR,全称Multi-Range Read Optimization,即多范围读取优化,是MySQL在处理范围查询时采用的一种优化策略。它旨在通过减少磁盘I/O操作的次数和提高I/O操作的效率,从而加速查询过程。MRR优化是MySQL中一种重要的查询优化技术,它通过减少磁盘I/O的随机性和提高缓存效率,显著提升了查询性能。在实际应用中,合理开启MRR优化、调整相关参数以及优化查询和索引设计,都是提升MySQL数据库性能的有效手段。关注公众号[码到三十五]获取更多技术干货!「码到三十五」

2024-08-24 20:32:54 2032 2

原创 SpringBoot中生成二维码的案例实战

zxing,全称"Zebra Crossing",是一个功能强大的开源Java库,专门用于二维码的生成与解析。它不仅能够生成QR码,还能解析包括QR码在内的多种二维码格式。ZXing提供了多语言API,使得开发者能够轻松地将二维码功能集成到各种应用中。它支持Android、iOS、Java等多个平台,并且除了QR码,还能解析其他一维码和二维码,如EAN、UPC、DataMatrix等。

2024-08-21 23:02:36 14911 32

原创 Java Stream中ReferencePipeline浅析

Java 8 引入的 Stream API 中,ReferencePipeline 类扮演着核心角色,它是处理引用类型(如 List、Set 等)流的核心实现。通过 ReferencePipeline,Java 提供了一种高效且易于理解的方式来处理数据集合,支持复杂的查询/转换操作,并可以利用现代多核处理器的并行处理能力。本文将详细解析 ReferencePipeline 类的源码,探讨其设计原理和工作机制。

2024-08-20 21:00:00 2257 8

原创 Java Stream 实现原理浅析

Java Stream API 的实现原理是一个高度优化和灵活的过程,它基于函数式编程的概念,并结合了现代多核处理器的特性。通过惰性求值、内部迭代、并行处理以及多种优化措施,Stream API 提供了一种强大且高效的方式来处理数据集合。无论是处理简单的数据集合还是复杂的数据流,Stream API 都是 Java 开发者不可或缺的工具之一。

2024-08-20 08:00:00 1877 5

原创 Java Stream中的Spliterator类深入解析

在Java的Stream API中,Spliterator(可分割迭代器)是一个至关重要的接口,它提供了遍历和分割数据源的能力,从而支持高效的并行处理。以下是对Spliterator的详细解析,包括其概念、原理、作用、类中定义的方法以及在Stream API中的应用。

2024-08-19 21:15:00 1663 1

原创 Java Stream中的StreamSupport类

Java Stream中的StreamSupport类的主要作用是作为桥梁,将底层的数据源(如)转换为Stream API中的Stream对象。由于Stream API的设计目标是提供一种高级的迭代器抽象,它本身并不直接操作数据源,而是依赖于来遍历和操作元素。因此,类在将传统集合或自定义数据源转换为Stream时起着关键作用。

2024-08-19 17:15:00 1198

原创 Elasticsearch中磁盘水位线的深度解析

Elasticsearch的磁盘水位线是一种强大的工具,它帮助管理员监控和管理Elasticsearch集群的磁盘使用情况,防止数据丢失和系统性能下降。通过合理配置和使用磁盘水位线,可以确保Elasticsearch集群的稳定性和可靠性。

2024-08-18 22:18:25 12109 18

原创 Java Sream中自定义Collector实现复杂数据收集方法

Collectors可以看做是Collector接口的实现工厂,提供了多个用于数据收集、转换和聚合的预定义收集器,如toList()、toSet()、toMap()、joining()、counting()、summingInt()、averagingInt()等。这些收集器利用Collector接口实现,使得从Stream中收集数据变得更为方便和高效。

2024-08-18 22:03:10 961 1

基于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

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

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

2018-11-07

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

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

2018-11-07

产品经理的冰与火

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

2018-11-07

空空如也

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

TA关注的人

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