自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 多数据源场景下的动态切换

AbstractRoutingDataSource是Spring(package:org.springframework.jdbc.datasource.lookup)提供的一个多数据源解决方案。1.多租户支持:根据租户选取对应的数据源,从而达到租户隔离的目的 2.分库分表:根据分片规则选取不同的数据源 3.读写分离:根据读写类型选取合适的数据源 4.数据源负载均衡:根据负载均衡的策略选取合适的数据源 5.多数据库支持:根据业务需求选择不同类型的数据源,如同时使用MySQL和Oracle。

2024-09-25 15:02:08 549

原创 Java 并发编程:深入理解锁机制与线程安全

在现代软件开发中,并发编程是一个极其重要的课题,尤其在需要高性能和低延迟的应用场景中,合理地管理线程并保证线程安全至关重要。Java 提供了一整套并发工具和机制,帮助我们应对多线程环境中的复杂问题。然而,随着线程数量的增加,竞态条件(Race Condition)、死锁(Deadlock)等问题也逐渐浮现。为了避免这些问题,理解并使用锁机制至关重要。

2024-09-25 15:00:18 675

原创 Java-基础-05-JVM-3-运行时数据区

1 运行时数据区运行时数据区的定义:Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域 Java引以为豪的就是它的自动内存管理机制。相比于 C++的手动内存管理、复杂难以理解的指针等,Java 程序写起来就方便的多。 所以要深入理解JVM必须理解内存虚拟化的概念。 在JVM中,JVM内存主要分为堆、程序计数器、方法区、虚拟机栈和本地方法栈等。 同时按照与线程的关系也可以这么划分区域: 线程私有区域:一个线程拥有单独的一份内存区域。 线程共享区域:被所有线程共享,且只有一

2024-09-25 14:59:44 714

原创 RocketMQ(四):消费前如何拉取消息?(长轮询机制)

消息中间件消费端获取消息的方式通常有推送、拉取、长轮询(推拉结合)三种Broker主动推送消息有很好的实时性,但消费端未做流控可能会压力大,导致吞吐量、性能下降,消息积压消费者主动拉取消息能根据自己的消费能力决定拉取数量,但无法预估拉取频率,太慢会导致实时性差长轮询是特殊的拉取方式,在拉取的基础上,如果未拉取到消息会进行等待,超时或消息到达后再进行拉取,弥补拉取方式实时性差的缺点,但大量长连接一直等待资源开销大。

2024-09-24 14:55:24 802

原创 什么是线程池?从底层源码入手,深度解析线程池的工作原理

为了对多线程进行统一的管理,Java引入了线程池,它通过限制并发线程的数量、将待执行的线程放入队列、销毁空闲线程,来控制资源消耗,使线程更合理地运行,避免系统因为创建过多线程而崩溃。**管理线程数量:**它可以管理线程的数量,可以避免无节制的销毁、创建线程,导致额外的性格损耗、或者线程数超出系统负荷直至崩溃。**提高性能:**当有新的任务到来时,可以直接从线程池中取出一个空闲线程来执行任务,而不需要等待创建新线程,从而减少了响应时间。

2024-09-24 14:53:17 797

原创 Optional

我们在编写代码的时候出现最多的就是空指针异常。所以在很多情况下我们需要做各种非空的判断。例如:scss代码解读复制代码if(author!尤其是对象中的属性还是一个对象的情况下。这种判断会更多。而过多的判断语句会让我们的代码显得臃肿不堪。所以在JDK8中引入了Optional,养成使用Optional的习惯后你可以写出更优雅的代码来避免空指针异常。并且在很多函数式编程相关的API中也都用到了Optional,如果不会使用Optional也会对函数式编程的学习造成影响。

2024-09-24 14:52:09 583

原创 【Spring Boot 源码学习】初识 ConfigurableEnvironment

本篇博文Huazie同大家一起了解了接口和其父接口,这些对于后续理解的初始化操作至关重要。接下来的博文将会继续聚焦启动运行阶段,敬请期待!!!

2024-09-23 14:46:47 769

原创 面试官:Spring是如何解决循依赖问题?

从字面上来理解就是 Spring Bean 之间的依赖产生了循环,例如 A 依赖 B ,B 依赖 C,C 依赖 A,如下:代码大致如下:less代码解读复制代码。

2024-09-23 14:45:25 918

原创 资深ETL工程师经验分享:ETL项目的5大挑战与策略

在大型企业中,数据往往分散在各种不同的系统中。比如,曾经的一个零售企业的项目,需要整合来自ERP、CRM、POS、OMS、SRM、WMS等至少十几个不同系统的数据。一个设计良好的ETL流程,能够确保数据的准确性、一致性和及时性,为后续的数据分析和决策支持奠定坚实基础。说到ETL工具,以前项目我们使用的是kettle、OGG、DataX以及informatica等为主,反正不同的项目很多情况下根据用户的需求提供不同的工具,最近随着很多客户对信创的要求,我们发现国产ETL工具表现也越来越好,国产ETL工具。

2024-09-23 14:44:40 1004

原创 常见设计模式在支付系统中的应用场景

对软件设计模式的理解和应用,基本上可以算做初级研发工程师和高级研发工程师的分水岭。我在面试时很喜欢问候选人对设计模式的理解,以及实际应用情况,大部分候选人都能回答单例,工厂等,再多问几句,就惨不忍睹。其实也能理解,这些内容对于初学者而言,基本只能靠死记硬背,记不长久。今天聊聊我理解的设计模式,在支付系统经常用到的场景,以及容易混淆的点,里面讲到的概念可能和一些权威的论述有所出入。

2024-09-18 15:19:37 1446 1

原创 Java音视频文件解析工具

jave-all-deps 库是 Java 音视频处理领域的一个强大工具,它通过封装 ffmpeg 的复杂功能,为 Java 开发者提供了一个简单易用的音视频处理解决方案。该库解决了跨平台兼容性问题、简化了复杂的命令行操作,并简化了项目中的依赖管理。无论是进行格式转换、音频转码还是其他音视频处理任务,jave-all-deps 库都是一个值得考虑的选择。通过本文的介绍,希望能够帮助读者更好地理解和使用 jave-all-deps 库。

2024-09-18 15:18:24 753

空空如也

空空如也

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

TA关注的人

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