【AWS实验】 配置中转网关及对等连接

news2024/11/29 10:39:41

文章目录

    • 实验概览
    • 目标
    • 实验环境
    • 任务 1:查看网络拓扑并创建基准
    • 任务 2:创建中转网关
    • 任务 3:创建中转网关挂载
    • 任务 4:创建中转网关路由表
      • 任务 4.1:创建路由表关联
      • 任务 4.2:创建路由传播
    • 任务 5:更新 VPC 路由表
      • 任务 5.1:网络验证
    • 任务 6:创建与远程区域中转网关的对等连接
      • 任务 6.1:记录远程区域的中转网关 ID
      • 任务 6.2:创建中转网关对等连接
      • 任务 6.3:接受中转网关对等连接请求 – 远程区域
      • 任务 6.4:更新路由表关联 – 远程区域
      • 任务 6.5:更新中转网关路由表 – 远程区域
      • 任务 6.6:更新 VPC 路由表 – 远程区域
      • 任务 6.7:网络验证
    • 任务 7:创建路由筛选条件
      • 任务 7.1:网络验证
    • 任务 8:可视化和分析网络(可选)
      • 任务 8.1:将网络可视化
      • 任务 8.2:分析路由
    • 总结

实验概览

可以使用对等连接来连接 Amazon Virtual Private Cloud (Amazon VPC)。但是,如果无法集中管理连接策略,那么跨多个 Amazon VPC 管理点到点连接可能会造成运营成本高昂且操作繁琐。对于本地连接,需要将 AWS VPN 附加到每个单独的 Amazon VPC。当 VPC 数量增长到数百个时,这种解决方案的构建可能非常耗时,而且难以管理。

使用 AWS Transit Gateway只需要创建和管理从中央网关到网络中每个 VPC、本地数据中心或远程办公室的一条连接。中转网关就像一个轮轴,控制着流量在连接的所有网络之间的路由方式,而这些网络就像辐条一样。这种轴辐式模型可以显著简化管理工作并降低运营成本,因为每个网络只需连接到中转网关,而不是连接到所有其他网络。将任何新的 VPC 连接到中转网关,然后该 VPC 就会自动向连接到中转网关的所有其他网络开放。这种易连接性让您能够随着需求的增长轻松地扩展网络。

在本实验中,将通过中转网关来构建和配置路由,这些中转网关具有不同的复杂程度。首先,将检查现有 VPC、子网、路由表和 Amazon Elastic Compute Cloud (Amazon EC2) 实例。然后,将创建一个中转网关并将四个现有 VPC 附加到该网关。需要研究中转网关上的默认路由表,该路由表可以让附加到中转网关的 VPC 进行多对多通信。在确认中转网关正常运行后,需要修改该中转网关上的路由表,以便隔离特定 VPC 之间的通信。最后,需要跨区域边界建立两个中转网关的对等连接,以便展示如何配置具有中转网关的全局网络。

能够在不同 AWS 区域之间建立中转网关对等连接,客户就可以扩展这种连接,并建立跨多个 AWS 区域的全局网络。使用区域间中转网关对等连接的流量会始终留在 AWS 全球网络中,永远不会通过公共互联网。这可以减少威胁载体,例如常见攻击和分布式拒绝服务 (DDoS) 攻击。区域间中转网关对等连接可以加密区域间的流量,而且不会发生单点故障。

目标

完成本实验后,将能够:

  • 配置中转网关
  • 将 VPC 附加到中转网关
  • 使用 AWS Transit Gateway 控制和自定义路由
  • 建立两个区域之间的中转网关对等连接
  • 使用 Network Manager 可视化和分析您的网络

实验环境

本实验在主区域的不同 VPC 上预置了四个 EC2 实例。在远程区域中预置了一个 EC2 实例和一个中转网关。将在主区域中配置一个中转网关,将 VPC 附加到该中转网关,更新路由,然后验证主区域中的所有 EC2 实例是否能相互通信。然后,将建立中转网关与远程区域的对等连接,并验证所有 EC2 实例之间的网络连接。最后,将创建路由筛选条件来限制特定 VPC 之间的连接

所有后端组件(例如 Amazon EC2 实例和 AWS Identity and Access Management (IAM) 角色)都已内置于实验中。

AWS Transit Gateway:将 Amazon VPC 和本地网络连接到单个网关。利用 Transit Gateway,网络将得到简化并可以扩展。

Amazon VPC:在定义的虚拟网络中启动 AWS 资源。这种虚拟网络与您在自己的数据中心中运行的传统网络极其相似,并且可以让使用 AWS 的可扩展基础设施。

AWS Transit Gateway Network Manager:跨 AWS 和本地站点集中管理您的网络。在集中式控制面板中将您的全局网络可视化为逻辑示意图或地图。通过 Amazon CloudWatch 指标和事件监控您的网络,以便了解网络拓扑、路由和连接状态的变化。

下图显示了为本实验预置的资源以及在实验开始时连接这些资源的方式:

image-20230903111427122


任务 1:查看网络拓扑并创建基准

在此任务中,使用互联网控制消息协议 (ICMP) 来验证命令主机与其他主机之间的网络可访问性。已经配置了四个 Amazon EC2 实例,标记为主机 A 到 D,这些实例位于同一个主区域,每个都有自己的 VPC。主机 A 在一个公有子网中,将被用作命令主机。下图显示了实验环境中的当前配置:

image-20230903111650516

现在,对每个实例的私有 IP 地址执行 Ping 操作。IP 地址可以在实验页面的左侧找到。完成后续步骤后,在文本编辑器中记录结果。表的示例如下:

image-20230903112101373

表 A:Ping 测试结果

主机结果
主机 B通过/失败
主机 C通过/失败
主机 D通过/失败

运行以下命令。将 替换为EC2的 HostB IP 地址:【重复上述步骤,对 HostCHostD 执行 Ping 操作。】

ping <Host IP address>

image-20230903112447138

注意:由于每个主机都在自己的私有子网中,而且各主机之间没有配置路由,预计对每个主机执行的 ICMP Ping 操作都会出现超时失败。


任务 2:创建中转网关

在此任务中,将在主区域创建一个中转网关中转网关是一种网络传输枢纽,可以将同一账户或不同账户内挂载的资源(VPC 和 VPN)互联。

image-20230903112550937

AWS 管理控制台中,使用 AWS 搜索栏搜索 VPC,然后从结果列表中选择该服务。

在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分。

选择 Transit Gateways(中转网关)。

在页面顶部,选择 Create transit gateway(创建中转网关)。

image-20230903112746441

配置以下各项:

  • Name tag(名称标签):maintransitgw
  • Amazon side ASN(Amazon 端 ASN):65001
  • 取消选中 VPN ECMP support(VPN ECMP 支持)
  • 取消选中 Default route table association(原定设置路由表关联)
  • 取消选中 Default route table propagation(原定设置路由表传播)
  • 选择 创建中转网关 按钮。

现在已将私有自治系统编号 (ASN) 用于中转网关,并为附加到中转网关的 VPC 启用了 DNS 支持。

PS:边界网关协议 (BGP) 会话的 AWS 端的自治系统编号 (ASN)。可以使用原定设置的 ASN,也可以在 64512-65534 或 4200000000-4294967294 范围内指定私有 ASN。

页面顶部将显示一条绿色边框,内容为:

image-20230903113103975

image-20230903113135455

注意:中转网关处于待处理状态几分钟后,会变为可用状态。

在文本编辑器中记录中转网关 ID。(本实验中转网关ID:tgw-0ab8c846a55b43bc2)

image-20230903113237904

附加信息:中转网关充当一种区域虚拟路由器,用于路由在 VPC 和 VPN 连接之间流动的流量。


任务 3:创建中转网关挂载

在此任务中,需要将 VPC 附加到中转网关,如下图所示:

image-20230903113334721

在左侧导航窗格的 Transit Gateways(中转网关)部分中,选择 Transit Gateway Attachments(中转网关挂载)。

在页面顶部,选择 Create transit gateway attachment(创建中转网关挂载)按钮。

image-20230903113439939

配置以下各项:

  • Name tag - optional(名称标签 – 可选):vpc-a
  • Transit Gateway ID(中转网关 ID):选择中转网关 ID
  • Attachment type(挂载类型):VPC
  • VPC ID:选择名为 vpc-a 的 VPC
  • 选择 Create transit gateway attachment(创建中转网关挂载)按钮。

image-20230903113723980

重复上述步骤,将vpc-bvpc-cvpc-d 附加到中转网关。

提示:请等待所有中转网关挂载的状态均变为可用,然后再继续下一项任务。

image-20230903113956640


任务 4:创建中转网关路由表

在此任务中,需要使用中转网关路由表为中转网关挂载配置路由路由表可以控制所有关联挂载的流量的流动方式。

在左侧导航窗格的 Transit Gateways(中转网关)部分中,选择 Transit Gateway Route Tables(中转网关路由表)。

在页面顶部,选择 Create transit gateway route table(创建中转网关路由表)按钮。

配置以下各项:

  • Name Tag - optional(名称标签 – 可选):maintransitgw-rt
  • Transit Gateway ID(中转网关 ID):选择中转网关 ID
  • 选择 Create transit gateway route table(创建中转网关路由表)按钮。

image-20230903114220727

image-20230903114257871

注意:中转网关路由表处于待处理状态几分钟后,会变为可用状态。

image-20230903114332978

image-20230903114400459

任务 4.1:创建路由表关联

在此任务中,需要将中转网关路由表与中转网关挂载相关联。将挂载与路由表关联之后,流量就可以从挂载发送到目标路由表

注意:一个中转网关挂载只能与一个路由表相关联。每个路由表可以关联零到多个挂载,并可以将数据包转发到其他挂载。

选择 maintransitgw-rt 中转网关路由表。 选择 Associations(关联)选项卡。

选择 Create association(创建关联)

配置以下各项:

  • Choose attachment to associate(选择要关联的挂载):选择名称标签为 vpc-a 的挂载 ID
  • 选择 Create association(创建关联)按钮。

image-20230903114602531

重复上述步骤,将 vpc-bvpc-cvpc-d 的关联添加到路由表中。

注意:创建每个关联可能需要几分钟时间。请刷新页面,直到所有挂载的状态都显示为 Associated(已关联)。

image-20230903115103428


任务 4.2:创建路由传播

在此任务中,需要使用路由传播将路由表中的路由添加到挂载。添加传播之后,路由可以从挂载传播到目标中转网关路由表。一个挂载可以传播到多个路由表。

选择 Propagations(传播)选项卡。

选择 Create propagation(创建传播)按钮。

image-20230903115136605

配置以下各项:

  • 选择要传播的挂载:选择名称标签为 vpc-a 的挂载 ID
  • 选择 Create propagation(创建传播)按钮。

image-20230903115208471

重复上述步骤,为 vpc-bvpc-cvpc-d 创建传播。

传播创建完成后,可以在 Routes(路由)选项卡上查看填充的所有 VPC 的子网。

image-20230903115307640


任务 5:更新 VPC 路由表

在此任务中,将为每个 VPC 中的子网添加一个路由指向作为目标目的地的中转网关。这样,发往本地子网以外的任何私有子网的任何流量都将通过路由流向中转网关。

在左侧导航窗格中,向上滚动到 Virtual Private Cloud 部分,然后选择 Route Tables(路由表)。

选择名为 vpc_a-public 的路由表。

image-20230903115514401

从页面顶部的 *Actions* (操作)菜单中,选择 Edit routes(编辑路由)。

image-20230903115614998

选择****Add route****(添加路由),然后配置以下各项:

  • Destination(目的地):10.0.0.0/8
  • Target(目标):复制并粘贴您在任务 1 中复制的中转网关 ID
  • 选择 Save changes(保存更改)按钮。

TGW

注意:对于目标,您也可以键入 tgw-,并选择名为 maintransitgw 的中转网关。

image-20230903120030617

PS:重复上述步骤,为每个路由使用相同目的地,将相应路由添加到 vpc_b-privatevpc_c-privatevpc_d-private 路由表。

任务 5.1:网络验证

运行以下命令。将 替换为EC2的 HostB IP 地址:【重复上述步骤,对 HostCHostD 执行 Ping 操作。】

ping <Host IP address>

请注意,HostE 位于远程区域,请重复之前的步骤,对 HostE 执行 Ping 操作

思考:针对 HostBHostCHostD 的网络可访问性测试本应是成功的。但针对 HostE 的测试却失败了。为什么?

image-20230903121229362


任务 6:创建与远程区域中转网关的对等连接

在此任务中,将在主区域中转网关与远程区域中转网关之间建立对等连接。AWS Transit Gateway 使用自治系统编号 (ASN) 与另一个中转网关建立对等连接。用于对等连接的路由协议是边界网关协议 (BGP)

任务 6.1:记录远程区域的中转网关 ID

AWS 管理控制台中,使用 AWS 搜索栏搜索VPC ,然后从结果列表中选择该服务。

现在将 AWS 区域切换到为远程区域,即切换AWS区域us-east-1

在 AWS 管理控制台的右上角,选择 Region name(区域名称)。

image-20230903122027216

在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateways(中转网关)。

在文本编辑器中记录远程网关的中转网关 IDtgw-0d1ba3be61f49fab9

image-20230903122238401


任务 6.2:创建中转网关对等连接

在此任务中,将添加与远程区域中转网关的对等连接。将在主区域中配置对等连接。

现在,将 AWS 区域更改回主区域

在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Attachments(中转网关挂载)。

在页面顶部,选择 Create transit gateway attachment(创建中转网关挂载)按钮。

配置以下各项:

  • Name tag - optional(名称标签 – 可选):remote-vpc-e
  • Transit Gateway ID(中转网关 ID):选择中转网关
  • Attachment type(挂载类型):Peering Connection(对等连接)
  • Account(账户):My account(我的账户)
  • Region(区域):选择远程区域名称
  • Transit gateway (accepter)(中转网关(接受方)):复制并粘贴您在上一部分中记录的远程区域的中转网关 ID
  • 选择 Create transit gateway attachment(创建中转网关挂载)按钮。

image-20230903122804744

注意:挂载的状态将依次变为正在发起请求等待接受

image-20230903122859850

image-20230903122936191


任务 6.3:接受中转网关对等连接请求 – 远程区域

目标中转网关必须批准对等连接请求。在此任务中,将允许从主区域远程区域的对等连接。

现在将 AWS 区域更改为远程区域

注意:如果收到内容为 An error occurred, Transit Gateway Attachment tgw-attach-xxxxxxxx was deleted or does not exist.(出现错误,中转网关挂载 tgw-attach-xxxxxxxx 被删除或不存在。)的错误消息,请忽略。

在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Attachments(中转网关挂载)。

要确认,请选择 接受 按钮。

image-20230903125020735

image-20230903125045752

image-20230903125425679

image-20230903125927067

image-20230903125958431

注意:挂载的状态可能需要几分钟的时间才能从待处理变为可用

任务 6.4:更新路由表关联 – 远程区域

在此任务中,需要将挂载关联到路由表。这样,流量就可以从挂载发送到目标路由表。

在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Route Tables(中转网关路由表)。

选择 remote-rt 中转网关路由表。

选择 Associations(关联)选项卡。

选择 Create association(创建关联)按钮。

配置以下各项:

  • Choose attachment to associate(选择要关联的挂载):选择不带名称标签且 Resource Type(资源类型)为 peering(对等连接)的挂载 ID
  • 选择 Create association(创建关联)按钮。

image-20230903132103435

image-20230903132650355


任务 6.5:更新中转网关路由表 – 远程区域

在此任务中,将修改远程区域中转网关的默认路由,以便指向对等中转网关。通过执行这一操作,可以将本地子网以外的流量路由到对等中转网关。

选择 Routes(路由)选项卡。

选择 CIDR 为 0.0.0.0/0 的路由。

*Actions* (操作)菜单中,选择 Replace static route(替换静态路由)。

此时将显示 Replace static route(替换静态路由)页面。

配置以下各项:

  • Choose attachment(选择挂载):选择远程对等连接的挂载 ID,该连接没有名称标签且 Resource Type(资源类型)为 peering(对等连接)
  • 选择 Replace static route(替换静态路由)按钮。

image-20230903132753256

image-20230903132851695

image-20230903132943323


任务 6.6:更新 VPC 路由表 – 远程区域

在此任务中,将添加默认路由以便指向中转网关。这样,HostE 就能够向中转网关发送非本地流量。

在左侧导航窗格中,向上滚动到 Virtual Private Cloud 部分,然后选择 Route Tables(路由表)。

选择 vpc_e-private 路由表。

*Actions* (操作)菜单中,选择 Edit routes(编辑路由)。

选择 *Add route*(添加路由),然后配置以下各项:

  • Destination(目的地):0.0.0.0/0
  • Target(目标):复制并粘贴远程区域的中转网关 ID
  • 选择 Save changes(保存更改)按钮。

image-20230903133335654

注意:对于目标,您也可以键入 tgw-,并选择名为 remote-tgw 的中转网关。

任务 6.7:网络验证

重复任务 1 中的步骤,对 HostBHostCHostDHostE 执行 Ping 操作。记录结果。

请注意,命令主机仍然无法对 HostE 执行 Ping 操作。更新主区域中的路由,以便命令主机可以对 HostE 执行 Ping 操作。

解决方案

注意:在更新路由之后,您应能够访问所有主机。

1、更新主区域的路由表关联

确保您位于控制台中的主区域内。

在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Route Tables(中转网关路由表)。

选择 maintransitgw-rt 中转网关路由表。

选择 Associations(关联)选项卡。

选择 Create association(创建关联)按钮。

配置以下各项:

  • Choose attachment to associate(选择要关联的挂载):选择名称标签为 remote-vpc-e 的 Attachment ID(挂载 ID)
  • 选择 Create association(创建关联)按钮。

image-20230903134941391

2、更新主区域的中转网关路由表

其次,添加静态路由表以从远程区域添加 VPC E 子网,从而指向对等连接中转网关关联。这样,中转网关就可以路由发送到 VPC E 的流量。

选择 Routes(路由)选项卡。

选择 Create static route(创建静态路由)

配置以下各项:

  • CIDR:10.0.0.0/16
  • Choose attachment(选择挂载):选择名称标签为 remote-vpc-e 的挂载 ID
  • 选择 Create static route(创建静态路由)按钮。

注意:选择 Routes(路由)选项卡,查看新路由。如果没有立即显示,请在几秒钟后刷新页面,直到路由显示。

image-20230903135226138

image-20230903135314473

image-20230903135420983

网络验证

重复任务 1 中的步骤,对 HostBHostCHostDHostE 执行 Ping 操作。记录结果。

命令主机现在应该能够成功对 HostE 执行 Ping 操作。

image-20230903135539125

任务 7:创建路由筛选条件

在此任务中,将使用黑洞路由来筛选流量。可以为 VPC B 和 VPC D 中的子网创建黑洞路由,如下图所示:

image-20230903135638781

中转网关路由表中的黑洞路由会丢弃与路由匹配的流量。

AWS 管理控制台中,使用 AWS 搜索栏搜索 VPC,然后从结果列表中选择该服务。

在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Route Tables(中转网关路由表)。

选择 maintransitgw-rt 中转网关路由表。

*Actions* (操作)菜单中,选择 Create static route(创建静态路由)。

此时将显示 Create static route(创建静态路由)页面。

配置以下各项:

  • CIDR*:10.2.2.0/24
  • 选择 Blackhole(黑洞)
  • 选择 Create static route(创建静态路由)按钮。

注意:选择 Routes(路由)选项卡,查看新路由。如果没有立即显示,请在几秒钟后刷新页面,直到路由显示。

image-20230903152614682

image-20230903152724669

重复上述步骤,为 VPC D 子网 (10.4.4.0/24) 添加黑洞路由。

image-20230903152853431

任务 7.1:网络验证

重复任务 1 中的步骤,对 HostBHostCHostDHostE 执行 Ping 操作。记录结果。

注意:针对 HostB 和 HostD 的网络可访问性测试应该会失败。

image-20230903153113680

任务 8:可视化和分析网络(可选)

在此任务中,需要使用 Network Manager 在集中式控制面板中将全局网络可视化为逻辑示意图或地图。然后,使用路由分析器来检查命令主机与 HostE 之间的路由。

AWS 管理控制台中,使用 AWS 搜索栏搜索VPC ,然后从结果列表中选择该服务。

在左侧导航窗格中,选择 Network Manager(网络管理器)。

选择 Transit Gateway Network Manager(中转网关网络管理器)卡的链接文本。

image-20230903153458616

选择 Get Started(开始使用)。

选择 *Create global network*(创建全局网络)或 Create global network(创建全球网络)。

image-20230903153604334

配置以下各项:

  • Name(名称):TGW-Network
  • Description(描述):Transit Gateway Network
  • 选择 Next(下一步)。
  • 取消选择 Add core network in your global network(在全局网络中添加核心网络)
  • 选择 Next(下一步)。
  • 选择 Create global network(创建全局网络)按钮。

image-20230903153712090

image-20230903153745785

image-20230903153803176

image-20230903153842162

等待 Global network State(全局网络状态)显示可用

Global networks(全局网络)窗格中,选择 TGW-Network 名称的超链接。

从左侧导航窗格中选择 Transit gateways(中转网关)。

选择 Register Transit Gateway(注册中转网关),以便添加要监控的中转网关。

image-20230903154312185

选择两个中转网关,然后选择 注册中转网关 按钮。

image-20230903154432454

注意:状态可能需要几分钟的时间才能从待处理变为可用。请时不时刷新浏览器页面,直到状态显示为可用

image-20230903154544064

任务 8.1:将网络可视化

要查看网络,在左侧导航窗格中选择 Transit gateway network(中转网关网络)。

查看 Geography(地理位置)、Topology tree(拓扑树)和 Monitoring(监控)选项卡。

image-20230903154724101

在此控制面板上,您可以将全局网络可视化为拓扑图和地图。您可以查看使用率指标,如输入/输出的字节数、输入/输出的数据包和丢失的数据包。您还可以查看有关拓扑、路由和上/下行连接状态变化的提醒。

image-20230903154951931

image-20230903155033092

image-20230903155358527

任务 8.2:分析路由

选择 Route Analyzer(路由分析器)选项卡。

配置以下各项:

Source(源)

  • Transit Gateway(中转网关):maintransitgw
  • Transit Gateway attachment(中转网关挂载):vpc-a
  • IP address(IP 地址):复制并粘贴 CommandHostPrivateIP 公有IP 地址
  • 选择 Include return path in results(在结果中包含返回路径)

Destination(目的地)

  • Transit Gateway(中转网关):remote-tgw
  • Transit Gateway attachment(中转网关挂载):vpc-e
  • IP address(IP 地址):复制并粘贴实验页面左侧的 HostE IP 地址

要分析网络路径,请选择 Run route analysis(运行路由分析)按钮。

可以查看命令主机与 HostE 之间的转发和返回网络路径。可以使用这一功能排除两个终端节点之间的网络问题

image-20230903155555695
image-20230903155758505

总结

  • 配置中转网关
  • 将 VPC 附加到中转网关
  • 使用 AWS Transit Gateway 控制和自定义路由
  • 建立两个区域之间的中转网关对等连接
  • 使用网络管理器可视化和分析您的网络

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

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

相关文章

velodyne_msgs/VelodyneScan数据流消息转化为sensor_msgs/PointCloud2点云帧消息

目的 在查看一个开源数据集时&#xff0c;点云信息格式为velodyne_msgs/VelodyneScan&#xff0c;无法在rviz中显示&#xff0c;需要转换为sensor_msgs/PointCloud2。 软件版本 Ubuntu20.04 Noetic 激光雷达型号 32线激光雷达velodyne 32E 参考方法 ROS Noetic velodyn…

【DP】CF Edu 21 E

Problem - E - Codeforces 题意&#xff1a; 思路&#xff1a; 就是一个 N为1e5&#xff0c;M为3e5的背包问题&#xff0c;不过特殊条件是 w < 3 我们去从最简单的情况开始考虑 当只有w 1的物品和w 2的物品时&#xff0c;考虑贪心地把物品按价值排序&#xff0c;然后选…

Python数据分析实战-判断一组序列(列表)的变化趋势(附源码和实现效果)

实现功能 判断一组序列&#xff08;列表&#xff09;的变化趋势 实现代码 from sklearn.linear_model import LinearRegression import numpy as np # 计算相邻两个数之间的差值的均值&#xff0c;并判断变化趋势。 def trend(lst):diff [lst[i1] - lst[i] for i in range(…

Python之循环-三元表达式

Python之循环-三元表达式 continue, break break 结束循环 break语句可以提前结束循环。然后执行循环之后的语句。 continue continue用于跳出当前循环&#xff0c;执行下一次循环。 示例&#xff1a; 如下示例中是一个for循环&#xff0c;range(10)&#xff0c;然后遍历r…

【高效编程技巧】编程菜鸟和编程大佬的差距究竟在哪里?

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《高效编程技巧》《C语言进阶》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言1.如何写出好的代码&#xff1f;1.2 如何分析一个函数写的怎么样 2. 代码板式的重要性2.1 代码…

【C++】学习STL中的stack和queue

❤️前言 今天这篇博客的内容主要关于STL中的stack、queue和priority_queue三种容器。 正文 stack和queue的使用方式非常简单&#xff0c;我们只要根据之前学习数据结构的经验和文档介绍就可以轻松上手。于是我们直接开始对它们的模拟实现。 stack和queue的模拟实现 stack和q…

redis实战-实现优惠券秒杀解决超卖问题

全局唯一ID 唯一ID的必要性 每个店铺都可以发布优惠券&#xff1a; 当用户抢购时&#xff0c;就会生成订单并保存到tb_voucher_order这张表中&#xff0c;而订单表如果使用数据库自增ID就存在一些问题&#xff1a; id的规律性太明显&#xff0c;容易被用户根据id的间隔来猜测…

不同路径【动态规划】

不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f;…

python 美国总统身高统计与分析

美国总统身高统计与分析 1.安装依赖2.下载数据集3.数据处理4.结果展示 1.安装依赖 pip install pandas pip install numpy pip install matplotlib2.下载数据集 链接&#xff1a;https://pan.baidu.com/s/1aZLtkLyvQvRLb9tJ-B1krA 提取码&#xff1a;thms –来自百度网盘超级…

Spring Cloud 系列之OpenFeign:(8)链路追踪续

传送门 Spring Cloud Alibaba系列之nacos&#xff1a;(1)安装 Spring Cloud Alibaba系列之nacos&#xff1a;(2)单机模式支持mysql Spring Cloud Alibaba系列之nacos&#xff1a;(3)服务注册发现 Spring Cloud 系列之OpenFeign&#xff1a;(4)集成OpenFeign Spring Cloud …

无涯教程-JavaScript - CUBEMEMBERPROPERTY函数

描述 CUBEMEMBERPROPERTY函数从多维数据集返回成员属性的值。使用此函数可以验证多维数据集中是否存在成员名称,并返回该成员的指定属性。 语法 CUBEMEMBERPROPERTY (connection, member_expression, property)争论 Argument描述Required/OptionalconnectionName of the co…

Glide的使用及源码分析

前言 依赖 implementation com.github.bumptech.glide:glide:4.16.0 github: GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling 基本使用 //加载url Glide.with(this) .load(url) .placeholder(R.drawable.placehol…

Python 没有 pip 包问题解决

最近需要搞一个干净的Python,从官网上直接下载解压可用的绿色版&#xff0c;发现无法正常使用PiP 一 官网下载Python https://www.python.org/downloads/ 选择 embeddable package,这种是免安装的包&#xff0c;解压后可以直接使用。 二 配置环境变量 添加环境变量&#xff1a…

Cortex-A7 架构

参考《 Cortex-A7 Technical ReferenceManua.pdf 》和《 ARM Cortex-A(armV7) 编程手 册 V4.0.pdf 》 【 正点原子】I.MX6U嵌入式Linux驱动开发指南V1.6学习 1.Cortex-A7 MPCore 简介 I.MX6UL 使用的是 Cortex-A7 架构&#xff0c;Cortex-A7 MPcore 处理器支持 1~4 核&#…

【云原生进阶之PaaS中间件】第一章Redis-1.3Redis配置

1 Redis配置概述 Redis支持采用其内置默认配置的方式来进行启动&#xff0c;而不需要提前配置任何文件&#xff0c;但是这种启动方式只推荐在测试和开发环境中使用&#xff0c;但更好的方式是通过提供一个Redis的配置文件来对Redis进行配置&#xff0c; 这个配置文件一般命名为…

常用的msvcp140.dll丢失的解决方法,msvcp140.dll丢失的原因

自从电脑出现故障&#xff0c;我的生活变得一团糟。他每天都需要使用电脑处理工作&#xff0c;可是突然有一天&#xff0c;他发现许多软件和游戏都无法正常运行。错误提示显示“找不到msvcp140.dll”&#xff0c;这让他感到非常困扰。今天想和大家分享一个在计算机使用过程中经…

Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】

Docker进阶&#xff1a;mysql 主从复制、redis集群3主3从【扩缩容案例】 一、Docker常规软件安装1.1 docker 安装 tomcat&#xff08;默认最新版&#xff09;1.2 docker 指定安装 tomcat8.01.3 docker 安装 mysql 5.7&#xff08;数据卷配置&#xff09;1.4 演示--删除mysql容器…

【计算机组成 课程笔记】4.2 除法器的硬件实现

课程链接&#xff1a; 计算机组成_北京大学_中国大学MOOC(慕课) 4 - 5 - 405-除法的运算过程&#xff08;09-43--&#xff09;_哔哩哔哩_bilibili 在加减乘除这样的基本算数运算中&#xff0c;除法是最为复杂的&#xff0c;因此我们想要实现硬件的除法器&#xff0c;还是从最简…

yolov2相较于yolov1的改进

目录 前言 BN层取代了Dropout 使用了高分辨率分类器 K-means选定先验框的尺寸 网络结构—darknet19 细粒度的特征 前言 yolov2是在yolov1的基础上进行改进的&#xff0c;主要解决了yolov1定位不准确以及检测重叠的物体极差的情况&#xff0c;总的来说&#xff0c;它有以下…

使用pip命令安装python第三方库有效方法合集

本文摘要&#xff1a;本文提出了4种实用的pip命令安装python第三方库有效方法合集 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智…