自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 收藏
  • 关注

原创 Jenkins--自动化构建和部署SpringBoot项目

在任务配置页面进行任务的相关配置,这里主要是对流水线任务的pipeline脚本进行编写,这个脚本也是任务能否执行成功的关键。(2)在Maven 安装里面,新增Maven,不要勾选自动安装,然后在MAVEN_HOME中配置挂载到容器中的Maven的路径。选择文件系统中的settings文件,然后把挂载到容器中的Maven目录下的setting文件的全路径添加到文件路径中。在左侧菜单栏中,点击新建任务后跳转到任务创建页面,输入任务名称,选择任务风格后点击确定就能创建对应的任务。

2024-05-09 22:05:06 854

原创 Linux离线安装Harbor镜像仓库

Harbor是一个开源的企业级Docker Registry管理项目,由VMware公司开源。它提供了比Docker官方公共镜像仓库更为丰富和安全的功能,尤其适合企业环境使用。Harbor的关键特性包括权限管理(RBAC)、LDAP集成、日志审计、管理界面、自我注册、镜像复制以及漏洞扫描等。Harbor的设计旨在支持多用户环境,允许创建不同的用户和组织,并为他们分配不同的权限,确保了资源的安全隔离和管理的灵活性。

2024-04-25 14:52:41 759

原创 Docker 搭建私有镜像仓库

Docker的镜像仓库是一个用于存储和管理Docker镜像的中央位置。镜像仓库的主要作用是提供一个集中的地方,让用户可以上传、下载、删除和共享Docker镜像。镜像仓库又可以分为公共镜像仓库和私有仓库镜像仓库:公共镜像仓库Docker Hub 是 Docker 官方提供的公共镜像仓库,也是最大的 Docker 镜像仓库之一。它提供了大量的公共镜像供用户使用。只不过Docker Hub 在国内访问速度较慢,一些国内的云服务商提供了类似于 Docker Hub 且更为稳定、快速的公共镜像仓库。

2024-04-09 22:49:42 1437

原创 Flyway 数据库版本管理

Flyway是一款开源的数据库迁移工具,可以管理和版本化数据库架构。通过Flyway,可以跟踪数据库的变化,并将这些变化作为版本控制的一部分。Flyway支持SQL和NoSQL数据库,并且可以与现有的开发流程无缝集成,如持续集成(CI)和持续部署(CD)。Spring Boot版本是2.5.12,MySQL用的是8.2。这个问题是由于开始用的Flyway 依赖是的8.5.13版本,后面换成的8.5.13版本解决问题。

2024-04-08 15:18:34 1100

原创 Jenkins--任务详解

jenkins可以根据相关的配置生成具体的流水线的执行语法,从而完成流水线任务的具体操作。流水线语法中用到最多的就是片段生成器,可以帮助你快速生成流水线脚本中的特定部分。流水线任务配置中最关键的就是pipeline脚本的编写,用于定义Jenkins流水线任务的Groovy脚本,它包含了构建、测试、部署等步骤的定义,以及如何执行这些步骤的详细说明。在Jenkins的自由风格任务中,"构建后操作"是一个非常重要的环节,它允许你在构建流程的最后一步执行一系列的操作,以达到自动化测试、部署或其他后续工作的目的。

2024-04-03 17:31:18 1101

原创 Jenkins--在Linux上使用Docker安装

Jenkins是一个流行的开源自动化服务器,用于持续集成和持续交付(CI/CD)。持续集成:Jenkins可以监控版本控制系统(如Git、SVN)中的代码变更,并自动执行构建和测试,确保每次提交都被验证,从而尽早发现潜在的集成错误。持续部署:当代码通过测试后,Jenkins可以自动将其部署到不同的环境中,包括测试、预生产或生产环境。任务调度:Jenkins能够定时执行任务,比如夜间构建或定期发布。

2024-03-27 23:02:21 831

原创 Linux安装Maven

镜像仓库决定了后续maven仓库从哪里去拉去第三方依赖,可以配置成自己私仓,一般都是配置成阿里云的中心仓,毕竟阿里的中心仓依赖丰富且拉取速度快。还是通过编辑settings.xml文件来设置镜像仓的信息。将下载完的安装包,上传到Linux服务器上某个目录下,将其解压出来就好。(1)进入maven的conf目录下,找到settings.xml。(2)打开settings.xml文件设置。进入下载页面选择需要的版本进行下载。为上面新建的仓库目录的路径。

2024-03-26 17:54:20 370

原创 SpringBoot 参数校验案例分析

如果使用@RequestParam注解这种方式逐个接收请求参数的话,要想实现参数的校验就必须在类上添加@Validated;如果使用实体对象来接收参数的话,要想实现参数的校验就必须在方法的实体对象参数前添加@Validated或@Valid注解;

2024-03-25 20:35:55 400

原创 SpringBoot 参数校验

定义校验注解:使用@Constraint注解来定义你的自定义校验注解。你需要指定约束的类型、消息、错误代码和分组。String message() default "自定义校验信息";Class

2024-03-24 11:00:00 980

原创 Java SPI机制

Java SPI(Service Provider Interface)是JDK内置的一种服务提供发现机制,它允许应用程序在运行时动态地发现并加载实现了特定服务接口的组件。这一机制基于约定优于配置的原则,通过在类路径下查找特定的资源文件来加载实现类。SPI的设计目的是为了降低耦合度,提高系统的可扩展性。

2024-03-23 14:00:00 740

原创 SpringBoot Starter机制

Spring Boot的starter机制是一种便捷的依赖管理工具,它允许开发者快速地引入和配置一系列相关的库和组件。每个starter都是一个专门的集合,包含了启动某个模块所需的配置和依赖项。例如,你想使用reids插件,那么可以直接在pom.xml文件中引入spring-boot-starter-redis后,SpringBoot为我们完成自动装配。引入的组件都是直接嵌入就能够使用,无需过多的配置,而原来各种组件需要的配置都在 stater 中按照默认的方式设定。

2024-03-22 09:30:00 830

原创 Spring--IoC与DI

IoC(Inversion of Control,控制反转)是Spring框架的核心部分,是一个设计模式,它允许将对象的创建和依赖关系的管理从应用程序代码中分离出来,交给外部容器处理。这种模式的核心思想是“控制”的反转,即由传统的由对象自己创建依赖转变为由外部容器在运行时注入依赖。IoC容器是Spring框架中实现IoC概念的核心组件,主要负责实例化、配置和组装应用程序中的对象,并管理它们的生命周期。

2024-03-21 10:00:00 980

原创 MyBatis-plus 分页查询

MyBatis-Plus的 IPage 分页插件主要是通过AOP(面向切面编程)技术来实现的,它可以在运行时动态地拦截方法调用,并在方法执行前后添加额外的行为。这种方式使得分页功能可以很容易地集成到现有的代码中,而不需要对现有查询逻辑做出大的改动。PageHelper分页插件的工作原理基于MyBatis的拦截器模式,通过拦截MyBatis的执行过程,动态地在查询语句前添加分页逻辑。

2024-03-20 11:18:48 5231 2

原创 Spring--拦截器与过滤器

Spring 的拦截器(HandlerInterceptor)和过滤器(Filter)都是用于请求处理的组件,但拦截器更适合于Spring MVC的应用场景,提供了更丰富的Spring特性支持;而过滤器则更通用,适用于需要在Web容器层面上进行处理的场景。

2024-03-19 16:19:09 719

原创 Spring--设计模式

设计模式是软件工程领域的一组最佳实践,它们提供了一种通用解决方案来解决常见问题。Spring框架中融入了多种设计模式,以增强其灵活性、可扩展性和可重用性。

2024-03-18 23:35:58 910 1

原创 Spring--AOP

Spring AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架的一个核心特性,它允许开发者将横切关注(如日志、事务管理、安全性等)从业务逻辑中分离出来,从而提高代码的可重用性、可维护性和可扩展性。

2024-03-15 15:03:49 875

原创 SpringBoot 项目整合xxl-job

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。

2024-03-14 17:25:15 1357

原创 Spring--注解

Spring注解是一种元数据形式的代码,用于提供配置信息,从而减少XML配置文件的使用。Spring框架提供了一系列的注解,用于简化Spring应用程序的开发。通过使用这些注解,开发者可以在不编写大量XML配置的情况下,实现对Spring容器中bean的声明和管理、自动装配依赖、声明事务管理等功能。自定义注解是通过使用@interface关键字来创建的。自定义注解可以用来为类、方法、变量等添加元数据信息。自定义注解本身也可以被其他注解修饰。定义注解:使用@interface关键字来定义一个注解类型。

2024-03-13 22:06:19 797

原创 SpringBoot 启动时自动执行指定方法

这个接口中只有一个方法setApplicationContext(ApplicationContext applicationContext)在创建这个Bean的实例之后会自动调。ServletContextListener是一个在Servlet规范中定义的监听器接口,这个接口有个contextInitialized(ServletContextEvent sce)方法是在Web应用被Servlet容器(如Tomcat)加载并初始化时调用。这适用于需要在对象创建后立即执行的初始化逻辑。

2024-03-13 18:24:11 457

原创 SpringCloud--Sentinel使用

在客户端代码中,可以通过编程的方式调用 Sentinel 的 API 来定义资源。也可以通过注解对某个方法进行标注成资源。// 定义资源名称// 调用Sentinel API进行流量控制// 这里是你的业务逻辑});// 业务逻辑如果需要自定义流量控制逻辑,可以创建一个自定义的实现类。添加依赖:首先,确保你的项目中已经加入了Sentinel的相关依赖。启用Sentinel:在你的Spring Boot应用中添加注解来开启Sentinel。创建自定义过滤器:创建一个实现接口的类。

2024-03-05 15:43:48 1119

原创 SpringCloud--Sentinel基本概念介绍

Spring Cloud Sentinel 是阿里巴巴开源的面向分布式服务、多语言异构化服务架构的流量治理组件。主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。

2024-02-28 22:54:50 1030

原创 SpringCloud--Nacos解析

Spring Cloud Alibaba Nacos是一个用于动态服务发现、配置管理和服务管理的平台,是阿里巴巴开源的一个项目,旨在简化微服务架构中的服务治理。Nacos 提供了一组简单易用的特性集,可以快速的实现动态服务发现、服务配置、服务元数据及流量管理。

2024-02-27 21:58:19 1027 1

原创 SpringCloud--Ribbon解析

Spring Cloud Ribbon是Spring Cloud生态系统中的一部分,是一套基于 Netflix Ribbon 实现的客户端负载均衡工具,由于Spring Cloud对其进行二次封装,可以将面向服务的Rest模板(RestTemplate)请求转换成客户端负载均衡的服务调用。且无需单独部署,只需要在项目中引入相关依赖,并在项目配置文件中进行相关配置后,便可以在客户端进行请求的负载均衡调用了。Ribbon也允许开发者通过实现IRule接口来自定义负载均衡规则。

2024-02-19 22:25:24 1237

原创 SpringCloud--Gateway解析

Gateway是Spring Cloud官方推出的第二代微服务网关,它旨在提供统一的路由方式以及为微服务应用提供强大的负载均衡能力。与第一代Spring Cloud Netflix Zuul相比,Spring Cloud Gateway在性能、可扩展性、易用性等方面都有了显著的提升。基于Spring Boot 和Spring Cloud 开发,支持RESTful和WebSocket;支持通过Feign或RestTemplate进行服务调用;支持负载均衡、熔断、限流等操作;

2024-02-06 23:46:35 2026

原创 SpringCloud--OpenFeign解析

OpenFeign是一个声明式的Web服务客户端,它简化了与HTTP API的通信。它的底层原理主要基于Java的反射和动态代理,并且通过利用Spring AOP 框架、RestTemplate、Ribbon 和 Hystrix 等组件,将复杂的 HTTP 调用封装起来,使得开发者能够像调用本地服务一样使用远程服务。

2024-01-29 22:37:14 1015 1

原创 Nodejs--Linux环境安装及配置

(2)打开官网下载地址: https://www.nodejs.com.cn/ 选择对应的版本下载安装包。查看 ldd 版本信息是不是低于上面报错信息中要求的版本,是的话就如下步骤进行操作。(4)将解压后的目录改个短点的名字,方便后面配置换就变量。(3)将下载好的安装包传到Linux对应目录进行解压。(2)编辑完后,保存退出编辑,输入。(3)升级libstdc++版本。(5)再次查看ldd版本信息。查看Linux系统版本。(1)更新 glibc版本。(3)升级make版本。(2)升级gcc版本。

2024-01-24 20:40:52 646

原创 Maven--settings.xml配置详解

Maven的settings.xml文件是一个全局配置文件,用于定义Maven的参数和配置。这个文件包含了Maven的一些高级配置,比如本地仓库的位置、代理设置、认证信息等。settings.xml文件位于Maven的安装目录下的conf文件夹中,在使用Maven的时候如果未指定settings.xml文件的位置,默认使用的是用户目录下面的.m2子目录中的settings.xml文件。

2024-01-18 23:58:58 4270

原创 Maven--pom.xml文件详解

pom指的是project object model,又叫项目对象模型。Maven的pom文件是一个XML文件,用于描述项目的各种属性、依赖和构建信息,包括项目的名称、版本、许可证、作者、描述、依赖关系、构建过程、插件等。总的来说,POM文件是Maven工程的基本工作单元,它包含了项目的所有必要信息,使得Maven能够自动化地构建和管理项目。在Maven中,标签用于定义项目的依赖关系,可以将项目所需的依赖库添加到项目中,并确保这些依赖被正确地管理和使用。每个依赖都是使用标签定义的,

2024-01-17 20:23:17 1194

原创 Spring--@Async解析

从Spring3开始提供了@Async注解,被该注解标注的方法,Spring底层会新建一个线程池或者使用已有的线程池中的线程去异步的执行被标注的方法。

2024-01-16 19:22:00 1320

原创 Spring--@Transactional解析

Transactional是Spring框架中基于 AOP 的一个注解,用于在方法级别控制事务。这个注解告诉Spring框架在方法执行过程中,使用事务管理功能。如果该方法正常执行,则事务将被提交;如果方法抛出异常,则事务将被回滚。

2024-01-12 16:39:29 1129

原创 SpringBoot 自动装配原理

自动装配是指应用程序启动时由容器自动扫描和装配相关的组件和模块,无须像传统的spring那样在xml文件中手动配置Bean,从而简化了应用程序的配置过程,提高开发效率。SpringBoot自动装的实现主要是由启动类的注解中的三个注解共同完成自动装配;注解标记启动类为配置类;注解实现启动时扫描启动类所在的包以及子包下所有标记为bean的类由IOC容器注册为bean;通过@Import注解导入类,然后通过类的方法去读取需要被自动装配的组件依赖下的。

2024-01-11 11:14:33 1022

原创 SpringBoot 启动流程

方法来启动 Spring Boot 应用程序。该方法接受两个参数,第一个参数是启动类的类对象,第二个参数是主方法的参数。方法中做了一系列操作来完成项目启动所需的初始化Spring容器、启动内置tomcat、启动应用程序以及通知监听者等步骤。总的来说,Spring Boot的启动过程是一个复杂的流程,从启动类的Main方法中调用。启动类必须使用 @SpringBootApplication 注解标记该类。方法开始,然后在SpringApplication对象的。方法来执行项目启动的后续操作。

2024-01-10 15:13:30 3382

原创 Windows 环境多个JDK安装与切换

文件,选择好安装目录进行安装。多个版本的jdk重复这两步操作就好。并且这两条需要移动到最前面,不然后续无法切换jdk版本。编辑完成后,重新开启一个cmd窗口去查看当前版本。去Oracle官网上下载想要安装的jdk版本,

2024-01-09 12:38:24 636

原创 Mac 环境多JDK安装与切换

去Oracle官网上下载想要安装的jdk版本,M芯片选择arm架构的。可以根据上面配置的版本别名进行切换。

2024-01-08 23:01:02 735

原创 Docker 存储卷管理

存储卷是一种方便、灵活、高效的Docker容器内数据存储方式。存储卷可以在容器内的不同进程间共享数据,并且可以在容器之间共享和重用。

2024-01-04 23:15:48 782

原创 Docker 网络管理

Docker网络是容器化应用程序的重要组成部分,它使得容器之间可以互相通信和连接,同时也提供了容器与外部环境之间的隔离和连接。当我们直接使用去指定IP运行docker 的,会提示报错如下:如果想要指定ip去运行docker容器的话,就的先创建一个自定义一个网络模式,再指定IP运行docker容器。可以通过命令去创建一个自定义网络模式。使用自定义网络模式,指定ip去启动容器查看容器信息删除自定义网络。

2024-01-02 16:44:37 1180

原创 Java线上问题排查思路

可以根据系统出错的大概时间,找到服务器上该时间段的日志,再根据日志去分析具体出错的位置。业务日志除了关注系统异常与业务异常之外,还要关注服务执行耗时情况,耗时过长的服务调用如果没有熔断等机制,很容易导致应用性能下降或服务不可用。可以输出 GC 的详细日志,根据GC日志可以看出jvm垃圾回收的相关信息。(5)vmstat:是 Virtual Meomory Statistics(虚拟内存统计)的缩写 , 是实时系统监控工具。(4)jstat:查看堆内存各部分的使用量,以及加载类的数量;

2023-12-28 23:21:39 1053

原创 Java常见的限流算法

在分布式系统中,高并发场景下,为了防止系统因突然的流量激增而导致的崩溃,同时保证服务的高可用性和稳定性,限流是最常用的手段。常见的限流算法主要有:固定窗口算法、滑动窗口算法、漏桶算法、令牌桶算法。

2023-12-28 00:02:50 417

原创 RabbitMQ 常见问题

在RabbitMQ中,消息最终会保存在队列中,在同一个队列中,消息是顺序的,保持先进先出的原则,这个由Rabbitmq保证。如果消息已经被消费者消费了,只是在消费者返回ack确认信息的时候出现异常,导致ack信息未能发送到broker,从而导致RabbitMQ不清楚这条消息到底有没有被消费成功,消息队列可能会在消费者未确认消息时进行重试,导致消息被重复消费。消息的堆积是指在消息队列中,当生产者以较快的速度发送消息,而消费者处理消息的速度较慢或者消费者挂了的时候,导致消息在队列中积累并达到队列的存储上限。

2023-12-26 22:55:42 1301 1

原创 Java集合--Map

在Java的集合框架中,Map为双列集合,在Map中的元素是成对以键值对的形式存在的,通过键可以找对所对应的值。Map接口有许多的实现类,各自都具有不同的性能和用途。常用的Map接口实现类有HashMapHashtableTreeMap和。HashMap 是 Java 中一个非常常用的集合类,可以通过key的 HashCode 值来快速访问值,具有很快的访问速度,并且由于存储的键值对是无序的,插入的顺序并不会影响到查询的结果。

2023-12-14 22:45:00 998

空空如也

空空如也

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

TA关注的人

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