自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书山有路,学海无涯。记录成长,追逐梦想

专注于【大数据】、【云原生】、【云计算】、【测试技术】等领域

  • 博客(416)
  • 收藏
  • 关注

原创 【接口设计】用 Swagger 实现接口文档

在项目开发中,一般都是由前后端工程师共同定义接口,编写接口文档,之后大家根据这个接口文档进行开发、维护。为了便于编写和维护稳定,可以使用 Swagger 来编写 API 接口文档,以提升团队的沟通效率。

2024-07-14 12:12:31 517

原创 【接口设计】为 APP、PC、H5 网页提供统一风格的 API(实战篇,附源码地址)

随着业务需求的变更、功能的选代,API 的更改是不可避免的。当一个 API 修改时,就会出现很多问题,比如,可能会在 API 中新增参数、修改返回的数据类型。这就要考虑根据原先版本 API 编写的客户端如何保留或顺利过渡。所以,需要进行版本控制。

2024-07-13 23:17:37 719

原创 【接口设计】如何设计统一 RESTful 风格的数据接口

随着业务需求的变更、功能的选代,API 的更改是不可避免的。当一个 API 修改时,就会出现很多问题,比如,可能会在 API 中新增参数、修改返回的数据类型。这就要考虑根据原先版本 API 编写的客户端如何保留或顺利过渡。所以,需要进行版本控制。

2024-07-11 22:58:38 909

原创 【接口设计】前后端的通信方式 REST

REST 是软件架构的规范体系结构,它将资源的状态以适合客户端的形式从服务器端发送到客户端(或相反方向)。在 REST 中,通过 URL 进行资源定位,用 HTTP 动作(GET、POST、DELETE、PUSH 等)描述操作,完成功能。

2024-07-09 20:33:49 944

原创 【Elasticsearch】开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch

OpenSearch 已发布 3 年多,Elasticsearch 和 OpenSearch 已存在很多不同,但它们最终都源自同一个版本:Elasticsearch 7.10.2。我们不对 Elasticsearch 和 Amazon OpenSearch 之间的选型提供直接的推荐,因为最合适的选择将取决于项目或产品独特的需求和环境。但,文中数据相信会给你提供参考。建议读者根据自己的具体情况和偏好做出决定,并考虑功能需求、成本效益、长期的技术支持或自身是否具备架构及性能调优等能力。

2024-07-08 23:34:03 1014

原创 【MyBatis】MyBatis 理论 40 问(二)

MyBatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。程序员直接编写原生态 SQL,可以严格控制 SQL 执行性能,灵活度高。

2024-07-07 19:21:25 848

原创 【Spring Boot】关系映射开发(三):多对多映射

在多对多关联关系中,只能通过中间表的方式进行映射,不能通过增加外键来实现。注解@ManyToMany用于关系的发出端和接收端。关系的发出端定义一个集合类型的接收端的字段属性,关系的接收端不需要做任何定义。

2024-07-07 15:13:14 1577

原创 【Spring Boot】关系映射开发(二):一对多映射

单向关系的一对多注解@oneToMany,只用于关系的发出端(一的一方)。另外,需要关系的发出端定义一个集合类型的接收端的字段属性。在一对多关联关系映射中,默认是以中间表方式来映射这种关系的。中间表的名称为“用下画线连接关系的拥有端(发岀端)和 Inverse 端(接收端)”,中间表两个字段分别为两张表的表名加下画线_再加主键组成。

2024-07-07 12:16:26 1028

原创 【云计算】公有云、私有云、混合云、社区云、多云

张三⾃⼰在家做饭吃,这是私有云,厨房就是⾃建机房。李四天天在饭店吃,这是公有云,饭店就是云数据中⼼。然后王五⽐较⽜叉,在饭店有个固定包间,不对外开放,这是托管型私有云(有的⼚商将其定义为专有云)。包间就好⽐云数据中⼼的托管服务器。某⼀天张三家来了⼗来个客⼈,这是业务突增,家⾥没法坐下那么多⼈,要去饭店,这是私有云转公有云。然后张三爸妈为了省点钱决定留在家⾥吃,张三带着客⼈去饭店吃,这就是混合云。还有⼀种情况,饭店仅对某个特定的⼈群⽐如说公务员开放,那就相当于社区云。

2024-07-06 17:18:56 1131

原创 【Kubernetes】Pod 资源调度之亲和性调度

Kubernetes 的默认调度器以预选、优选、选定机制完成将每个新的 Pod 资源绑定至为其选出的目标节点上,不过,它只是 Pod 对象的默认调度器,默认情况下调度器考虑的是资源足够,并且负载尽量平均。在使用中,用户还可以自定义调度器插件,并在定义 Pod 资源配置清单时通过spec.schedulerName指定即可使用,这就是亲和性调度。

2024-07-06 14:07:05 923

原创 【Spring Boot】关系映射开发(一):一对一映射

对象关系映射(object relational mapping)是指通过将对象状态映射到数据库列,来开发和维护对象和关系数据库之间的关系。它能够轻松处理(执行)各种数据库操作,如插入、更新、 删除等。

2024-07-03 21:39:48 930 3

原创 【Spring Boot】基于 JPA 开发的文章管理系统(CRUD)

新建 Spring Boot 项目,然后在项目的业务代码入口下(入口类同级目录下)新建 entity、repository、service、controller 文件夹,并在 service 文件夹中新建 impl 文件夹。

2024-07-01 23:56:44 1221

原创 【Spring】DAO 和 Repository 的区别

DAO 模式是数据持久性的抽象,被认为更接近于底层存储,而底层存储通常以表为中心。因此,在许多情况下,我们的 DAO 与数据库表匹配,允许更直接的方式从存储中发送/检索数据,从而隐藏丑陋的查询。

2024-06-30 20:26:49 1157 1

原创 【Spring Boot】JPA 的查询方式

QueryDSL 也是基于各种 ORM 之上的一个通用查询框架,它与 Spring Data JPA 是同级别的。使用 QueryDSL 的 API 可以写出 SQL 语句(Java 代码,非真正标准 SQL),不需要懂 SQL 语句。它能够构建类型安全的查询。这与 JPA 使用原生查询时有很大的不同,可以不必再对 Object[] 进行操作。它还可以和 JPA 联合使用。

2024-06-30 15:03:08 818

原创 【Spring Boot】认识 JPA 的接口

JPA 提供了操作数据库的接口。在开发过程中继承和使用这些接口,可简化现有的持久化开发工作。可以使 Spring 找到自定义接口,并生成代理类,后续可以把自定义接口注入 Spring 容器中进行管理。在自定义接口过程中,可以不写相关的SQL操作,由代理类自动生成。

2024-06-30 12:49:39 1311 2

原创 【Spring Boot】Java 持久层 API:JPA

JPA(Java Persistence APl)是 Java 的持久化 API,用于对象的持久化。它是一个非常强大的 ORM 持久化的解决方案,免去了使用 JDBCTemplate 开发的编写脚本工作。JPA 通过简单约定好接口方法的规则自动生成相应的 JPQL 语句,然后映射成 POJO 对象。

2024-06-30 01:01:29 873

原创 【Spring Boot】Java 的数据库连接模板:JDBCTemplate

JDBCTemplate = JDBC + Template 的组合,是对 JDBC 的封装。它更便于程序实现,替我们完成所有的 JDBC 底层工作。因此,对于数据库的操作,不再需要每次都进行连接、打开、关闭了。现在通过 JDBCTemplate 不需要进行全局修改,就可以轻松地应对开发人员常常要面对的增加删除、修改和查询操作。

2024-06-29 19:07:17 1378

原创 【单元测试】Controller、Service、Repository 层的单元测试

单元测试是为了检验程序的正确性。一个单元可能是单个程序、类、对象、方法 等,它是应用程序的最小可测试部件。

2024-06-29 16:28:23 1186

原创 【单元测试】Spring Boot 的测试库

单元测试(unit test)是为了检验程序的正确性。一个单元可能是单个程序、类、对象、方法 等,它是应用程序的最小可测试部件。

2024-06-15 23:43:42 1193

原创 【RabbitMQ】RabbitMQ 的 6 种工作模式

你也许会问,为什么我们接收到未知消息的时候不抛出一个错误,而是要将它忽略掉?这是为了解决服务器端有可能发生的竞争情况。尽管可能性不大,但 RPC 服务器还是有可能在已将应答发送给我们但还未将确认消息发送给请求的情况下杀掉。如果这种情况发生,RPC 在重启后会重新处理请求。这就是为什么我们必须在客户端优雅的处理重复响应,同时 RPC 也需要尽可能保持幂等性。

2024-06-14 23:10:26 752

原创 【RabbitMQ】初识 RabbitMQ

RabbitMQ 是目前应用相当广泛的消息中间件(其他同类的消息处理中间件有 ActiveMQ、Kafka 等)。在企业级应用、微服务应用中,RabbitMQ 担当着十分重要的角色。例如,在业务服务模块中解耦、异步通信、高并发限流、超时业务、数据延迟处理 等都可以使用 RabbitMQ。

2024-06-13 20:53:16 1256

原创 【Spring Boot】异常处理

异常处理用于解决一些程序无法掌控,但又必须面对的情况。例如,程序需要读取文件、连接网络、使用数据库等,但可能文件不存在、网络不畅通、数据库无效等情况。为了程序能继续运行此时就需要把这些情况进行异常处理。

2024-06-09 22:23:11 1182 2

原创 【Java 百“练”成钢】Java 基础:带参数的方法

【代码】【Java 百“练”成钢】Java 基础:带参数的方法。

2024-06-09 12:03:49 243

原创 【Java 百“练”成钢】Java 基础:类和对象

类是对具有共同特征的事物或事件的集合的抽象,它定义了一类对象的属性和方法。类是抽象的,不占用内存,但它提供了创建对象的蓝图或模板。类中的成员包括属性和方法,属性用于存储数据,而方法则定义了对象可以执行的操作。类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。

2024-06-09 11:48:25 963 1

原创 【Java 百“练”成钢】Java 基础:多态

在 Java 核心中,多态性是一个易于理解的概念。多态的定义是:Poly 表示许多,morphos 表示形式。它描述了语言的一种特性,即允许根据上下文在不同情况下正确解释同一个单词或符号。Java 中有两种多态性。例如,在英语中,动词 run 与 a footrace、business 或 a computer 一起使用时会有不同的含义。您可以根据与 run 搭配使用的其他单词来理解 run 的含义。

2024-06-03 23:57:49 857 2

原创 【Java】一文了解 Servlet

狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。

2024-06-01 23:50:35 692

原创 【Java 百“练”成钢】Java 基础:继承

Java 的三大特性:封装、继承、多态。本篇博客将重点通过一些案例讲解 继承 这个概念。

2024-06-01 12:33:31 1189

原创 【Spring】认识 IoC 容器和 Servlet 容器

loC(Inversion of Control)容器,是面向对象编程中的一种设计原则,意为控制反转(也被称为控制反向或控制倒置)。它将程序中创建对象的控制权交给 Spring 框架来管理,以便降低计算机代码之间的耦合度。

2024-05-26 15:29:51 1045

原创 【Spring】认识 Spring AOP

在 Spring 的面向切面编程(AOP)思想里,非核心业务功能被定义为切面。核心业务功能和切面功能先被分别进行独立开发,然后把切面功能和核心业务功能编织在一起,这就是 AOP。

2024-05-26 12:30:09 732 1

原创 【Spring Boot】响应式编程

WebFlux 是从 Spring Framework 5.0 开始引入响应式 Web 框架的。与 Spring MVC 不同,WebFlux 不需要 ServletAPI,在完全异步且无阻塞,并通过 Reactor 项目实现 Reactive Streams 规范。

2024-05-25 23:34:04 1159

原创 【Helm】用 Helm 来简化 K8s 应用管理

K8s 是一个分布式的容器集群管理系统,它将集群中的所有资源都抽象成 API 对象,并且使用声明的方式来创建、修改、删除这些对象。在微服务盛行的今天,如果使用这种方式将导致大量 API 声明文件的编写维护,使运维工作量爆发式增长,并且对每个微服务应用都需要编写对应的 YAML 配置文件,极容易出错,维护困难。Helm 就是为解决这些问题而诞生的。

2024-05-25 17:15:45 1060

原创 【Amoro】Apache Iceberg + Amoro 助力网易构建云原生湖仓

湖仓一体的发展经历了从数据仓库到数据湖,最终到湖仓一体的过程。传统的数仓针对的是结构化数据,面向特定的分析或者报表场景,提供标准的 SQL 与标准的服务。随着业务规模的扩大,复杂性提升,对于半结构化、非结构化的数据存储和处理的需求涌现,催生了数据湖技术的发展。数据湖是在廉价的存储系统上,使用各种工具,满足各种数据类型的业务需求。这种非标准化的处理带来了管理成本和开发成本的上升。湖仓一体顺应而生,它是基于数据服务技术开发的廉价的系统,同时能够构建结构化数据的处理能力。

2024-05-19 23:10:17 1002 2

原创 【Spring Boot】分层开发 Web 应用程序(含实例)

Spring Boot 开发 Web 应用程序主要使用 MVC 模式。MVC 是 Model(模型)、View(视图)、Controller(控制器)的简写。

2024-05-19 18:56:56 1222

原创 【单元测试】如何让单元测试的价值最大化

关于 “什么是单元测试”、“为什么要做单元测试”、“怎么做单元测试”,网络上相关的技术文章汗牛充栋。尽管如此,在推广单元测试的过程,通过与研发同学的交流,我发现大家对单元测试的探讨还是存在薄弱的地方。这个薄弱的地方既不是抽象的单元测试理论,也不是具体的单元测试工具,而是理论与实践结合的单元测试策略。

2024-05-18 22:35:14 885

原创 【单元测试】为什么需要单元测试

通过编写和运行单元测试,开发者能够快速验证代码的各个部分是否按照预期工作,有利于保证系统功能的正确可用,这是单元测试的核心作用。

2024-05-18 17:26:14 1042

原创 【测试】代码覆盖率工具 JaCoCo

JaCoCo 是面向 Java 的开源代码覆盖率工具,JaCoCo 以 Java 代理模式运行,它负责在运行测试时检测字节码。JaCoCo 会深入研究每个指令,并显示每个测试过程中要执行的行。为了收集覆盖率数据,JaCoCo 使用 ASM 即时进行代码检测,并在此过程中从 JVM Tool Interface 接收事件,最终生成代码覆盖率报告。

2024-05-15 23:32:56 1100

原创 【Spring Boot】Spring Boot 中的 Starter

Spring Boot 为了简化配置,提供了非常多的 Starter。它先打包好与常用模块相关的所有 JAR 包,并完成自动配置,然后组装成 Starter(如把 Web 相关的 Spring MVC、容器等打包好后组装成 spring-boot-starter-web)。这使得在开发业务代码时不需要过多关注框架的配置,只需关注业务逻辑即可。

2024-05-12 23:38:31 1603 1

原创 【Maven】IDEA 中 Maven 常用操作

当我们使用 IDEA 开发基于 Maven 的项目的时候,会发现右侧有一个 Maven,点开会有一些菜单,今天来介绍一下这些菜单的意思。

2024-05-12 15:48:47 660

原创 【云原生】Pod 的生命周期(二)

本篇博客讲述 Pod 的生命周期。 Pod 遵循预定义的生命周期,起始于 Pending 阶段, 如果至少其中有一个主要容器正常启动,则进入 Running,之后取决于 Pod 中是否有容器以失败状态结束而进入 Succeeded 或者 Failed 阶段。

2024-05-06 23:08:16 793 1

原创 【云原生】Pod 的生命周期(一)

本篇博客讲述 Pod 的生命周期。 Pod 遵循预定义的生命周期,起始于 Pending 阶段, 如果至少其中有一个主要容器正常启动,则进入 Running,之后取决于 Pod 中是否有容器以失败状态结束而进入 Succeeded 或者 Failed 阶段。

2024-05-06 23:06:25 1193

空空如也

空空如也

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

TA关注的人

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