- 博客(32)
- 收藏
- 关注
原创 Spring无法解决的循环依赖
在Spring框架中,循环依赖是指两个或多个Bean相互依赖,形成一个闭环。例如,Bean A依赖于Bean B,而Bean B又依赖于Bean A。虽然Spring通过三级缓存(一级缓存、二级缓存、三级缓存)机制解决了大多数情况下的循环依赖问题,但仍有一些特定的循环依赖场景是Spring无法直接解决的。
2025-01-26 21:10:57
975
原创 Elasticsearch的经典面试题及详细解答
Elasticsearch是一个基于Lucene的分布式搜索引擎,提供了RESTful API,支持多租户能力。它能够快速、近实时地存储、搜索和分析海量数据,每个字段都被索引并可被搜索。Elasticsearch广泛用于全文搜索、日志分析、实时监控等领域。
2025-01-23 21:47:48
1107
原创 JDK21的虚拟线程的概念与特点-配合代码
JDK中的虚拟线程(Virtual Threads)是Java并发编程中的一个重要特性,它于JDK 19中作为预览特性引入,并在JDK 21中正式发布。虚拟线程旨在简化并发编程,提高资源利用率,并增强高并发应用的性能。
2025-01-22 09:06:53
629
原创 常见的RocketMQ面试题及其简要答案
以上是一些常见的RocketMQ面试题及其简要答案。在准备面试时,建议深入理解这些问题的答案,并结合实际项目经验进行阐述。
2025-01-21 11:23:07
754
原创 Mysql水平分表需要考虑的问题和具体方案
MySQL的水平分表是一种有效的数据库性能优化手段,但也带来了一些挑战和问题。在实施水平分表时,需要充分考虑业务需求、数据特点和技术实现等因素,选择合适的分表策略和解决方案,以确保系统的性能和可维护性。
2025-01-20 16:54:32
404
原创 Sentinel配置流控规则详解
在微服务架构中,流量控制(FlowControl)是保障服务稳定性的重要手段之一。Sentinel作为一款开源的流量控制、熔断降级Java库,以其丰富的应用场景和完善的监控能力,在微服务保护中扮演了重要角色。本文将详细介绍Sentinel的流控规则配置,帮助读者理解和应用这一关键特性。Sentinel的流控规则是保障服务稳定性的重要手段之一。通过合理配置流控规则,可以有效防止服务过载、保障核心服务、保护系统冷启动以及处理间隔性突发流量。
2025-01-17 22:43:50
1374
原创 Spring Boot经典面试题及答案
Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案。它简化了Spring应用程序的初始化和开发过程,通过“约定大于配置”的原则,减少了手动配置的繁琐工作,使开发者能够更快速地构建独立、可运行的、生产级别的Spring应用程序。
2025-01-16 19:09:57
734
原创 Spring Boot自动装配原理与Stater开发及使用场景
Spring Boot以其简洁的配置和快速的开发速度,成为现代Java应用开发的首选框架。其中,自动装配(Auto-configuration)是Spring Boot的核心特性之一,极大地简化了配置工作。本文将深入介绍Spring Boot的自动装配原理,以及如何开发和使用自定义的Stater(Starter),并探讨其在实际项目中的应用场景。Spring Boot的自动装配和Stater机制极大地简化了配置工作,提高了开发效率。通过深入理解这些机制,可以更加灵活和高效地开发Spring Boot应用。
2025-01-16 18:01:50
612
原创 Flink的优化技巧
Flink开发中的优化方案涉及多个方面,包括并行度设置、内存管理、状态管理、网络传输、异步I/O、检查点优化、数据库性能优化、监控与异常处理、算法与数据结构优化以及业务逻辑与数据去重等。通过综合运用这些优化策略,可以显著提升Flink应用的性能和稳定性,满足大数据处理领域日益增长的需求。在实际应用中,需要根据具体场景和需求进行灵活调整和优化,以达到最佳的性能表现。
2025-01-16 17:58:56
1106
原创 ConcurrentHashMap源码深度分析
在JDK 8中,ConcurrentHashMap进行了重大的重构,其内部实现机制与之前的版本有了显著的变化。扩容操作会创建一个新的Node数组,并将旧数组中的元素重新分配到新数组中。扩容过程中,会使用多个线程并行迁移数据。如果该槽位已有节点,则判断其哈希值是否为MOVED,如果是,则表示正在扩容,当前线程需要协助扩容。该方法会首先检查Node数组是否已存在,如果不存在,则会尝试通过CAS操作将其初始化为指定长度的数组。在put操作中,首先需要计算键的哈希值,并通过位运算确定其在Node数组中的索引位置。
2025-01-16 17:48:00
249
原创 Spring Boot集成Sharding-JDBC实现分库分表
Sharding-JDBC作为Apache ShardingSphere生态系统的一部分,提供了强大的分库分表功能,并且可以与Spring Boot无缝集成。本文将详细介绍如何在Spring Boot项目中集成Sharding-JDBC,包括具体代码和使用注意事项。在代码中无需进行特别的分库分表处理,Sharding-JDBC会在底层自动进行SQL路由和分片。通过本文的介绍,您应该已经了解了如何在Spring Boot项目中集成Sharding-JDBC实现分库分表。
2025-01-16 16:25:52
532
原创 Spring经典面试题
什么是Spring框架?Spring框架有哪些主要模块?回答要点Spring是一个轻量级的Java EE框架,旨在简化企业级应用开发。
2025-01-16 14:24:40
874
原创 Spring实现IOC和AOP的底层原理
Spring框架是Java企业级应用开发中的核心框架之一,其核心思想可以概括为IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。IOC通过依赖注入实现对象之间的解耦,而AOP则提供了一种在不修改源代码的情况下,为程序动态添加额外功能的技术手段。本文将深入探讨Spring实现IOC和AOP的底层原理。Spring的IOC和AOP是实现松耦合、高内聚和代码复用的重要手段。
2025-01-16 13:24:35
1112
原创 Java开发支付模块需要注意的地方及关键技术实现-以支付宝为案例
开发一个安全、高效的支付模块需要综合考虑多个方面,包括选择合适的支付网关、确保数据安全、合理处理异常和日志记录以及关注用户体验等。通过以上介绍和代码案例,希望能够帮助开发者更好地理解和实现支付功能。同时,建议在开发过程中充分参考所选支付网关的技术文档,并进行全面而细致的功能测试和压力测试,以确保支付系统的稳定性和可靠性。
2025-01-15 00:52:44
823
原创 Flink开发中的优化方案
Flink开发中的优化方案涉及多个方面,包括并行度设置、内存管理、状态管理、网络传输、异步I/O、检查点优化、数据库性能优化、监控与异常处理、算法与数据结构优化以及业务逻辑与数据去重等。通过综合运用这些优化策略,可以显著提升Flink应用的性能和稳定性,满足大数据处理领域日益增长的需求。在实际应用中,需要根据具体场景和需求进行灵活调整和优化,以达到最佳的性能表现。
2025-01-15 00:30:26
766
原创 Elasticsearch二次开发:实现实时定时同步同义词、近义词与停用词
通过实现同义词、近义词与停用词的定时同步,可以确保Elasticsearch的搜索功能始终与业务需求保持一致,提升搜索的准确性和用户体验。在实施过程中,需要根据具体的业务场景和需求选择合适的同步方案,并进行充分的验证与测试。
2025-01-15 00:16:30
1180
原创 多种数据库与消息队列系统对比
MySQL、ZooKeeper、HBase、Redis、Elasticsearch、Kafka和ClickHouse等工具在数据结构、整体架构、分布式实现方式、高可用方案、扩容机制和分片策略等方面各有千秋。在选择这些工具时,需要根据具体的业务需求、数据特性、性能要求等因素进行综合考虑。了解这些工具的特点和优势,有助于构建高效可靠的数据处理和分析系统。
2025-01-14 23:48:00
901
原创 MySQL SQL优化技巧与原理
随着业务数据量的不断增加,MySQL查询语句的执行效率对程序的运行效率影响逐渐增大。因此,进行SQL优化变得至关重要。本文将结合SQL的执行语句顺序和各种SQL场景,介绍一些常见的MySQL SQL优化技巧及其背后的原理。MySQL的SQL优化是一个复杂而系统的过程,需要综合考虑多个方面。
2025-01-14 23:25:45
1198
原创 基于Netty+InfluxDB+MQTT+Spring Boot的物联网(IoT)项目实现方案
基于Netty、InfluxDB、MQTT和Spring Boot的物联网项目,能够实现设备接入、数据处理、存储和展示等功能。通过合理的架构设计和开发注意事项,可以构建出高效、安全、可靠的物联网解决方案。希望本文能够为物联网开发者提供一些参考和帮助。
2025-01-14 22:41:39
1171
原创 Java最常用的几种设计模式详解及适用业务场景
本文介绍了单例模式、工厂模式、观察者模式和策略模式四种常见的设计模式,并给出了相应的Java代码示例。这些设计模式在不同的业务场景中有着广泛的应用,通过合理使用这些模式,我们可以构建更加灵活、可扩展和可维护的软件系统。在实际开发中,选择适合的设计模式不仅可以提高开发效率,还能有效减少潜在的技术债务。希望本文对你理解和应用这些设计模式有所帮助。
2025-01-14 22:33:47
1656
原创 WebSocket实现分布式的不同方案对比
本文将对比几种常见的WebSocket分布式实现方案,包括基于消息队列的广播模式、基于Redis缓存的路由模式、基于Netty的高性能实现以及基于哈希环的实现方案,探讨它们的优缺点及适用场景。每个应用节点都订阅这个主题,当接收到WebSocket消息后,取出消息中的“消息接收者的用户ID/用户名”,然后比对自身是否存在相应用户的连接。否则,丢弃接收到的消息(由消息接收者所在的应用节点处理)。当有消息需要发送给某个用户时,首先通过哈希函数找到该用户对应的WebSocket服务器,然后将消息推送到该服务器上。
2025-01-14 22:19:58
1416
原创 牛客网链表题专项-1
通过以上三道题的详细讲解和 Java 题解,希望能帮助大家更好地理解链表的相关操作。输入两个单调递增的链表,输出两个链表合成后的链表,且合成后的链表满足单调不减规则。,请编写一个函数反转链表,并返回反转后的链表头节点。个节点,并返回反转后的链表头节点。给定一个链表以及两个整数。给定一个单链表的头节点。
2025-01-14 22:11:15
233
原创 RabbitMQ与Kafka的比较及应用
优势低延迟:RabbitMQ以其低延迟特性著称,适合对实时性要求较高的应用场景。路由灵活:支持复杂的消息路由逻辑,包括消息队列优先级、延迟队列等特性。EOS消费语义:确保消息只被消费一次,提高消息处理的可靠性。解决重复消费与漏消费重复消费生产者:生产数据时,生成message的唯一id,提供给消费者做幂等使用。消费者:消费时做幂等处理(例如数据库中保存消息的唯一ID)。漏消费生产者:采用事务机制(虽同步效率低)或confirm机制,最常用的是confirm机制,并增加失败重试机制。消费者。
2025-01-14 21:47:24
1045
原创 kafka和rabbitmq如何保证消费的exactly-once语义
启动kafka的幂等性.修改配置文件:enable.idempotence=true。事务机制(同步效率低)和confirm机制,最常用的是confirm机制。生产数据时,生成message的唯一id,提供给消费者做幂等使用。生产数据时,生成message的唯一id,提供给消费者做幂等使用。消费时做幂等处理(例如数据库中保存消息的唯一ID)消费时做幂等处理(例如数据库中保存消息的唯一ID)ack=all 且 retries>1。rabbitmq设置队列持久化。
2022-09-08 15:57:52
781
原创 ThreadLocal内存泄露问题
只要线程一直存在ThreadLocalMap内部Entry一直存在,由于key对应的ThreadLocal为弱引用,只要不存在强引用,就会GC,value为强引用,如果不在最后调用ThreadLocal.remove(),会一直没办法GC,导致内存泄露。这时候的test1除了Entry中的value引用外,不存在其他强引用,设置为弱引用时会被GC回收,这时候恰好调用threadLocal.get(),这是后就会出现bug。value设置为强引用,没办法设置为弱引用,因为我们设置值时一般是这样的。......
2022-09-01 11:31:30
183
原创 Flink限流使用GuavaFlinkConnectorRateLimiter
调用limiter.open(getRuntimeContext())的源码,实际内部是RateLimiter,根据并行度算出每个RateLimiter的permitsPerSecond。1.重写AbstractRichFunction中的open()方法,在处理数据前调用limiter.acquire(1);2.GuavaFlinkConnectorRateLimiter限流原理。.....................
2022-08-30 17:34:16
1755
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人