微服务+springcloud+springcloud alibaba学习笔记【基础知识+各个组件介绍+聚合父工程创建】(1/9)

news/2024/5/5 10:41:22/文章来源:https://blog.csdn.net/weixin_43025151/article/details/130021785

微服务+springcloud+springcloud alibaba学习笔记 1/9

      • 1、微服务简介
        • 1.1 微服务的自动化部署(CI /CD)(持续集成 持续交付)
        • 1.2 服务集中化管理
        • 1.3 分布式架构
        • 1.4 熔断机制 Hystri
      • 2、SpringCloud 简介
        • 2.1 SpringCloud 版本对应关系
        • 2.2 SpringCloud 常用组件表 (管家)
        • 2.3 SpringCloud总结
      • 3、SpringCloud组件的停更停用说明
      • 4、微服务cloud整体聚合工程
        • 4.1 新建父工程
        • 4.2 Maven中的DependencyManagement和Dependencies 介绍
        • 4.3 Maven跳过单元测试

1、微服务简介

什么是微服务呢?

就是将一个大的应用,拆分成多个小的模块,每个模块都有自己的功能和职责,每个模块可以 进行交互,这就是微服务

简而言之,微服务架构的风格,就是将单一程序开发成一个微服务, 每个微服务运行在自己的进程中,并使用轻量级通信机制,通常是 HTTP RESTFUL API 。这些服务围绕业务能力来划分构建的,并通 过完全自动化部署机制来独立部署这些服务可以使用不同的编程语 言,以及不同数据存储技术,以保证最低限度的集中式管理。

1.1 微服务的自动化部署(CI /CD)(持续集成 持续交付)

在微服务架构中,系统会被拆分为若干个微服务,每个微服务又是一个独立的应用程序。单体 架构的应用程序只需要部署一次,而微服务架构有多少个服务就需要部署多少次。随着服务数 量的增加,如果微服务按照单体架构的部署方式,部署的难度会呈指数增加。业务的粒度划分 得越细,微服务的数量就越多,这时需要更稳定的部署机制。随着技术的发展,尤其是 Docker 容器技术的推进,以及自动化部署工具(例如开源组件 Jenkins)的出现,自动化部署变得越 来越简单。 自动化部署可以提高部署的效率,减少人为的控制,部署过程中出现错误的概率降低,部署过 程的每一步自动化,提高软件的质量。构建一个自动化部署的系统,虽然在前期需要开发人员 或者运维人员的学习,但是对于整个软件系统来说是一个全新的概念。在软件系统的整个生命 周期之中,每一步是由程序控制的,而不是人为控制,软件的质量提高到了一个新的高度。随 着 DevOps 这种全新概念的推进,自动化部署必然会成为微服务部署 的一种方式。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tOijiS4P-1680876699938)(C:\Users\Administrator\AppData\Local\Temp\1680830009729.png)]

1.2 服务集中化管理

微服务系统是按业务单元来划分服务的,服务数量越多,管理起来就越复杂,因此微服务必须 使用集中化管理。目前流行的微服务框架中,例如 Spring Cloud 采用 Eureka 来注册服务和 发现服务,另外, Zookeeper、 Consul 等都是非常优秀的服务集中化管理框架。

1.3 分布式架构

分布式系统是集群部署的,由很多计算机相互协作共同构成,它能够处理海量的用户请求。当 分布式系统对外提供服务时,用户是毫不知情的,还以为是一台服务器在提供服务。分布式系 统的复杂任务通过计算机之间的相互协作来完成,当然简单的任务也可以在一台计算机上完 成。分布式系统通过网络协议来通信,所以分布式系统在空间上没有任何限制,即分布式服务 器可以部署不同的机房和不同的地区。微服务架构是分布式架构,分布式系统比单体系统更加 复杂,主要体现在服务的独立性和服务相互调用的可靠性,以及分布式事务、全局锁、全局 Id 等,而单体系统不需要考虑这些复杂性。 另外,分布式系统的应用都是集群化部署,会给数据一致性带来困难。分布式系统中的服务通 信依赖于网络,网络不好,必然会对分布式系统带来很大的影响。在分布式系统中,服务之间 相互依赖,如果一个服务出现了故障或者是网络延迟,在高并发的情况下,会导致线程阻塞, 在很短的时间内该服务的线程资源会消耗殆尽,最终使得该服务不可用。由于服务的相互依赖, 可能会导致整个系统的不可用,这就是“雪崩效应”。为了防止此类事件的发生,分布式系统 必然要采取相应的措施,例如“熔断机制”。

1.4 熔断机制 Hystri

为了防止“雪崩效应”事件的发生,分布式系统采用了熔断机制。在用 SpringCloud 构建的 微服务系统中,采用了熔断器(即 Hystrix 令 组件的 C ircuit Breaker)去做熔断。例如在微 服务系统中,有 a、 b、 c、 d、 e、 如果此时服务 b 出现故障或者网络延迟,服务 b 会出现大量的线程阻塞,有可能在很短的时 间内线程资源就被消耗完了,导致服务 b 的不可用。如果服务 b 为较 底层的服务,会影响 到其他服务,导致其他服务会一直等待服务 b 的处理。如果服务 b 迟迟不处理,大量的网络 请求不仅仅堆积在服务 b,而且会堆积到依赖于服务 b 的其他服务。而因服务 b 出现故障影 响的服务,也会影响到依赖于因服务 b 出现故障影响的服务的其他服务,从而由 b 开始,影 响到整个系统,导致整个系统的不可用。这是一件非常可怕的事,因为服务器运营商的不可靠, 必然会导致服务的不可靠,而网络服务商的不可靠性,也会导致服务的不可靠。在高并发的场 景下,稍微有点不可靠,由于故障的传播性,会导致大量的服务不可用,甚至导致整个系统崩 溃。 为了解决这一难题,微服务架构引入了熔断机制。当服务 b 出现故障,请求失败次数超过设 定的阀值之后,服务 b 就会开启熔断器,之后服务 b 不进行任何的业务逻辑操作,执行快速失败,直接返回请求失败的信息。其他依赖于 b 的服务就不会因为得不到响应而线程阻塞, 这时除了服务 b 和依赖于服务就不会因为得不到响应而线程阻塞, 这时除了服务 b 和依赖于服务 b 的部分功能不可用外,其他功能正常。

==微服务架构中,有三大难题,那就是服务故障的传播性(熔断)、服务的划分和分布式事 务。 ==

2、SpringCloud 简介

Spring Cloud 作为 Java 语言的微服务框架,它依赖于 Spring Boot,有快速开发、持续 交付和容易部署等特点。 Spring Cloud 的组件非常多,涉及微服务的方方面面,井在开源 社区 Spring 和 Netflix、 Pivotal 两大公司的推动下越来越完善,如今 alibaba 也加入 到其中。 spring 官方 netflix alibaba Spring Cloud 在开发部署上继承了 Spring Boot 的一些优点,提高其在开发和部署上的效 率。 Spring Cloud 的首要目标就是通过提供一系列开发组件和框架,帮助开发者迅速搭建 一个分布式的微服务系统。 Spring Cloud 是通过包装其他技术框架来实现的,例如包装开 源的 Netflix oss 组件,实现了一套通过基于注解、 Java 配置和基于模版开发的微服务框 架。 Spring Cloud 提供了开发分布式微服务系统的一些常用组件,例如服务注册和发现、 配置中心、熔断器、远程调用,智能路由、微代理、控制总线、全局锁、分布式会话等。

2.1 SpringCloud 版本对应关系

SpringCloud Release TrainSpringBoot Release Train
2022.0.x aka Kilburn3.0.x
2021.0.x aka Jubilee2.6.x, 2.7.x (Starting with 2021.0.3)
2020.0.x aka Ilford2.4.x, 2.5.x (Starting with 2020.0.3)
Hoxton2.2.x, 2.3.x (Starting with SR5)
Greenwich2.1.x
Finchley2.0.x
Edgware1.5.x
Dalston1.5.x

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mjGdaMbR-1680876699948)(C:\Users\Administrator\AppData\Local\Temp\1680830606577.png)]

官网对应版本链接:https://start.spring.io/actuator/info

{
"git": {
"branch": "340c06d599fde962d4bc305d5ed7d72581e7f6f6",
"commit": {
"id": "340c06d",
"time": "2023-04-04T13:40:09Z"
}
},
"build": {
"version": "0.0.1-SNAPSHOT",
"artifact": "start-site",
"versions": {
"spring-boot": "3.0.5",
"initializr": "0.20.0-SNAPSHOT"
},
"name": "start.spring.io website",
"time": "2023-04-04T13:41:28.911Z",
"group": "io.spring.start"
},
"bom-ranges": {
"codecentric-spring-boot-admin": {
"2.4.3": "Spring Boot >=2.3.0.M1 and <2.5.0-M1",
"2.5.6": "Spring Boot >=2.5.0.M1 and <2.6.0-M1",
"2.6.8": "Spring Boot >=2.6.0.M1 and <2.7.0-M1",
"2.7.4": "Spring Boot >=2.7.0.M1 and <3.0.0-M1",
"3.0.2": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"solace-spring-boot": {
"1.1.0": "Spring Boot >=2.3.0.M1 and <2.6.0-M1",
"1.2.2": "Spring Boot >=2.6.0.M1 and <3.0.0-M1"
},
"solace-spring-cloud": {
"1.1.1": "Spring Boot >=2.3.0.M1 and <2.4.0-M1",
"2.1.0": "Spring Boot >=2.4.0.M1 and <2.6.0-M1",
"2.3.2": "Spring Boot >=2.6.0.M1 and <3.0.0-M1"
},
"spring-cloud": {
"Hoxton.SR12": "Spring Boot >=2.2.0.RELEASE and <2.4.0.M1",
"2020.0.6": "Spring Boot >=2.4.0.M1 and <2.6.0-M1",
"2021.0.0-M1": "Spring Boot >=2.6.0-M1 and <2.6.0-M3",
"2021.0.0-M3": "Spring Boot >=2.6.0-M3 and <2.6.0-RC1",
"2021.0.0-RC1": "Spring Boot >=2.6.0-RC1 and <2.6.1",
"2021.0.6": "Spring Boot >=2.6.1 and <3.0.0-M1",
"2022.0.0-M1": "Spring Boot >=3.0.0-M1 and <3.0.0-M2",
"2022.0.0-M2": "Spring Boot >=3.0.0-M2 and <3.0.0-M3",
"2022.0.0-M3": "Spring Boot >=3.0.0-M3 and <3.0.0-M4",
"2022.0.0-M4": "Spring Boot >=3.0.0-M4 and <3.0.0-M5",
"2022.0.0-M5": "Spring Boot >=3.0.0-M5 and <3.0.0-RC1",
"2022.0.0-RC1": "Spring Boot >=3.0.0-RC1 and <3.0.0-RC2",
"2022.0.0-RC2": "Spring Boot >=3.0.0-RC2 and <3.0.0",
"2022.0.2": "Spring Boot >=3.0.0 and <3.1.0-M1"
},
"spring-cloud-azure": {
"4.6.0": "Spring Boot >=2.5.0.M1 and <3.0.0-M1",
"5.0.0": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"spring-cloud-gcp": {
"2.0.11": "Spring Boot >=2.4.0-M1 and <2.6.0-M1",
"3.4.7": "Spring Boot >=2.6.0-M1 and <3.0.0-M1",
"4.1.3": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"spring-cloud-services": {
"2.3.0.RELEASE": "Spring Boot >=2.3.0.RELEASE and <2.4.0-M1",
"2.4.1": "Spring Boot >=2.4.0-M1 and <2.5.0-M1",
"3.3.0": "Spring Boot >=2.5.0-M1 and <2.6.0-M1",
"3.4.0": "Spring Boot >=2.6.0-M1 and <2.7.0-M1",
"3.5.0": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
"4.0.0": "Spring Boot >=3.0.0 and <3.1.0-M1"
},
"spring-shell": {
"2.1.6": "Spring Boot >=2.7.0 and <3.0.0-M1",
"3.0.0": "Spring Boot >=3.0.0 and <3.1.0-M1"
},
"vaadin": {
"14.9.6": "Spring Boot >=2.1.0.RELEASE and <2.6.0-M1",
"23.2.15": "Spring Boot >=2.6.0-M1 and <2.7.0-M1",
"23.3.10": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
"24.0.3": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"wavefront": {
"2.0.2": "Spring Boot >=2.1.0.RELEASE and <2.4.0-M1",
"2.1.1": "Spring Boot >=2.4.0-M1 and <2.5.0-M1",
"2.2.2": "Spring Boot >=2.5.0-M1 and <2.7.0-M1",
"2.3.4": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
"3.0.1": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
}
},
"dependency-ranges": {
"okta": {
"1.4.0": "Spring Boot >=2.2.0.RELEASE and <2.4.0-M1",
"1.5.1": "Spring Boot >=2.4.0-M1 and <2.4.1",
"2.0.1": "Spring Boot >=2.4.1 and <2.5.0-M1",
"2.1.6": "Spring Boot >=2.5.0-M1 and <3.0.0-M1",
"3.0.3": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"mybatis": {
"2.1.4": "Spring Boot >=2.1.0.RELEASE and <2.5.0-M1",
"2.2.2": "Spring Boot >=2.5.0-M1 and <2.7.0-M1",
"2.3.0": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
"3.0.0": "Spring Boot >=3.0.0-M1"
},
"pulsar": {
"0.2.0": "Spring Boot >=3.0.0 and <3.1.0-M1"
},
"pulsar-reactive": {
"0.2.0": "Spring Boot >=3.0.0 and <3.1.0-M1"
},
"camel": {
"3.5.0": "Spring Boot >=2.3.0.M1 and <2.4.0-M1",
"3.10.0": "Spring Boot >=2.4.0.M1 and <2.5.0-M1",
"3.13.0": "Spring Boot >=2.5.0.M1 and <2.6.0-M1",
"3.17.0": "Spring Boot >=2.6.0.M1 and <2.7.0-M1",
"3.20.2": "Spring Boot >=2.7.0.M1 and <3.0.0-M1",
"4.0.0-M2": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
"picocli": {
"4.7.0": "Spring Boot >=2.5.0.RELEASE and <3.1.0-M1"
},
"open-service-broker": {
"3.2.0": "Spring Boot >=2.3.0.M1 and <2.4.0-M1",
"3.3.1": "Spring Boot >=2.4.0-M1 and <2.5.0-M1",
"3.4.1": "Spring Boot >=2.5.0-M1 and <2.6.0-M1",
"3.5.0": "Spring Boot >=2.6.0-M1 and <2.7.0-M1"
}
}
}

2.2 SpringCloud 常用组件表 (管家)

服务的注册和发现(eureka,nacos,consul)

服务的负载均衡(ribbon,dubbo)

服务的相互调用(openFeign,dubbo)

服务的容错(hystrix,sentinel)

服务网关(gateway,zuul)

服务配置的统一管理(config-server,nacos,apollo)

服务消息总线(bus)

服务安全组件(security,Oauth2.0)

服务监控(admin) (jvm)

链路追踪(sleuth+zipkin)

2.3 SpringCloud总结

SpringCloud 就是微服务理念的一种具体落地实现方式,帮助微服务架构提供了必备的功能 目前开发中常用的落地实现有三种: Dubbo+Zookeeper 半自动化的微服务实现架构 (别的管理没有) SpringCloud Netflix 一站式微服务架构 SpringCloud Alibaba 新的一站式微服务架构 。

三大公司 Spring Netflix Alibaba 。

3、SpringCloud组件的停更停用说明

SpringCloud各个组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vbHHjZcp-1680876699949)(C:\Users\Administrator\AppData\Local\Temp\1680831024880.png)]

SpringCloud组件升级替换

img

描述:

  • 服务注册中心:

Eureka:官方停止更新,并且已经有更好的替代产品了,可以使用,但是官方已经不建议使用了(重度患者)。

Zookeeper:某些老系统,以前是用的Zookeeper + Dubbo,后来做技术升级,结果发现SpringCloud的Eureka停更了,然后就用了最少的技术切换,那么就用了Zookeeper做注册中心。

Consul:go语言开发的,也是一个优秀的服务注册框架,但是使用量较少,风头都被Nacos抢了。

Nacos:来自于SpringCloudAlibaba,在企业中经过了百万级注册考验的,不但可以完美替换Eureka,还能做其他组件的替换,所以强烈建议使用,是学习的重点。

  • 服务调用:

Ribbon:也进入了维护状态,停止更新了,但是Spring官方还在使用(轻度患者)。

LoadBalancer:Spring官方推出的一个新的组件,打算逐渐取代掉Ribbon,但是现在还处于萌芽状态。

  • 服务调用2:

Feign:Netflix 公司产品,也停止更新了。

OpenFeign:Spring社区等不了Netflix更新了,然后就自己做了一个组件,不用Feign了。

  • 服务降级:

Hystrix:官网不推荐使用,但是中国企业中还在大规模使用。

Resilience4J:官网推荐使用,但是国内很少用这个。

Sentienl:来自于SpringCloudAlibaba,在中国企业替换Hystrix的组件,国内强烈建议使用。

  • 服务网关:

Zuul:Netflix 公司产品,公司内部产生分歧,有的人想自己出一个Zuul2。

Zuul2:也是Netflix 公司准备出的产品,但是由于内部分歧,所以Zuul2已经胎死腹中了。

gateway:Spring社区自己出的网关组件,官方隆重介绍和极度推荐的网关服务组件。

  • 服务配置:

Config:目前也在使用,风头被Nacos抢了。

Nacos:来自于SpringCloudAlibaba,后来居上,把Config给替换了。

  • 服务总线:

Bus:SpringCloud原生的服务总线组件,现在风头也被Nacos抢了。

Nacos:来自于SpringCloudAlibaba,后来居上,把Bus给替换了。

综上可以看出,Nacos 是重中之重,一个组件就替换掉了原来的几个组件。

4、微服务cloud整体聚合工程

4.1 新建父工程

1.打开idea,创建一个maven工程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VCkgYjTJ-1680876699952)(C:\Users\Administrator\AppData\Local\Temp\1680847104918.png)]

1.New Project

在这里插入图片描述

2.聚合总父工程名字和工程名字

在这里插入图片描述

  1. Maven选版本

在这里插入图片描述

  1. build success

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7p1ukJKS-1680876699960)(C:\Users\Administrator\AppData\Local\Temp\1680847662281.png)]

  1. 字符编码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ATuWZMRM-1680876699962)(C:\Users\Administrator\AppData\Local\Temp\1680847774668.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2bXFNzuo-1680876699964)(C:\Users\Administrator\AppData\Local\Temp\1680847843777.png)]

  1. 注解生效激活

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W0RAbVxC-1680876699966)(C:\Users\Administrator\AppData\Local\Temp\1680847968694.png)]

  1. java编译版本选、

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BB6Argdf-1680876699968)(C:\Users\Administrator\AppData\Local\Temp\1680848182155.png)]

  1. File Type过滤

(C:\Users\Administrator\AppData\Local\Temp\1680861738979.png)]

  1. 父工程pom
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.tigerhhzz.springcloud</groupId><artifactId>springcloud2023</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><name>Maven</name><!-- FIXME change it to the project's website --><url>http://maven.apache.org/</url><inceptionYear>2001</inceptionYear><distributionManagement><site><id>website</id><url>scp://webhost.company.com/www/website</url></site></distributionManagement><!-- 统一管理jar包版本 --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><log4j.version>1.2.17</log4j.version><lombok.version>1.16.18</lombok.version><mysql.version>5.1.47</mysql.version><druid.version>1.1.16</druid.version><mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version></properties><!-- 1、只是声明依赖,并不实际引入,子项目按需声明使用的依赖 --><!-- 2、子项目可以继承父项目的 version 和 scope --><!-- 3、子项目若指定了 version 和 scope,以子项目为准 --><dependencyManagement><dependencies><!--spring boot 2.2.2--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring cloud Hoxton.SR1--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR1</version><type>pom</type><scope>import</scope></dependency><!--spring cloud alibaba 2.1.0.RELEASE--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.boot.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><optional>true</optional></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork><addResources>true</addResources></configuration></plugin></plugins></build></project>

4.2 Maven中的DependencyManagement和Dependencies 介绍

一般项目pom文件中有DependencyManagement,代表这个工程是maven父工程。

通过DependencyManagement管理子模块项目中所需的所有依赖,包括依赖的GAV坐标,此时依赖的版本号可以通过properties标签统一管理,方便以后版本升级时,一处修改,处处生效。

4.3 Maven跳过单元测试

[外链图片转存中...(img-jtrUMVj6-1680876699972)]

父工程创建完成后可以执行mvn:install将父工程发布到仓库方便子工程继承使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_284849.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node.js安装与配置(详细步骤)

前言 本篇博文记录了Node.js安装与环境变量配置的详细步骤&#xff0c;旨在为将来再次配置Node.js时提供指导方法。 另外&#xff1a;Node.js版本请根据自身系统选择&#xff0c;安装位置、全局模块存放位置和环境变量应根据自身实际情况进行更改。 Node.js安装与配置 一、…

windows命令执行的几种绕过方法

windows命令执行的几种绕过方法介绍1、添加特殊符号2、定义变量3、切割字符串4、逻辑运算符在绕过中的作用5、利用for循环拼接命令介绍 反检测、反清理&#xff0c;是红队攻击中的重中之重&#xff0c;本文详细描述了几种windows执行命令的几种绕过手法。 1、添加特殊符号 w…

【 Spring MVC 核心功能(一) - 使用注解实现 URL 路由映射】

文章目录引言一、RequestMapping 注解介绍1.1 RequestMapping 是 post 还是 get 请求&#xff1f;1.2 RequestMapping 指定一种请求方式二、GetMapping三、PostMapping四、总结引言 前面我们讲到&#xff0c;学习 Spring MVC 需要掌握三个核心功能即连接&#xff0c;获取参数&…

webgl-attribute、uniform、varying三者的区别

通用js: let canvas document.getElementById(webgl) canvas.width window.innerWidth canvas.height window.innerHeight let ctx canvas.getContext(webgl) attribute&#xff1a; 范围: 只适用于vertexShader&#xff0c;将js代码中的数据传递给vertexShader。 使用方…

软考-套接字(scoket)

&#x1f4a4;SocketSocket套接字&#xff1a;是由系统提供用于网络通信的技术&#xff0c;是基于TCP/IP协议的网络通信的基本操作单元。将OSI模型中从传输层到物理层封装起来的抽象层&#xff0c;把网络协议隐藏在Socket抽象层中&#xff0c;只对使用者暴露API接口&#xff0c…

DDoS攻击实验笔记

DoS&DDoS简介 DoS(Denial of Service)&#xff0c;拒绝服务攻击是通过一些方法影响服务的可用性&#xff0c;比如早期主要基于系统和应用程序的漏洞&#xff0c;只需要几个请求或数据包就能导致长时间的服务不可用&#xff0c;但易被入侵检测系统发现。 DDoS(Distributed D…

Mysql通过行表中的行数据筛选主表数据

有订单头表和订单行表。筛选出行表中包含某些商品的头表 文章目录1. 示例表test_ordertest_order_line2. 实现EXISTS(推荐)内联1. 示例表 test_order test_order_line 2. 实现 EXISTS(推荐) 优点&#xff1a; 使用内联&#xff0c;主表字段很多的情况下&#xff0c;需要写越…

人员跌倒识别检测系统 yolov7

人员跌倒识别检测系统通过PythonYOLO7网络模型算法&#xff0c;人员跌倒识别检测算法模型对现场画面中有人员倒地摔倒行为实时分析预警&#xff0c;发现则立即抓拍存档告警同步提醒后台值班人员及时处理。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff0c;研究团队…

LabVIEW实现ST-Link自动烧录单片机

目录 1、添加CLI到系统环境变量中 2、查询ST-Link/V2烧录器信息 3、连接待烧录的MCU芯片 4、下载固件到Flash 5、可能会使用的命令 5.1、-Rst 5.2、-ME 5.3、-SE 6、封装好的LabVIEW库 在讲解LabVIEW实现ST-Link自动烧录之前先聊一聊ST官方提供一款专用的Flash烧录工具…

《华为机试》——查找两个字符串a,b中的最长公共子串

本期给大家带来的是 华为机试题库 关于 查找两个字符串a,b中的最长公共子串 的讲解。首先&#xff0c;我们还是先从题目入手进行分析思考&#xff01;&#xff01;&#xff01; 题目如下 &#xff1a;&#x1f447; 查找两个字符串a,b中的最长公共子串。若有多个&#xff0c;输…

正则化的基本认识

正则化(一) 拟合与欠拟合(二) 正则化的目的(三) 惩罚项&#xff08;3.1&#xff09;常用的惩罚项&#xff1a;&#xff08;3.2&#xff09;L-P范数&#xff1a;&#xff08;3.3&#xff09;L1与L2的选择&#xff1a;(一) 拟合与欠拟合 欠拟合&#xff1a; 是指测试级与训练集都…

IDEA集成Git、GitHub、Gitee

一、IDEA 集成 Git 1.1、配置 Git 忽略文件 为什么要忽略他们&#xff1f; 与项目的实际功能无关&#xff0c;不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。 怎么忽略&#xff1f; 创建忽略规则文件 xxxx.ignore&#xff08;前缀名随便起&#xff0c…

〖Python网络爬虫实战⑫〗- XPATH语法介绍

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付费…

java 通过 spring 官网创建springboot项目

文章java简单一写一个springboot入门案例带大家用idea工具工具创建了一个springboot简单的小案例 但有时 我们idea如果连不上网 就会有点问题 我们可以采用另一种创建方式 但这里的前提肯定就是 你的计算机是要有网的 然后访问 https://spring.io/ 打开spring的官网 在 Project…

SpringBoot基础使用

SpringBoot基础使用1.SpringBoot简介2.SpringBoot项目创建3.RESTful Web 服务4.SpringBoot 实现WebMvcConfigurer拦截器4.1 WebMvcConfigurer介绍4.2 WebMvcConfigurer接口常用方法4.3 WebMvcConfigurer拦截器5.SpringBoot常用注解总结6.SpringBoot异常处理6.1 使用 Controller…

Zeppelin框架及Hive查询操作

1&#xff09;、介绍 Apache Zeppelin是一款基于Web交互式框架&#xff0c;支持多种语言&#xff0c;Scala、SparkSQL、Markdown&#xff0c;SQL、Shell、Python等。 Zeppelin提供数据分析、数据可视化。 可以使用Zeppelin链接SparkSQL Zeppelin安装和使用 1&#xff09;、…

JVM性能调优简介

一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范&#xff0c;JVM将内存划分为&#xff1a; New&#xff08;年轻代&#xff09; Tenured&#xff08;年老代&#xff09; 永久代&#xff08;Perm&#xff09; 其中New和Tenured属于堆内存&#xff0c;堆内存会从JVM启动参…

Hive查询语句

目录 1.1 基础语法 1.2 基本查询&#xff08;Select…From&#xff09; 1.2.1 数据准备 1.2.2 全表和特定列查询 1.2.3 列别名 1.2.4 Limit语句 1.2.5 Where语句 1.2.6 关系运算函数 1.2.7 逻辑运算函数 1.3 分组 1.3.1 Group By语句 1.3.2 Having语句 1.4 Join语句…

【云原生】Dockerfile制作WordPress镜像,实现compose编排部署

文章目录&#x1f479; 关于作者前言环境准备目录结构dockerfile制作镜像yum 脚本Dockerfile-mariadb 镜像Dockerfile-service 镜像docker compose 编排提升✊ 最后&#x1f479; 关于作者 大家好&#xff0c;我是秋意临。 &#x1f608; CSDN作者主页 &#x1f60e; 博客主页…

BGP联邦实验

实验目的&#xff1a; 实验拓扑&#xff1a; IP地址规划&#xff1a; AS2内部&#xff1a; 172.16.0.0/16 172.16.0.0/24---P2P网络 172.16.1.0/24----MA网络 172.16.1.0/29 172.16.1.8/29 172.16.1.16/29 172.16.1.24/29 172.16.1.32/29 172.16.1.40/29 172.16.2.0/24--…