当前位置: 首页 > news >正文

Spring Cloud: 云原生微服务实践

文章目录

    • 1. Spring Cloud 简介
    • 2. Spring Cloud Eureka:服务注册与发现
      • 在Spring Cloud中使用Eureka
    • 3. Spring Cloud Config:分布式配置中心
      • 在Spring Cloud中使用Config
    • 4. Spring Cloud Hystrix:熔断器
      • 在Spring Cloud中使用Hystrix
    • 5. Spring Cloud Gateway:API网关
      • 在Spring Cloud中使用Gateway
    • 6. Spring Cloud OpenFeign:声明式服务调用
      • 在Spring Cloud中使用OpenFeign
    • 7. Spring Cloud Config:分布式配置中心
      • 在Spring Cloud中使用Config
    • 总结

1. Spring Cloud 简介

Spring Cloud 是由 Pivotal 团队提供的一种基于 Spring Boot 实现,为微服务架构提供的一套全面且集成化的解决方案。其主要目标是提供一种简单和可接受的开发方式来快速地构建分布式系统,包括配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、决策竞选、分布式会话等。

Spring Cloud 是一个拥有众多子项目的大家庭,每个子项目都为微服务开发提供了一种解决方案。它利用 Spring Boot 的开发便利性,巧妙地简化了分布式系统开发。Spring Cloud 为开发者提供了在分布式系统中快速构建常见模式的工具。例如,配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、领导选举、分布式会话和集群状态等模式都可以用 Spring Cloud 来实现。

使用 Spring Cloud,开发者可以快速地启动服务或者构建应用,同时能够快速和云服务进行对接。其丰富的微服务治理功能和对云计算(如外部化配置、服务发现、断路器)的天然支持,使得 Spring Cloud 成为微服务架构的理想选择。

2. Spring Cloud Eureka:服务注册与发现

服务注册与发现是微服务架构中的关键组成部分。由于微服务的数量可能很多,因此我们需要一个注册中心来跟踪这些服务的存在。Spring Cloud Eureka是Netflix开发的一种服务注册与发现的解决方案,Spring Cloud则将它集成在其子项目中。

Eureka包含两个组件:Eureka服务器和Eureka客户端。Eureka服务器就是服务注册中心,而Eureka客户端是一个Java客户端,用来简化与服务器的交互,作为一个内嵌式的,正在运行的客户端连接到Eureka服务器。

当微服务启动并向Eureka服务器注册自己的服务信息后,其他微服务就可以通过Eureka服务器来发现此服务。每个Eureka客户端都会维护一个服务实例的注册表,并定期通过心跳检查服务实例的可用性。如果服务实例在规定时间内未向Eureka服务器发送心跳,Eureka服务器将会从服务注册列表中删除该服务实例。

在Spring Cloud中使用Eureka

要在Spring Cloud中使用Eureka,您需要添加spring-cloud-starter-netflix-eureka-client依赖到您的项目中。然后,您可以在您的Spring Boot应用的主类中通过@EnableEurekaServer注解启用Eureka服务注册中心,或者通过@EnableEurekaClient注解启用Eureka客户端。

Eureka服务注册中心的配置通常包括以下内容:服务器端口、Eureka服务端地址、是否将自己注册到Eureka服务端等。这些配置可以通过application.yml或application.properties文件进行配置。

Eureka客户端的配置包括:Eureka服务端地址、服务实例名称、服务实例主机名、服务实例IP地址和端口等。这些配置同样可以通过application.yml或application.properties文件进行配置。

通过以上步骤,您就可以在Spring Cloud中使用Eureka进行服务注册与发现了。然后您就可以通过Spring Cloud的其他特性,如负载均衡、断路器等,来实现更高级的微服务交互。

3. Spring Cloud Config:分布式配置中心

在分布式系统中,由于服务实例数量众多且部署分散,统一管理所有服务的配置成为了一项挑战。Spring Cloud Config为微服务架构中的分布式配置提供了一种解决方案。

Spring Cloud Config分为Config Server和Config Client两部分。Config Server提供配置文件的存储、以及对外暴露接口服务,当Config Client启动或运行过程中需要获取或刷新配置信息时,直接通过Config Server提供的接口获取。Config Server可以集成Git、Svn等版本管理工具系统,从而支持配置版本管理。

在Spring Cloud中使用Config

配置 Config Server

要创建Config Server,您需要在启动类上添加@EnableConfigServer注解,并在配置文件中设置spring.cloud.config.server.git.uri属性,指定存放配置信息的Git仓库地址。如果Git仓库是私有的,还需要配置用户名和密码。

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);}
}

配置 Config Client

Config Client在启动时会向Config Server请求配置信息,并缓存在本地。如果配置信息发生了变化,也可以动态地刷新。Config Client的主要配置包括Config Server的地址、应用名称、应用环境和应用分支等。

spring:application:name: myapp # 应用名称cloud:config:uri: http://localhost:8888 # Config Server地址profile: dev # 应用环境label: master # 应用分支

Spring Cloud Config支持消息总线,可以利用Spring Cloud Bus实现配置信息的动态刷新。当配置信息发生变化时,Config Server可以通过消息总线触发各个服务实例的刷新事件,从而避免了逐一刷新各个服务实例的麻烦。

通过以上步骤,您就可以在Spring Cloud中使用Config进行分布式配置管理了。然后您就可以集中管理所有服务的配置,简化配置管理的复杂性。

4. Spring Cloud Hystrix:熔断器

微服务之间通过远程调用方式进行通信,但是在分布式系统中,服务之间的调用经常会出现网络延迟、超时等问题。当对特定服务的调用发生问题并且持续一段时间之后,我们不希望服务的消费者因此被阻塞并一直等待响应。这时,我们就需要一个熔断器机制来预防这种情况,防止服务的雪崩效应。Spring Cloud Hystrix就是其中的一种解决方案。

Hystrix是Netflix开源的一款处理分布式系统的延迟和容错的开源库,它能帮助我们控制分布式服务之间的交互,从而使得系统在出现问题时仍然可以正常运行。Hystrix提供了熔断、隔离等一系列控制远程访问和故障处理的方法。

在Spring Cloud中使用Hystrix

启用Hystrix

要在Spring Cloud应用中使用Hystrix,首先需要在项目的pom.xml文件中加入spring-cloud-starter-netflix-hystrix的依赖。然后,在启动类上添加@EnableCircuitBreaker或@EnableHystrix注解,启用Hystrix的熔断功能。

@SpringBootApplication
@EnableCircuitBreaker
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

使用Hystrix

在需要进行熔断控制的方法上,添加@HystrixCommand注解,并在该注解中指定fallbackMethod属性,该属性的值就是当出现错误时,提供备用处理逻辑的方法名称。

@Service
public class MyService {@HystrixCommand(fallbackMethod = "fallback")public String normalMethod() {// 正常的逻辑处理}public String fallback() {// 备用逻辑处理return "fallback";}
}

以上就是在Spring Cloud中使用Hystrix的基本方式。除了熔断功能外,Hystrix还提供了隔离、限流、降级等服务保护机制,是构建微服务系统时的重要工具。

5. Spring Cloud Gateway:API网关

在微服务架构中,我们通常会有许多微服务实例,而外部客户端(如用户的浏览器或其他微服务)可能需要调用多个服务的接口来完成一项工作。为了简化客户端的调用,并提供统一的接口服务,我们可以使用API网关来封装内部服务的接口。Spring Cloud Gateway是Spring Cloud官方推出的第二代API网关,它是基于Spring 5,Spring Boot 2和Project Reactor等技术开发的网关,它旨在提供一种简单而有效的方式来路由API。

Spring Cloud Gateway提供了路由、过滤、限流、熔断等功能,可以帮助我们实现对微服务的统一访问入口,从而隔离了客户端和内部微服务的交互复杂性。

在Spring Cloud中使用Gateway

启用Gateway

要在Spring Cloud应用中使用Gateway,首先需要在项目的pom.xml文件中加入spring-cloud-starter-gateway的依赖。然后,只需要在application.properties或application.yml中进行简单的配置,就可以定义出路由规则。

spring:cloud:gateway:routes:- id: user_routeuri: lb://user-servicepredicates:- Path=/user/**

在上述配置中,我们定义了一个名为user_route的路由规则。该规则的含义是,当访问路径为/user/**时,将请求路由到user-service服务。"lb://"表示使用负载均衡的方式访问服务。

使用Gateway

在Gateway中,我们可以通过配置各种Predicate和Filter来实现复杂的路由规则和过滤逻辑。例如,我们可以添加一个Filter,将所有到/user/**的GET请求都重定向到/user/login页面:

spring:cloud:gateway:routes:- id: user_routeuri: lb://user-servicepredicates:- Path=/user/**filters:- RewritePath=/user/(?<segment>.*), /user/login

以上就是在Spring Cloud中使用Gateway的基本方式。通过Spring Cloud Gateway,我们可以轻松地实现对微服务的统一访问入口,极大地简化了客户端的调用逻辑。

6. Spring Cloud OpenFeign:声明式服务调用

在微服务架构中,服务间的远程调用是非常常见的场景。然而,直接使用RestTemplate等工具类进行远程调用,往往会产生大量的模板代码,使得程序难以维护。Spring Cloud OpenFeign是一个声明式的服务调用工具,它可以帮助我们简化服务间的远程调用。

Spring Cloud OpenFeign是基于Netflix Feign的,它通过简单的接口加注解的方式,就可以定义出服务间的远程调用。此外,Spring Cloud OpenFeign还整合了Ribbon和Hystrix,可以方便地实现负载均衡和熔断功能。

在Spring Cloud中使用OpenFeign

启用OpenFeign

要在Spring Cloud应用中使用OpenFeign,首先需要在项目的pom.xml文件中加入spring-cloud-starter-openfeign的依赖。然后,在启动类上添加@EnableFeignClients注解,启用OpenFeign的功能。

@SpringBootApplication
@EnableFeignClients
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

使用OpenFeign

在Spring Cloud中使用OpenFeign非常简单,只需要定义一个接口,并在接口上添加@FeignClient注解,指定服务名,然后在接口中定义与远程服务中的REST接口相对应的方法即可。

@FeignClient("user-service")
public interface UserService {@GetMapping("/user/{id}")User getUser(@PathVariable("id") Long id);
}

在上述代码中,我们定义了一个名为UserService的Feign客户端,该客户端可以用来调用名为user-service的服务的接口。当我们在代码中调用UserService的getUser方法时,实际上就是在调用user-service服务的"/user/{id}"接口。

以上就是在Spring Cloud中使用OpenFeign的基本方式。通过Spring Cloud OpenFeign,我们可以轻松地实现服务间的远程调用,极大地提升了开发效率。

7. Spring Cloud Config:分布式配置中心

在微服务架构中,由于服务实例数量多、环境复杂,对配置管理的要求很高。Spring Cloud Config提供了一种集中式的配置管理方案,它支持从远程Git仓库加载配置,支持配置的实时刷新,并且可以与Eureka、Zuul、Ribbon等组件配合,实现配置的动态更新。

Spring Cloud Config由两部分组成:Config Server和Config Client。Config Server是配置服务器,它从远程Git仓库加载配置,并提供给其他应用程序使用。Config Client是配置客户端,它在启动时会从Config Server获取配置,并且可以在运行时刷新配置。

在Spring Cloud中使用Config

启用Config Server

要创建一个Config Server,首先需要在项目的pom.xml文件中加入spring-cloud-config-server的依赖。然后,在启动类上添加@EnableConfigServer注解,启用Config Server的功能。

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);}
}

在application.properties或application.yml中,需要配置远程Git仓库的地址、用户名和密码。

spring:cloud:config:server:git:uri: https://github.com/your-account/your-repousername: your-usernamepassword: your-password

启用Config Client

要在其他应用中使用Config Client获取配置,需要在项目的pom.xml文件中加入spring-cloud-starter-config的依赖。然后,在bootstrap.properties或bootstrap.yml中,配置Config Server的地址和应用的名称。

spring:application:name: your-applicationcloud:config:uri: http://localhost:8888

在上述配置中,your-application是应用的名称,它决定了Config Client将从Config Server加载哪个应用的配置。

以上就是在Spring Cloud中使用Config的基本方式。通过Spring Cloud Config,我们可以实现配置的集中管理和动态更新,大大提升了微服务的可配置性和灵活性。

总结

本篇博客介绍了Spring Cloud的主要组件和使用方法,包括Eureka、Hystrix、Zuul、Gateway、OpenFeign、Config等。这些组件各自完成了服务发现与注册、断路器、API网关、声明式服务调用、分布式配置中心等功能,是构建微服务架构的重要工具。

  • Spring Cloud Eureka提供了服务发现与注册的功能,使得服务能够自动发现并调用其他服务。
  • Spring Cloud Hystrix提供了断路器的功能,可以防止服务的雪崩效应,提高系统的可用性。
  • Spring Cloud Gateway是第二代API网关,它们提供了统一的服务访问入口,简化了客户端的调用逻辑。
  • Spring Cloud OpenFeign是一个声明式的服务调用工具,可以简化服务间的远程调用。
  • Spring Cloud Config提供了集中式的配置管理方案,可以从远程Git仓库加载配置,并支持配置的实时刷新。

Spring Cloud为微服务架构提供了一整套解决方案,包括配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话等。这些都是在微服务架构中常见的问题,Spring Cloud为这些问题提供了易用、灵活的解决方案。

总的来说,Spring Cloud是构建微服务架构的强大工具,它将Spring Boot的简单、快捷的开发方式引入到微服务架构中,使得开发者能够专注于业务逻辑的开发,而不需要花费大量的时间和精力去处理分布式系统的复杂性。

相关文章:

Spring Cloud: 云原生微服务实践

文章目录 1. Spring Cloud 简介2. Spring Cloud Eureka&#xff1a;服务注册与发现在Spring Cloud中使用Eureka 3. Spring Cloud Config&#xff1a;分布式配置中心在Spring Cloud中使用Config 4. Spring Cloud Hystrix&#xff1a;熔断器在Spring Cloud中使用Hystrix 5. Sprin…...

存bean和取bean

准备工作存bean获取bean三种方式 准备工作 bean:一个对象在多个地方使用。 spring和spring boot&#xff1a;spring和spring boot项目&#xff1b;spring相当于老版本 spring boot本质还是spring项目&#xff1b;为了方便spring项目的搭建&#xff1b;操作起来更加简单 spring…...

39. 组合总和

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。如…...

100行以内Python能做那些事

Python100 找到一个很好的python教程分享出来---->非本人 B站视频连接 100行以内的Pyhton代码可以做哪些有意思的事 按照难度1-5颗星&#xff0c;分为五个文件夹 希望大家可以补充 关于运行环境的补充 Python3.7 Pycharm社区版2019 关于用到的Python库,有些是自带的&am…...

Android 电源键事件流程分析

Android 电源键事件流程分析 电源按键流程处理逻辑在 PhoneWindowManager.java类中的 dispatchUnhandledKey 方法中 frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java从dispatchUnhandledKey方法开始分析 Overridepublic KeyEvent dis…...

游戏搬砖简述-1

游戏搬砖是一种在游戏中通过重复性的任务来获取游戏内货币或物品的行为。这种行为在游戏中非常普遍&#xff0c;尤其是在一些MMORPG游戏中。虽然游戏搬砖看起来很无聊&#xff0c;但是它确实是一种可以赚钱的方式&#xff0c;而且对于一些玩家来说&#xff0c;游戏搬砖也是一种…...

多线程基础总结

1. 为什么要有多线程&#xff1f; 线程&#xff1a;线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中实际运行单位。 进程&#xff1a;进程是程序的基本执行实体。 什么是多线程&#xff1f; 有了多线程&#xff0c;我们就可以让程序同时做…...

视频理解AI模型分类与汇总

人工智能领域视频模型大体也经历了从传统手工特征&#xff0c;到卷积神经网络、双流网络&#xff08;2014年-2017年&#xff09;、3D卷积网络、transformer的发展脉络。为了时序信息&#xff0c;有的模型也结合用LSTM。 视频的技术大多借鉴图像处理技术&#xff0c;只是视频比…...

【Linux】多线程 --- 线程同步与互斥+生产消费模型

人生总是那么痛苦吗&#xff1f;还是只有小时候是这样&#xff1f; —总是如此 文章目录 一、线程互斥1.多线程共享资源访问的不安全问题2.提出解决方案&#xff1a;加锁&#xff08;局部和静态锁的两种初始化/销毁方案&#xff09;2.1 对于锁的初步理解和实现2.2 局部和全局锁…...

17.模型的定义

学习要点&#xff1a; 1.默认设置 2.模型定义 本节课我们来开始学习数据库的模型部分的定义和默认值的设置。 一&#xff0e;默认设置 1. 框架可以使用 Eloquent ORM 进行数据库交互&#xff0c;也就是关系对象模型&#xff1b; 2. 在数据库入门阶段&#xff0c;我们已经创建了…...

golang 记录交叉编译sqlite的报错信息 go build -ldflags

go build -ldflags ‘-s -w --extldflags “-static -fpic”’ -o go-web main.go [gos20230512]# CGO_ENABLED1 CCaarch64-linux-gnu-gcc CXXaarch64-linux-gnu-g GOOSlinux GOARCHarm64 go build -ldflags -s -w --extldflags "-static -fpic" -o go-web m…...

ChatGPT AI使用成本

LLM “经济学”&#xff1a;ChatGPT 与开源模型&#xff0c;二者之间有哪些优劣权衡&#xff1f;谁的部署成本更低&#xff1f; 太长不看版&#xff1a;对于日均请求在 1000 次左右的低频使用场景&#xff0c;ChatGPT 的实现成本低于部署在 AWS 上的开源大模型。但面对每天数以…...

腾讯云与中电金信发布联合核心方案

5月11日&#xff0c;以“聚力革新&#xff0c;行稳致远”为主题的 “腾讯金融云国产化战略峰会”在北京举办&#xff0c;来自金融业、科技侧、研究机构的专家学者同聚一堂&#xff0c;共同探讨银行核心下移方法论以及国产化转型实践等话题。会议期间&#xff0c;中电金信副总经…...

老胡的周刊(第090期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 privateGPT[2] 为保证数据私密性&#xff0c…...

2023-数仓常见问题以及解决方案

01 数据仓库现状 小 A 公司创建时间比较短&#xff0c;才刚过完两周岁生日没多久&#xff1b;业务增长速度快&#xff0c;数据迅速增加&#xff0c;同时取数需求激增与数据应用场景对数据质量、响应速度、数据时效性与稳定要求越来越高&#xff1b;但技术能力滞后业务增长&…...

没关系,前端还死不了

前言 网络上的任何事情都可以在《乌合之众》书中找到答案。大众言论没有理性&#xff0c;全是极端&#xff0c;要么封神&#xff0c;要么踩死。不少人喷前端&#xff0c;说前端已死&#xff1f;前端内卷&#xff1f;前端一个月800包吃住&#xff1f; 对此我想说&#xff0c;“…...

OpenSSL-基于IP或域名生成自签名证书脚本

个人名片&#xff1a; 对人间的热爱与歌颂&#xff0c;可抵岁月冗长&#x1f31e; Github&#x1f468;&#x1f3fb;‍&#x1f4bb;&#xff1a;念舒_C.ying CSDN主页✏️&#xff1a;念舒_C.ying 个人博客&#x1f30f; &#xff1a;念舒_C.ying 一、安装 需要安装并配置Op…...

如何在C#中创建和使用自定义异常

C#是一种强类型语言&#xff0c;可以捕获和处理各种异常&#xff0c;从而帮助我们发现程序中出现的错误。在程序开发过程中&#xff0c;如果需要找到特定的错误情况并处理&#xff0c;这时就需要创建自定义异常。下面介绍一下如何在C#中创建和使用自定义异常。 1、什么是异常&…...

通过systemctl管理服务

文章目录 通过systemctl管理服务通过systemctl管理单一服务(service unit)使用案例服务启动/关闭/查看的练习关于systemctl命令启动/停止服务后面的后缀名是否加&#xff1f; 通过systemctl查看系统上所有的服务使用案例 通过systemctl管理不同的操作环境(target unit)使用案例…...

面经|小红书经营分析师

感觉面试官还挺严肃的&#xff0c;并且猎头说因为工作经验不够是外包岗位。 但是没想到最后败在了SQL上&#xff0c;很久没刷题了 平时工作中还是需要想下给公司整体带来的收益结果是什么&#xff0c;实际工作中不一定会用到&#xff0c;但是要有这个思路&#xff0c;面试的时候…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...