【微服务】OpenFeign+Sentinel集中处理远程调用异常

文章目录

    • 1.微服务基本环境调整
        • 1.对10004模块的application.yml调整
        • 2.启动nacos以及一个消费者两个提供者
        • 3.测试
          • 1.输入http://localhost:8848/nacos/index.html 来查看注册情况
          • 2.浏览器访问 http://localhost:81/member/nacos/consumer/get/1
          • 3.结果
    • 2.使用OpenFeign实现微服务模块间的远程调用
        • 1.消费者的pom.xml,引入OpenFeign和Nacos的服务发现
        • 2.消费者的application.yml(配置nacos服务注册)
        • 3.消费者的启动类(开启nacos的服务发现,以及启动OpenFeign)
        • 4.com/sun/springcloud/service/MemberOpenfeignService.java 编写与远程调用的方法匹配的接口
          • 1.将要远程调用的方法整个复制到这个接口,然后去掉方法体
          • 2.在接口上添加@FeignClient注解,指定远程调用的服务在nacos中的名字
        • 5.编写一个controller进行远程调用
          • 1.创建一个MemberOpenFeignController的controller并将要远程调用的controller上面的注解复制过来(不能改)
          • 2.依赖注入刚才编写的远程调用的接口的动态代理对象
          • 3.将要远程调用的接口再复制过来,按Tab,使用copilot来自动补全远程调用的代码
        • 6.测试
          • 1.启动nacos,81模块,10004,10006模块
          • 2.访问nacos查看注册情况
          • 3.浏览器输入 http://localhost:81/member/openfeign/get/1 (必须加上http:// )
        • 7.切换负载均衡算法
          • 1.编写配置类,注入一个负载均衡算法的bean
          • 2.重新启动,报错,bean已经被定义了,说明之前可能定义了同样id的负载均衡算法的bean
          • 3.换一个id即可,然后重新启动
          • 4.测试,浏览器访问几次,有时会出现超时的情况(OpenFeign默认超时时间为1s)
          • 5.设置超时时间 application.yml
            • 1.全局配置
            • 2.单个Feign客户端配置
          • 6.又检查了一下,远程调用的方法,之前设置了休眠时间,删除即可。。。
    • 3.服务消费者整合Sentinel进行服务保护
        • 1.pom.xml引入Sentinel
        • 2.application.yml 配置Sentinel的客户端和服务端
        • 3.测试
          • 1.启动nacos,sentinel
          • 2.启动81,10004,10006模块
          • 3.浏览器输入http://localhost:8080/ 进入Sentinel的服务端
          • 4.浏览器输入http://192.168.137.1:8848/nacos/index.html进入nacos查看注册情况
          • 5.浏览器访问 http://localhost:81/member/openfeign/get/1 然后查看Sentinel控制台
        • 4.需求分析
        • 5.开始配置之前进行测试
          • 当10004和10006都down掉时,不断请求会发生什么?
            • 1.首先关闭10004和10006微服务
            • 2.浏览器发送请求 http://localhost:81/member/openfeign/get/1,发现是超时
            • 3.浏览器发送请求 http://localhost:81/member/openfeign/get/1, 可以发现服务不可用
        • 6. 81模块配置如果远程调用的服务出现异常,则立即返回结果
          • 1.MemberFeignFallbackService.java 实现 MemberOpenfeignService.java 并注入容器
          • 2.在application.yml配置启用openfeign和sentinel的整合
          • 3.MemberOpenfeignService 添加fallback属性,指定出现异常要处理的类
          • 4.重新启动81模块,浏览器输入 http://localhost:81/member/openfeign/get/1测试
          • 5.关闭10004和10006,再次进行测试,成功处理异常!
    • 4.消费者使用OpenFeign整合Sentinel进行服务保护小结
        • 1.服务消费者OpenFeign远程调用流程
          • 1.配置Nacos的服务发现和服务注册功能
          • 2.配置OpenFeign远程调用
            • 1.pom.xml引入OpenFeign依赖
            • 2.编写service接口存放服务发现和资源路径的信息
            • 3.编写controller进行远程调用
        • 2.整合Sentinel进行服务保护流程
          • 1.配置Sentinel监控服务
          • 2.配置OpenFeign整合Sentinel,使得远程调用出现异常集中处理
        • 3.服务消费者OpenFeign远程调用整合Sentinel进行服务保护原理
        • 4.Sentinel仍然可以对这个controller进行流量控制,熔断降级,热点限流
          • 设置QPS为1
    • 5.规则持久化
        • 1.规则持久化方案
        • 2.规则持久化原理
        • 3.需求分析
        • 4.具体配置
          • 1.在Nacos配置中心增加Sentinel的流控规则
          • 2.pom.xml引入nacos和sentinel持久化的依赖
          • 3.application.yml 拉取Nacos的配置信息并同步到Sentinel
          • 4.测试
            • 1.启动Nacos、Sentinel、81、10004、10006
            • 2.查看Nacos注册情况
            • 3.浏览器快速请求 http://localhost:81/member/openfeign/get/1, 流控规则生效!
            • 4.查看同步到Sentinel的流控规则
        • 5.其他规则配置

1.微服务基本环境调整

1.对10004模块的application.yml调整

image-20240330095841583

2.启动nacos以及一个消费者两个提供者

目前的消费者是Ribbon+restTemplate形式进行远程调用的

image-20240330100101156

image-20240330100754503

3.测试
1.输入http://localhost:8848/nacos/index.html 来查看注册情况

image-20240330101232507

2.浏览器访问 http://localhost:81/member/nacos/consumer/get/1
3.结果

image-20240330101116525

2.使用OpenFeign实现微服务模块间的远程调用

1.消费者的pom.xml,引入OpenFeign和Nacos的服务发现
<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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.example</groupId><artifactId>e-commerce-center</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>member-service-nacos-consumer-81</artifactId><name>Archetype - member-service-nacos-consumer-81</name><url>http://maven.apache.org</url><dependencies><!-- 引入openfeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--引入nacos的服务发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-discovery</artifactId></dependency><!-- springboot web starter 用来监听端口--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 如果在子工程/模块指定了 version,则以指定为准 --></dependency><!--1. starter-actuator 是 springboot 程序的监控系统,可以实现健康检查,info 信息等2. 访问 http://localhost:10000/actuator 可以看到相关链接, 还可以做相关设置. --><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 公共模块的jar包 --><dependency><groupId>org.example</groupId><artifactId>e_commerce_center-common-api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>
2.消费者的application.yml(配置nacos服务注册)
server:port: 81
spring:application:name: member-service-nacos-consumer-81
# 配置nacos的服务注册cloud:nacos:discovery:server-addr: localhost:8848 # 配置要注册到的nacos地址,根据实际情况填写
3.消费者的启动类(开启nacos的服务发现,以及启动OpenFeign)
package com.sun.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;/*** @author 孙显圣* @version 1.0*/
@SpringBootApplication // springboot启动类
@EnableDiscoveryClient // 开启nacos服务发现
@EnableFeignClients // 开启feign远程调用
public class MemberNacosCostomerApplication81 {public static void main(String[] args) {SpringApplication.run(MemberNacosCostomerApplication81.class, args);}
}
4.com/sun/springcloud/service/MemberOpenfeignService.java 编写与远程调用的方法匹配的接口
1.将要远程调用的方法整个复制到这个接口,然后去掉方法体
package com.sun.springcloud.service;import com.sun.springcloud.util.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;/*** Description:** @Author sun* @Create 2024/3/30 10:39* @Version 1.0*/
public interface MemberOpenfeignService {/*** 根据id来获取某个会员的信息** @param id 使用路径参数的形式传入参数* @return 返回json格式的数据*/@GetMapping("/memberget/{id}") // 这里使用的路径参数public Result getMemberById(@PathVariable("id") Long id);
}
2.在接口上添加@FeignClient注解,指定远程调用的服务在nacos中的名字
  • 这样这个接口中就具备了所有远程调用微服务的信息
  • 后面在注入的时候就会注入针对这个接口的代理对象,远程调用方法的时候通过@FeignClient注解中的信息进行服务发现ip + 端口 + 上下文路径,并在前面加上http://,最后再拼接上这个@GetMapping注解中的资源路径,完成远程调用
  • 简单来说,这个接口需要包含要远程调用的服务发现和资源路径的信息,这样才能够进行远程调用
package com.sun.springcloud.service;import com.sun.springcloud.util.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;/*** Description:** @Author sun* @Create 2024/3/30 10:39* @Version 1.0*/
@FeignClient("member-service-nacos-provider") // 会进行服务的发现,发现服务的ip+端口+上下文路径
public interface MemberOpenfeignService {/*** 根据id来获取某个会员的信息** @param id 使用路径参数的形式传入参数* @return 返回json格式的数据*/@GetMapping("/member/get/{id}") // 这里使用的路径参数public Result getMemberById(@PathVariable("id") Long id);
}
5.编写一个controller进行远程调用
1.创建一个MemberOpenFeignController的controller并将要远程调用的controller上面的注解复制过来(不能改)
package com.sun.springcloud.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;/*** Description:** @Author sun* @Create 2024/3/30 10:53* @Version 1.0*/
// 这两个注解是要远程调用的controller的注解
@RestController
@Slf4j
public class MemberOpenFeignController {
}
2.依赖注入刚才编写的远程调用的接口的动态代理对象
package com.sun.springcloud.controller;import com.sun.springcloud.service.MemberOpenfeignService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/*** Description:** @Author sun* @Create 2024/3/30 10:53* @Version 1.0*/
// 这两个注解是要远程调用的controller的注解
@RestController
@Slf4j
public class MemberOpenFeignController {@Resourceprivate MemberOpenfeignService memberOpenFeignService; // 注入远程调用的接口
}
3.将要远程调用的接口再复制过来,按Tab,使用copilot来自动补全远程调用的代码
  • 这里的url,方法名,参数,都是可以修改的
  • 传入getMemberById的参数必须符合这个controller的要求
  • getMemberById的返回类型也要匹配,比如这里就必须使用@RestController
  • 牢记接口三要素 url 参数 返回值
  • 建议:如果只是想要远程调用一下的话,就没必要修改了,直接粘贴过来远程调用即可
package com.sun.springcloud.controller;import com.sun.springcloud.service.MemberOpenfeignService;
import com.sun.springcloud.util.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/*** Description:** @Author sun* @Create 2024/3/30 10:53* @Version 1.0*/
// 这两个注解是要远程调用的controller的注解
@RestController
@Slf4j
public class MemberOpenFeignController {@Resourceprivate MemberOpenfeignService memberOpenFeignService; // 注入远程调用的接口/*** 根据id来获取某个会员的信息** @param id 使用路径参数的形式传入参数* @return 返回json格式的数据*/@GetMapping("/member/openfeign/get/{id}") // 1.这里的url是可以改的public Result getMemberById(@PathVariable("id") Long id) { // 2.这里的参数和方法名是可以改的// 远程调用member-service-nacos-provider的getMemberById方法return memberOpenFeignService.getMemberById(id); // 这里的参数和返回值是要远程调用的接口的参数和返回值}
}
6.测试
1.启动nacos,81模块,10004,10006模块

image-20240330112344035

image-20240330112330720

2.访问nacos查看注册情况

image-20240330112448718

3.浏览器输入 http://localhost:81/member/openfeign/get/1 (必须加上http:// )

image-20240330112747460

7.切换负载均衡算法
1.编写配置类,注入一个负载均衡算法的bean
package com.sun.springcloud.config;import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/** 配置类,用于配置Ribbon的负载均衡策略* @author 孙显圣* @version 1.0*/
@Configuration
public class RibbonRule {@Beanpublic IRule ribbonRule() {// 随机策略return new RandomRule();}
}
2.重新启动,报错,bean已经被定义了,说明之前可能定义了同样id的负载均衡算法的bean

image-20240330131715496

3.换一个id即可,然后重新启动

image-20240330131826535

image-20240330131949790

4.测试,浏览器访问几次,有时会出现超时的情况(OpenFeign默认超时时间为1s)

image-20240330132533574

5.设置超时时间 application.yml
1.全局配置
feign:client:config:default:connectTimeout: 5000readTimeout: 10000
2.单个Feign客户端配置
feign:client:config:客户端的application-name:connectTimeout: 5000readTimeout: 10000
6.又检查了一下,远程调用的方法,之前设置了休眠时间,删除即可。。。

image-20240330132831360

3.服务消费者整合Sentinel进行服务保护

1.pom.xml引入Sentinel
        <!-- 引入Sentinel --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>
2.application.yml 配置Sentinel的客户端和服务端

image-20240330133818630

      sentinel:transport:dashboard: localhost:8080 # 配置sentinel服务端的地址,根据实际情况填写  port: 8719 # 配置sentinel客户端的端口,根据实际情况填写,如果冲突,会自动+1,直到找到可用的端口
3.测试
1.启动nacos,sentinel

image-20240330134115568

image-20240330134103411

2.启动81,10004,10006模块

image-20240330134142463

3.浏览器输入http://localhost:8080/ 进入Sentinel的服务端

image-20240330134321907

4.浏览器输入http://192.168.137.1:8848/nacos/index.html进入nacos查看注册情况

image-20240330134523803

5.浏览器访问 http://localhost:81/member/openfeign/get/1 然后查看Sentinel控制台

image-20240330135602866

4.需求分析

image-20240330140249918

5.开始配置之前进行测试
当10004和10006都down掉时,不断请求会发生什么?
1.首先关闭10004和10006微服务

image-20240330141042709

2.浏览器发送请求 http://localhost:81/member/openfeign/get/1,发现是超时
  • 原因是OpenFeign会根据接口的信息来通过服务发现和资源路径,找到要远程调用的接口,并缓存在本地,所以只要缓存还在,就不会是服务不可用

image-20240330132533574

3.浏览器发送请求 http://localhost:81/member/openfeign/get/1, 可以发现服务不可用
  • 此时的缓存已经不在,OpenFeign重新从nacos获取服务信息,但是获取不到所以会出现服务不可用的错误

image-20240330141137054

6. 81模块配置如果远程调用的服务出现异常,则立即返回结果

image-20240330144105150

1.MemberFeignFallbackService.java 实现 MemberOpenfeignService.java 并注入容器
package com.sun.springcloud.service;import com.sun.springcloud.util.Result;
import org.springframework.stereotype.Component;/*** Description: 会员服务的降级处理, 当服务不可用时,立即返回一个默认的结果** @Author sun* @Create 2024/3/30 14:32* @Version 1.0*/
@Component // 注入到spring容器中
public class MemberFeignFallbackService implements MemberOpenfeignService{@Overridepublic Result getMemberById(Long id) {return Result.error("503", "服务降级返回, 服务不可用");}
}
2.在application.yml配置启用openfeign和sentinel的整合

image-20240330144151786

# 配置openfeign和sentinel的整合          
feign:sentinel:enabled: true
3.MemberOpenfeignService 添加fallback属性,指定出现异常要处理的类

image-20240330145014987

4.重新启动81模块,浏览器输入 http://localhost:81/member/openfeign/get/1测试

image-20240330144529901

5.关闭10004和10006,再次进行测试,成功处理异常!

image-20240330145207537

4.消费者使用OpenFeign整合Sentinel进行服务保护小结

1.服务消费者OpenFeign远程调用流程
1.配置Nacos的服务发现和服务注册功能
  • 服务发现:配置pom.xml,和启动类开启服务发现的注解
  • 服务注册:配置application.yml
2.配置OpenFeign远程调用
1.pom.xml引入OpenFeign依赖
2.编写service接口存放服务发现和资源路径的信息
  • 将要远程调用的方法整个复制到这个接口,然后去掉方法体
  • 在接口上添加@FeignClient注解,指定远程调用的服务在nacos中的名字
3.编写controller进行远程调用
  • 将要远程调用的controller上面的注解复制过来(不能改)
  • 依赖注入刚才编写的远程调用的接口的动态代理对象
  • 将要远程调用的接口再复制过来去掉方法体,按Tab,使用copilot来自动补全远程调用的代码
2.整合Sentinel进行服务保护流程
1.配置Sentinel监控服务
  • pom.xml引入Sentinel依赖
  • application.yml 配置Sentinel的客户端和服务端
2.配置OpenFeign整合Sentinel,使得远程调用出现异常集中处理
  • 编写一个类实现存放服务发现和资源路径的信息的service,并实现其方法,然后注入容器
  • 在application.yml配置启用openfeign和sentinel的整合
  • 在service中的@FeignClient注解,添加fallback属性,指定出现处理异常的类
3.服务消费者OpenFeign远程调用整合Sentinel进行服务保护原理

image-20240330153347387

4.Sentinel仍然可以对这个controller进行流量控制,熔断降级,热点限流
设置QPS为1

image-20240330150307503

5.规则持久化

1.规则持久化方案

image-20240330160104138

2.规则持久化原理
  • 简单来说就是在Nacos配置Sentinel的规则
  • 然后在通过Sentinel监控的微服务通过底层通信,同步到Sentinel上

image-20240330160929985

3.需求分析

image-20240330161414714

4.具体配置
1.在Nacos配置中心增加Sentinel的流控规则

image-20240330164518209

2.pom.xml引入nacos和sentinel持久化的依赖
        <!-- 引入nacos和sentinel持久化的依赖 --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>
3.application.yml 拉取Nacos的配置信息并同步到Sentinel

image-20240330165648937

        datasource:ds1: # 从Nacos中读取sentinel的规则配置nacos:server-addr: localhost:8848 # 配置要注册到的nacos地址,根据实际情况填写dataId: member-service-nacos-consumer-81 # 配置要读取的配置的dataIdgroupId: DEFAULT_GROUP # 配置要读取的配置的groupIddata-type: json # 配置要读取的配置的类型rule-type: flow # 配置要读取的配置的规则类型为流控规则
4.测试
1.启动Nacos、Sentinel、81、10004、10006
2.查看Nacos注册情况

image-20240330165957732

3.浏览器快速请求 http://localhost:81/member/openfeign/get/1, 流控规则生效!

image-20240330170121418

4.查看同步到Sentinel的流控规则

image-20240330170241130

5.其他规则配置

官方文档

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

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

相关文章

2024年北京通信展|北京国际信息通信展览会|北京PT展

2024年北京通信展|北京国际信息通信展览会|北京PT展 2024年中国国际信息通信展览会&#xff08;PTEXPO&#xff09;&#xff0c;是由工业和信息化部主办的ICT行业盛会&#xff0c;自1990年创办以来&#xff0c;已成功举办31届&#xff0c;是反映信息通信行业发展最新成果的重要…

【Java数据结构】关于栈的操作出栈,压栈,中缀表达式,后缀表达式,逆波兰表达式详解

&#x1f525;个人主页&#xff1a;努力学编程’ &#x1f525;内容管理&#xff1a;java数据结构 上一篇文章我们讲过了java数据结构的链表&#xff0c;对于链表我们使用了它的一些基本操作&#xff0c;完成了扑克牌小游戏的操作&#xff0c;如果你感兴趣的话&#xff0c;点…

MATLAB 自定义均值滤波 (53)

MATLAB 自定义均值滤波 (53) 一、算法介绍二、算法实现1.原理2.代码一、算法介绍 均值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云均值滤波算法,具体效果如下所示: 均值滤波前: 均值滤波后:…

Pycharm选择使用Anaconda环境中的Pytorch 失败解决办法之一

前几日想要复现一篇论文&#xff0c;结果给配的台式机完全禁不住&#xff0c;老是报溢出&#xff0c;慢都没事&#xff0c;溢出就很难受了&#xff0c;因此想用自己笔记本的GPU来训练。 安装以后遇到一个问题&#xff1a; Anaconda里创建了环境&#xff0c;安装好了对应pytor…

RPC--远程调用

通信调用 程序A(加密) 程序B 内存共享 (本地RPC) 发送窗口信息 (本地RPC) --长度有限制 串口通讯 com口 --浏览器不开串口... 通讯管道(防止多开) (本地RPC) --对我们不可见. 网络 TCP/IP (远程RPC) --good! 浏览器(, ws) <--- 任意语言开发的软件 --任意语言控制浏览器. 注…

Linux基础知识

文章目录 一、入门命令&#xff1a;1.find 条件 要查找的文件满足的条件&#xff08;从当前目录开始查找&#xff09;&#xff1a;2.locate 文件名&#xff1a;3.lear CTRL L &#xff08;清除终端窗口&#xff09;与cat&#xff08;打印输出文件内容&#xff09;&#xff1a…

网络性能提升10%,ZStack Edge 云原生超融合基于第四代英特尔®至强®可扩展处理器解决方案发布

随着业务模式的逐渐转变、业务架构逐渐变得复杂&#xff0c;同时容器技术的兴起和逐渐成熟&#xff0c;使得Kubernetes、微服务等新潮技术逐步应用于业务应用系统上。 为了充分释放性能、为业务系统提供更高效的运行环境&#xff0c;ZStack Edge 云原生超融合采用了第四代英特尔…

ROS传感器图像转换

ros通过摄像头来获得图片&#xff0c;传感器数据类型为sensor_msgs中的Image&#xff0c;具体的数据类型组成&#xff1a; sensor_msgs/Image Documentationhttp://docs.ros.org/en/api/sensor_msgs/html/msg/Image.html但是我们一般使用opencv对图像进行处理&#xff0c;所以…

elementui 导航菜单栏和Breadcrumb 面包屑关联

系列文章目录 一、elementui 导航菜单栏和Breadcrumb 面包屑关联 文章目录 系列文章目录前言一、elementui 导航菜单栏和Breadcrumb 面包屑怎么关联&#xff1f;二、实现效果三、实现步骤1.本项目演示布局2.添加面包屑2.实现breadcrumbName方法3.监听方法4.路由指配5.路由配置…

全国青少年软件编程(Python)等级考试三级考试真题2023年12月——持续更新.....

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;三级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共25题&#xff0c;共50分) 1.一个非零的二进制正整数&#xff0c;在其末尾添加两个“0”&#xff0c;则该新数将是原数的&#xf…

具备实时数据更新能力的大语言模型——Larimar

ChatGPT、Claude.ai等大模型产品就像“图书馆”一样为我们生成各种各样的内容。但是想更新这个图书馆里的知识却不太方便&#xff0c;经常需要漫长、费时的预训练、蒸馏才能完成。 研究人员提出了一种具有情景记忆控制的大语言模型Larimar&#xff0c;这是一种类似人脑"海…

love 2d win 下超简单安装方式,学习Lua 中文编程 刚需!!

一、下载love 2d 参考&#xff1a;【Love2d从青铜到王者】第一篇:Love2d入门以及安装教程 或直接下载&#xff1a; 64位&#xff0c;现在一般电脑都可以用。 64-bit zipped 32位&#xff0c;很复古的电脑都可以用。 32-bit zipped 二、解压 下载好了之后&#xff0c;解压到…

css3之动画animation

动画animation 一.优点二.定义和使用三.动画序列和解释四.常见属性及解释五.简写&#xff08;名字和时间不能省略&#xff09;&#xff08;持续时间在何时开始的时间前&#xff09;&#xff08;简写中无animation-play-state)六.例子1.大数据热点图2.奔跑的熊大&#xff08;一个…

vitess执行计划缓存 测试

打开执行计划器缓存&#xff1a; sysbench /usr/local/share/sysbench/oltp_write_only.lua --mysql-host127.0.0.1 --mysql-port15306 --mysql-userroot --mysql-password --mysql-dbcustomer --report-interval10 100s sysbench /usr/local/share/sysbench/oltp_read_only.l…

vlanif三层交换机实现不同网络通信

实验目的&#xff1a;通过三层交换机实现不同 网络通信&#xff0c;之前都是路由器进行不同网络转发 拓扑图 内容&#xff1a;左边vlan10&#xff0c;右边vlan20 lsw1接口通过所有vlan lsw2网路vlan10 lsw3网络vlan20 问题点&#xff1a;开始只是配置了最上面LSW1的交换机…

三台电机的顺启逆停

1&#xff0c;开启按钮输入信号是 电机一开始启动&#xff0c;5秒回电机2启动 &#xff0c;在5秒电机三启动 关闭按钮输入时电机3关闭 &#xff0c;5秒后电机2关闭 最后电机一关闭 2&#xff0c;思路开启按钮按下接通电机1 并且接通定时器T0 定时器T0 到时候接通电机2 并且开…

Predict the Next “X” ,第四范式发布先知AIOS 5.0

今天&#xff0c;第四范式发布了先知AIOS 5.0&#xff0c;一款全新的行业大模型平台。 大语言模型的原理是根据历史单词去不断预测下一个单词&#xff0c;换一句常见的话&#xff1a;Predict the Next “Word”。 当前对于行业大模型的普遍认知就是沿用这种逻辑&#xff0c;用大…

聊聊多版本并发控制(MVCC)

多版本并发控制&#xff08;MVCC&#xff09; MVCC一直是数据库部分的高频面试题&#xff0c;这篇文章来聊聊MVCC是什么&#xff0c;以及一些底层原理的实现。 当前读和快照读&#xff1a; 当前读&#xff1a;读取的是事务最新的版本&#xff0c;读取的过程中其他并发事务不…

适用于 Windows 的 6 个最佳视频转换器

视频转换器可以帮助您在设备上转换和播放不受支持的视频格式。它还可以方便地减小视频文件大小、以通用格式组织所有视频或与其他人共享文件以在不同设备上播放。 Windows 有大量视频转换器可供选择。虽然有些是免费的&#xff0c;但其他一些则提供迎合专业用户的高级功能。在…

【DETR系列目标检测算法代码精讲】01 DETR算法01 DETR算法框架和网络结构介绍

为什么要有DETR 总所周知&#xff0c;传统的目标检测算法非常依赖于anchor和nms等手工设计操作&#xff0c;非常费时费力&#xff0c;自然而然的就产生了取消这些操作的想法。但是我们首先需要思考的是&#xff0c;为什么我们需要anchor和nms&#xff1f; 因为我们是没有指定…