【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为起点…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
