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

SpringCloud多机部署,负载均衡-LoadBalance

一.负载均衡

1.1问题描述

//根据应用名称获取服务列表
List<ServiceInstance> instances=discoveryClient.getInstances("product-service");
//一个微服务可能有多个实例,获取第一个
EurekaServiceInstance instance=(EurekaServiceInstance)instances.get(0);

1.根据应用名称获取服务实例列表,然后从实例列表中选择一个其中一个实例

那要是一个服务对应多个实例,流量能否合理的分配到多个实例呢?

如下操作,一个服务弄出多个实例来:

我们在启动两个product-service实例:选中要启动的实例,右键选择copy configuration

在弹出的框中选择Modify options->Add VM options(添加虚拟机参数)

添加VM options:-Dserver.poort=9091(9091是服务启动的端口号,可以自己根据情况进行修改)(意思是在 Java 虚拟机启动参数中设置一个系统属性,这里具体是将服务器的端口设置为 9091。)

像这样一共启动三个服务(把原来的那个改名为ProductServicrApplication-9090:

启动服务,访问eureka会发现product-service有三个实例,如下:

访问127.0.0.1:8080/order/1,访问结果为:

多次访问,再观察日志:

通过日志可以观察到,请求多次访问,都是同一台机器(这个信息是下面这个截图看到的)

这肯定不是我们想要看到的,我们希望三个实例可以分担请求的负荷,那么如何实现呢?

解决方案:

使用原子类中的整数,防止多线程下的线程安全问题

这里将atomicinteger提出来当成静态成员变量,那么同一个工程中就是共用一个integer,每访问一次就加一,而不是每次访问都是从一开始。

同理,将instances列表拿出来当成成员变量,就是防止每一次访问都重新获取服务实例列表。而对于getInstances方法,它的返回结果不是按顺序的,而是每一次都不一样,如果将getInstances方法放到selectOrderInfoById中,那么每一次发起请求就会重新获取服务实例列表,前三次获取的实例顺序可能是a b c,可能是b a c,也可能是a c b.然后每次都对原子整数取模,得到的下标是按顺序的,也就是1 2 3,那么就不是均衡的获取了

在方法中进行实例获取时,可以使用轮询获取

这次进行多次访问,再观察日志,就会发现这三个服务实例是轮着来的

1.2什么是负载均衡

负载均衡(LoadBalance,简称LB),是高并发,高可用系统必不可少的关键组件。

当服务流量增大时,通常会采用增加机器的方式进行扩容,负载均衡就是用来在多个机器或者其他资源中,按照一定的规则合理分配负载。

1.3负载均衡的一些实现

上述例子只是简单的轮询机制,但真实场景会更加复杂,比如根据机器的配置进行负载分配,配置高端分配的流量高,配置低的分配的流量低。

类似于企业员工:能力强的员工可以多承担一些工作。

服务多机部署时,开发人员都需要考虑负载均衡的实现,所以也出现了一些负载均衡器来帮我们实现负载均衡。

负载均衡分为服务端负载均衡和客户端负载均衡。

服务器端负载均衡

订单服务调用商品服务,商品服务就是服务端,服务端这里通过一定的算法将收到的请求分配到莫一台机器上,这就是服务端负载均衡。最常见的服务器端负载均衡器就是Nginx负载均衡器,然后通过负载均衡算法,在多个服务器之间选择一个进行访问。

客户端负载均衡器

在客户端负载均衡中,负载均衡的逻辑由客户端自己实现。客户端知道所有可用的服务实例,并根据一定的算法选择一个合适的服务实例来发起请求。

二.SpringCloud LoadBalancer

2.1给RestTemplate这个Bean添加@LoadBalancer

这里使用了@LoadBalanced注解,是的该RestTemaplate对象有了负载均衡功能,并且默认的负载均衡算法是轮询的负载均衡

2.2修改端口号为服务名称

2.3启动多个product-service实例并测试负载均衡

连续多次发起请求:127.0.0.1:8080/order/1

观察product-service的日志,就会发现请求被分配到了这三个实例上

2.4负载均衡策略

1.轮询:轮询策略是指服务器轮流处理用户的请求。这是最简单最常用的策略

2.随机选择:随机选择一个后端服务器来处理请求。

三.自定义负载均衡器

SpringCloud LoadBalancer默认的负载均衡策略是轮询策略,是现实RoundRobinLoadBalancer。现在我们来实现一个采用随机策略的负载均衡器

3.1定义随机算法对象,通过@Bean将其加载到Spring中

此处使用SpringCloudLoadBalancer提供的RandomLoadBalancer

package com.bite.order.config;import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.loadbalancer.core.RandomLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;public class LoadBalancerConfig {@BeanReactorLoadBalancer<ServiceInstance> randomLoadBanlancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory){String name=environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);System.out.println("============="+name);return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class),name);}
}

@Bean注解:适用于告诉Spring容器,该方法将要返回一个bean对象,可以被其他组件注入和使用。在这里,该方法是返回一个ReactorLoadBalancer<ServiceInstance>接口的负载均衡器bean

可以看到,有两个类实现了这个接口,这两个类也就是我们所说的随机负载均衡器和轮询负载均衡器。这个接口的ServiceInstance表示该负载均衡器的操作对象是服务实例列表

Environment:Spring 的Environment接口提供了对应用程序环境的访问。在这里,可以通过它来获取应用程序的配置属性。getProperty就是获取属性的意思

LoadBalanceClientFactory:是一个用于创建负载均衡客户端的工厂类。它可以提供一些方法来配置负载均衡器

最后返回的是一个随机负载均衡器的实例对象

总的来说,这段代码定义了一个方法,该方法在 Spring 容器中创建并返回一个随机负载均衡器 bean。这个负载均衡器可以根据服务实例列表选择一个随机的服务实例来处理请求,并且可以通过配置属性进行定制。

注意:该类要满足:1.不使用@Configuration注释  2.在组件扫描范围内

为什么不使用@Configuration注释?首先,如果使用了@Configuration注释,那么就会在Spring启动时将该类中被@Bean标记的方法中的bean对象创建出来,而不是在什么时候使用时再创建,这样就不具有灵活性。其次,假设有两个类都有@Configuration注释,而且两个类中都有使用@Bean注入同类型的负载均衡器,那么俩个负载均衡器都会在Spring启动时创建出来,当在某个地方使用时,编译器就不知道要使用哪一个负载均衡器了

组件扫描范围指什么:设置端口参数 - 豆包

只有放到组件扫描范围内了,这个类才能被Spring容器发现并且管理。其中定义的@Bean方法才有可能被拿出来创建Bean。如果这个类不在组件扫描范围内,这个bean的定义就没办法被发现,就无法创建Bean

3.2使用@LoadBalancerClient或者@LoadBalancerClients注解

在RestTemplate配置类上方,使用@LoadBalancerClinet或@LoadBalancerClients注解,可以对不同的服务方提供配置不同的客户端负载均衡算法策略

这样的话,就能够返回一个带有负载均衡功能的http处理工具RestTemplate实例对象

上面的@LoadBalancerClient中name制定了该负载均衡算法对哪个服务起作用,configuration标识了使用哪个类的对象作为负载均衡器。

四.服务部署

3.1准备数据

在linux终端登录mysql进行建库建表操作

修改配置文件中数据库的密码,改成linux系统中的数据库密码

product和order的都要改

3.2服务构建打包

要分别对eureka-server、product-service、order-service打包

1.pom.xml配置

<properties>项目属性和变量:定义项目中可能用到的常量或变量值,可在整个文件中被引用,也可在其他配置文件中被引用。

 

<profiles>元素用于定义不同的构建配置文件,构建配置文件通常用于定义软件项目在构建过程中的各种参数和设置,以实现不同环境下的定制化构建。可以针对开发(dev)、测试(test)、生产(prod)等不同环境设置不同的构建参数。

每个配置文件都有一个唯一的 ID 和一组属性。在这个例子中,每个配置文件只有一个属性 profile.name,分别设置为 “dev” 和 “prod”。

在 Maven 项目中,配置文件可以用于在不同的环境中设置不同的构建参数、资源过滤、插件配置等。例如,可以根据不同的环境设置不同的数据库连接信息、服务器地址等。

由于product-service和order-service都涉及到数据库密码的修改,所以这段配置要添加到这两个子项目的pom文件中

2.备份并修改yml配置文件

将prod环境的yml文件中的数据库密码改成linux文件下的MySQL密码

然后在每个项目的主配置文件application.yml加下面的配置:

​
spring:profiles:active: @profile.name@​

这里的profile.name就是去maven中读取这个变量

项目启动后,并不是只选择其中一个配置文件进行操作。首先,application.yml通常作为基础配置文件,其中可以包含一些通用的配置属性

然后,根据激活的环境(通过spring.profiles.active属性指定),会加载相应的特定环境配置文件。例如:如激活的是开发环境,那么application-dev.yml中的配置会与application.yml中的配置合并,共同生效。

那要是在多个配置文件中有相同的属性,特定环境配置文件中的属性会覆盖application.yml中的属性

总之,在SpringBoot项目中,项目启动时多个配置文件(application.yml,application-dev.yml,application-prod.yml等)都会被扫描,但会根据环境选择特定的配置文件与基础配置文件合并生效,以满足不同环境下的配置需求。

pom.xml与applicatiom.yml的区别与用途:https://www.doubao.com/thread/wc88d3dc72ec47658

3.依次对三个项目打包

和SpringBoot项目的打包方式一样,依次对三个项目进行package即可

先点一下clean(当执行 “clean” 阶段时,Maven 会删除项目的 target 目录。这个目录通常包含编译后的字节码文件、打包生成的文件(如 JAR、WAR 文件)、测试报告等在构建过程中生成的临时文件。)“clean” 阶段为后续的构建阶段创造了一个干净的环境。这意味着在执行其他构建阶段(如 compile、test、package 等)之前,项目的构建状态被重置,确保构建结果的准确性和一致性。例如,如果在上一次构建中出现了错误或者需要进行重大的更改,执行 “clean” 阶段可以确保所有的临时文件和旧的构建产物都被删除,以便进行新的构建。

clean完再打包

3.3启动服务

1.上传Jar包到云服务器上

第一次上传需要安装lrzsz(lrzsz是一款在 Linux 系统中常用的文件传输工具。)

apt install lrzsz

直接拖动文件到xshell窗口,上传成功(上传之前可以建一个springcloud的文件夹,具体操作如下)

2.启动服务

启动服务后,我们希望看到日志,所以可以先创建一个日志目录:

进行eureka-server,product-service,order-service的启动

#后台启动eureka-server,并设置输出日志到logs/erueka.log
nohup java -jar eureka-server-1.0-SNAPSHOT.jar >logs/eureka.log &
#后台启动product-service,并设置输出日志到logs/product.log
nohup java -jar product-serivce-1.0-SNAPSHOT.jar >logs/product.log &
#后台启动order-service,并设置输出日志到logs/order.log
nohup java -jar order-service-1.0-SNAPSHOT.jar >logs/order.log &

相关文章:

SpringCloud多机部署,负载均衡-LoadBalance

一.负载均衡 1.1问题描述 //根据应用名称获取服务列表 List<ServiceInstance> instancesdiscoveryClient.getInstances("product-service"); //一个微服务可能有多个实例&#xff0c;获取第一个 EurekaServiceInstance instance(EurekaServiceInstance)insta…...

前端开发调试之 PC 端调试学习笔记

一、引言 在前端开发过程中&#xff0c;调试是至关重要的一个环节。它能帮助我们快速定位代码中的问题&#xff0c;无论是页面布局错乱、交互效果异常还是性能不佳等情况&#xff0c;通过有效的调试手段都可以找到根源并进行修复。而在 PC 端进行调试有着其特定的方法和技巧&am…...

视频流媒体播放器EasyPlayer.js无插件直播流媒体音视频播放器Android端webview全屏调用无效问题

流媒体播放器的核心技术与发展趋势正在不断推动着行业的变革。未来&#xff0c;随着技术的不断进步和应用场景的不断拓展&#xff0c;流媒体播放器将为用户带来更加便捷、高效、个性化的观看体验。同时&#xff0c;流媒体播放器也会成为数字娱乐产业的重要组成部分&#xff0c;…...

使用 cnpm 安装 Electron,才是正确快速的方法

当然&#xff0c;下面是总结的几种安装 Electron 的方法&#xff0c;包括使用 npm 和 cnpm&#xff0c;以及一些常见的问题解决技巧。 ### 1. 使用 npm 安装 Electron #### 步骤 1: 初始化项目 在你的项目目录中初始化一个新的 Node.js 项目&#xff1a; bash npm init -y …...

pytest日志总结

pytest日志分为两类&#xff1a; 一、终端&#xff08;控制台&#xff09;打印的日志 1、指定-s&#xff0c;脚本中print打印出的信息会显示在终端&#xff1b; 2、pytest打印的summary信息&#xff0c;这部分是pytest 的默认输出&#xff08;例如测试结果PASSED, FAILED, S…...

【Ubuntu24.04】使用服务器

目录 0 背景1 将文件传送到服务器1.1 主机上的虚拟机1.2 另一台独立的计算机(包括上面的虚拟机)1.3 远程文件传输1.3.1 scp2 操作服务器2.1 ssh2.2 Termius2.2.1 下载2.2.2 安装2.2.3 使用2.2.4 小结3 总结0 背景 你是一个开发者,有自己的测试环境:一个Linux服务器(假设是…...

Spark 之 Aggregate

Aggregate 参考链接&#xff1a; https://github.com/PZXWHU/SparkSQL-Kernel-Profiling 完整的聚合查询的关键字包括 group by、 cube、 grouping sets 和 rollup 4 种 。 分组语句 group by 后面可以是一个或多个分组表达式&#xff08; groupingExpressions &#xff09;…...

ubuntu没有了有线网络如何修复

今天打开ubuntu之后发现有线网络连接没有了&#xff0c;如下图&#xff0c;此时是修复好之后的&#xff0c;“有线”部分存在&#xff0c;出现问题时是不存在的 此时只需要修改NetworkManager.conf配置文件&#xff0c;将managedfalse更改为managedtrue,保存退出就可以了 sudo…...

2411rust,异步函数

原文 Rust异步工作组很高兴地宣布,在实现在特征中使用异步 fn的目标方面取得了重大进度.将在下周发布稳定的Rust1.75版,会包括特征中支持impl Trait注解和async fn. 稳定化 自从RFC#1522在Rust1.26中稳定下来以来,Rust就允许用户按函数的返回类型(一般叫"RPIT")编…...

解决IDEA报包不存在,但实际存在的问题

前言 最近在把一个亿老项目交割给同事&#xff0c;同事在导入项目运行时遇到IDEA报包不存在&#xff0c;但实际存在的问题&#xff0c;最终通过以下方式解决 现象 在IDEA里启动运行项目&#xff0c;报某个类有问题&#xff0c;引入的包不存在。 点击这个引入的包&#xff0c;可…...

解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题

解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题 Chapter1 解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题Chapter2 windows主机和ubuntu互传文件的4种方法 博文链接&#xff1a;Chapter3 安装好VMware tools后无法复制粘贴文本、拖拽文件的解决办法 Chapter1 解…...

SpringBoot与MongoDB深度整合及应用案例

SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域&#xff0c;NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB&#xff0c;作为一款领先的NoSQL数据库&#xff0c;以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…...

计算机网络(12)介质访问控制

ok通过前面的学习我们已经知道数据链路层提供的服务有帧封装&#xff0c;物理地址&#xff0c;流量控制&#xff0c;错误控制&#xff0c;访问控制。今天就来记录最后的访问控制。 介质访问控制 (MAC)详解 介质访问控制&#xff08;Media Access Control&#xff0c;简称 MAC&…...

Axios 响应拦截器与未登录状态的统一处理

目录 前言1. 响应拦截器的作用与应用场景1.1 什么是响应拦截器&#xff1f;1.2 响应拦截器的应用场景 2. 代码解读&#xff1a;响应拦截器中的未登录处理2.1 原始代码分析 3. 完善未登录处理逻辑3.1 未登录状态的用户体验优化3.2 改进后的代码实现 4. 实践中的场景4.1 登录态的…...

【MySQL系列】深入理解MySQL中的存储、排序字符集

前言 在创建数据库时&#xff0c;我们经常会需要填写数据库的所用字符集、排序规则&#xff0c;字符集和排序规则是两个非常重要的概念&#xff0c;它们决定了数据库如何存储和比较字符串数据。在 MySQL 中&#xff0c;常用的存储字符集有 utf8、utf8mb4&#xff0c;而排序字符…...

【ARM Coresight OpenOCD 系列 5.1 -- OpenOCD 无法识别CPUID 问题: xxx is unrecognized】

请阅读【嵌入式开发学习必备专栏】 文章目录 OpenOCD 无法识别CPUID 问题ARM CPUIDCPUID 特性CPUID 寄存器字段OpenOCD 无法识别CPUID 问题 在使用OpenOCD 进行CPU debug的过程中有时会报出 无法识别CPUID的问题,本文将会介绍如何解决这个问题。首先我们来学习下什么是CPUID,…...

YOLOv11融合针对小目标FFCA-YOPLO中的FEM模块及相关改进思路

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 YOLOv11改进汇总贴&#xff1a;YOLOv11及自研模型更新汇总 《FFCA-YOLO for Small Object Detection in Remote Sensing Images》 一、 模块介绍 论文链接&#xff1a;https://ieeexplore.ieee.org/document/10…...

【Docker容器】一、一文了解docker

1、什么是docker&#xff1f; 1.1 docker概念 Docker是一种容器化平台&#xff0c;通过使用容器技术&#xff0c;Docker允许开发人员将应用程序和其依赖项打包到一个独立的、可移植的容器中。每个容器具有自己的文件系统、环境变量和资源隔离&#xff0c;从而使应用程序可以在…...

【团购核销】抖音生活服务商家应用快速接入①——基础工作

文章目录 一、前言二、抖音开放平台&#xff08;服务商平台&#xff09;三、认证服务能力四、第三方生活服务商家应用五、APPID和AppSecret六、申请接口权限七、开发配置八、参考 一、前言 目的&#xff1a;将抖音团购核销的功能集成到我们自己开发的App和小程序中 【团购核销】…...

MyBatis实践:提高持久化层数据处理效率

一、MyBatis简介: 1.简介:https://mybatis.org/mybatis-3/zh/index.html?spmwolai.workspace.0.0.66162306mX2SuC MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff…...

如何理解Lua 使用虚拟堆栈

虚拟堆栈的基本概念 Lua使用虚拟堆栈来实现Lua和C&#xff08;或其他宿主语言&#xff09;之间的交互。这个虚拟堆栈是一个数据结构&#xff0c;用于存储Lua的值&#xff0c;如数字、字符串、表、函数等。它在Lua状态机&#xff08;lua_State&#xff09;内部维护&#xff0c;为…...

UE5 腿部IK 解决方案 footplacement

UE5系列文章目录 文章目录 UE5系列文章目录前言一、FootPlacement 是什么&#xff1f;二、具体实现 前言 在Unreal Engine 5 (UE5) 中&#xff0c;腿部IK&#xff08;Inverse Kinematics&#xff0c;逆向运动学&#xff09;是一个重要的动画技术&#xff0c;用于实现角色脚部准…...

SMMU软件指南之概述

安全之安全(security)博客目录导读 目录 1. 概述 1.1 开始之前 2. SMMU 的功能 1. 概述 本博客描述了 ARM 系统内存管理单元(SMMUv3)的基本操作及其使用案例,包括: • SMMU 架构概念、术语和操作 • 与 SMMU 功能相关的系统级考虑因素 • 典型 SMMU 使用案例的知识 1…...

Vue_Router权限控制:不同角色显示不同路由

写在前面 在Vue中&#xff0c;Router是一个官方提供的用于处理应用程序路由的插件。它允许我们创建单页应用程序&#xff08;SPA&#xff09;&#xff0c;其中不同的页面和组件可以通过URL进行导航和展示。使我们可以轻松地创SPA&#xff0c;并实现可复用和可组合的组件…...

机器学习4

九、线性回归 1、概念 假设存在多个点&#xff0c;需要使用一条线来保障尽量拟合这些点&#xff0c;寻找这条线的过程就叫回归。 机器学习中一种有监督学习的算法,回归问题主要关注的是因变量(需要预测的值)和一个或多个数值型的自变量(预测变量)之间的关系。 2、损失…...

Linux中系统的延迟任务及定时任务

一、延时任务 at 命令&#xff0c;即用即消 如 at 11&#xff1a;30 rm -rf /mnt/* ctrld运行 &#xff08;过一秒即可执行&#xff09; -v 使用较明显的时间格式&#xff0c;列出at调度中的任务列表 -l 可列出目前系统上面的所有该用户的at调度 -c 可以列出后面接…...

从Stream的 toList() 和 collect(Collectors.toList()) 方法看Java的不可变流

环境 JDK 21Windows 11 专业版IntelliJ IDEA 2024.1.6 背景 在使用Java的Stream的时候&#xff0c;常常会把流收集为List。 假设有List list1 如下&#xff1a; var list1 List.of("aaa", "bbbbbb", "cccc", "d", "eeeee&qu…...

centos7.9单机版安装K8s

1.安装docker [rootlocalhost ~]# hostnamectl set-hostname master [rootlocalhost ~]# bash [rootmaster ~]# mv /etc/yum.repos.d/* /home [rootmaster ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [rootmaster ~]# cu…...

Notepad++--在开头快速添加行号

原文网址&#xff1a;Notepad--在开头快速添加行号_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Notepad怎样在开头快速添加行号。 需求 原文件 想要的效果 方法 1.添加点号 Alt鼠标左键&#xff0c;从首行选中首列下拉&#xff0c;选中需要添加序号的所有行的首列&#xff…...

如何在 PyCharm 中配置 HTTP 代理以确保网络连接的顺畅性

如何在 PyCharm 中配置 HTTP 代理以确保网络连接的顺畅性 在配置 PyCharm 的 HTTP 代理以确保网络连接的顺畅性时&#xff0c;需按照一定的步骤进行设置&#xff0c;这不仅有助于确保 PyCharm 能够顺利访问互联网资源&#xff0c;还能保证插件和工具的正常更新与同步。以下是详…...

查找萤石云IOS Sdk中的编解码接口

2021/1/20 以前的时候&#xff0c;碰到的问题&#xff0c;想把萤石云视频介入到TRTC&#xff0c;但是... 萤石云的IOS接口中没有相应的解码播放库&#xff0c;也就是找不到PlayerSDK对应部分&#xff0c;怎么做呢&#xff1f; 一个是坐等萤石云开放这部分接口&#xff0c;可能…...

webpack配置

4-3vue-loader测试_哔哩哔哩_bilibili 一.新建文件夹vue_todo&#xff0c;vscode打开 二.ctrl打开终端&#xff0c;输入npm init -y&#xff0c;快速生成一个默认的package.json文件 之后左边出现项目初始化文件package.json 三.接下来需要webpack完成打包&#xff0c;所以安装…...

Streamlit + AI大模型API实现视频字幕提取

简介 在本文中&#xff0c;我将带你探讨如何使用Streamlit和AI大模型API来实现视频字幕提取的技术。Streamlit是一个开源的Python库&#xff0c;用于快速构建数据应用的Web界面&#xff0c;而AI大模型API&#xff0c;如OpenAI&#xff0c;提供了强大的语言处理能力&#xff0c…...

11.21 深度学习-tensor常见操作

import torch from PIL import Image from torchvision import transforms # 获取元素值 tensor.item() 返回一个数值 只能是tensor里面有一个数字的 # 我们可以把单个元素tensor转换为Python数值&#xff0c;这是非常常用的操作 # tensor 里面超过了1个数字就不行 def g…...

gitlab和jenkins连接

一&#xff1a;jenkins 配置 安装gitlab插件 生成密钥 id_rsa 要上传到jenkins&#xff0c;id_rsa.pub要上传到gitlab cat /root/.ssh/id_rsa 复制查看的内容 可以看到已经成功创建出来了对于gitlab的认证凭据 二&#xff1a;配置gitlab cat /root/.ssh/id_rsa.pub 复制查…...

从视频帧生成点云数据、使用PointNet++模型提取特征,并将特征保存下来的完整实现。

文件地址 https://github.com/yanx27/Pointnet_Pointnet2_pytorch?spm5176.28103460.0.0.21a95d27ollfze Pointnet_Pointnet2_pytorch\log\classification\pointnet2_ssg_wo_normals文件夹改名为Pointnet_Pointnet2_pytorch\log\classification\pointnet2_cls_ssg "E:…...

vue3 + Element Plus + ts 封装全局的 message、messageBox、notification 方法

本文示例将 Element Plus 中的 ElMessage 消息提示, ElMessageBox 消息弹出框, ElNotification 消息通知 方法统一封装到全局 hooks 文件中方便全局调用 准备&#xff1a;在项目 src 目录中新建 hooks 目录、然后在 hooks 目录中新建 index.ts &#xff08;如果你没有使用 ts …...

【人工智能】Python在机器学习与人工智能中的应用

Python因其简洁易用、丰富的库支持以及强大的社区&#xff0c;被广泛应用于机器学习与人工智能&#xff08;AI&#xff09;领域。本教程通过实用的代码示例和讲解&#xff0c;带你从零开始掌握Python在机器学习与人工智能中的基本用法。 1. 机器学习与AI的Python生态系统 Pyth…...

linux上安装docker

在 Linux 上安装 Docker 是一个相对简单的过程。以下是针对 Debian 和其他基于 Debian 的发行版&#xff08;如 Ubuntu&#xff09;的详细步骤。如果您使用的是其他发行版&#xff08;如 CentOS 或 Fedora&#xff09;&#xff0c;也可以参考相应的官方文档进行安装。 安装 Do…...

LeetCode:1008. 前序遍历构造二叉搜索树

目录 题目描述: 代码: 第一种: 第二种: 第三种:分治法 题目描述: 给定一个整数数组&#xff0c;它表示BST(即 二叉搜索树 )的 先序遍历 &#xff0c;构造树并返回其根。 保证 对于给定的测试用例&#xff0c;总是有可能找到具有给定需求的二叉搜索树。 二叉搜索树 是一棵…...

开源远程桌面工具:RustDesk

在远程办公和远程学习日益普及的今天&#xff0c;我们经常需要远程访问办公电脑或帮助他人解决电脑问题。 市面上的远程控制软件要么收费昂贵&#xff0c;要么需要复杂的配置&#xff0c;更让人担心的是数据安全问题。 最近我发现了一款名为 RustDesk 的开源远程桌面工具&…...

nfs服务器--RHCE

一&#xff0c;简介 NFS&#xff08;Network File System&#xff0c;网络文件系统&#xff09;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计 算机&#xff08;不同的计算机、不同的操作系统&#xff09;之间通过TCP/IP网络共享资源&#xff0c;主要在unix系…...

使用 Elastic 3 步实现基于 OTel 的原生 K8s 和应用可观测性

作者&#xff1a;来自 Elastic Bahubali Shetti Elastic 的 OpenTelemetry 发行版现已支持 OTel Operator&#xff0c;可使用 EDOT SDK 自动检测应用程序&#xff0c;并管理 EDOT OTel Collector 的部署和生命周期以实现 Kubernetes 可观察性。了解如何通过 3 个简单步骤进行配…...

Vue3-小兔鲜项目出现问题及其解决方法(未写完)

基础操作 &#xff08;1&#xff09;使用create-vue搭建Vue3项目 要保证node -v 版本在16以上 &#xff08;2&#xff09;添加pinia到vue项目 npm init vuelatest npm i pinia //导入creatPiniaimport {createPinia} from pinia//执行方法得到实例const pinia createPinia()…...

【mysql】锁机制 - 3.意向锁

意向锁&#xff08;Intension Lock&#xff09; 是为了提高粗粒度锁性能而设置的一种预判机制&#xff0c;即在一个操作发起实际资源的锁申请行为之前&#xff0c;先对更粗力度的资源发起一个加锁意向声明。 为什么需要意向锁&#xff1f; 比如对于以下操作&#xff1a; 事务…...

Nuxt3 动态路由URL不更改的前提下参数更新,NuxtLink不刷新不跳转,生命周期无响应解决方案

Nuxt3 动态路由URL不更改的前提下参数更新&#xff0c;NuxtLink不刷新不跳转&#xff0c;生命周期无响应解决方案 首先说明一点&#xff0c;Nuxt3 的动态路由响应机制是根据 URL 是否更改&#xff0c;参数的更改并不会触发 Router 去更新页面&#xff0c;这在 Vue3 上同样存在…...

Spring Boot集成Redis:配置、序列化与持久化

Spring Boot集成Redis&#xff1a;配置、序列化与持久化 一、简介 什么是Redis Redis是一个开源的、基于内存的高性能键值对存储数据库&#xff0c;支持多种数据结构如字符串、哈希、列表、集合等。它以其卓越的性能、高可用性和持久性而广受欢迎。 为什么要使用Redis Red…...

JAVA:探索 PDF 文字提取的技术指南

1、简述 随着信息化的发展&#xff0c;PDF 文档成为了信息传播的重要媒介。在许多应用场景下&#xff0c;如数据迁移、内容分析和信息检索&#xff0c;我们需要从 PDF 文件中提取文字内容。JAVA提供了多种库来处理 PDF 文件&#xff0c;其中 PDFBox 和 iText 是最常用的两个。…...

当你项目服务器磁盘报警

当你们公司运维收到这样的邮件&#xff0c;大概率日志文件过大引起的 在Linux下如何不停止服务,清空nohup.out文件呢&#xff1f; nohup.out会一直一直自己增长下去&#xff0c;如果你的服务器硬盘不给力的话&#xff0c;很容易把应用也挂掉&#xff08;硬盘没空间 &#xff0…...

SpringBoot中Maven的定义及国内源配置教程,实现自动获取Jar包

推荐一个国内镜像API网站&#xff0c;无需信用卡及科学上网即可调用gpt&#xff0c;claude3&#xff0c;gemini等国外模型&#xff0c;感兴趣的可以看下&#x1f449;&#xff1a;https://api.atalk-ai.com/ SpringBoot中Maven的定义及国内源配置教程&#xff0c;实现自动获取J…...