【AWS实验】 配置中转网关及对等连接
文章目录
- 实验概览
- 目标
- 实验环境
- 任务 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 指标和事件监控您的网络,以便了解网络拓扑、路由和连接状态的变化。
下图显示了为本实验预置的资源以及在实验开始时连接这些资源的方式:
任务 1:查看网络拓扑并创建基准
在此任务中,使用互联网控制消息协议 (ICMP) 来验证命令主机与其他主机之间的网络可访问性。已经配置了四个 Amazon EC2 实例,标记为主机 A 到 D,这些实例位于同一个主区域,每个都有自己的 VPC。主机 A 在一个公有子网中,将被用作命令主机。下图显示了实验环境中的当前配置:
现在,对每个实例的私有 IP 地址执行 Ping 操作。IP 地址可以在实验页面的左侧找到。完成后续步骤后,在文本编辑器中记录结果。表的示例如下:
表 A:Ping 测试结果
主机 | 结果 |
---|---|
主机 B | 通过/失败 |
主机 C | 通过/失败 |
主机 D | 通过/失败 |
运行以下命令。将 替换为EC2的 HostB IP 地址:【重复上述步骤,对 HostC 和 HostD 执行 Ping 操作。】
ping <Host IP address>
注意:由于每个主机都在自己的私有子网中,而且各主机之间没有配置路由,预计对每个主机执行的 ICMP Ping 操作都会出现超时失败。
任务 2:创建中转网关
在此任务中,将在主区域
中创建一个中转网关
。中转网关是一种网络传输枢纽,可以将同一账户或不同账户内挂载的资源(VPC 和 VPN)互联。
在 AWS 管理控制台中,使用 AWS 搜索栏搜索 VPC
,然后从结果列表中选择该服务。
在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分。
选择 Transit Gateways(中转网关)。
在页面顶部,选择 Create transit gateway(创建中转网关)。
配置以下各项:
- 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。
页面顶部将显示一条绿色边框,内容为:
注意:中转网关处于待处理状态几分钟后,会变为可用状态。
在文本编辑器中记录中转网关 ID。(本实验中转网关ID:tgw-0ab8c846a55b43bc2)
附加信息:中转网关充当一种区域虚拟路由器,用于路由在 VPC 和 VPN 连接之间流动的流量。
任务 3:创建中转网关挂载
在此任务中,需要将 VPC 附加到中转网关,如下图所示:
在左侧导航窗格的 Transit Gateways(中转网关)部分中,选择 Transit Gateway Attachments(中转网关挂载)。
在页面顶部,选择 Create transit gateway attachment(创建中转网关挂载)按钮。
配置以下各项:
- Name tag - optional(名称标签 – 可选):vpc-a
- Transit Gateway ID(中转网关 ID):选择中转网关 ID
- Attachment type(挂载类型):VPC
- VPC ID:选择名为 vpc-a 的 VPC
- 选择 Create transit gateway attachment(创建中转网关挂载)按钮。
重复上述步骤,将
vpc-b
、vpc-c
和vpc-d
附加到中转网关。
提示
:请等待所有中转网关挂载的状态均变为可用,然后再继续下一项任务。
任务 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(创建中转网关路由表)按钮。
注意:中转网关路由表处于待处理状态几分钟后,会变为可用状态。
任务 4.1:创建路由表关联
在此任务中,需要将中转网关路由表与中转网关挂载相关联
。将挂载与路由表关联之后,流量就可以从挂载发送到目标路由表。
注意:一个中转网关挂载只能与一个路由表相关联。每个路由表可以关联零到多个挂载,并可以将数据包转发到其他挂载。
选择 maintransitgw-rt 中转网关路由表。 选择 Associations(关联)选项卡。
选择 Create association(创建关联)
配置以下各项:
- Choose attachment to associate(选择要关联的挂载):选择名称标签为 vpc-a 的挂载 ID
- 选择 Create association(创建关联)按钮。
重复上述步骤,将 vpc-b、vpc-c 和 vpc-d 的关联添加到路由表中。
注意:创建每个关联可能需要几分钟时间。请刷新页面,直到所有挂载的状态都显示为 Associated(已关联)。
任务 4.2:创建路由传播
在此任务中,需要使用路由传播
将路由表中的路由添加到挂载。添加传播之后,路由可以从挂载传播到目标中转网关路由表。一个挂载可以传播到多个路由表。
选择 Propagations(传播)选项卡。
选择 Create propagation(创建传播)按钮。
配置以下各项:
- 选择要传播的挂载:选择名称标签为 vpc-a 的挂载 ID
- 选择 Create propagation(创建传播)按钮。
重复上述步骤,为 vpc-b、vpc-c 和 vpc-d 创建传播。
传播创建完成后,可以在 Routes(路由)选项卡上查看填充的所有 VPC 的子网。
任务 5:更新 VPC 路由表
在此任务中,将为每个 VPC 中的子网添加一个路由
,指向作为目标目的地的中转网关
。这样,发往本地子网以外的任何私有子网的任何流量都将通过路由流向中转网关。
在左侧导航窗格中,向上滚动到 Virtual Private Cloud 部分,然后选择 Route Tables(路由表)。
选择名为 vpc_a-public 的路由表。
从页面顶部的 *Actions* (操作)菜单中,选择 Edit routes(编辑路由)。
选择****Add route****(添加路由),然后配置以下各项:
- Destination(目的地):10.0.0.0/8
- Target(目标):复制并粘贴您在任务 1 中复制的中转网关 ID
- 选择 Save changes(保存更改)按钮。
注意:对于目标,您也可以键入
tgw-
,并选择名为 maintransitgw 的中转网关。
PS:重复上述步骤,为每个路由使用相同目的地,将相应路由添加到 vpc_b-private、vpc_c-private 和 vpc_d-private 路由表。
任务 5.1:网络验证
运行以下命令。将 替换为EC2的 HostB IP 地址:【重复上述步骤,对 HostC 和 HostD 执行 Ping 操作。】
ping <Host IP address>
请注意,HostE 位于远程区域,请重复之前的步骤,对 HostE 执行 Ping 操作
思考:针对 HostB、HostC 和 HostD 的网络可访问性测试本应是成功的。但针对 HostE 的测试却失败了。为什么?
任务 6:创建与远程区域中转网关的对等连接
在此任务中,将在主区域
中转网关与远程区域
中转网关之间建立对等连接
。AWS Transit Gateway 使用自治系统编号 (ASN)
与另一个中转网关建立对等连接。用于对等连接的路由协议是边界网关协议 (BGP)
。
任务 6.1:记录远程区域的中转网关 ID
在 AWS 管理控制台中,使用 AWS 搜索栏搜索VPC
,然后从结果列表中选择该服务。
现在将 AWS 区域切换到为远程区域,即切换AWS区域us-east-1
。
在 AWS 管理控制台的右上角,选择 Region name(区域名称)。
在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateways(中转网关)。
在文本编辑器中记录远程网关的中转网关 ID。tgw-0d1ba3be61f49fab9
任务 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(创建中转网关挂载)按钮。
注意:挂载的状态将依次变为正在发起请求和等待接受。
任务 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(中转网关挂载)。
要确认,请选择 接受 按钮。
注意:挂载的状态可能需要几分钟的时间才能从待处理变为可用。
任务 6.4:更新路由表关联 – 远程区域
在此任务中,需要将挂载关联到路由表。这样,流量就可以从挂载发送到目标路由表。
在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Route Tables(中转网关路由表)。
选择 remote-rt 中转网关路由表。
选择 Associations(关联)选项卡。
选择 Create association(创建关联)按钮。
配置以下各项:
- Choose attachment to associate(选择要关联的挂载):选择不带名称标签且 Resource Type(资源类型)为 peering(对等连接)的挂载 ID
- 选择 Create association(创建关联)按钮。
任务 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(替换静态路由)按钮。
任务 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(保存更改)按钮。
注意:对于目标,您也可以键入
tgw-
,并选择名为 remote-tgw 的中转网关。
任务 6.7:网络验证
重复任务 1 中的步骤,对 HostB、HostC、HostD 和 HostE 执行 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(创建关联)按钮。
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(路由)选项卡,查看新路由。如果没有立即显示,请在几秒钟后刷新页面,直到路由显示。
网络验证
重复任务 1 中的步骤,对 HostB、HostC、HostD 和 HostE 执行 Ping 操作。记录结果。
命令主机现在应该能够成功对 HostE 执行 Ping 操作。
任务 7:创建路由筛选条件
在此任务中,将使用黑洞路由
来筛选流量。可以为 VPC B 和 VPC D 中的子网创建黑洞路由
,如下图所示:
中转网关路由表中的黑洞路由会丢弃与路由匹配的流量。
在 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(路由)选项卡,查看新路由。如果没有立即显示,请在几秒钟后刷新页面,直到路由显示。
重复上述步骤,为 VPC D 子网 (10.4.4.0/24
) 添加黑洞路由。
任务 7.1:网络验证
重复任务 1 中的步骤,对 HostB、HostC、HostD 和 HostE 执行 Ping 操作。记录结果。
注意:针对 HostB 和 HostD 的网络可访问性测试应该会失败。
任务 8:可视化和分析网络(可选)
在此任务中,需要使用 Network Manager 在集中式控制面板中将全局网络可视化为逻辑示意图或地图
。然后,使用路由分析器来检查命令主机与 HostE 之间的路由。
在 AWS 管理控制台中,使用 AWS 搜索栏搜索VPC
,然后从结果列表中选择该服务。
在左侧导航窗格中,选择 Network Manager(网络管理器)。
选择 Transit Gateway Network Manager(中转网关网络管理器)卡的链接文本。
选择 Get Started(开始使用)。
选择 *Create global network*(创建全局网络)或 Create global network(创建全球网络)。
配置以下各项:
- Name(名称):TGW-Network
- Description(描述):Transit Gateway Network
- 选择 Next(下一步)。
- 取消选择 Add core network in your global network(在全局网络中添加核心网络)
- 选择 Next(下一步)。
- 选择 Create global network(创建全局网络)按钮。
等待 Global network State(全局网络状态)显示可用。
在 Global networks(全局网络)窗格中,选择 TGW-Network 名称的超链接。
从左侧导航窗格中选择 Transit gateways(中转网关)。
选择 Register Transit Gateway(注册中转网关),以便添加要监控的中转网关。
选择两个中转网关,然后选择 注册中转网关 按钮。
注意:状态可能需要几分钟的时间才能从待处理变为可用。请时不时刷新浏览器页面,直到状态显示为可用。
任务 8.1:将网络可视化
要查看网络,在左侧导航窗格中选择 Transit gateway network(中转网关网络)。
查看 Geography(地理位置)、Topology tree(拓扑树)和 Monitoring(监控)选项卡。
在此控制面板上,您可以将全局网络可视化为拓扑图和地图。您可以查看使用率指标,如输入/输出的字节数、输入/输出的数据包和丢失的数据包。您还可以查看有关拓扑、路由和上/下行连接状态变化的提醒。
任务 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 之间的转发和返回网络路径
。可以使用这一功能排除两个终端节点之间的网络问题
。
总结
- 配置中转网关
- 将 VPC 附加到中转网关
- 使用 AWS Transit Gateway 控制和自定义路由
- 建立两个区域之间的中转网关对等连接
- 使用网络管理器可视化和分析您的网络
相关文章:

【AWS实验】 配置中转网关及对等连接
文章目录 实验概览目标实验环境任务 1:查看网络拓扑并创建基准任务 2:创建中转网关任务 3:创建中转网关挂载任务 4:创建中转网关路由表任务 4.1:创建路由表关联任务 4.2:创建路由传播 任务 5:更…...

47、springboot 的 国际化消息支持--就是根据浏览器选择的语言,项目上的一些提示信息根据语言的选择进行对应的显示
springboot的国际化也是基于spring mvc 的。 springboot 的 国际化消息支持–就是根据浏览器选择的语言,项目上的一些提示信息根据语言的选择进行对应的显示。 总结下国家化自动配置: 功能实现就是: 比如一个登录页面,我们在浏览…...

重要变更 | Hugging Face Hub 的 Git 操作不再支持使用密码验证
在 Hugging Face,我们一直致力于提升服务安全性,因此,我们将修改 Hugging Face Hub 的 Git 交互认证方式。 从 2023 年 10 月 1 日 开始,我们将不再接受密码作为命令行 Git 操作的认证方式。我们推荐使用更安全的认证方法…...

为什么删除Windows 11上的Bloatware可以帮助加快你的电脑速度
如果你感觉你的电脑迟钝,彻底清除软件会有所帮助,而且这个过程对Windows用户来说越来越容易。 微软正在使删除以前难以删除的其他预装Windows应用程序成为可能。专家表示,这项新功能可能会改变用户的游戏规则。 科技公司Infatica的主管Vlad…...

PCL点云处理之计算两条直线间最短连线的端点 (二百零三)
PCL点云处理之计算两条直线间最短连线的端点 (二百零三) 一、算法目的二、具体实现1.代码2.结果一、算法目的 条件:给定两条直线,直线采用直线上一点和直线方向来确定 要求:求两条直线间的最短连线线段,获取它的两个端点 具体的算法实现如下,提供了示例直线和计算结果进…...

纵行科技与山鹰绿能达成合作,提供物联网资产管理数据服务
近日,纵行科技与山鹰绿能宣布双方达成深度合作关系,纵行科技将为山鹰绿能提供专业的物联网技术服务,使用物联网技术帮助山鹰绿能对循环包装载具等资产进行在线管理和数字化运营。 据悉,山鹰绿能是一家由山鹰国际控股的全资子公司…...

【2511. 最多可以摧毁的敌人城堡数目】
来源:力扣(LeetCode) 描述: 给你一个长度为 n ,下标从 0 开始的整数数组 forts ,表示一些城堡。forts[i] 可以是 -1 ,0 或者 1 ,其中: -1 表示第 i 个位置 没有 城堡。…...

stm32f1xx单片机拦截中断源代码
这个是实现后的效果,可以看到已经没有中断的效果了 这个是拦截前的效果可以看到电平是在变化的 实现原理非常简单:一句话搞定: if(TIM2->CNTTIM2->ARR-5)TIM2->CNT-5; 以下是完整的代码:是用来补充说明和筹字数的 /* …...

C++(21):特殊工具与技术
控制内存分配 某些应用程序对内存分配有特殊需求,无法直接应用标准内存管理机制。需要自定义内存分配的细节。 重载 new 和 delete void* operator new(std::size_t size) {// 自定义内存分配逻辑void* ptr std::malloc(size);if (!ptr) {throw std::bad_alloc(…...

go读取yaml,json,ini等配置文件
实际项目中,要读取一些json等配置文件。今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的。 一. go读取json配置文件 JSON 应该比较熟悉,它是一种轻量级的数据交换格式。层次结构简洁清晰 ,易于阅读和编写࿰…...

一、安装GoLang环境和开发工具
一、安装GoLang环境 GoLang中国镜像站 下载后对应的环境包以后,一路下一步就好了,安装路径的话,尽量就安装到默认的文件目录下。 二、配置Go的环境变量 右击此电脑–>属性–>高级系统设置–>环境变量,打开环境变量设置…...

条款40:对并发使用std::atomic,对特种内存使用valatile
可怜的volatile。被误解到如此地步。它甚至不应该出现在本章中,因为它与并发程序设计毫无关系。但是在其他程序设计语言中(Java和C#),它还是会对并发程序设计有些用处。甚至在C++中,一些编译器也已经把volatile投入到染缸,使得它的语义显得可以用于并发软件中(但是仅可用…...

Navicat使用HTTP通道服务器进行连接mysql数据库(超简单三分钟完成),centos安装nginx和php,docker安装nginx+php合并版
序言 因为数据库服务器在外网是不能直接连接访问的,但是可以访问网站,网站后台就能访问数据库,所以在此之前,访问数据库的数据是一件非常麻烦的事情,在平时和运维的交流中发现,他们会使用ssh通道进行连接访…...

图:有向无环图(DAG)
1.有向无环图的定义 有向无环图:若一个有向图中不存在环,则称为有向无环图。 简称DAG图(Directed Acyclic Graph) 顶点中不可能出现重复的操作数。 2.有向无环图的应用 1.描述算数表达式 用有向无环图描述算术表达式。 解题步骤: 把各个操作数不重…...

Python入门教程 - 基本语法 (一)
目录 一、注释 二、Python的六种数据类型 三、字符串、数字 控制台输出练习 四、变量及基本运算 五、type()语句查看数据的类型 六、字符串的3种不同定义方式 七、数据类型之间的转换 八、标识符命名规则规范 九、算数运算符 十、赋值运算符 十一、字符串扩展 11.1…...

使用PAM保障开发运营安全
硬编码凭据和 DevOps 系统中缺乏凭据安全性是组织的巨大漏洞。以明文形式访问凭据的恶意内部人员可以在 IT 中建立和扩展其立足点 基础设施,构成巨大的数据被盗风险。 什么是PAM 特权访问管理 (PAM) 是指一组 IT 安全管理原则,可…...

《Go 语言第一课》课程学习笔记(十二)
函数 Go 函数与函数声明 在 Go 语言中,函数是唯一一种基于特定输入,实现特定任务并可返回任务执行结果的代码块(Go 语言中的方法本质上也是函数)。在 Go 中,我们定义一个函数的最常用方式就是使用函数声明。 第一部…...

【深入浅出C#】章节10: 最佳实践和性能优化:编码规范和代码风格
编码规范和代码风格之所以重要,是因为它们直接影响到软件开发的质量、可维护性、可读性和协作效率。编码规范和代码风格是编程中的关键要素,它们有助于编写高质量、可维护和易读的代码,提高团队协作效率,减少错误,降低…...

LNMP架构:搭建Discuz论坛
文章目录 1. 编译安装Nginx1.1 前置准备1.2 编译安装1.3 添加nginx系统服务 2.编译安装MySql2.1 前置准备2.2 编译安装2.3 修改mysql 配置文件2.4 设置路径环境变量2.5 初始化数据库2.6 添加musql系统服务2.7 修改MySql登录密码 3. 编译安装PHP3.1 前置准备3.2 编译安装3.3 复制…...

详解Numpy(基于jupyter notebook)
详解Numpy(基于jupyter notebook) 1.创建数组2.数据类型3.数组切片和索引4.Numpy的广播与数组操作5.数组合并与通用函数6.其他通用函数 1.创建数组 #引入numpy包,以后np就代表numpy import numpy as npanp.arange(10,30,2)#10为起点…...

nvm集合node版本,解决新版本jeecgboot3.5.3前端启动失败问题
jeecgboot前端3.5.3页面如下 使用之前的pnpm启动会报错,pnpm是node进行安装的,查询后发现,vue3版本的页面至少需要node16版本,我之前的版本只有15.5,适用于vue2 那么我将先前的node15.5版本删除,然后安装…...

Windows命令行初步:更改配色、提示符以及编码方式
文章目录 启动和退出窗口标题和提示符命令行颜色更改编码 启动和退出 按下winR,调出运行窗口,输入cmd就可以进入命令行了。在Win10以前的系统种,如果在命令行中再输入一个cmd,就会再打开一个命令行。但最近的Win11版本中…...

uniapp onLoad生命周期 uni.$on接受参数无法改变data数据解决办法
问题阐述: a: uni.$emit(name,data)uni.navigateTo({url:b})b:onload(){ uni.$on(name,(res)>{ this.nameres console.log(this.name) })}用以上写法来跨页面传参会发现在b页面,虽然能够接受到参数但是赋值到data时候没生效,虽然控制台能…...

Android Camera开发入门(4):USB/UVC Camera的使用
Android Camera开发入门(4):USB/UVC Camera的使用 本文基于开源项目https://github.com/saki4510t/UVCCamera之上进行二次封装和使用 在前几篇文章中,我们介绍了Camera到CameraX的基础功能应用,同时附上了相关代码,需要的源码的大佬们可以滑到最底部获取。 本篇我们一起…...

Java网络爬虫——jsoup快速上手,爬取京东数据。同时解决‘京东安全’防爬问题
文章目录 介绍jsoup使用1.解析url,获取前端代码2.解决京东安全界面跳转3.获取每一组的数据4.获取商品数据的具体信息4.最终代码 介绍 网络爬虫,就是在浏览器上,代替人类爬取数据,Java网络爬虫就是通过Java编写爬虫代码࿰…...

外观模式:简化复杂子系统的访问与使用
文章目录 1. 简介2. 外观模式的基本结构3. 外观模式的实现步骤4. 外观模式的应用与实例4.1 图形界面库的外观模式应用4.2 文件压缩与解压缩的外观模式应用4.3 订单处理系统的外观模式应用 5. 外观模式的优缺点5.1 优点5.2 缺点 6. 总结 1. 简介 外观模式是一种结构型设计模式&…...

代码随想录day38|509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯
509. 斐波那契数 class Solution:def fib(self, n: int) -> int:#dp含义,递推公式,dp初始化,遍历顺序,打印dpif n 0:return 0dp [0] * (n1)dp[0]0dp[1]1for i in range(2,n1):dp[i] dp[i-1] dp[i-2]return dp[n] 70. 爬楼梯…...

UE5 C++ UGameInstance 功能、作用及应用
# UE5 C UGameInstance 功能及作用 网上有很多文章介绍,例如在游戏中只有一个实例,换关卡不会丢失等。暂时省略。 # UE5 C UGameInstance 应用 ## 应用一,UE5 C UGameInstance 里监听player创建事件 UWebSocketGameInstance.h里的定义 …...

NodeJs-http模块
目录 一、概念二、请求报文的组成三、响应报文的组成四、创建http服务4.1 操作步骤4.2 注意事项 五、获取 HTTP 请求报文5.1 获取请求报文5.2 提取路径和查询字符串 六、设置 HTTP 响应报文七、MIME设置资源类型 一、概念 HTTP(hypertext transport protocol&#…...

翻译句子 前面的路是非常狭窄的 不能翻译成 the ahead of road is narrow 的原因
翻译句子 前面的路是非常狭窄的。The road ahead is very narrow. 可以将句子翻译成 “The ahead of road is narrow.”,但这个翻译可能不太符合英语的表达习惯。更常见的表达方式是 “The road ahead is narrow.”,这样更符合英语的语法和习惯用法。 …...