- 博客(477)
- 资源 (3)
- 收藏
- 关注
原创 基于AOP的异步操作日志实现
我们常用aop实现传统的同步日志记录。如果业务中有涉及到就没法做到了。或者就是使用强耦合的方式来实现。但是这样就和AOP实现日志记录成了两套体系。
2024-08-23 08:57:45
267
原创 mybatis初始调用流程
MapperScannerRegistrar 实现了ImportBeanDefinitionRegistrar接口,ImportBeanDefinitionRegistrar处理时机如下图。主调用入口为AbstractApplicationContext#invokeBeanFactoryPostProcessors ,这是容器刷新12大步里面最核心的一步。ConfigurationClassPostProcessor 是一个非常重要的后置处理器,主要用于@Configuration定义的配置类。
2024-08-23 08:47:12
410
原创 2024-01-开发技术积累
nacos源码中,如果是多实例,就采用nio读取文件。nacos raft协议 写文件。数据恢复,从文件中加载数据。以下代码 来自官方文档。
2024-08-23 08:43:58
432
原创 SpringCloudGateway重写负载均衡策略
gateway中多实例请求转发,默认采用轮训转发策略。在有些场景下,某些请求想固定到某一台实例上,这里通过重写默认负载均衡策略的方式实现。以下代码为,大文件分片上传,多实例场景,根据文件md5和实例总数取模,选取处理服务实例。保证同一文件在固定实例上进行处理,保证最后的文件合并不会有问题。
2024-08-23 08:32:12
924
原创 Redis连接池未释放问题
然而,在使用RedisTemplate.opsForHash().scan()这类方法时,如果不注意连接的关闭,可能会导致连接泄露问题。使用RedisTemplate.opsForHash().scan()进行哈希数据迭代时,要注意正确管理连接和资源,确保在迭代完成后关闭所有相关的资源。迭代完成后未关闭资源:虽然scan()方法本身不直接涉及连接的打开和关闭,但在迭代过程中可能使用了其他资源(如游标),如果没有在迭代完成后正确关闭这些资源,也可能间接导致连接泄露。
2024-08-23 08:17:01
701
原创 使用GenericObjectPool和GenericObjectPoolConfig进行对象池管理
在这个示例中,ConnectionFactory类负责创建数据库连接,而GenericObjectPool则负责管理这些连接的生命周期,包括借用、归还和销毁。如下代码示例是获取jdbc连接的示例。
2024-07-18 08:54:03
667
原创 Java数据压缩与解压缩
来自rocketmq源码,rocketmq中消息默认超过4KB,会进行压缩。evel为压缩层级,rocketmq源码中默认level为5。
2024-06-14 17:10:07
299
原创 Spring中自定义注解进行类方法增强
说到对类方法增强,第一时间想到自定义注解,通过aop切面进行实现。这是一种常用做法,但是在某些场景下,如开发公共组件,定义aop切面可能不是最优方案。以后通过原生aop方式,自定义注解,对类方法进行增强。
2024-06-14 16:56:08
406
原创 Spring中对没有实现类的接口进行曾强
对没有实现类的接口进行增强,此场景在Spring中比较常见。最典型的两个就是Mybatis和feign的调用。其主要是通过FactoryBean实现的。
2024-06-14 16:54:17
520
原创 Redis熟悉到精通:开篇
并不是所有的缓存都只是为了提升速度,因为在分布式系统中,缓存机制实际上是系统级性能在设计的⼀个重要权衡⼿段。⽐如当某个数据库的负载⽐较⾼,接近系统瓶颈时,我们就可以使⽤缓存技术, 把负荷分担到其他数据库中,那么这⾥使⽤缓存的⽬的,主要就是。强一致性数据,它是指代码数据会经常发生变化,而且业务对数据库的一致性要求非 常高,也就是说当数据发生变更后,其他用戶在系统中的任何地方,都应该看到的是更新后的数据。也就是说,所有的数据修改都必须确保可以同步修改 缓存与数据库中的数据。那么,针对这种类型的数据,一般是。
2023-07-10 17:57:04
1959
原创 Spring-Autowire&FactoryBean
autowire 即自动注入的意思,通过使用 autowire 特性,我们就不用再显示的配置 bean 之间的依赖了。把依赖的发现和注入都交给 Spring 去处理,省时又省力。autowire 几个可选项,比如 byName、byType 和 constructor 等。autowire 是一个常用特性,相信大家都比较熟悉了,所以本节我们就 byName 为例,快速结束 autowire 特性的介绍。
2023-07-10 16:35:44
2171
原创 Spring MVC中的HandlerInterceptors和Filters
比较Java servlet过滤器和Spring MVC Handlerinterceptor,以及什么时候一个比另一个更好。关键的收获是使用Filters,可以在请求到达的控制器Spring MVC之外之前操作它们。否则,Handlerinterceptors是应用程序特定横切关注点的好地方。通过提供对目标Handler和ModelAndView对象的访问,拥有了更细粒度的控制。
2023-07-10 15:03:13
1738
原创 Springboot启用HTTP响应压缩
官方文档:https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/htmlsingle/#how-to-enable-http-response-compression
2023-07-10 14:43:36
1099
原创 Future&CompletableFuture
直接继承Thread或者实现Runnable接口都可以创建线程,但是这两种方法都有一个问题就是:没有返回值,也就是不能获取执行完的结果。因此java1.5就提供了Callable接口来实现这一场景,而Future和FutureTask就可以和Callable接口配合起来使用。
2023-07-07 14:50:09
169
原创 在Java中压缩和解压缩
如何将文件压缩到归档文件中,以及如何解压缩归档文件,所有这些都使用Java提供的核心库。这些核心库是java.util.zip包的一部分,可以在其中找到所有与压缩和解压缩相关方法。
2023-07-01 07:43:25
406
原创 全局JSON序列化导致prometheus数据格式错乱
现场配置完prometheus端点后,返回数据格式乱了,如下图所示正常结果数据如下图所示。
2022-11-29 16:53:30
2280
原创 有效的 @SuppressWarnings 警告名称
了解 与@SuppressWarnings Java 注解一起使用的不同警告名称,它允许编译器抑制警告。 这些警告名称允许抑制特定的警告。 可用的警告名称取决于我们的 IDE 或 Java 编译器以下是@SuppressWarnings 注解中可用的有效警告名称列表:使用不同警告名称的示例。在下面的示例中,警告名称抑制了方法中未使用值的警告:3.2. @SuppressWarnings(“deprecated)在下面的示例中,警告名称禁止使用*@deprecated*方法的警告:3.3. @Suppr
2022-06-18 09:48:33
1739
原创 Spring单例bean如何处理并发请求
当有多个相同类型的实现时,命名一个Spring bean非常有用。这是因为 bean 没有唯一的名称,那么注入 bean 对 Spring 来说是不明确的。通过控制 bean 的命名,可以告诉 Spring 要将哪个 bean 注入目标对象。Spring为创建 bean提供了多个注解,可以在不同的层次上使用这些注解。例如,可以在 bean 类上放置一些注解,而在创建 bean 的方法上放置一些注解。首先,来看 Spring 的默认命名策略在。当只指定注解而没有任何值时,Spring 如何命名 bean?从在
2022-06-18 09:42:21
3464
原创 Spring bean名称
当有多个相同类型的实现时,命名一个Spring bean非常有用。这是因为 bean 没有唯一的名称,那么注入 bean 对 Spring 来说是不明确的。通过控制 bean 的命名,可以告诉 Spring 要将哪个 bean 注入目标对象。Spring为创建 bean提供了多个注解,可以在不同的层次上使用这些注解。例如,可以在 bean 类上放置一些注解,而在创建 bean 的方法上放置一些注解。首先,来看 Spring 的默认命名策略在。当只指定注解而没有任何值时,Spring 如何命名 bean?从在
2022-06-18 09:34:55
4195
原创 Spring ApplicationContext
详细探索 Spring ApplicationContext接口Spring 框架的主要特性之一是 IoC(控制反转)容器。Spring IoC 容器负责管理应用程序的对象。它使用依赖注入来实现控制反转。接口*BeanFactory* 和*ApplicationContext* 代表 Spring IoC 容器。这里,BeanFactory是访问 Spring 容器的根接口。它提供了管理 bean 的基本功能。另一方面,ApplicationContext 是BeanFactory的子接口。因此,它提供了B
2022-06-18 09:17:36
625
原创 如何在Spring中动态自动装配Bean
介绍如何在 Spring 中动态地自动装配 bean。首先展示一个动态自动装配可能会有所帮助的真实用例。 除此之外,将展示如何在 Spring 中以两种不同的方式解决它。动态自动装配在需要动态更改 Spring 的 bean 执行逻辑的地方很有帮助。 这在根据一些运行时变量选择要执行的代码的地方尤其实用。为了演示一个真实的用例,创建一个控制世界不同地区的服务器的应用程序。 出于这个原因,创建了一个带有两个简单方法的接口:两个实现类假设有一个网站,用户可以选择检查服务器是否在所选区域中处于活动状态。 因
2022-06-17 14:52:13
1980
原创 RestTemplate设置代理
1.介绍了解如何使用 RestTemplate 向代理发送请求。2.依赖首先,RestTemplateCustomizer 使用 HttpClient 类连接到代理。要使用该类,需要将 Apache 的 httpcore 依赖添加到 Maven pom.xml 文件中:<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</a
2022-03-18 08:15:20
9322
1
原创 Spring 控制反转和依赖注入简介
文章目录1.介绍2.什么是控制反转?3.什么是依赖注入?4.Spring IoC 容器5.基于构造函数的依赖注入6.基于Setter的依赖注入7.基于字段的依赖注入8.自动装配依赖9.延迟初始化的 Bean1.介绍介绍 IoC(控制反转)和 DI(依赖注入)的概念,了解如何在 Spring 框架中实现的。2.什么是控制反转?控制反转是软件工程中的一项原则,它将对象或程序部分的控制权转移到容器或框架。 我们最常在面向对象编程的上下文中使用它。与传统的自定义代码调用库编程相比,IoC 使框架能够控制程
2021-11-27 22:41:57
1262
1
原创 Spring Bean 生命周期和回调
1.介绍了解 Spring 容器管理的 Spring Bean 生命周期,包括对 Spring 容器和 IoC 的理解。 同时了解 Spring bean 生命周期回调处理程序和后处理器。 Spring Framework 提供了几种回调方法来创建 bean 和一些方法来销毁 Spring IoC Container 中的 bean。Spring Framework 提供了几个标记接口来更改容器中 bean 的行为; 它们包括 InitializingBean 和 DisposableBean。 实现
2021-11-27 22:39:54
1160
原创 Spring中@Autowired@Resource和@Inject注解区别
1.介绍如何使用与依赖注入相关的注解,即 @Resource、@Inject 和 @Autowired 。 这些注解为类提供了一种解决依赖关系的声明方式:@Autowired ArbitraryClass arbObject;与直接实例化它们相反(命令式方式)ArbitraryClass arbObject = new ArbitraryClass();三个注解中有两个属于 Java 扩展包:javax.annotation.Resource 和 javax.inject.Inject。 @
2021-11-27 22:37:58
2948
3
原创 热门 Spring 框架问题
1.Spring核心1.1.什么是Spring框架?Spring 是用于开发 Java Enterprise Edition 应用程序的最广泛使用的框架。 此外,Spring 的核心特性可用于开发任何 Java 应用程序。使用它的扩展在 Jakarta EE 平台之上构建各种 Web 应用程序。 也可以在简单的独立应用程序中使用它的依赖注入的特性。1.2.使用 Spring 有什么好处?Spring 的目标是让 Jakarta EE 开发更容易:轻量级 - 在开发中使用该框架有轻微的开销。控
2021-11-27 22:35:16
245
1
原创 检测Spring 事务是否处于活动状态
1.介绍检测事务对于审计目的或处理未实现良好事务约定的复杂代码库可能很有用。2.事务配置为了使事务在 Spring 中工作,必须启用事务管理。 如果使用具有 spring-data-* 或 spring-tx 依赖项的 Spring Boot 项目,Spring 将默认启用事务管理。 否则,必须启用事务并显式提供事务管理器。首先,需要在@Configuration 类中添加@EnableTransactionManagement 注解。 为项目启用Spring 的注解驱动事务管理。接下来,必须提供
2021-11-27 22:33:52
4879
1
原创 Spring @Transactional 中的事务传播和隔离
20211030Spring @Transactional 中的事务传播和隔离1.介绍介绍 @Transactional 注释,以及它的隔离和传播设置。2.什么是@Transactional?可以使用@Transactional 将方法包装在数据库事务中。它允许为事务设置传播、隔离、超时、只读和回滚条件。 还可以指定事务管理器。2.1. @Transactional 实现细节Spring 创建一个代理,或者操作类字节码,来管理事务的创建、提交和回滚。 在代理的情况下,Spring 会忽略内部方
2021-11-27 22:31:24
3812
原创 Java中的压缩和解压缩
1.介绍本篇文章介绍,如何将文件压缩到存档中以及如何解压存档——所有这些都使用 Java 提供的核心库。这些核心库是 java.util.zip 包的一部分——可以在其中找到所有与压缩和解压缩相关的实用程序。2.压缩文件看一个简单的操作——压缩单个文件。对于示例,将一个名为 test1.txt 的文件压缩到一个名为compressed.zip 的存档文件中。@Test public void test1() throws IOException { String sou
2021-10-06 09:56:37
549
原创 Apache Commons IO
1.介绍Apache Commons 项目旨在为开发人员提供一组可以在日常代码中使用的公共库。本篇文章中将了解 Commons IO 模块的一些关键实用程序类及功能。2.Maven依赖要使用该库,需要在 pom.xml 中包含以下 Maven 依赖项:<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <
2021-10-06 09:45:26
4528
hibernate_validator_reference_5.1.3.pdf
2020-04-15
httpclient-tutorial开发指导文档.pdf
2020-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人