微服务介绍

news2025/7/30 12:33:31

目录

  • 一、系统架构演变
    • 单体应用架构
    • 垂直应用架构
    • 分布式架构
    • SOA架构
    • 微服务架构
  • 二、微服务架构介绍
    • 微服务架构常见问题
    • 微服务架构常见概念
      • 服务治理
      • 服务调用
      • 服务网关
      • 服务容错
      • 链路追踪
    • 微服务架构常见问题解决方案
      • ServiceComd
      • ServiceCloud
      • ServiceCloud Alibaba
    • SpringCloud Alibaba介绍
      • 主要功能
      • 组件
  • 三、微服务环境搭建
    • 案例准备
      • 技术选性
      • 模块设计
      • 微服务调用
    • 创建父工程
    • 创建基础模块
    • 创建用户微服务
    • 创建商品微服务
    • 创建订单微服务
      • 测试

一、系统架构演变

单体应用架构

互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这
样可以减少开发、部署和维护的成本。
比如说一个电商系统,里面会包含很多用户管理,商品管理,订单管理,物流管理等等很多模块,
我们会把它们做成一个web项目,然后部署到一台tomcat服务器上。

在这里插入图片描述

优点:

  • 项目架构简单,小型项目的话, 开发成本低
  • 项目部署在一个节点上, 维护方便

缺点:

  • 全部功能集成在一个工程中,对于大型项目来讲不易开发和维护
  • 项目模块之间紧密耦合,单点容错率低
  • 无法针对不同模块进行针对性优化和水平扩展

垂直应用架构

随着访问量的逐渐增大,单一应用只能依靠增加节点来应对,但是这时候会发现并不是所有的模块
都会有比较大的访问量.
还是以上面的电商为例子, 用户访问量的增加可能影响的只是用户和订单模块, 但是对消息模块
的影响就比较小. 那么此时我们希望只多增加几个订单模块, 而不增加消息模块. 此时单体应用就做不
到了, 垂直应用就应运而生了.
所谓的垂直应用架构,就是将原来的一个应用拆成互不相干的几个应用,以提升效率。比如我们可
以将上面电商的单体应用拆分成:

  • 电商系统(用户管理 商品管理 订单管理)
  • 后台系统(用户管理 订单管理 客户管理)
  • CMS系统(广告管理 营销管理)

这样拆分完毕之后,一旦用户访问量变大,只需要增加电商系统的节点就可以了,而无需增加后台
和CMS的节点。

在这里插入图片描述

优点:

  • 系统拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平扩展
  • 一个系统的问题不会影响到其他系统,提高容错率

缺点:

  • 系统之间相互独立, 无法进行相互调用
  • 系统之间相互独立, 会有重复的开发任务

分布式架构

当垂直应用越来越多,重复的业务代码就会越来越多。这时候,我们就思考可不可以将重复的代码
抽取出来,做成统一的业务层作为独立的服务,然后由前端控制层调用不同的业务层服务呢?
这就产生了新的分布式系统架构。它将把工程拆分成表现层和服务层两个部分,服务层中包含业务
逻辑。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qAhmweLr-1669360041917)(springcloud_alibaba/3.png)]

优点:

  • 抽取公共的功能为服务层,提高代码复用性

缺点:

  • 系统间耦合度变高,调用关系错综复杂,难以维护

SOA架构

在分布式架构下,当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加
一个调度中心对集群进行实时管理。此时,用于资源调度和治理中心(SOA Service Oriented
Architecture,面向服务的架构)是关键。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E0FjZ2y0-1669360068476)(springcloud_alibaba/soa.png)]

优点:

  • 使用注册中心解决了服务间调用关系的自动调节

缺点:

  • 服务间会有依赖关系,一旦某个环节出错会影响较大( 服务雪崩 )
  • 服务关心复杂,运维、测试部署困难

微服务架构

微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步,它更加强调服务的"彻底拆分"。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UQEEY43W-1669360103623)(springcloud_alibaba/5.png)]

优点:

  • 服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
  • 微服务之间采用Restful等轻量级http协议相互调用

缺点:

  • 分布式系统开发的技术成本高(容错、分布式事务等)

二、微服务架构介绍

微服务架构, 简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独
立运行的项目。

微服务架构常见问题

一旦采用微服务系统架构,就势必会遇到这样几个问题:

  • 这么多小服务,如何管理他们?(服务治理 注册中心[服务注册 发现 剔除])
  • 这么多小服务,他们之间如何通讯?(restful rpc)
  • 这么多小服务,客户端怎么访问他们?(网关)
  • 这么多小服务,一旦出现问题了,应该如何自处理?(容错)
  • 这么多小服务,一旦出现问题了,应该如何排错? (链路追踪)

对于上面的问题,是任何一个微服务设计者都不能绕过去的,因此大部分的微服务产品都针对每一
个问题提供了相应的组件来解决它们。
在这里插入图片描述

微服务架构常见概念

服务治理

服务治理就是进行服务的自动化管理,其核心是服务的自动注册与发现。
**服务注册:**服务实例将自身服务信息注册到注册中心。
**服务发现:**服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提
供的服务。
服务剔除:服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到。
请添加图片描述

服务调用

在微服务架构中,通常存在多个服务之间的远程调用的需求。目前主流的远程调用技术有基于
HTTP的RESTful接口以及基于TCP的RPC协议。

  • REST(Representational State Transfer)
    这是一种HTTP调用的格式,更标准,更通用,无论哪种语言都支持http协议
  • RPC(Remote Promote Call)
    一种进程间通信方式。允许像调用本地服务一样调用远程服务。RPC框架的主要目标就是让远程服
    务调用更简单、透明。RPC框架负责屏蔽底层的传输方式、序列化方式和通信细节。开发人员在使
    用的时候只需要了解谁在什么位置提供了什么样的远程服务接口即可,并不需要关心底层通信细节
    和调用过程。
    区别与联系
比较项RESTfulRPC
通讯协议HTTP一般使用TCP
性能略低较高
灵活度
应用微服务架构SOA架构

服务网关

随着微服务的不断增多,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个
服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信可能出现:

  • 客户端需要调用不同的url地址,增加难度
  • 在一定的场景下,存在跨域请求的问题
  • 每个微服务都需要进行单独的身份认证
  • 针对这些问题,API网关顺势而生。

API网关直面意思是将所有API调用统一接入到API网关层,由网关层统一接入和输出。一个网关的
基本功能有:统一接入、安全防护、协议适配、流量管控、长短链接支持、容错能力。有了网关之后,
各个API服务提供团队可以专注于自己的的业务逻辑处理,而API网关更专注于安全、流量、路由等问
题。
请添加图片描述

服务容错

在微服务当中,一个请求经常会涉及到调用几个服务,如果其中某个服务不可用,没有做服务容错
的话,极有可能会造成一连串的服务不可用,这就是雪崩效应。
我们没法预防雪崩效应的发生,只能尽可能去做好容错。服务容错的三个核心思想是:

  • 不被外界环境影响
  • 不被上游请求压垮
  • 不被下游响应拖垮

请添加图片描述

链路追踪

随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联
网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程
语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要对一次请求涉及的
多个服务链路进行日志记录,性能监控即链路追踪

微服务架构常见问题解决方案

ServiceComd

请添加图片描述

Apache ServiceComb,前身是华为云的微服务引擎 CSE (Cloud Service Engine) 云服务,是全球
首个Apache微服务顶级项目。它提供了一站式的微服务开源解决方案,致力于帮助企业、用户和开发
者将企业应用轻松微服务化上云,并实现对微服务应用的高效运维管理。

ServiceCloud

请添加图片描述

Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基
础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用
Spring Boot的开发风格做到一键启动和部署。
Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服
务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留
出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Hoxton.SR9
2020-11-09
Spring Cloud Starter Build Hoxton.SR9
Spring Cloud Aws 2.2.5.RELEASE
Spring Cloud Vault 2.2.6.RELEASE
Spring Cloud Sleuth 2.2.6.RELEASE
Spring Cloud Contract 2.2.5.RELEASE
Spring Cloud Kubernetes 1.1.7.RELEASE
Spring Cloud Config 2.2.6.RELEASE
Spring Cloud Openfeign 2.2.6.RELEASE
Spring Cloud Commons 2.2.6.RELEASE
Spring Cloud Zookeeper 2.2.4.RELEASE
Spring Cloud Consul 2.2.5.RELEASE
Spring Cloud Gcp 1.2.6.RELEASE
Spring Cloud Netflix 2.2.6.RELEASE
Spring Cloud Gateway 2.2.6.RELEASE
Spring Cloud Cli 2.2.3.RELEASE

ServiceCloud Alibaba

请添加图片描述
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服
务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

SpringCloud Alibaba介绍

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服
务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接
入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

参考:
https://spring.io/projects/spring-cloud-alibaba
https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

主要功能

  • 服务限流降级:默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud
    Gateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修
    改限流降级规则,还支持查看限流降级 Metrics 监控。
  • **服务注册与发现:**适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。
  • **分布式配置管理:**支持分布式系统中的外部化配置,配置更改时自动刷新。
  • **消息驱动能力:**基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
  • **分布式事务:**使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
  • **阿里云对象存储:**阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任
    何时间、任何地点存储和访问任意类型的数据。
  • **分布式任务调度:**提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
    同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有
    Worker(schedulerx-client)上执行。
  • **阿里云短信服务:**覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建
    客户触达通道。

组件

  • **Sentinel:**把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳
    定性。

  • **Nacos:**一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  • **RocketMQ:**一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠
    的消息发布与订阅服务。

  • **Dubbo:**Apache Dubbo™ 是一款高性能 Java RPC 框架。

  • **Seata:**阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

  • **Alibaba Cloud ACM:**一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心
    产品。

  • Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提
    供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和
    访问任意类型的数据。

  • Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精
    准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。

  • Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速
    搭建客户触达通道。

三、微服务环境搭建

博主这一次是使用电商项目中的商品、订单、用户为案例进行演示

案例准备

技术选性

博主这边把数据库放到下一篇文章进行讲解,所有在这一个案例技术死数据

maven:3.5.4
数据库:MySQL 5.7
持久层: SpingData Jpa/Mybatis-plus
其他: SpringCloud Alibaba 技术栈

模块设计

springcloud-shop父工程
shop-common 公共模块【实体类】
shop-user 用户微服务 【端口: 807x】
shop-product 商品微服务 【端口: 808x】
shop-order 订单微服务 【端口: 809x】

请添加图片描述

微服务调用

在微服务架构中,最常见的场景就是微服务之间的相互调用。我们以电商系统中常见的用户下单为
例来演示微服务的调用:客户向订单微服务发起一个下单的请求,在进行保存订单之前需要调用商品微
服务查询商品的信息。
我们一般把服务的主动调用方称为服务消费者,把服务的被调用方称为服务提供者。
在这种场景下,订单微服务就是一个服务消费者, 商品微服务就是一个服务提供者。

请添加图片描述

创建父工程

创建一个maven工程,然后在pom.xml文件中添加下面内容

请添加图片描述
请添加图片描述

请添加图片描述
请添加图片描述

最后添加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.xlb</groupId>
    <artifactId>spcloud-shop</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- ①只作为配置文件 -->
    <packaging>pom</packaging>

    <!-- 导入pom依赖 -->
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.2.RELEASE</spring-boot.version>
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <!-- 锁定版本 -->
    <dependencyManagement>
        <dependencies>
            <!-- SpringBoot 依赖配置 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>

    </dependencyManagement>

</project>

其中的版本对应大家要注意,这边博主给大家参考

版本对应:

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

请添加图片描述

创建基础模块

这边博主给搭建演示两种创建基础模块发式
①Maven创建基础模块
1 创建shop-common 模块,在pom.xml中添加依赖

在这里插入图片描述

导入依赖

 <!--依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.56</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
        </dependency>
    </dependencies>

在这里插入图片描述
父模块自动添加了依赖,而用spring创建需要手动添加

2 创建实体类
用户

package com.xlb.model;

import lombok.Data;
//用户
@Data//不再去写set和get方法
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Integer uid;//主键
    private String username;//用户名
    private String password;//密码
    private String telephone;//手机号
}

商品

package com.xlb.model;

import lombok.Data;
//商品
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Product {
    private Integer pid;//主键
    private String pname;//商品名称
    private Double pprice;//商品价格
    private Integer stock;//库存
}

订单

package com.xlb.model;

import lombok.Data;

//订单
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Order {
    private Long oid;//订单id
    //用户
    private Integer uid;//用户id
    private String username;//用户名

    //商品
    private Integer pid;//商品id
    private String pname;//商品名称
    private Double pprice;//商品单价

    //数量
    private Integer number;//购买数量
}

创建用户微服务

1 创建模块 导入依赖
2 创建SpringBoot主类
3 加入配置文件
4 创建必要的接口和实现类(controller service dao)
新建一个shop-user 模块,然后进行下面操作
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

修改pom

首先把头部改成

在这里插入图片描述
下面导入


    <dependencies>
        <!--springboot-web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--shop-common-->
        <dependency>
            <groupId>com.xlb</groupId>
            <artifactId>shop-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

最终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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
        <artifactId>spcloud-alibaba</artifactId>
        <groupId>com.xlb</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>shop-user</artifactId>



    <dependencies>
        <!--springboot-web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--shop-common-->
        <dependency>
            <groupId>com.xlb</groupId>
            <artifactId>shop-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>


</project>

修改端口
在这里插入图片描述

Controller层

package com.xlb.shopuser.controller;

import com.xlb.model.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 波哥
 * @QQ 2212371722
 * @company 波哥集团
 * @create  2022-11-25 16:04
 */

@RestController
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/get/{id}")
    public User get(@PathVariable("id") Integer id){
        User xm = new User();
        xm.setUid(id);
        xm.setUsername("xm");
        xm.setPassword("123123");
        xm.setTelephone("123123123");
        return xm;
    }

}

创建商品微服务

创建步骤和配置步骤都是一模一样的所有这边博主就跳过了

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spcloud-alibaba</artifactId>
        <groupId>com.xlb</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>shop-product</artifactId>

    <dependencies>
        <!--springboot-web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--shop-common-->
        <dependency>
            <groupId>com.xlb</groupId>
            <artifactId>shop-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

Controller

package com.xlb.shopproduct.controller;

import com.xlb.model.Product;
import com.xlb.model.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 波哥
 * @QQ 2212371722
 * @company 波哥集团
 * @create  2022-11-25 16:05
 */
@RestController
@RequestMapping("/product")
public class ProductConller {

    @RequestMapping("/get/{pid}")
    public Product get(@PathVariable("pid") Integer pid){
        return new Product(pid,"西游记",66d,20);
    }

}

创建订单微服务

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
        <artifactId>spcloud-alibaba</artifactId>
        <groupId>com.xlb</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

   <modelVersion>4.0.0</modelVersion>
    <artifactId>shop-order</artifactId>

    <dependencies>
        <!--springboot-web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--shop-common-->
        <dependency>
            <groupId>com.xlb</groupId>
            <artifactId>shop-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

Crotroller

测试

启动会报错

在这里插入图片描述
把所有text删除

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

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

相关文章

[论文评析-CV]MediaPipe: A Framework for Building Perception Pipelines, ArXiv,2019

MediaPipe: A Framework for Building Perception Pipelines文章信息前言框架介绍MediaPipe用于目标检测(1)Detection branch:(2)Tracking branch:MediaPipe框架重要的概念调度其他References文章信息 论文题目&#xff1a;MediaPipe: A Framework for Building Perception Pi…

mysql误删数据后 快速恢复的办法

手抖不小心把表里的数据删除或修改错误怎么办&#xff1f;该如何快速恢复呢&#xff1f;遇到这样的问题怎么办&#xff1f;希望下面这篇文章能够帮助到你&#xff01; 第一步&#xff1a;保证mysql已经开启binlog&#xff0c;查看命令&#xff1a; 查看binklog是否开启 show…

运动耳机品牌排行榜前十名有哪些,2022年六款运动耳机值得入手

近几年来&#xff0c;运动健身潮流一直都非常火热&#xff0c;但一个人运动难免会感到枯燥&#xff0c;这个时候最需要的就是音乐的陪伴了&#xff0c;佩戴着运动耳机听音乐&#xff0c;运动的时间也会过得越来越快&#xff0c;不过在选购运动耳机的过程会比挑选普通蓝牙耳机还…

pycharm社区版不能使用conda

修改成cmd 本质是conda init 问题 专业版的直接在终端改成cmd就行了

(DS90UB3702TRURRQ1) LT8640SHV-2低噪声降压稳压器QFN

LT8640/LT8640-1降压稳压器采用Silent Switcher架构&#xff0c;设计用于最大限度地降低EMI/EMC辐射并在高达3MHz的频率下提供高效率。由于具有2.5μA的超低静态电流&#xff08;当输出处于全面调节状态时&#xff09;&#xff0c;因此适用于要求在非常小负载电流条件下获得极高…

ICP算法加速优化--多线程和GPU

LZ之前的文章ICP算法实现&#xff08;C&#xff09; 用C实现了基础的ICP算法&#xff0c;由于该算法是一种迭代的优化算法&#xff0c;里面含有大量循环操作以及矩阵运算&#xff0c;可以通过使用多线程或者GPU硬件来进行加速&#xff0c;具体分别可以通过OpenMP和CUDA编程实现…

六、【React基础】组件实例三大核心属性之三 refs + 事件处理

文章目录1、字符串形式的ref&#xff08;过时/不推荐&#xff09;2、回调形式的ref&#xff08;推荐&#xff01;&#xff01;&#xff01;&#xff09;● 回调ref中回调次数的问题3、createRef创建ref容器&#xff08;最新最推荐&#xff09;4、事件处理理解&#xff1a;组件内…

Web3D应用开发在线IDE【中文版】

nunuStudio 是一个Web 3D应用程序的集成开发环境&#xff0c;它提供用于在 3D 世界中创建和编辑对象的工具&#xff0c;支持JavaScript和Python对3D场景进行二次开发。nunuStudio中文版 由 BimAnt 提供。 如果你曾经使用过其他类似的框架&#xff08;unity、playcanvas、godot …

Spring Boot 3.0 正式发布了!一个超重要的版本!!

首发于 JavaGuide (「Java学习面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试&#xff0c;首选 JavaGuide&#xff01;) 紧跟着 Spring Framework 6.0 的正式发布&#xff0c;就在昨天&#xff0c;Spring Boot 3.0 也正式发布了&#xff01; 这是一…

供应多臂PEG衍生物4-Arm PEG-Azide,4-Arm PEG-N3,四臂-聚乙二醇-叠氮

1、名称 英文&#xff1a;4-Arm PEG-Azide&#xff0c;4-Arm PEG-N3 中文&#xff1a;四臂-聚乙二醇-叠氮 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Azide PEG Multi-arm PEGs 4、分子量&#xff1a;可定制&#xff0c;四臂-PEG 2000-叠氮、4-Arm PEG-N3 20000、…

深入分析序列化和反序列化原理,终于知道serialVersionUID到底有什么用了

一个问题引发的思考 下面是一个简单的socket通信demo。 通信数据类&#xff1a; package com.zwx.serialize.demo; public class SocketUser { public SocketUser(String id, String name) {this.id id;this.name name; }private String id; private String name;public St…

ADAU1860调试心得(2)硬件和软件的详细说明

硬件 一台64位的PC&#xff0c;一块ADAU1860EVB开发板&#xff0c;一个LARK-1860专用仿真器&#xff0c;音频线若干&#xff0c;mini USB线一根&#xff0c;一个到三个输入音源&#xff0c;可以是PC或者手机或者其他模拟音频输入设备&#xff0c; 一个输出音源设备&#xff0c;…

什么是DCS系统?DCS和SCADA的区别

如果你在工业自动化的企业环境中操作&#xff0c;可能听说过分布式控制系统 (DCS) 和监控和数据采集 (SCADA) 系统。 DCS系统和SCADA系统有很多共同点&#xff0c;因为它们都被称为受控计算机系统&#xff0c;接收和评估合法数据以实现远程访问监控和管理。 DCS(分布式控制系…

Python实现BP神经网络ANN单隐层分类模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念&#xff0c;是一…

内外通、效益增 | 数商云•瓴犀产品3.0开启全方位精准精细化协同模式

今年以来&#xff0c;芯片短缺、原材料价格飙升、集装箱价格高企等现象再次将国内外供应链问题推到了聚光灯下。在这种背景下&#xff0c;供应链协同的重要性日益凸显&#xff0c;供应链协同的趋势正在加速。一方面&#xff0c;随着电子商务、直播等前端消费场景的多样化&#…

The Sandbox 与韩流 Web 3.0 初创企业 Modhaus 达成合作

此合作关系旨在与韩流女团「tripleS」一起开展元宇宙业务。 简要概括 创建一个粉丝参与的社交中心并举办各种活动。 发布 tripleS NFT、人物化身的可穿戴设备和数位收藏品。 Modhaus 和 The Sandbox 将创建一个社交中心&#xff0c;让粉丝参与在元宇宙举办的活动&#xff0c;以…

基于MxNet实现目标检测-FasterRCNN【附部分源码及模型】

文章目录前言目标检测发展史及意义一、数据集的准备1.标注工具的安装2.数据集的准备3.标注数据4.解释xml文件的内容二、网络结构的介绍三、代码实现0.工程目录结构如下1.导入库2.配置GPU/CPU环境3.数据加载器4.模型构建5.模型训练1.学习率设置2.优化器设置3.损失设置4.循环训练…

流程编排、如此简单-通用流程编排组件JDEasyFlow介绍

作者&#xff1a;李玉亮 JDEasyFlow是企业金融研发部自研的通用流程编排技术组件&#xff0c;适用于服务编排、工作流、审批流等场景&#xff0c;该组件已开源(https://github.com/JDEasyFlow/jd-easyflow)&#xff0c;目前在部门的内部业务系统和科技输出系统中广泛应用&…

项目经理年终夜话:我的“第二年状态”

近日&#xff0c;网络热词“第二年状态”又引发了网友们的热议&#xff0c;是指最初的热情消磨后&#xff0c;幻想破灭&#xff0c;在理想与现实巨大落差面前&#xff0c;陷入迷茫与彷徨。 而“如何度过第二年状态&#xff1f;”这一话题也被大家讨论和分享。其中&#xff0c;贾…

分布式文件系统HDFS实践及原理详解part3

HDFS原理 说明&#xff1a;3.5开头目录是因为和上篇文章内容同属一章&#xff0c;所以开头使用了3.5 3.5 HDFS核心设计 3.5.1 心跳机制 1、 Hadoop 是 Master/Slave 结构&#xff0c;Master 中有 NameNode 和 ResourceManager&#xff0c;Slave 中有 Datanode 和 NodeManag…