CentOS网络故障排查秘笈:实战指南

前言

作为一名热爱折腾 Linux 的技术达人,我深知网络故障会让人抓狂!在这篇文章里,我和你分享了我的心得体会,从如何分析问题、识别瓶颈,到利用各种神器解决网络难题。不管你是新手小白还是老鸟大神,这里都有适合你的解决方案。赶紧看一看吧,让网络故障成为你的过去式!

我平时使用CentOS系统比较多,所以我在写这篇文章的时候所使用的操作系统是CentOS7,如果你使用的是Ubuntu,也没有关系,排除网络故障的过程是一样的,不同的是可能使用命令工具、配置文件会有所不同,希望我的分享给能你带来一些帮助。

网络故障的常见原因

导致网络发生故障的原因有很多,但是常见的却不多,如果你的系统发生网络故障,可以先从下面这些方面开始检查,这些是一此常见的原因:

  • 网络接口配置错误:
    • IP 地址、子网掩码、网关配置错误。
    • DNS 配置错误或 DNS 服务器不可达。
  • 网络硬件故障:
    • 网络线缆连接不良或损坏。
    • 网络接口卡硬件故障。
  • 网络交换机或路由器故障。
    • 防火墙配置错误:
    • 防火墙规则设置错误,导致阻止了必要的网络流量。
    • 防火墙服务未启动或异常。
  • 服务未启动或配置错误:
    • 网络服务(如网络管理器、网络接口服务等)未启动。
    • 服务配置文件错误导致服务无法正常工作。
  • 路由配置错误:
    • 路由表配置错误。
    • 网关配置错误或不可达。
  • DNS 解析问题:
    • DNS 解析配置错误。
    • DNS 服务器不可达或不可用。
  • 网络流量拥塞:
    • 网络带宽使用过大导致网络拥堵。
    • 网络设备过载导致网络性能下降。
  • 安全策略限制:
    • SELinux 或其他安全策略阻止了必要的网络访问。
    • 安全软件或防病毒软件过滤了网络流量。

排除网络故障的基本流程

有问题一点不可怕,可怕是手心脚乱地瞎搞,没有解决问题反而产生更大的问题,所以遇到问题不要慌!先想想处理这个问题的基本流程是什么。在CentOS中,排除网络故障可以遵循以下的基本流程:

  1. 检查网络连接:首先,检查网络连接是否正常。可以使用ping命令测试与远程主机之间的连通性,如果无法ping通目标主机,则可能存在网络故障。
  2. 检查IP地址和网关设置:确认本地主机的IP地址和网关设置是否正确。可以使用ifconfig或ip命令检查当前网络接口的配置,并确认其IP地址和网关是否正确。
  3. 检查DNS解析:如果网络故障是由于DNS解析问题导致的,则需要使用nslookup或dig命令查询域名的IP地址,以确认DNS解析是否正常。
  4. 检查防火墙设置:如果网络故障是由于防火墙设置导致的,则需要使用iptables命令查看防火墙规则是否正确配置。如果需要更新规则,则需要使用iptables命令进行添加或删除规则。
  5. 检查网络服务:确认网络服务是否正常运行。可以使用systemctl命令检查网络服务的状态,如果网络服务未启动,则需要使用systemctl命令启动它。
  6. 检查网络设备:如果所有上述步骤都无法解决问题,那么可能是网络设备(如路由器、交换机等)或网络线路出现了问题。可以考虑更换网络线路或联系网络设备供应商进行进一步检查。

基本流程是清楚的,但是具体要怎么做呢?那就先从一些常见的检查项开始,一步一步来,不要急。当然,如果你已经明确知道问题出在了哪里,那另当别论。下面是一些排除网络故障时的常见检查项:

常见检查项

验证网络物理连接

这个就相对简单一些,检查一下网线是否插好、接插入的接口是否正确以及相关的网络设备,如交换机、路由器的指示灯状态是否正常。

检查网络连接状态

检查网络连接状态有很多方法,这里分享比较常用的几种:

  • 使用ping命令
  • 使用curl命令
  • 使用 ip link 命令

使用ping命令

使用 ping 命令可以测试与指定主机之间的连通性。例如,要检查与 baidu 的连接状态,可以执行以下命令:

ping -c 4 baidu.com

这将向 baidu 发送 4 个 ICMP 回显请求,并显示每个请求的响应时间和状态。

使用curl命令

使用curl -I 命令可以向https://www.baidu.com 发送 HTTP HEAD 请求,并显示服务器返回的 HTTP 头信息,而不会下载文件内容。HTTP 响应头信息非常有用,包含有 HTTP 状态码、服务器类型、响应头等可以判断网络响应情况的重要字段。

curl -I https://www.baidu.com

使用 ip link

使用 ip link 命令可以查看系统中所有网络接口的状态:

ip link

确保所有网络接口都处于 UP(已启用)状态。

上述输出了两个网络接口的信息,一个是本地回环接口 lo,另一个是物理网络接口 ens33。

  • lo(本地回环接口):
    • lo:接口名称为 lo。
    • :表示该接口为回环接口,已启用,链路已启用。
    • mtu 65536:指定最大传输单元为 65536 字节。
    • qdisc noqueue:指定不使用队列调度器。
    • state UNKNOWN:接口状态未知。
    • mode DEFAULT:接口模式为默认模式。
    • group default:接口所属的默认分组。
    • qlen 1000:指定队列长度为 1000。
  • ens33(物理网络接口):
    • ens33:接口名称为 ens33。
    • :表示该接口支持广播和多播,已启用,链路已启用。
    • mtu 1500:指定最大传输单元为 1500 字节。
    • qdisc pfifo_fast:指定使用 pfifo_fast 队列调度器。
    • state UP:接口状态为已启用。
    • mode DEFAULT:接口模式为默认模式。
    • group default:接口所属的默认分组。
    • qlen 1000:指定队列长度为 1000。
    • link/ether 00:50:56:3e:26:4c:指定 MAC 地址为 00:50:56:3e:26:4c。
    • brd ff:ff:ff:ff:ff:ff:指定广播地址为 ff:ff:ff:ff:ff:ff。

检查网络接口配置

查看ifcfg-ens33

我的网络接口的名称是ens33,这个网络接口的配置文件在/etc/sysconfig/network-scripts/ifcfg-ens33,可以执行下面的命令,打开网络接口配置文件,检查IP 地址和子网掩码的配置:

ip link

我的ifcfg-ens33配置内容如下(这里我的CentOS系统使用的是静态IP):

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="cd43292c-4ccc-45df-a7ea-e8cc847143c8"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.253.166
NETMASK=255.255.255.0
GATEWAY=192.168.253.2
DNS1=114.114.114.114
DNS2=114.114.115.115

如果想使用动态IP,可以这样配置

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="DHCP"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="cd43292c-4ccc-45df-a7ea-e8cc847143c8"
DEVICE="ens33"
ONBOOT="yes"
  • TYPE="Ethernet":指定网络接口类型为以太网。
  • PROXY_METHOD="none":指定代理方式为无代理。
  • BROWSER_ONLY="no":指定不仅限于浏览器使用。
  • BOOTPROTO="static":指定使用静态 IP 地址配置方式,如果是动态IP,则应该配置dhcp。
  • DEFROUTE="yes":指定该接口作为默认路由。
  • IPV4_FAILURE_FATAL="no":指定 IPv4 连接失败不是致命错误。
  • IPV6INIT="yes":启用 IPv6 协议栈。
  • IPV6_AUTOCONF="yes":启用 IPv6 自动配置。
  • IPV6_DEFROUTE="yes":指定该接口作为 IPv6 默认路由。
  • IPV6_FAILURE_FATAL="no":指定 IPv6 连接失败不是致命错误。
  • IPV6_ADDR_GEN_MODE="stable-privacy":指定 IPv6 地址生成模式为稳定性隐私地址。
  • NAME="ens33":指定接口名称为 ens33。
  • UUID="cd43292c-4ccc-45df-a7ea-e8cc847143c8":指定接口的 UUID。
  • DEVICE="ens33":指定设备名称为 ens33。
  • ONBOOT="yes":指定系统启动时自动激活该网络接口。
  • IPADDR=192.168.253.166:指定接口的 IPv4 地址为 192.168.253.166。
  • NETMASK=255.255.255.0:指定接口的子网掩码为 255.255.255.0。
  • GATEWAY=192.168.253.2:指定接口的默认网关为 192.168.253.2。
  • DNS1=114.114.114.114:指定第一个 DNS 服务器地址为 114.114.114.114。
  • DNS2=114.114.115.115:指定第二个 DNS 服务器地址为 114.114.115.115。

此项检查的目的是,确保网络接口的 IP 地址和子网掩码配置正确。其中IP 地址应该属于正确的网络地址范围,并且子网掩码应该与网络配置一致。

使用 ip addr

使用 ip addr 命令可以查看系统中所有网络接口的配置信息,包括 IP 地址、子网掩码、MAC 地址等:

ip addr

这将列出系统中所有网络接口的配置信息。

这些信息描述了系统中两个网络接口的配置和状态。lo 接口是本地回环接口,用于本地通信,而 ens33 接口是物理网络接口,连接到网络中。

  • lo(本地回环接口):
    • 接口名称:lo
    • 类型:LOOPBACK(本地回环)
    • 状态:UP(已启用),LOWER_UP(链路已启用)
    • MTU(最大传输单元):65536
    • 排队调度器:noqueue
    • 状态:UNKNOWN(未知状态)
    • 地址:127.0.0.1/8(IPv4 地址),::1/128(IPv6 地址)
    • IPv4 地址的范围:scope host
    • IPv6 地址的范围:scope host
  • ens33(物理网络接口):
    • 接口名称:ens33
    • 类型:BROADCAST(广播),MULTICAST(多播)
    • 状态:UP(已启用),LOWER_UP(链路已启用)
    • MTU(最大传输单元):1500
    • 排队调度器:pfifo_fast
    • 状态:UP(已启用)
    • MAC 地址(链路层地址):00:50:56:3e:26:4c
    • IPv4 地址:192.168.253.166/24
    • 广播地址:192.168.253.255
    • IPv6 地址:fe80::6263:60fe:5bad:b36c/64
    • 链路本地 IPv6 地址

此项检查的目的是,验证网络配置参数信息是否能正常查询到。

使用ifconfig

使用ifconfig命令可以查看当前网络接口的配置:

ifconfig

解读上述内容:

  • ens33和lo:这是两个不同的网络接口,ens33是以太网接口,而lo是本地环回接口。
  • flags=4163:这些是标志位(flags),表示网络接口的状态和属性。在这里,“UP”表示接口已经启用,“BROADCAST”表示支持广播,“RUNNING”表示接口正在运行,“MULTICAST”表示支持多播。
  • mtu 1500:这是接口的最大传输单元(Maximum Transmission Unit),指定了可以在单个数据包中传输的最大字节数。
  • inet 192.168.253.166和inet 127.0.0.1:这是接口的IPv4地址,分别是ens33和lo接口的IPv4地址。
  • netmask 255.255.255.0和netmask 255.0.0.0:这是IPv4地址的子网掩码,用于指示网络地址和主机地址的分隔情况。
  • broadcast 192.168.253.255:这是广播地址,用于向特定网络中的所有设备发送消息。
  • inet6 fe80::6263:60fe:5bad:b36c和inet6 ::1:这是接口的IPv6地址,分别是ens33和lo接口的IPv6地址。
  • ether 00:50:56:3e:26:4c:这是以太网接口的物理地址(MAC地址)。
  • RX packets和TX packets:这是接收和发送的数据包数量。
  • RX errors和TX errors:这是接收和发送时发生的错误数量。
  • RX dropped和TX dropped:这是丢弃的接收和发送数据包数量。
  • RX overruns和TX overruns:这是接收和发送时发生的溢出错误数量。
  • RX frame和TX frame:这是接收和发送时发生的帧错误数量。

此项检查的目的是,验证网络配置参数信息是否能正常查询到。

检查DNS 解析

检查resolv.conf

检查 /etc/resolv.conf 文件的 DNS 配置

cat /etc/resolv.conf

这里的8.8.8.8是谷歌的公共DNS服务器。

检查DNS 服务器是否可达

可以使用 ping 命令向 DNS 服务器发送 4 个 ICMP 回显请求,会显示每个请求的响应时间和状态,根据响应结果可以确定系统是否能够与 DNS 服务器建立连接:

ping -c 4 8.8.8.8

解读上述内容:

  • PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.:表示执行PING命令,向IP地址为8.8.8.8的主机发送数据包,每个数据包大小为56字节(实际大小为84字节,包括头部信息)。
  • 64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=43.4 ms:表示从IP地址为8.8.8.8的主机收到一个大小为64字节的数据包,ICMP序列号为1,生存时间(TTL)为128,往返时间(RTT)为43.4毫秒。
  • --- 8.8.8.8 ping statistics ---:表示PING命令的统计信息开始。
  • 4 packets transmitted, 4 received, 0% packet loss, time 3004ms:表示共发送了4个数据包,全部都成功接收,没有丢失任何数据包,总共花费了3004毫秒。
  • rtt min/avg/max/mdev = 43.384/43.496/43.573/0.072 ms:表示往返时间的统计信息,包括最小往返时间、平均往返时间、最大往返时间和往返时间的标准偏差(mdev)分别为43.384毫秒、43.496毫秒、43.573毫秒和0.072毫秒。

此项检查的目的是,确保默认DNS解析正常,能够正常访问互联网。

检查网络路由

使用 ip route 命令可以查看系统的路由表,确认默认网关是否设置正确。执行以下命令:

ip route

第一条默认路由指定了默认网关的地址和出口接口,用于发送到其他网络的数据包;第二条子网路由则用于直接连接到 ens33 接口的本地子网内部通信。

  • default via 192.168.253.2 dev ens33 proto static metric 100:
    • default:这是默认路由条目,用于发送到除本地子网之外的所有目的地的数据包。
    • via 192.168.253.2:指定默认网关的 IP 地址为 192.168.253.2。
    • dev ens33:指定默认路由的出口网络接口为 ens33。
    • proto static:说明这是通过静态路由配置的默认路由。
    • metric 100:指定该路由的优先级为 100。如果有多个默认路由,优先级越低的会被优先使用。
  • 192.168.253.0/24 dev ens33 proto kernel scope link src 192.168.253.166 metric 100:
    • 192.168.253.0/24:这是一个子网路由条目,用于直接连接到 ens33 接口的子网。
    • dev ens33:指定该路由的出口网络接口为 ens33。
    • proto kernel:说明这是由内核自动生成的路由。
    • scope link:指定该路由的范围为链路本地,表示这是一个本地子网路由。
    • src 192.168.253.166:指定源 IP 地址为 192.168.253.166,这是本地子网的 IP 地址。
    • metric 100:指定该路由的优先级为 100。

此项检查的目的是,确保默认网关指向网络中的正确路由器或网关设备。

检查防火墙设置

检查防火墙状态

查看防火墙的当前状态,即是否正在运行。它将显示防火墙是否处于运行状态。

sudo firewall-cmd --state

检查允许通过防火墙的端口

  • 列出当前防火墙中允许通过的端口。它将显示防火墙配置中定义的所有端口及其状态。
sudo firewall-cmd --list-port

如果将要使用的端口未开放,可以使用下面的命令,开放相关端口:在这个例子中,将永久性地向防火墙规则中添加一个端口,端口号为 8080,并且添加到了 public 区域(即公共区域)。这意味着该端口会在防火墙重启后继续保持开放状态,而不会丢失。

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

如果需要开放端口马上生效,需要重新启动 firewalld 服务,即重新加载防火墙配置并重新启动防火墙。

sudo systemctl restart firewalld.service

当然如果你嫌麻烦的话,也可以先停止防火墙服务,然后再启动:

  • 停止 firewalld 服务,即关闭防火墙。它会立即停止防火墙,导致系统处于不受防火墙保护的状态。
sudo systemctl stop firewalld.service
  • 启动 firewalld 服务,即打开防火墙。它会立即启动防火墙服务,开始保护系统。
sudo systemctl start firewalld.service

我的建议是,你最好设置防火墙服务为开机启动,这样系统在下次重启时会自动启动防火墙:

sudo systemctl enable firewalld.service

这项检查是确保将要使用的端口对外已经开放,是可以连通的。

检查端口连通性

使用 telnet 命令可以测试指定端口是否能够建立连接。例如,如果要验证端口 8080 是否开放,可以执行以下命令:

telnet 192.168.253.166 3306

如果端口开放,将会显示连接成功的消息;如果端口关闭或被防火墙阻止,将会显示连接失败的消息。如图:3307端口是不通的,而3306端口是通的。

如果未安装telnet,可以使用下面命令进行安装与卸载

sudo yum install telnetsudo yum remove telnet

这项检查是确保对外已经开放的端口,是可以连通的。

检查网络服务

systemctl:用于管理系统服务,包括网络服务。可以使用以下命令检查网络服务的状态:

systemctl status network

Active: active (exited):表示服务当前处于活动状态,但已经完成了其主要任务,并退出了,由此可见网络状态是正常的。

systemctl status NetworkManager

这项检查是确保系统的网络服务是处于正常工作状态。

写在最后

如果你觉得这篇文章对你有所帮助,不妨点击点赞按钮,让更多的人看到这篇优质的技术分享。同时,别忘了将这篇文章收藏起来,以备日后查阅。这样,你就能随时回顾和复习文章中的重要知识点,确保你的技术水平始终保持在最高水平。

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

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

相关文章

凌鲨微应用开发流程

微应用开发流程 使用vite,nextjs等框架创建前端项目引入需要的api包通过调试界面进行调试 创建前端项目 vite yarn create vitenextjs yarn create next-app引入需要的api包 名称权限说明http跨域访问跨域http访问tauri提供的apilinksaas-minapp/api打开浏览器读本地文件…

【经验分享】 3D新手玩转VisionPro的工作流

第一步:文字生产图片 这样的工具有很多,stable diffusion,Midjourney等来生成图像 第二步:使用图片生3d模型工具 在线的工具有:https://huggingface.co/spaces/stabilityai/TripoSRhttps://huggingface.co/spaces/stabilityai/TripoSR 效果图 代码框架:Gi

CentOS7.9基于Apache2.4+Php7.4+Mysql8.0架构部署Zabbix6.0LTS 亲测验证完美通过方案

前言: Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持。 Zabbix 是一个企业级的开源分布式监控解决方案。 Zabbix 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。 Zabbix 使用灵活的通知机制,…

蓝桥杯-排序

数组排序 Arrays.sort(int[] a) 这种形式是对一个数组的所有元素进行排序,并且时按从小到大的顺序。 package Work;import java.util.*;public class Imcomplete {public static void main(String args[]) {int arr[]new int [] {1,324,4,5,7,2};Arrays.sort(arr)…

安装系统后,如何单个盘空间扩展多个盘空间?

1、计算机-管理-存储-磁盘空间 2、压缩C盘符,分出多余空间 3、将多余空间扩展,然后修改盘符名称

SpringBoot自动装配详解

SpringBoot自动装配 在讲之前先了解一下,手动装配的流程。 在没有Spring Boot的情况下,你需要手动配置和添加相关依赖,以实现类似于Spring Boot自动装配的功能。主要步骤: 引入Spring相关依赖: 首先,你需…

基于springboot+vue实现食品安全管理系统项目【项目源码+论文说明】

基于springboot实现食品安全管理系统演示 摘要 食品行业同其他行业有很多的差别,食品行业不仅要管食品的生产和销售,还要管食品的库存和保质期,那么对于食品管理者来说,就存在着一定的难度。况且食品的种类复杂,存储条…

Redis分段锁,如何设计?

问题场景:热点库存扣减问题 秒杀场景,有一个难度的问题:热点库存扣减问题。 既要保证不发生超卖 又要保证高并发 如果解决这个高难度的问题呢? 答案就是使用redis 分段锁。 什么是分布式锁? 一个分布式系统中&am…

关于OpenAI最新的成果Sora的思考

目录 前言: 1.Sora的技术特点 1.1技术架构 1.2算法原理: 1.2.1自然语言处理(NLP): 1.2.2深度学习: 1.2.3视频生成与编码: 1.3实现过程: 1.3.1NLP(自然语言处理)模…

手写分布式配置中心(三)增加实时刷新功能(短轮询)

要实现配置自动实时刷新,需要改造之前的代码。代码在https://gitee.com/summer-cat001/config-center​​​​​​​ 服务端改造 服务端增加一个版本号version,新增配置的时候为1,每次更新配置就加1。 Overridepublic long insertConfigDO(…

Vue3 中的代理原理详解

Vue3 中的代理原理详解 Vue3 中引入了代理(Proxy)机制,取代了 Vue2 中的 Object.defineProperty() 机制,用于实现数据响应式。代理机制是 ES6 中新增的特性,它可以用来自定义对象中的操作,比如属性查找、赋…

【代码随想录python笔记整理】第十七课 · 判断集合成员

前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。 一、集合 在之前提到,哈希表主要是用来判断给定的整数是否存在于给定的数据中。而在上一节中我们使用了数组,通过索引来实现哈希表的功…

备战蓝桥(模板篇)

扩展欧德里几算法 质数筛 分解质因数 LCA BFS floyd Dijkstra prime 日期是否合法 Tire异或 模拟散列表 字符哈希 Tire字符串统计

【C++】学习记录

一、第一个C程序 #include<iostream> using namespace std;int main() {cout << "Hello World!";return 0; } 二、数据类型、变量与常量、运算符 2.1 数据类型 2.2 变量与常量 2.3 运算符 三 、判断语句&#xff08;if-else、switch-case&#xff09; …

从0到1入门C++编程——10 stack容器、queue容器、list容器、set容器、map容器

文章目录 一、stack容器二、queue容器三、list容器1、构造函数2、赋值和交换3、大小及判空4、插入和删除5、数据存取6、反转和排序7、排序案例 四、set/multiset容器1、构造和赋值2、大小和交换3、插入和删除4、查找和统计5、set和multiset的区别6、pair对组的创建7、排序及规则…

边缘计算基础知识

目录 边缘计算简介任务卸载简介边缘存储系统 边缘计算简介 边缘计算是指利用靠近数据生成的网络边缘侧的设备&#xff08;如移动设备、基站、边缘服务器、边缘云等&#xff09;的计算能力和存储能力&#xff0c;使得数据和任务能够就近得到处理和执行。 一个典型的边缘计算系…

泽众云真机-为什么老机型专区大部分是维护中?如何解决

最近&#xff0c;泽众云真机平台有几位用户向我们咨询&#xff0c;为什么老机型专区大部分是维护中&#xff1f;我想使用这些机型怎么办&#xff1f; 首先来解释一下&#xff0c;为什么叫“老机型专区”&#xff1f;因为一些老的机型之前一直是在线状态&#xff0c;通过我们长期…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Checkbox)

提供多选框组件&#xff0c;通常用于某选项的打开或关闭。 说明&#xff1a; API version 11开始&#xff0c;Checkbox默认样式由圆角方形变为圆形。 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口…

Hello C++ (c++是什么/c++怎么学/c++推荐书籍)

引言 其实C基础语法基本上已经学完&#xff0c;早就想开始写C的博客了&#xff0c;却因为其他各种事情一直没开始。原计划是想讲Linux系统虚拟机安装的&#xff0c;后来考虑了一下还是算了&#xff0c;等Linux学到一定程度再开始相关博客的写作和发表吧。今天写博客想给C开个头…

解决:ModuleNotFoundError: No module named ‘paddle‘

错误显示&#xff1a; 原因&#xff1a; 环境中没有‘paddle’的python模块&#xff0c;但是您在尝试导入 解决方法&#xff1a; 1.普通方式安装&#xff1a; pip install paddlepaddle #安装命令 2.镜像源安装 pip install paddlepaddle -i https://pypi.tuna.tsinghua.e…