摘要: 在Spring Boot应用程序中,有几种方式可以在应用程序启动后立即执行某个方法。以下是一些常见的方法: 1. 使用 @PostConstruct 注解 可以在Spring管理的Bean中使用@PostConstruct注解的方法。这些方法会在依赖注入完成后立即被调用。 import javax. 阅读全文
posted @ 2024-07-09 00:59 gongchengship 阅读(5512) 评论(0) 推荐(1)
摘要: 在使用AWS的应用负载均衡器(Application Load Balancer,ALB)时,如果你希望使用Netflix Eureka作为服务发现机制,需要进行一些特定的配置以确保服务实例能够正确注册到Eureka,并通过ALB进行负载均衡。以下是配置指南和示例代码: 前提条件 Eureka Se 阅读全文
posted @ 2024-07-09 00:57 gongchengship 阅读(80) 评论(0) 推荐(0)
摘要: Spring Batch 是一个基于 Spring 框架的轻量级批处理框架,旨在帮助开发者构建健壮且高效的批处理应用程序。批处理是指处理大量数据的非交互式任务,通常涉及读取、处理和写入数据的过程。 Spring Batch 的主要功能 读/处理/写的抽象: ItemReader:用于从数据源读取数据 阅读全文
posted @ 2024-07-09 00:56 gongchengship 阅读(216) 评论(0) 推荐(0)
摘要: 策略模式(Strategy Pattern)和模板方法模式(Template Method Pattern)都是行为设计模式,用于定义算法的结构和行为,但它们在实现方式和应用场景上有一些显著的差异。以下是这两种模式的对比: 策略模式 (Strategy Pattern) 定义 策略模式定义了一系列算 阅读全文
posted @ 2024-07-09 00:55 gongchengship 阅读(304) 评论(0) 推荐(0)
摘要: 要实现从Amazon SQS(Simple Queue Service)订阅消息,并确保消息的可靠投递,可以使用AWS SDK for Java。以下是一个完整的示例代码,展示了如何从SQS队列中接收消息,并处理这些消息以确保可靠性。 前提条件 AWS SDK for Java:确保在你的项目中包含 阅读全文
posted @ 2024-07-09 00:55 gongchengship 阅读(113) 评论(0) 推荐(0)
摘要: 在云环境(例如AWS)中,由于云提供商通常提供强大的负载均衡服务(如AWS的ALB),一般不再需要使用Ribbon这种客户端负载均衡方案。云环境中的负载均衡器通常能够提供更高的可靠性、可扩展性和简化的配置,因此在上云的情况下,使用云提供的负载均衡器是更优的选择。 理由分析 云提供的负载均衡服务(如A 阅读全文
posted @ 2024-07-06 13:36 gongchengship 阅读(212) 评论(0) 推荐(0)
摘要: 在 Spring Boot 3 中,你仍然可以像在 Spring Boot 2 中一样编写传统的基于 Servlet 的同步 Controller。响应式编程是可选的,而不是强制的。Spring Boot 3 继续支持基于 Spring MVC 的传统编程模型,同时也提供对响应式编程(如 WebFl 阅读全文
posted @ 2024-07-05 01:42 gongchengship 阅读(218) 评论(0) 推荐(0)
摘要: Spring Boot 3.0 相对于 Spring Boot 2.x 引入了一些重大变化和改进,因此在升级过程中,可能需要对现有代码进行一些修改以确保兼容性。以下是一些主要的更改和注意事项,帮助你在升级时顺利过渡: 1. JDK 版本要求 Spring Boot 3.0 需要 JDK 17 以上版 阅读全文
posted @ 2024-07-05 01:39 gongchengship 阅读(1651) 评论(0) 推荐(0)
摘要: MongoDB 中的写关注(Write Concern)和读关注(Read Concern)是用于控制数据一致性和持久性的配置选项。 写关注(Write Concern) 写关注定义了 MongoDB 在确认写操作成功前所需的条件。它指定了需要多少个节点确认写操作已经持久化。 写关注级别 w: 0: 阅读全文
posted @ 2024-07-05 01:19 gongchengship 阅读(186) 评论(0) 推荐(0)
摘要: 在 Spring Boot 中,有几种常用和推荐的 Web 客户端 SDK,可以用于与 RESTful 或其他类型的 Web 服务进行交互。 1. Spring WebClient Spring WebClient 是 Spring 5 中引入的非阻塞、响应式的 Web 客户端,推荐用于现代 Spr 阅读全文
posted @ 2024-07-04 22:45 gongchengship 阅读(537) 评论(0) 推荐(0)
摘要: Java Development Kit (JDK) 17 和 JDK 8 之间有许多显著的改进和新增特性, 涵盖了语言特性、性能优化、安全性、标准库、以及现代开发需求的支持。以下是 JDK 17 相较于 JDK 8 的主要优势: 1. 语言特性和语法改进 1.1 Switch 表达式 JDK 12 阅读全文
posted @ 2024-07-04 22:43 gongchengship 阅读(1098) 评论(0) 推荐(0)
摘要: 在 Spring Boot 项目中,你可以通过多种方式指定要使用的 `application.yml` 文件中的 `active` 配置文件(profile)。指定 active profile 的方法主要包括以下几种: ### 1. 使用命令行参数 当你通过命令行启动 Spring Boot 应用 阅读全文
posted @ 2024-07-04 22:41 gongchengship 阅读(1163) 评论(0) 推荐(0)
摘要: 数据库事务是基于锁的,但不仅仅是锁。锁是实现数据库事务的重要机制之一,用于确保数据的一致性和隔离性。然而,事务的完整实现还涉及其他机制,如日志、MVCC(多版本并发控制)等。以下是数据库事务的主要机制和它们的作用: 1. 锁(Locks) 锁是事务管理的核心机制之一。它用于控制并发事务对共享资源(如 阅读全文
posted @ 2024-07-04 22:40 gongchengship 阅读(96) 评论(0) 推荐(0)
摘要: 状态模式(State Pattern)是一种行为设计模式,它允许对象在其内部状态发生改变时改变其行为,使得对象看起来好像修改了其类。状态模式的核心思想是将与某个状态相关的行为封装到一个独立的状态类中,以便在对象状态发生变化时,可以轻松切换状态对象,从而改变对象的行为。 状态模式的好处 封装状态转换 阅读全文
posted @ 2024-07-04 22:39 gongchengship 阅读(52) 评论(0) 推荐(0)
摘要: 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求沿着一条包含多个处理器的链进行传递。每个处理器都可以选择处理请求或将其传递给下一个处理器。这种模式使得多个对象都有机会处理请求,而无需显式地指定处理请求的对象,从而实现了请求发送者和接收者之间 阅读全文
posted @ 2024-07-04 22:38 gongchengship 阅读(23) 评论(0) 推荐(0)
摘要: 23种设计模式通常分为三大类: 创建型模式(Creational Patterns)、 结构型模式(Structural Patterns、 行为型模式(Behavioral Patterns)。 每一类设计模式都有其独特的用途和特点,以下是详细的分类和解释: 创建型模式 (Creational P 阅读全文
posted @ 2024-07-04 22:37 gongchengship 阅读(125) 评论(0) 推荐(0)
摘要: 一.软件设计的六大原则,通常被称为SOLID原则, 是面向对象设计(OOD)中最重要的指导方针之一。这些原则旨在提高软件的可维护性、可扩展性和可读性。以下是SOLID原则的详细解释: 1. 单一职责原则 (Single Responsibility Principle, SRP) 单一职责原则指出, 阅读全文
posted @ 2024-07-04 22:35 gongchengship 阅读(92) 评论(0) 推荐(0)
摘要: 在MySQL中,事务隔离级别定义了事务之间如何相互隔离,以及数据的一致性和并发性如何平衡。REPEATABLE READ(可重复读)是MySQL中四种事务隔离级别之一,它在保证数据一致性的同时,允许较高的并发性。 MySQL的四种事务隔离级别 READ UNCOMMITTED(未提交读) READ 阅读全文
posted @ 2024-07-04 22:27 gongchengship 阅读(264) 评论(0) 推荐(0)
摘要: 一. Mysql 数据库 的 RR 隔离级别下, 如果在事务中使用SELECT ... FOR UPDATE, 实现如下伪代码所描述的效果: “ begin transaction select id from t where status = false limit 1,1; if select 阅读全文
posted @ 2024-07-04 22:13 gongchengship 阅读(131) 评论(0) 推荐(0)
摘要: ShedLock 是一个分布式锁解决方案,用于在分布式系统中确保某些任务在同一时间只被一个实例执行。它的主要用途是解决分布式环境中定时任务的并发执行问题。以下是需要 ShedLock 的几个原因: 1. 避免任务重复执行 在分布式系统中,定时任务可能会在多个实例上并发执行,这会导致任务重复执行的问题 阅读全文
posted @ 2024-07-04 22:03 gongchengship 阅读(525) 评论(0) 推荐(0)
摘要: 状态模式(State Pattern)的精髓在于将对象的行为包装在状态对象中,并通过状态对象改变对象的行为。它允许对象在内部状态改变时改变其行为,使得对象看起来好像修改了其类。 核心思想 状态封装: 将不同状态下的行为封装到不同的状态类中,避免了大量的条件语句(如 if 或 switch)。 状态转 阅读全文
posted @ 2024-07-04 20:17 gongchengship 阅读(19) 评论(0) 推荐(0)
摘要: 好的,下面我们将用状态模式来实现一个模拟从银行卡取钱的流程。 假设我们有以下几个状态: 输入卡 输入密码 选择操作 取款 取卡 我们通过状态模式来实现这些状态之间的切换。 状态接口 首先,我们定义一个状态接口 ATMState: // ATMState.java public interface A 阅读全文
posted @ 2024-07-04 20:13 gongchengship 阅读(41) 评论(0) 推荐(0)
摘要: 在使用PostgreSQL进行批量插入时,默认情况下并不会锁定整张表。批量插入(bulk insert)操作通常是通过INSERT语句、COPY命令或类似的批处理方法来实现的。PostgreSQL在这些操作中使用行级锁,而不是表级锁。 行级锁(Row-level Lock) PostgreSQL的行 阅读全文
posted @ 2024-07-04 20:09 gongchengship 阅读(290) 评论(0) 推荐(0)
摘要: 在Java中,有多种工具和库可以快速将CSV文件的数据导入到数据库中。以下是几种常用的方法和工具: 1. 使用OpenCSV和JDBC OpenCSV是一个非常流行的库,可以轻松读取和写入CSV文件。结合JDBC,可以将CSV文件的数据快速存储到数据库中。 示例代码 首先,添加OpenCSV库的依赖 阅读全文
posted @ 2024-07-04 20:09 gongchengship 阅读(430) 评论(0) 推荐(0)
摘要: 在Elasticsearch中,增加相当于MySQL中的一列字段的操作被称为“添加字段到索引映射”。与MySQL不同,Elasticsearch是一个文档存储引擎,使用索引和类型来组织数据。每个文档都有其特定的映射(mapping),定义了字段及其数据类型。 增加字段到Elasticsearch映射 阅读全文
posted @ 2024-07-04 20:06 gongchengship 阅读(269) 评论(0) 推荐(0)