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

【微服务】微服务之Feign 与 Ribbon

文章目录

      • 强烈推荐
      • 引言
      • 优点
      • Feign示例
      • 什么是Ribbon?
      • Ribbon 的优点
      • Netflix Feign 和 Ribbon整合
        • Feign 与 Ribbon 的关系
        • Feign 与 Ribbon 结合使用的示例
        • 配置文件(application.yml)
        • 说明:
      • Feign 与 Ribbon 结合使用的应用场景
        • 1. 动态服务发现与调用
        • 2. 负载均衡
        • 3. 服务熔断与重试
        • 4. 服务降级
      • 总结
      • 强烈推荐
      • 专栏集锦
      • 写在最后

579a429daf314744b995f37351b46548

强烈推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能

b004071ozy_05_amzn


引言

Netflix Feign 是一个声明式的 HTTP 客户端,用于简化微服务之间的 HTTP 请求。

Feign 通过注解来定义服务接口,并自动生成实现代码,从而减少了手工编写 HTTP 客户端的代码量。

它是 Netflix 开源软件套件的一部分,通常与 Spring Cloud 一起使用,以简化微服务架构中的服务调用。


优点

  1. 简化代码

    Feign 使用注解来声明 HTTP 请求,简化了代码编写和维护。开发人员只需定义接口和方法,Feign 会自动生成请求代码。

  2. 集成性好

    Feign 可以与其他 Netflix 开源组件(如 Eureka 和 Ribbon)无缝集成,从而实现服务发现和负载均衡。

  3. 可扩展性强

    Feign 提供了许多自定义功能,可以方便地扩展和定制,如日志记录、错误处理、编码和解码等。

  4. 支持多种编解码器

    Feign 支持多种编解码器(如 JSON、XML),并且可以通过自定义编解码器来支持其他格式。

  5. 支持 Spring Cloud

    Feign 与 Spring Cloud 紧密集成,可以轻松地在 Spring Boot 应用中使用。Spring Cloud Feign 提供了与 Spring Boot 环境的完美结合,使开发人员可以更方便地实现微服务调用。

  6. 灵活的配置

    Feign 支持通过配置文件和注解来灵活地配置请求参数、头信息、超时设置等。


Feign示例

import feign.Feign;
import feign.gson.GsonDecoder;
import feign.gson.GsonEncoder;
import feign.Logger;
import feign.slf4j.Slf4jLogger;
import feign.RequestLine;public class Example {public interface GitHub {@RequestLine("GET /repos/{owner}/{repo}/contributors")List<Contributor> contributors(@Param("owner") String owner, @Param("repo") String repo);}public static class Contributor {String login;int contributions;}public static void main(String... args) {GitHub github = Feign.builder().decoder(new GsonDecoder()).encoder(new GsonEncoder()).logger(new Slf4jLogger(GitHub.class)).logLevel(Logger.Level.FULL).target(GitHub.class, "https://api.github.com");List<Contributor> contributors = github.contributors("OpenFeign", "feign");for (Contributor contributor : contributors) {System.out.println(contributor.login + " (" + contributor.contributions + ")");}}
}

什么是Ribbon?

Ribbon 是 Netflix 开源的一个客户端负载均衡器,通常与微服务架构中的服务发现机制(如 Eureka)配合使用。

它负责在多个服务实例之间分配请求,从而实现负载均衡,提高系统的性能和可用性。

Ribbon 作为一个客户端负载均衡器,直接在客户端对请求进行分发和管理,而不是通过中间的负载均衡器服务器。

Ribbon 的优点

  1. 客户端负载均衡

    Ribbon 通过在客户端进行负载均衡,减少了服务请求的中间层,提高了系统的性能和响应速度。

  2. 与服务发现的集成

    Ribbon 可以与 Netflix 的 Eureka 服务发现机制无缝集成,从而动态获取服务实例列表,并根据一定的策略进行负载均衡。

  3. 多种负载均衡策略

    Ribbon 提供了多种负载均衡策略,如轮询(Round Robin)、随机(Random)、加权响应时间(Weighted Response Time)等,开发人员可以根据需求选择合适的策略。

  4. 自定义负载均衡规则

    Ribbon 允许开发人员自定义负载均衡规则,以满足特定的业务需求。

  5. 熔断和重试机制

    Ribbon 支持熔断和重试机制,可以在服务调用失败时自动进行重试,提高系统的鲁棒性和稳定性。


Ribbon 示例

import com.netflix.loadbalancer.*;
import com.netflix.client.config.IClientConfig;
import com.netflix.client.config.DefaultClientConfigImpl;
import com.netflix.niws.client.http.RestClient;
import com.netflix.niws.client.http.HttpClientRequest;
import com.netflix.niws.client.http.HttpClientResponse;public class RibbonExample {public static void main(String[] args) throws Exception {IClientConfig config = DefaultClientConfigImpl.getClientConfigWithDefaultValues();RestClient client = (RestClient) ClientFactory.getNamedClient("myClient");// 配置负载均衡规则,这里使用轮询策略IRule loadBalancerRule = new RoundRobinRule();client.setLoadBalancerRule(loadBalancerRule);// 发起请求HttpClientRequest request = HttpClientRequest.newBuilder().setUri(new URI("http://my-service/endpoint")).build();HttpClientResponse response = client.executeWithLoadBalancer(request);System.out.println("Response: " + response.getEntity(String.class));}
}

Netflix Feign 和 Ribbon整合

Netflix Feign 和 Ribbon 都是 Netflix 开源的软件组件,常用于构建微服务架构中的服务调用和负载均衡。

虽然它们各自有不同的功能,但它们可以无缝集成,以提供更强大的服务调用和负载均衡解决方案。

下面详细说明 Feign 和 Ribbon 的关系及其结合使用的优势。

Feign 与 Ribbon 的关系
  1. 集成使用

    Feign 可以与 Ribbon 集成使用,以实现客户端负载均衡。当使用 Feign 时,默认情况下会启用 Ribbon 作为负载均衡器。这意味着每次 Feign 调用服务时,Ribbon 会自动在可用的服务实例之间分配请求,从而实现负载均衡。

  2. 简化配置

    通过集成,Feign 可以简化客户端负载均衡的配置。开发人员只需配置 Feign 客户端,Ribbon 就会自动处理负载均衡逻辑,无需手动编写复杂的负载均衡代码。

  3. 服务发现集成

    当与 Eureka 服务发现结合使用时,Feign 和 Ribbon 可以动态地发现和调用服务实例。Eureka 提供服务实例列表,Ribbon 进行负载均衡,而 Feign 则简化了服务调用的代码编写。

Feign 与 Ribbon 结合使用的示例

以下是一个使用 Spring Cloud、Feign 和 Ribbon 的简单示例:

// 服务接口定义
@FeignClient(name = "my-service")
public interface MyServiceClient {@GetMapping("/endpoint")String getEndpointData();
}// Spring Boot 应用
@SpringBootApplication
@EnableFeignClients
public class FeignRibbonExampleApplication {public static void main(String[] args) {SpringApplication.run(FeignRibbonExampleApplication.class, args);}
}// 使用 Feign 调用服务
@RestController
public class MyController {@Autowiredprivate MyServiceClient myServiceClient;@GetMapping("/call")public String callService() {return myServiceClient.getEndpointData();}
}
配置文件(application.yml)
spring:application:name: feign-ribbon-examplecloud:loadbalancer:ribbon:enabled: true# Ribbon 负载均衡配置
my-service:ribbon:listOfServers: http://localhost:8081,http://localhost:8082
说明:
  1. Feign 客户端定义

    使用 @FeignClient 注解定义一个 Feign 客户端接口 MyServiceClient,指定要调用的服务名称 my-service

  2. Spring Boot 应用

    在 Spring Boot 应用中启用 Feign 客户端支持,使用 @EnableFeignClients 注解。

  3. 调用服务

    在控制器中,通过自动注入的方式使用 Feign 客户端 myServiceClient 来调用服务端点。

  4. 配置文件

    在配置文件中,指定 Ribbon 的负载均衡配置,定义服务实例的列表。

通过这种方式,Feign 和 Ribbon 的集成使得服务调用变得非常简单,并且自动实现了负载均衡。开发人员只需关注业务逻辑,而不需要担心底层的负载均衡和服务发现细节。


Feign 与 Ribbon 结合使用的应用场景

Feign 和 Ribbon 的结合使用在微服务架构中非常常见,特别是在需要实现客户端负载均衡和服务调用的场景中。以下是一些典型的应用场景:

1. 动态服务发现与调用

在微服务架构中,服务实例可能动态变化,例如服务实例的上线、下线或扩容。使用 Feign 和 Ribbon 结合,可以实现动态的服务发现和调用。Feign 简化了服务调用的代码,而 Ribbon 负责在多个服务实例之间进行负载均衡。

应用场景:例如,一个订单服务需要调用库存服务来检查库存情况,库存服务的实例可能在不同的服务器上运行。使用 Feign 和 Ribbon,订单服务可以动态发现和调用库存服务实例。

2. 负载均衡

当一个服务有多个实例时,负载均衡可以确保请求均匀分布到不同的实例上,从而提高系统的整体性能和可靠性。Ribbon 提供了多种负载均衡策略,如轮询、随机、加权等,可以根据具体需求进行选择。

应用场景:例如,一个用户服务有多个实例运行在不同的节点上,通过 Feign 和 Ribbon,客户端请求可以均匀分布到这些实例上,避免某个实例过载。

3. 服务熔断与重试

结合使用 Feign、Ribbon 和 Hystrix,可以实现服务熔断和重试机制。当某个服务实例不可用时,Hystrix 可以快速失败,避免影响其他服务,同时 Ribbon 可以选择其他可用的服务实例进行重试。

应用场景:例如,一个支付服务需要调用外部支付网关,外部支付网关可能会偶尔不可用。使用 Feign、Ribbon 和 Hystrix,可以在支付网关不可用时快速失败,并重试其他可用的网关实例。

4. 服务降级

在高并发场景下,如果某个服务不可用或响应过慢,可以进行服务降级,提供备用方案,保证系统的可用性。结合 Hystrix,可以实现服务降级功能。

应用场景:例如,在电商网站中,如果商品详情服务不可用,可以提供一个默认的商品信息,避免影响用户的购物体验。


总结

Netflix Feign 通过其简洁的声明式语法和强大的集成功能,使微服务之间的通信变得更加简单和高效。

它不仅减少了开发人员的工作量,还提高了代码的可维护性和可读性。

通过与其他 Netflix 组件和 Spring Cloud 的无缝集成,Feign 成为构建现代微服务架构中不可或缺的一部分。

希望通过本篇文章的介绍和示例,您能够更好地理解并应用 Feign,在您的微服务项目中实现更加高效的服务调


强烈推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能

b004071ozy_05_amzn


专栏集锦

大佬们可以收藏以备不时之需:

Spring Boot 专栏:http://t.csdnimg.cn/peKde

ChatGPT 专栏:http://t.csdnimg.cn/cU0na

Java 专栏:http://t.csdnimg.cn/YUz5e

Go 专栏:http://t.csdnimg.cn/Jfryo

Netty 专栏:http://t.csdnimg.cn/0Mp1H

Redis 专栏:http://t.csdnimg.cn/JuTue

Mysql 专栏:http://t.csdnimg.cn/p1zU9

架构之路 专栏:http://t.csdnimg.cn/bXAPS


写在最后

感谢您的支持和鼓励! 😊🙏

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!

如果有项目或者毕设合作,请联系下面微信名片

相关文章:

【微服务】微服务之Feign 与 Ribbon

文章目录 强烈推荐引言优点Feign示例什么是Ribbon&#xff1f;Ribbon 的优点Netflix Feign 和 Ribbon整合Feign 与 Ribbon 的关系Feign 与 Ribbon 结合使用的示例配置文件&#xff08;application.yml&#xff09;说明&#xff1a; Feign 与 Ribbon 结合使用的应用场景1. 动态服…...

【C语言】成绩等级制

将成绩分为A、B、C、D、E等级。具体的等级划分如下&#xff1a; A&#xff1a;90分及以上B&#xff1a;80分到89分C&#xff1a;70分到79分D&#xff1a;60分到69分E&#xff1a;60分以下 #include <stdio.h> int main() {float score 0;printf("请输入学生成绩&a…...

Flutter 插件开发入门

1、初识 Flutter Plugin Flutter 的插件类似于我们在 Android 中说的第三方库&#xff0c;通过使用插件&#xff0c;可以借助插件中的代码实现一些额外功能。 Flutter 的插件以 package 的形式存在&#xff0c;使用 package 的目的是为了达到模块化&#xff0c;可以让代码被共…...

2024.12.25在腾讯云服务器上使用docker部署flask

2024.12.25在腾讯云服务器上使用docker部署flask 操作系统&#xff1a;Ubuntu 根据腾讯云的说明文档安装 Docker 并配置镜像加速源&#xff0c;注意需要安装腾讯云的加速源&#xff0c;使用官网的加速源连接极其不稳定&#xff0c;容易导致运行失败。使用哪个公司的云服务器就…...

2024 年12月英语六级CET6听力原文(Lecture部分)

2024 年12月英语六级CET6听力原文(Long Conersation和Passage) 1 牛津大学关于普遍道德准则的研究及相关观点与建议 译文 2 食物颜色对味觉体验及大脑预期的影响 译文 3 财务资源对意义与幸福之间关系的影响研究 译文...

centos 释放系统预留内存并关闭Kdump服务

背景&#xff1a;Kdump是Linux系统的一种内核崩溃转储机制&#xff0c;它允许在系统发生内核崩溃&#xff08;例如内核panic&#xff09;时&#xff0c;捕获内存的转储信息&#xff0c;从而帮助事后分析故障原因。该过程需要一块预留内存&#xff08;称为crashkernel内存&#…...

基于WEB的房屋出租管理系统设计

摘 要 随着城市化程度的推进&#xff0c;越来越多的人涌入城市&#xff0c;同时也带来的旺盛的租房需求&#xff0c;传统的房屋出租管理依赖人 工记录的方式难以满足人们对房屋出租管理的需求。因此&#xff0c;本文根据房屋出租信息化的需求设计一款基于房屋出租 的管理系统。…...

云边端架构的优势是什么?面临哪些挑战?

一、云边端架构的优势 降低网络延迟&#xff1a;在传统集中式架构中&#xff0c;数据需传输到云计算中心处理&#xff0c;导致网络延迟较高。而云边端架构将计算和存储推向边缘设备&#xff0c;可在离用户更近的地方处理数据&#xff0c;大大降低了网络延迟&#xff0c;提升了用…...

clickhouse解决suspiciously many的异常

1. 问题背景 clickhouse安装在虚拟机上&#xff0c;持续写入日志时&#xff0c;突然关机&#xff0c;然后重启&#xff0c;会出现clickhouse可以正常启动&#xff0c;但是查询sql语句&#xff0c;提示suspiciously many异常&#xff0c;如图所示 2. 问题修复 touch /data/cl…...

爬虫 APP 逆向 ---> shopee(虾皮) 电商

shopee 泰国站点&#xff1a;https://shopee.co.th/ shopee 网页访问时&#xff0c;直接弹出使用 app 登录查看&#xff0c;那就登录 shopee 泰国站点 app。 手机抓包&#xff1a;分类接口 接口&#xff1a;https://mall.shopee.co.th/api/v4/pages/get_category_tree 请求参…...

用例图和活动图的区别与联系

在软件开发过程中&#xff0c;需求分析是至关重要的一步。为了更好地理解和描述系统的功能需求&#xff0c;开发人员通常会使用各种图形化工具。其中&#xff0c;用例图和活动图是两种非常常用的工具。虽然它们都用于描述系统的行为&#xff0c;但各自具有不同的特点和适用场景…...

接口请求中调试可以看到Origin,其具体的作用

接口请求中带 Origin 是浏览器在跨域请求时自动添加的一个 HTTP 请求头&#xff0c;用于标识请求的来源&#xff08;源&#xff09;。Origin 头的主要作用是支持跨域资源共享&#xff08;CORS&#xff09;和增强安全性。 Origin 的含义 Origin 包含发起请求的源信息&#xff0…...

知识图谱+大模型:打造全新智慧城市底层架构

在数字化时代&#xff0c;智慧城市的建设正迎来新一轮的变革。本文将探讨如何结合知识图谱和大模型技术&#xff0c;构建智慧城市的全新底层架构&#xff0c;以应对日益增长的数据量和复杂性&#xff0c;提升城市管理的智能化水平。 知识图谱&#xff1a;智慧城市的知识库 知识…...

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆形图实现,Kotlin(2)

Android基于Path的addRoundRect&#xff0c;Canvas剪切clipPath简洁的圆形图实现&#xff0c;Kotlin&#xff08;2&#xff09; import android.content.Context import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.Path import a…...

计算机图形学知识点汇总

一、计算机图形学定义与内容 1.图形 图形分为“图”和“形”两部分。 其中&#xff0c;“形”指形体或形状&#xff0c;存在于客观世界和虚拟世界&#xff0c;它的本质是“表示”&#xff1b;而图则是包含几何信息与属性信息的点、线等基本图元构成的画面&#xff0c;用于表达…...

【EtherCATBasics】- KRTS C++示例精讲(2)

EtherCATBasics示例讲解 目录 EtherCATBasics示例讲解结构说明代码讲解 项目打开请查看【BaseFunction精讲】。 结构说明 EtherCATBasics&#xff1a;应用层程序&#xff0c;主要用于人机交互、数据显示、内核层数据交互等&#xff1b; EtherCATBasics.h &#xff1a; 数据定义…...

AI 简史:从神经元到现代大模型

AI 简史&#xff1a;从神经元到现代大模型 人工智能 (AI) 和深度学习 (DL) 在过去的几十年中飞速发展&#xff0c;推动了计算机视觉、自然语言处理和机器人等领域的进步。今年的诺贝尔物理学奖更是颁给了美国科学家约翰霍普菲尔德 (John Hopfield&#xff09;和英国科学家杰弗…...

Kotlin入门到深入加强(1):基本介绍和第一个程序

吧&#xff0c; 一.关于本章和Kotlin 本章内容如要简单介绍一下Kotlin和创建并执行第一个Kotlin程序 什么是Kotlin,优势是什么,它和JAVA的关系又是什么 Kotlin是一种静态类型的编程语言&#xff0c;它运行在Java虚拟机上&#xff0c;并且可以与现有的Java代码无缝集成。Kotl…...

走进 Web3:探索分布式网络的未来

随着互联网的不断演变&#xff0c;我们正站在一个全新阶段的门槛上——Web3。它是对传统互联网&#xff08;Web2&#xff09;的一次深刻反思与升级&#xff0c;标志着一个去中心化、更加自主的数字世界的到来。Web3不仅仅是技术的革新&#xff0c;更代表着对互联网价值体系的根…...

信管通低代码信息管理系统应用平台

目前&#xff0c;国家统一要求事业单位的电脑都要进行国产化替代&#xff0c;替代后使用的操作系统都是基于linux的&#xff0c;所有以前在WINDOWS下运行的系统都不能使用了&#xff0c;再者&#xff0c;各单位的软件都很零散&#xff0c;没有统一起来。需要把日常办公相关的软…...

C语言从入门到放弃教程

C语言从入门到放弃 1. 介绍1.1 特点1.2 历史与发展1.3 应用领域 2. 安装2.1 编译器安装2.2 编辑器安装 3. 第一个程序1. 包含头文件2. 主函数定义3. 打印语句4. 返回值 4. 基础语法4.1 注释4.1.1 单行注释4.1.2 多行注释 4.2 关键字4.2.1 C语言标准4.2.2 C89/C90关键字&#xf…...

硬件设计:RS232电平标准

RS232是一种常用的串行通信接口标准&#xff0c;主要用于计算机和外部设备之间的数据传输。以下是RS232电平标准的详细介绍&#xff1a; 1. 电气特性&#xff1a; 信号电平&#xff1a; 逻辑1 (MARK)&#xff1a;-3V到-15V之间。通常&#xff0c;-5V到-15V之间为有效的逻辑1。…...

前端初学基础

一.Web开发 前端三件 HTML &#xff0c;页面展现 CSS&#xff0c;样式 JS(JavaScript),动起来 二&#xff0c;HTML 1.HTML概念 网页&#xff0c;网站中的一个页面&#xff0c;网页是构成网站的基本元素&#xff0c;是承载各种网站应用的平台。通俗的说&#xff0c;网站就…...

在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc

在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc &#x1f4d6; 前言 在 CentOS 7 上使用 NVM 安装 Node.js 后&#xff0c;可能会遇到如下问题&#xff1a; node: /lib64/libm.so.6: version GLIBC_2.27’ not found (required by node) node: /lib64/libc.so.6:…...

mac中idea菜单工具栏没有git图标了

1.右击菜单工具栏 2.选中VCS&#xff0c;点击添加 3.搜索你要的工具&#xff0c;选中点击确定就添加了 4.回到上面一个界面&#xff0c;选中你要放到工具栏的工具&#xff0c;点击应用就好了 5.修改图标&#xff0c;快捷键或者右击选中编辑图标 6.选择你要的图标就好了...

C++简明教程(10)(初识类)

类的教程 C 类的完整教程 C 中&#xff0c;类&#xff08;class&#xff09;是面向对象编程的核心概念&#xff0c;用于定义对象的属性&#xff08;数据成员&#xff09;和行为&#xff08;成员函数&#xff09;。本教程将带你从零开始&#xff0c;循序渐进地学习如何定义和使…...

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)

原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …...

ctfshow-jwt

将信息进行安全的封装&#xff0c;以json的方式传递 三部分分别是: Header { typ: JWT token类型 alg: HS256 算法名称 } 将这个信息进行base64加密&#xff0c;构成了第一部分 payload载荷&#xff0c;存放主要信息的地方 { "sub": 1234567890, 标准中注册的…...

植物大战僵尸融合版,真无双版,喵版,抽卡版,杂交版v3

我用夸克网盘分享了「植物大战僵尸」链接&#xff1a; https://pan.quark.cn/s/11a45054a4da 融合版‌的作者为B站up主蓝飘飘fly。该版本在原版植物基础上创新地将两种不同的植物种植在一起进行融合&#xff0c;创造出独特的游戏体验‌。‌抽卡版、喵版、无双版是由B站UP主【时…...

将Minio设置为Django的默认Storage(django-storages)

这里写自定义目录标题 前置说明静态文件收集静态文件 使用django-storages来使Django集成Minio安装依赖settings.py测试收集静态文件测试媒体文件 前置说明 静态文件 Django默认的Storage是本地&#xff0c;项目中的CSS、图片、JS都是静态文件。一般会将静态文件放到一个单独…...

MaaS(Model as a Service)

1.MasS是什么&#xff1f; Model as a Service&#xff08;MaaS&#xff09;是一种云计算服务模式&#xff0c;它允许用户通过互联网访问和使用机器学习模型&#xff0c;而不需要自行构建和维护这些模型。MaaS提供了模型的托管、管理和监控&#xff0c;使用户能够专注于应用程…...

Docker怎么关闭容器开机自启,批量好几个容器一起操作?

环境&#xff1a; WSL2 docker v25 问题描述&#xff1a; Docker怎么关闭容器开机自启&#xff0c;批量好几个容器一起操作&#xff1f; 解决方案&#xff1a; 在 Docker 中&#xff0c;您可以使用多种方法来关闭容器并配置它们是否在系统启动时自动启动。以下是具体步骤和…...

训练时开Dropout,推理时不开Dropout的原因以及推理过程是怎样的?(中英双语)

Dropout的概念与应用&#xff1a;基于Transformer模型的深入解析 在深度学习中&#xff0c;Dropout 是一种常用的正则化技术&#xff0c;主要用于防止神经网络的过拟合。在训练过程中&#xff0c;Dropout通过随机丢弃神经网络中的一部分神经元&#xff0c;降低了网络的复杂度&…...

STL heap原理和用法

在C STL&#xff08;标准模板库&#xff09;中&#xff0c;heap&#xff08;堆&#xff09;并不是一个独立的容器&#xff0c;而是一组基于容器&#xff08;通常是 vector&#xff09;实现的算法函数&#xff0c;用于将一段数据组织成堆的数据结构形式&#xff0c;并提供了一些…...

【DRAM存储器四十三】LPDDR5介绍--寻址

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《某LPDDR5数据手册》 、《JESD209-5C》 前面我们介绍的LPDDR5一个die的数据位宽...

mac启ssh服务用于快速文件传输

x.1 在mac上启SSH服务 方法一&#xff1a;图形交互界面启ssh&#xff08;推荐&#xff09; 通过sharing - advanced - remote login来启动ssh&#xff1b;&#xff08;中文版mac应该是 “系统设置 → 通用 → 共享”里打开“远程登录”来启动&#xff09; 查看自己的用户名和…...

Java设计模式 —— 【结构型模式】享元模式(Flyweight Pattern) 详解

文章目录 概述结构案例实现优缺点及使用场景 概述 享元模式也叫蝇量模式&#xff1a;运用共享技术有效地支持大量细粒度的对象&#xff1b; 常用于系统底层开发&#xff0c;解决系统的性能问题。像数据库连接池&#xff0c;里面都是创建好的连接对象&#xff0c;在这些连接对象…...

前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!

Vue 快速上手 Vue概念 Vue 是一个用于构建用户界面的渐进式框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;循序渐进 框架&#xff1a;一套完整的项目解决方案 Vue 的两种使用方式: ① Vue 核心包开发 场景:局部 模块改造 ② Vue 核心包 &am…...

肿瘤电场治疗费用

肿瘤电场治疗作为一种前沿的肿瘤治疗方法&#xff0c;近年来备受关注。该方法通过利用特定频率的交流电场&#xff0c;作用于恶性肿瘤细胞&#xff0c;以达到抑制肿瘤生长的目的。然而&#xff0c;随着这种治疗方法的普及&#xff0c;其费用问题也逐渐成为患者和家属关注的焦点…...

datatables快速入门

官网 进入官网https://datatables.net/ 点击下载 支持多种方式下载 快速入门 这里以cdn的方式演示 https://cdn.datatables.net/ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport&…...

ReactPress 1.6.0:重塑博客体验,引领内容创新

ReactPress 是一个基于Next.js的博客&CMS系统&#xff0c; Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 体验地址&#xff1a;http://blog.gaoredu.com/ 今天&#xff0c;我们自豪地宣布ReactPress 1.6.0版本的正式发布&#xff0c;…...

我的创作纪念日(五年)

慕然回首 平平无奇的周一早晨&#xff0c;收到来自csdn的提醒&#xff0c;创作纪念日五周年了&#xff0c;这也意味着我从事开发行业差不多有整整五年了&#xff0c;五年啊&#xff01;你知道这五年我是怎么过的吗&#xff1f;一句Just do IT&#xff0c;我做it整整做了五年&am…...

企业AI助理背后的技术架构:从数据到智能决策

在当今数字化时代&#xff0c;企业AI助理已经成为推动企业数字化转型和智能化升级的重要工具。它们通过整合企业内外部数据资源&#xff0c;运用先进的算法和模型&#xff0c;为企业提供高效、精准的智能决策支持。本文将深入探讨企业AI助理背后的技术架构&#xff0c;从数据收…...

主流AI视频生成工具|Sora零基础入门指南

Sora是什么&#xff1f; Sora 是 OpenAI 推出的新一代 AI 视频生成工具。它能让用户通过简单的文本描述或图片提示&#xff0c;快速生成高质量的视频内容。无论是广告短片、创意视频&#xff0c;还是实验性艺术作品&#xff0c;Sora 都能帮助创作者以极低的门槛实现自己的想法。…...

单元测试/系统测试/集成测试知识总结

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、单元测试的概念 单元测试是对软件基本组成单元进行的测试&#xff0c;如函数或一个类的方法。当然这里的基本单元不仅仅指的是一个函数或者方法&#xff0…...

前端文件下载多方式集合

基于vueelement UI框架 // ts-ignore import axios from "axios"; import { ElMessage } from "element-plus"; import webConfig from "/config";class FileDownload {/*** 文件流下载* param url string 下载地址* param params object 请求…...

PG备份恢复--pg_dump

pg_dump pg_dump 是一个逻辑备份工具。使用 pg_dump 可以在数据库处于使用状态下进行一致 性的备份,它不会阻塞其他用户对数据库的访问 。 一致性备份是 pg_dump 开始运行时&#xff0c;给数据库打了一个快照&#xff0c;且在 pg_dump 运行过程 中发生的更新将不会被备份。 …...

Java进阶学习笔记|面向对象

第一章.类和对象 1.面向对象的介绍 1.面向过程:自己的事情自己干,代表语言C语言洗衣服:每一步自己要亲力亲为 -> 找个盆,放点水,找个搓衣板,搓搓搓 2.面向对象:自己的事情别人帮忙去干,代表语言Java语言 洗衣服:自己的事情别人干 -> 全自动洗衣机3.为啥要使用面向对…...

ESP32_H2(IDF)学习系列-ADC模数转换(连续转换)

一、简介&#xff08;节选手册&#xff09; 资料参考https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32h2/api-reference/peripherals/adc_calibration.html 1 概述 ESP32-H2 搭载了以下模拟外设&#xff1a; • 一个 12 位逐次逼近型模拟数字转换器 (SAR ADC)&…...

二叉树的右视图

199. 二叉树的右视图 已解答 中等 相关标签 相关企业 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 # Definition for a binary tree node. # class TreeNode(object): #…...