冷风扇666
稳扎稳打 脚踏实地
展开
-
微服务中的请求追踪与日志记录 - `requestId`(请求ID)和 `traceId`(跟踪ID)
在微服务架构中,请求的追踪和日志记录是非常关键的,能够帮助我们更好地理解系统的行为、排查问题、优化性能。requestId(请求ID)和traceId(跟踪ID)。原创 2024-02-07 03:15:00 · 4134 阅读 · 1 评论 -
Nacos源码解析:String.intern()方法的巧妙应用
方法的合理运用,Nacos实现了对服务名等标识符的内存优化,提高了系统的性能表现。在实际开发中,我们可以借鉴这样的优化手段,根据具体场景选择合适的字符串处理方式,以达到更好的性能和资源利用。在Nacos中,服务名作为一个标识符在整个系统中频繁使用,而且通常情况下服务名是相对固定的,很少发生变化。方法,这个使用并不是简单的拼接字符串,而是在特定场景下的优化手段。方法两次,生成两个相同的服务名字符串,通过引用比较判断它们是否是同一引用。方法可以将相同的服务名引用共享,减少字符串对象的创建,从而节省内存空间。原创 2024-01-28 02:15:00 · 601 阅读 · 2 评论 -
Spring Boot 进行 MockMvc 单元测试的实例
在Spring Boot应用程序中,使用MockMvc进行单元测试是一种有效的方式,可以验证控制器的行为和API的正确性。在这篇博客中,我们将介绍如何使用MockMvc对用户控制器(UserController)进行测试,该控制器涉及用户信息的增删改查操作。原创 2024-01-14 11:29:31 · 1340 阅读 · 8 评论 -
Spring Boot 中批量执行 SQL 脚本的实践
在Spring Boot应用中,有时候我们需要批量执行存储在数据库中的 SQL 脚本。本文将介绍一个实际的案例,演示如何通过 Spring Boot、MyBatis 和数据库来实现这一目标。原创 2024-01-11 20:24:31 · 1622 阅读 · 7 评论 -
使用Spring Cache优化数据库访问
在这篇博客中,我们将学习如何使用Spring Cache来优化数据库访问,提高系统性能。我们将创建一个简单的图书管理应用作为示例,并演示如何通过缓存减少对数据库的频繁查询。原创 2024-01-06 21:00:00 · 825 阅读 · 10 评论 -
Spring Boot - 自定义注解来记录访问路径以及访问信息,并将记录存储到MySQL
Target(ElementType.METHOD) // 因为路径在方法上所以作用目标为 METHOD@Retention(RetentionPolicy.RUNTIME) // 运行时:通过反射在运行时读取注解信息@Entity@Data@Idthis();原创 2023-11-21 00:45:00 · 415 阅读 · 3 评论 -
Spring Boot - filter 的顺序
Bean@Bean正常访问:http://localhost:8080/hello不正常访问:http://localhost:8080/HELLO可看到路径mapping是区分大小写的,如果路径不正确,虽然404,但过滤器链依然会执行(/*全局情况下)。原创 2023-11-19 00:45:00 · 1436 阅读 · 3 评论 -
Spring Boot - devtools 热部署
spring-boot-devtools是Spring Boot提供的一组开发工具,它旨在提高开发体验。这些工具包括应用程序的自动重新启动、自动刷新和远程调试等功能。原创 2023-11-18 03:30:00 · 487 阅读 · 2 评论 -
Spring Boot 中使用 ResourceLoader 加载资源的完整示例
Component@Autowired// 获取资源// 检查资源是否存在if (!System.out.println("该资源不存在!");return "该资源不存在!System.out.println("资源存在!");= null) {// 添加换行符 :每次读取一行后都会添加一个换行符,确保了每行的结尾都有换行符。// 如果仍然没有效果,请确认文件本身是否包含换行符。原创 2023-11-17 17:59:19 · 2973 阅读 · 1 评论 -
IOC - 自定义IOC容器
2、自定义ioc容器以绑定接口与实现类。1、定义接口与实现类。原创 2023-11-13 00:30:00 · 201 阅读 · 2 评论 -
IOC - Google Guice
接下来,创建一个Guice模块,其中配置了Guice容器来管理依赖关系。Google Guice是一个轻量级的依赖注入框架,专注于依赖注入和IoC,适用于中小型应用。Spring Framework是一个全面的企业级框架,提供了广泛的功能,适用于大型企业应用。创建Guice容器并使用。接口的实例,并最终调用了。请求Guice容器提供。原创 2023-11-12 00:30:00 · 321 阅读 · 2 评论 -
Spring Boot 整合JPA
Spring Boot 整合了JPA来访问数据库。在这个示例中,将创建一个简单的实体类。来执行各种操作,如获取所有用户、获取单个用户、创建用户等。运行应用程序可以看到新建了user表,没有建的话,他会自己建。,并使用JPA来进行数据库操作。并使用浏览器或API测试工具访问。原创 2023-11-10 01:00:00 · 269 阅读 · 2 评论 -
@ControllerAdvice + @ExceptionHandler 定义全局异常
【代码】@ControllerAdvice + @ExceptionHandler 定义全局异常。原创 2023-11-09 00:45:00 · 163 阅读 · 2 评论 -
Spring Boot项目中通过 Jasypt 对属性文件中的账号密码进行加密
通过这些步骤,可以在Spring Boot项目中对属性文件中的账号密码进行加密,提高安全性。确保保护好加密密码(下面是在Spring Boot项目中对属性文件中的账号密码进行加密的完整步骤,以MySQL的用户名为。中,配置Jasypt的加密密码。创建一个用于加密和解密属性值的实用类,例如。进行属性的加密和解密。这个类将使用Jasypt的。类来加密和解密属性值。原创 2023-11-08 03:45:00 · 338 阅读 · 2 评论 -
Spring - 提供 IOC 容器实现的两种方式
总的来说,BeanFactory是Spring的基本IOC容器,它具有延迟初始化的特性,而ApplicationContext是BeanFactory的增强版,提供了更多的功能,并在启动时即创建了配置文件中定义的对象。原创 2023-11-02 01:00:00 · 205 阅读 · 0 评论 -
什么是mq?可靠性、重复消息、重复消费、丢失、发送大文件、延迟、发送机制、重试、死信、幂等、有序、大小、过期、优先级、进了死信队列还能出来吗?
MQ” 指的是消息队列(Message Queue),是一种用于异步通信的技术。消息队列是一种中间件,用于在分布式系统中传递消息,使不同组件之间能够进行松散耦合的通信。它的核心思想是生产者将消息发送到队列,而消费者从队列中接收并处理消息。一些常见的消息队列实现包括 RabbitMQ、Apache Kafka、Apache ActiveMQ、Apache RocketMQ、Redis等。原创 2023-11-01 11:48:15 · 602 阅读 · 0 评论 -
Spring MVC 的责任链模式
Spring MVC 框架使用了责任链模式来处理HTTP请求的流程。这个责任链模式主要包括多个拦截器(Interceptor)以及处理器(Handler),它们协同工作以完成请求的处理和响应。责任链模式的好处是,它允许你将请求处理过程划分为多个独立的拦截器和处理器,每个拦截器或处理器负责不同的任务,使代码更加模块化和可扩展。这种模式允许你轻松地添加、删除或修改拦截器,以满足不同的需求,如安全性、日志记录、性能优化等。原创 2023-10-31 12:29:59 · 715 阅读 · 0 评论 -
Spring Boot - 结合 Redis 使用 Lua脚本
现在,启动Spring Boot应用程序。使用浏览器或API调用来触发执行Lua脚本的操作,例如访问。debug_key、debug_incrementBy为debug调试用的,实际使用中删除。首先,在Spring Boot项目的。我们的money就会蹭蹭蹭的往上涨。原创 2023-10-30 21:00:00 · 1516 阅读 · 0 评论 -
CentOS - 安装 Elasticsearch
"Elasticsearch"是一个流行的开源搜索和分析引擎,它可以用于实时搜索、日志和事件数据分析等任务。.repo保存并关闭文件。配置文件包含各种设置,包括网络配置、索引存储路径、集群设置等。根据需求进行配置。保存并关闭文件。然后,按照官方文档进一步配置和启动 Kibana 和 Logstash。现在,Elasticsearch 已经安装并运行在 CentOS 系统上。通过 HTTP 接口或使用相关客户端库与 Elasticsearch 进行交互,索引和搜索数据。原创 2023-10-27 01:00:00 · 914 阅读 · 2 评论 -
怎么理解 SpringBoot 的约定大于配置?
通过"约定大于配置",Spring Boot能够大幅减少需要处理的配置细节,使开发变得更快捷和高效。这也有助于提高项目的一致性,因为所有的Spring Boot项目都遵循相似的约定,减少了个性化配置的差异。这一理念的核心思想是,通过在开发框架中定义一些默认的约定和规则,从而减少开发人员需要配置的工作,使开发更加高效,同时提高了项目的可维护性和可读性。:Spring Boot使用Maven或Gradle来管理项目依赖,这些构建工具也遵循"约定大于配置"的原则,通过约定的方式简化了依赖管理。原创 2023-10-27 00:30:00 · 2162 阅读 · 0 评论 -
Spring Boot 为什么会出现 ?
总的来说,Spring Boot的出现是为了**简化Spring应用的开发和部署,降低了配置和设置的复杂性,提供了开箱即用的功能,使我们能够更专注于业务逻辑的实现,而不必担心繁杂的框架配置。:Spring Boot采用了"约定大于配置"的理念,提供了默认的配置和设置,减少了开发需要配置的部分,能够更快速地开始项目开发。:Spring Boot提供了大量的自动配置选项,根据项目的依赖和需要,自动配置各种组件,如数据源、安全、日志、消息队列等。:Spring Boot的出现也与微服务架构的兴起有关。原创 2023-10-26 00:45:00 · 212 阅读 · 0 评论 -
Spring MVC 常用的注解
【代码】Spring MVC 常用的注解。原创 2023-10-25 21:15:00 · 431 阅读 · 0 评论 -
Spring Boot - 启动主要流程
【代码】Spring Boot - 启动主要流程。原创 2023-10-25 00:45:00 · 104 阅读 · 0 评论 -
Spring 中 bean 是线程安全的吗?
总结:Spring中Bean的线程安全性主要取决于Bean的作用域。对于Singleton作用域,需要特别注意多线程访问的线程安全性。对于Prototype作用域和其他作用域,通常更容易确保线程安全性,因为每个线程都有自己的Bean实例。原创 2023-10-24 17:29:18 · 372 阅读 · 0 评论 -
AOP 和 IOC 的应用
总之,AOP和IOC是Spring框架的两个核心概念,分别用于处理横切关注点和依赖管理。它们使应用程序更易于维护、测试和扩展,并提供了许多重要的功能,如日志记录、事务管理、安全性、依赖注入等。原创 2023-10-23 23:30:00 · 196 阅读 · 0 评论 -
Bean 的初始化的一个过程?
总的来说,Spring 容器的初始化过程是将配置信息转化为实际的 Bean 对象并准备好供应用程序使用的过程。Spring 的不同模块,如 Spring Core Container、Spring Boot 等,也可以提供不同的初始化机制和特性。:Spring 容器将对加载的配置文件进行解析,这意味着它将理解文件中定义的各种元素,如 beans、dependencies、属性等。在 Spring 框架中,将从文件中解析配置信息并生成对象的过程是 Spring 容器的初始化过程。这可以是 Bean 实现的。原创 2023-10-22 00:45:00 · 236 阅读 · 0 评论 -
实现一个真正的 AOP,需要定义哪些点?
切面是一个包含横切关注点的模块化单元。通知是在切点上执行的代码,而切点是在应用程序中定义的特定点,例如方法调用或异常抛出。织入将切面的通知嵌入到连接点上,从而实现切面的功能。客户端代码实际上与代理对象交互,而代理对象负责在合适的时机调用切面的通知。这允许切面在不修改目标对象的源代码的情况下,向目标对象添加新功能。:AOP框架需要配置切面、通知、切点等元素的信息,以确定何时、何地以及如何应用切面。:通知是切面的一部分,它是在切点上执行的代码。:目标对象是切面所影响的应用程序对象,它通常是一个类或类的实例。原创 2023-10-20 02:00:00 · 64 阅读 · 0 评论 -
Bean实例化的三级缓存
在Spring框架中,Bean实例化的三级缓存(三级缓存也称为三级缓存机制)是用于缓存Bean定义的一种机制,用于管理和加速Spring容器中Bean的创建和初始化过程。在Bean的初始化过程中,如果Bean存在循环依赖,Spring会使用singletonFactories来存储Bean的工厂,以确保能够完成循环依赖的解决。如果在上述步骤中仍然找不到Bean,Spring会执行正常的Bean创建和初始化过程,然后将其存储在singletonObjects缓存中,以便将来的访问。原创 2023-10-16 04:30:00 · 638 阅读 · 0 评论 -
Bean 实例化的时候是如何解决循环依赖?
需要注意的是,虽然Spring提供了这种循环依赖的解决方案,但最好尽量避免设计具有循环依赖的Bean,因为它们可能会增加代码的复杂性并降低可维护性。在这个阶段,如果发现循环依赖,Spring会将一个代理对象(Proxy)提供给正在创建的Bean,而不是它的实际实例。代理对象充当临时替代,允许Spring容器在解决循环依赖后,将实际Bean实例化并注入到相应的属性中。如果A和B之间存在循环依赖,Spring容器会在实例化时创建代理对象,然后在属性注入后解决循环依赖,确保A和B都能够得到正确的引用。原创 2023-10-15 00:45:00 · 145 阅读 · 0 评论 -
Bean容器里的单例是根据什么识别它是同一个类呢?(比如容器里创建了A类,再去用这个A类的时候,Bean容器怎么知道这个就是A类?)
总的来说,Spring容器使用Bean的名称、类型和别名来唯一标识和识别Bean。通常情况下,名称是最常用的标识方式,但类型和别名也是有用的,特别是在解决依赖注入和组件扫描等问题时。Spring容器中的Bean的识别主要依赖于Bean的名称(ID)和类型。在这个示例中,“myBeanAlias” 是 “myBean” 的一个别名。在这个示例中,Bean的名称是 “myBean”。来查找匹配的Bean实例。原创 2023-10-14 01:30:00 · 257 阅读 · 0 评论 -
如果让你去实现 Bean 容器的管理,你会怎么实现?
实现一个Bean容器(也称为IoC容器或依赖注入容器)是一个复杂的任务,通常需要考虑许多方面,包括对象的创建、依赖注入、生命周期管理等。下面展示如何开始实现一个基本的Bean容器。这只是一个非常基本的示例,实际的Bean容器通常更复杂,并且需要考虑线程安全、Bean的作用域、循环依赖、配置文件加载等更多方面。首先,需要定义Bean类,这些类将被容器管理。创建一个容器类,用于管理Bean的注册、获取和生命周期管理。在应用程序中使用容器来管理Bean的创建和依赖注入。原创 2023-10-11 02:00:00 · 246 阅读 · 3 评论 -
Spring 有哪几大核心特点?
Spring是一个模块化的框架,可以选择使用所需的模块,如Spring Core、Spring MVC、Spring Data、Spring Security等。Spring提供了一个轻量级的IoC(控制反转)容器,用于管理应用程序中的Java组件(例如,对象和依赖关系)。这使得应用程序的组件能够脱离紧耦合,更容易进行测试和维护。Spring拥有庞大的开发社区,提供了广泛的文档、教程和第三方库的支持。Spring简化了Java EE开发,提供了更轻量级、更简洁的替代方案,减少了样板代码和配置的复杂性。原创 2023-10-11 01:00:00 · 248 阅读 · 0 评论 -
Spring IOC和Spring AOP的实现原理
总之,Spring IOC和Spring AOP的实现原理都依赖于Java反射、动态代理和字节码增强等技术,它们通过容器管理Bean和代理实现依赖注入和切面功能,从而增强了应用程序的可维护性和可测试性。Spring IOC(控制反转)和Spring AOP(面向切面编程)是Spring框架的两个核心概念,它们都是为了增强应用程序的模块性、可维护性和可测试性而设计的。当一个Bean被代理时,Spring创建一个代理对象,该对象拦截了Bean的方法调用,并在方法调用前后执行通知。原创 2023-10-05 00:45:00 · 658 阅读 · 0 评论 -
Spring 事务
Spring事务管理提供了声明式事务管理和编程式事务管理两种方式。原创 2023-10-04 00:30:00 · 101 阅读 · 0 评论 -
Spring 的并发问题 - 有状态 Bean 和无状态 Bean
当多个线程同时访问有状态Bean时,可能会引发并发问题,因为每个线程可能会访问和修改相同的状态数据,导致数据不一致或竞态条件。通过将有状态Bean的方法标记为事务,可以在方法执行期间启用数据库事务,从而避免数据并发访问的问题。在Spring框架中,通过合理地设计Bean的作用域(Scope)和避免在有状态Bean中保存状态信息,可以有效地处理并发问题。通过选择适当的作用域,可以在一定程度上控制有状态Bean的生命周期和访问范围,减少并发问题的影响。尽量设计有状态Bean,使其尽可能避免共享状态数据。原创 2023-07-20 21:46:23 · 976 阅读 · 2 评论 -
Spring Boot - Session
【代码】Spring Boot - Session。原创 2023-07-02 21:35:48 · 317 阅读 · 6 评论 -
Spring Boot - swagger
【代码】Spring Boot - swagger。原创 2023-07-01 10:28:35 · 252 阅读 · 11 评论 -
SpringBoot - 简单定时任务
** * < p > * 定时任务 * < / p > * / @Component @Slf4j public class TaskJob {/ ** * 按照标准时间来算,每隔 10s 执行一次 * / @Scheduled(cron = "0/10 * * * *?log . info("【job1】开始执行:{}" , DateUtil . formatDateTime(new Date()));原创 2023-06-28 21:34:28 · 398 阅读 · 9 评论 -
Spring Boot - ehcache
【代码】Spring Boot - ehcache。原创 2023-06-27 21:35:51 · 224 阅读 · 6 评论 -
Spring Boot - 使用 redis 缓存数据
【代码】Spring Boot - 使用 redis 缓存数据。原创 2023-06-25 21:16:02 · 611 阅读 · 5 评论