摘要: 在 Spring Boot 中,有几种常用和推荐的 Web 客户端 SDK,可以用于与 RESTful 或其他类型的 Web 服务进行交互。 1. Spring WebClient Spring WebClient 是 Spring 5 中引入的非阻塞、响应式的 Web 客户端,推荐用于现代 Spr 阅读全文
posted @ 2024-07-04 22:45 gongchengship 阅读(19) 评论(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 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 在 Spring Boot 项目中,你可以通过多种方式指定要使用的 `application.yml` 文件中的 `active` 配置文件(profile)。指定 active profile 的方法主要包括以下几种: ### 1. 使用命令行参数 当你通过命令行启动 Spring Boot 应用 阅读全文
posted @ 2024-07-04 22:41 gongchengship 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 数据库事务是基于锁的,但不仅仅是锁。锁是实现数据库事务的重要机制之一,用于确保数据的一致性和隔离性。然而,事务的完整实现还涉及其他机制,如日志、MVCC(多版本并发控制)等。以下是数据库事务的主要机制和它们的作用: 1. 锁(Locks) 锁是事务管理的核心机制之一。它用于控制并发事务对共享资源(如 阅读全文
posted @ 2024-07-04 22:40 gongchengship 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 状态模式(State Pattern)是一种行为设计模式,它允许对象在其内部状态发生改变时改变其行为,使得对象看起来好像修改了其类。状态模式的核心思想是将与某个状态相关的行为封装到一个独立的状态类中,以便在对象状态发生变化时,可以轻松切换状态对象,从而改变对象的行为。 状态模式的好处 封装状态转换 阅读全文
posted @ 2024-07-04 22:39 gongchengship 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求沿着一条包含多个处理器的链进行传递。每个处理器都可以选择处理请求或将其传递给下一个处理器。这种模式使得多个对象都有机会处理请求,而无需显式地指定处理请求的对象,从而实现了请求发送者和接收者之间 阅读全文
posted @ 2024-07-04 22:38 gongchengship 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 23种设计模式通常分为三大类: 创建型模式(Creational Patterns)、 结构型模式(Structural Patterns、 行为型模式(Behavioral Patterns)。 每一类设计模式都有其独特的用途和特点,以下是详细的分类和解释: 创建型模式 (Creational P 阅读全文
posted @ 2024-07-04 22:37 gongchengship 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 一.软件设计的六大原则,通常被称为SOLID原则, 是面向对象设计(OOD)中最重要的指导方针之一。这些原则旨在提高软件的可维护性、可扩展性和可读性。以下是SOLID原则的详细解释: 1. 单一职责原则 (Single Responsibility Principle, SRP) 单一职责原则指出, 阅读全文
posted @ 2024-07-04 22:35 gongchengship 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 在MySQL中,事务隔离级别定义了事务之间如何相互隔离,以及数据的一致性和并发性如何平衡。REPEATABLE READ(可重复读)是MySQL中四种事务隔离级别之一,它在保证数据一致性的同时,允许较高的并发性。 MySQL的四种事务隔离级别 READ UNCOMMITTED(未提交读) READ 阅读全文
posted @ 2024-07-04 22:27 gongchengship 阅读(14) 评论(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 阅读(5) 评论(0) 推荐(0) 编辑
摘要: ShedLock 是一个分布式锁解决方案,用于在分布式系统中确保某些任务在同一时间只被一个实例执行。它的主要用途是解决分布式环境中定时任务的并发执行问题。以下是需要 ShedLock 的几个原因: 1. 避免任务重复执行 在分布式系统中,定时任务可能会在多个实例上并发执行,这会导致任务重复执行的问题 阅读全文
posted @ 2024-07-04 22:03 gongchengship 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 状态模式(State Pattern)的精髓在于将对象的行为包装在状态对象中,并通过状态对象改变对象的行为。它允许对象在内部状态改变时改变其行为,使得对象看起来好像修改了其类。 核心思想 状态封装: 将不同状态下的行为封装到不同的状态类中,避免了大量的条件语句(如 if 或 switch)。 状态转 阅读全文
posted @ 2024-07-04 20:17 gongchengship 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 好的,下面我们将用状态模式来实现一个模拟从银行卡取钱的流程。 假设我们有以下几个状态: 输入卡 输入密码 选择操作 取款 取卡 我们通过状态模式来实现这些状态之间的切换。 状态接口 首先,我们定义一个状态接口 ATMState: // ATMState.java public interface A 阅读全文
posted @ 2024-07-04 20:13 gongchengship 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 在使用PostgreSQL进行批量插入时,默认情况下并不会锁定整张表。批量插入(bulk insert)操作通常是通过INSERT语句、COPY命令或类似的批处理方法来实现的。PostgreSQL在这些操作中使用行级锁,而不是表级锁。 行级锁(Row-level Lock) PostgreSQL的行 阅读全文
posted @ 2024-07-04 20:09 gongchengship 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 在Java中,有多种工具和库可以快速将CSV文件的数据导入到数据库中。以下是几种常用的方法和工具: 1. 使用OpenCSV和JDBC OpenCSV是一个非常流行的库,可以轻松读取和写入CSV文件。结合JDBC,可以将CSV文件的数据快速存储到数据库中。 示例代码 首先,添加OpenCSV库的依赖 阅读全文
posted @ 2024-07-04 20:09 gongchengship 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 在Elasticsearch中,增加相当于MySQL中的一列字段的操作被称为“添加字段到索引映射”。与MySQL不同,Elasticsearch是一个文档存储引擎,使用索引和类型来组织数据。每个文档都有其特定的映射(mapping),定义了字段及其数据类型。 增加字段到Elasticsearch映射 阅读全文
posted @ 2024-07-04 20:06 gongchengship 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 在Java中连接Elasticsearch可以使用Elasticsearch提供的官方Java客户端。Elasticsearch官方提供的Java客户端有多种,其中最常用的是RestHighLevelClient。下面是使用RestHighLevelClient连接Elasticsearch的详细步 阅读全文
posted @ 2024-07-04 20:06 gongchengship 阅读(26) 评论(0) 推荐(0) 编辑
摘要: Elasticsearch的数据结构是基于文档的存储和检索模型。它使用一种灵活的、面向文档的方式来存储和管理数据,每个文档都可以包含多种类型的数据。下面详细介绍Elasticsearch的数据结构及其核心概念: 核心概念 索引 (Index): Elasticsearch中的索引相当于关系型数据库中 阅读全文
posted @ 2024-07-04 20:04 gongchengship 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 跨域请求伪造攻击(Cross-Site Request Forgery,简称CSRF)是一种恶意攻击,其中攻击者诱使用户在已认证的会话中执行未授权的操作。通过在受害者访问的站点中嵌入恶意请求,攻击者可以利用用户的身份来执行一些用户未授权的操作,如转账、修改资料等。 跨域请求伪造攻击(CSRF) 攻击 阅读全文
posted @ 2024-07-04 20:03 gongchengship 阅读(10) 评论(0) 推荐(0) 编辑
摘要: Elasticsearch 和 MongoDB 是两种不同的数据库系统,各自适用于不同的使用场景。以下是它们的主要区别和比较: 1. 数据模型 Elasticsearch: 主要用途: 全文搜索和分析。 数据结构: 文档(Document),基于 JSON 的文档存储和索引。 索引: 强大的全文搜索 阅读全文
posted @ 2024-07-04 20:01 gongchengship 阅读(51) 评论(0) 推荐(0) 编辑