当前位置: 首页 > news >正文

Ubuntu 第11章 网络管理_常用的网络配置命令

        为了管理网络,Linux提供了许多非常有用的网络管理命令。利用这些命令,一方面可以有效地管理网络,另一方面出现网络故障时,可以快速进行诊断。本节将对Ubuntu提供的网络管理命令进行介绍。

11.2.1 ifconfig命令

        关于ifconfig命令,在11.1节中已经提到过了。通过该命令可以查看和配置网络接口。ifconfig是一个比较古老的命令,在Ubuntu22以及其他的许多发行版中,已经不太推荐使用该命令了。默认情况下,Ubuntu  22.04已经不提供该命令,用户可以通过安装net-tools软件包来获得该命令,如下所示:

root@node1:~# apt install net-tools

        ifconfig  命令的基本语法如下:

ifconfig [-v] interface [aftype] options | address ...

        在上面的语法中,参数interface表示要配置的网络接口。aftype表示地址类型,例如inet、inet6或者ddp等。options表示ifconfig命令的选项,常用的选项有:

  • -a:列出当前系统所有的可用网络接口,包括禁用状态的。
  • up:启用指定的网络接口。
  • down:  禁用指定的网络接口。
  • netmask:指定当前IP网络的子网掩码。
  • add:为指定网络接口增加一个IPv6地址。
  • del:从指定网络接口删除一个IPv6地址。
  • -broadcast:指定网络接口的广播地址。

address参数为指派给网络接口的IP地址。
例如,使用下面的命令查看当前系统所有的网络接口:

root@node1:~# ifconfig -a
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255ether 06:6c:3a:20:1c:30  txqueuelen 0  (以太网)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 24 overruns 0  carrier 0  collisions 0ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.6.101  netmask 255.255.255.0  broadcast 192.168.6.255inet6 fe80::fc0:15fc:cb36:c90a  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:da:76:27  txqueuelen 1000  (以太网)RX packets 1383  bytes 611544 (611.5 KB)RX errors 0  dropped 85  overruns 0  frame 0TX packets 791  bytes 118578 (118.5 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0device interrupt 19  base 0x2000  ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.8.150  netmask 255.255.255.0  broadcast 192.168.8.255inet6 fe80::20c:29ff:feda:7631  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:da:76:31  txqueuelen 1000  (以太网)RX packets 80  bytes 29877 (29.8 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 129  bytes 15218 (15.2 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0device interrupt 19  base 0x2080  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (本地环回)RX packets 238  bytes 25070 (25.0 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 238  bytes 25070 (25.0 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        在上面的输出中,一共有四个网络接口,其名称分别为docker0、ens33、ens37和lo。关于各个网络接口的详细信息,在前面已经介绍过了,不再重复。

        如果想要禁用某个网络接口,可以使用down选项。例如,使用下面的命令禁用名称为ens37的网络接口:

root@node1:~# ifconfig ens37 down

        网络接口被禁用之后,其状态信息中就不再包含RUNNING属性了,如下所示:

root@node1:~# ifconfig ens37
ens37: flags=4098<BROADCAST,MULTICAST>  mtu 1500ether 00:0c:29:da:76:31  txqueuelen 1000  (以太网)RX packets 88  bytes 30757 (30.7 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 129  bytes 15218 (15.2 KB)TX errors 0  dropped 2 overruns 0  carrier 0  collisions 0device interrupt 19  base 0x2080  

被禁用的网络可以使用以下命令重新启动:

root@node1:~# ifconfig ens37 up

11.2.2 ip命令

        与前面介绍的ifconfig命令不同,ip命令是一个Linux系统中比较新的、功能强大的网络管理工具。ip命令是iproute2软件包中的核心命令。通过ip命令可以显示或操纵Linux主机的路由、网络设备、策略路由、多播地址和隐道。ip命令的基本语法如下:

ip [ OPTIONS ] OBJECT { COMMAND | help }

        在上面的语法中,options表示命令选项,常用的选项有:

  • -h:输出可读的信息。
  • -f:指定协议族,该选项可以取inet。inet6、bridge、ipx以及dnet五个值、如果没有指定协议族,则ip命令会从其他的参数判断,如果无法判断,则默认为inet。
  • -4:指定协议族为inet,即IPv4。
  • -6:指定协议族为inet6,即IPv6。
  • -B:指定协议族为bridge,即桥接。
  • -D:指定协议族为decnet。
  • -l:指定协议族为ipx,即IPX协议。
  • -s:显示详细信息。

object为命令操作的对象。常见的对象有:

  • Address:IPv4或者IPv6地址。
  • 12tp:L2TP隙道协议。
  • link:网络设备。
  • maddress:多播地址。
  • route:路由表。
  • rule:路由策略。
  • tunnel:隧道

        command  为命令,常用的命令有add、delete、show、set或者list等。根据不同的对象,会有不同的命令。下面分别介绍ip命令的使用方法。

1. 管理网络设备

        网络设备包括交换机、路由器以及网络接口等。ip命令最常管理的网络设备就是网络接口。
        例如,使用下面的命令显示网络设备的运行状态:

root@node1:~# ip link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000link/ether 00:0c:29:da:76:27 brd ff:ff:ff:ff:ff:ffaltname enp2s1
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000link/ether 00:0c:29:da:76:31 brd ff:ff:ff:ff:ff:ffaltname enp2s5
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default link/ether 06:6c:3a:20:1c:30 brd ff:ff:ff:ff:ff:ff

        在上面的命令中,link为对象,即网络设备,list为命令,所以整个命令的含义为列出所有的网络设备。如果想要显示更详细的信息,可以使用-s选项,如下所示:

root@node1:~# ip -s link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00RX:  bytes packets errors dropped  missed   mcast           25216     240      0       0       0       0 TX:  bytes packets errors dropped carrier collsns           25216     240      0       0       0       0 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000link/ether 00:0c:29:da:76:27 brd ff:ff:ff:ff:ff:ffRX:  bytes packets errors dropped  missed   mcast           2409588    4048      0     316       0       0 TX:  bytes packets errors dropped carrier collsns           232332    2109      0       0       0       0 altname enp2s1
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000link/ether 00:0c:29:da:76:31 brd ff:ff:ff:ff:ff:ffRX:  bytes packets errors dropped  missed   mcast           56836     142      0       0       0       0 TX:  bytes packets errors dropped carrier collsns           23342     210      0       2       0       0 altname enp2s5
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default link/ether 06:6c:3a:20:1c:30 brd ff:ff:ff:ff:ff:ffRX:  bytes packets errors dropped  missed   mcast           0       0      0       0       0       0 TX:  bytes packets errors dropped carrier collsns           0       0      0      26       0       0 

使用下面的命令禁用网络接口ens37:

root@node1:~# ip link set ens37 down 

        在上面的命令中,由于操作的对象为网络接口,因此使用link。set命令用来设置属性。down为禁用状态,up为启用状态。

注意:以上命令等同于ifconfig  ens37  down。

设置完成之后,使用ip命令查看其状态,如下所示:

root@node1:~# ip link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000link/ether 00:0c:29:da:76:27 brd ff:ff:ff:ff:ff:ffaltname enp2s1
3: ens37: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000link/ether 00:0c:29:da:76:31 brd ff:ff:ff:ff:ff:ffaltname enp2s5
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default link/ether 06:6c:3a:20:1c:30 brd ff:ff:ff:ff:ff:ff

        从上面的输出可以得知,网络接口ens37的状态中不再含有UP标识。

        若想把ens37重新启用,则可以使用以下命令:

root@node1:~# ip link set ens37 up

        使用下面的命令改变网络设备的最大传输单元,即MTU的值为1400:

root@node1:~# ip link set ens37 mtu 1400

        其中,dev表示网络接口。因此,上面的命令把网络接口enp0s3的MTU值设置为1400。

        使用下面的命令修改网络设备的MAC地址,把网络接口enp0s3的MAC地址修改为
00:0c:29:da:76:31:

root@node1:~# ip link set ens37 address 00:0c:29:da:76:31

2. 管理 IP 地址

        利用ip命令可以管理网络接口的IP地址,包括添加、删除、显示以及清除等。其中需要使用address  对象。通常情况下,address可以缩写为a、add或者addr。

        使用下面的命令为网络接口ens37添加一个新的IP地址:

root@node1:~# ip address add 192.168.8.151/24 dev ens37

        在上面的命令中,IP地址采用CIDR地址表示法,斜线前面为IP地址,斜线后面为二进制子网掩码中1的个数。

        如果想要删除指定网络接口的IP地址,可以使用以下命令;

root@node1:~# ip addr del 192.168.8.151/24 dev ens37

        在上面的命令中,采用缩写addr,delete表示要执行的命令。

        ip命令中的show可以显示指定网络接口的IP地址信息,如下所示:

root@node1:~# ip a show dev ens37
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000link/ether 00:0c:29:da:76:31 brd ff:ff:ff:ff:ff:ffaltname enp2s5inet 192.168.8.150/24 brd 192.168.8.255 scope global noprefixroute ens37valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:feda:7631/64 scope link proto kernel_ll valid_lft forever preferred_lft forever

        同样,以下两个命令也可以显示同样的结果:

root@node1:~# ip addr ls ens37
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000link/ether 00:0c:29:da:76:31 brd ff:ff:ff:ff:ff:ffaltname enp2s5inet 192.168.8.150/24 brd 192.168.8.255 scope global noprefixroute ens37valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:feda:7631/64 scope link proto kernel_ll valid_lft forever preferred_lft forever

        在上面的例子中,使用list命令代替show,list可以缩写为ls。从上面的例子可以得知,ip命令的语法是非常灵活的。

        如果想要清除某个网络接口的IP地址,则可以使用flush,如下所示:

root@node1:~# ip -4 addr flush ens37

        上面的命令使用-4选项来表示清除IPv4类型的IP地址,同时指定网络接口为ens37。

        注意:通过ip命令修改的IP地址重启后会消失。如果想永久保存,请修改网络配置文件。

3. 管理路由表

        在ip命令中,路由表使用route对象表示。route可以缩写为r或者ro。从Linux内核2.2版本开始,内核把路由归纳到许多路由表中,并对这些表都进行编号,编号的范围是1~255。另外,为了方便,还可以在/etc/iproute2/rt_tables中为路由表命名。例如,下面的代码为一个默认的rt_tables文件的内容:

itadmin@lenovo-07:~$ cat /etc/iproute2/rt_tables
#
# reserved values
#
255	local
254	main
253	default
0	unspec
#
# local
#
#1	inr.ruhep

        在上面的文件中,每行定义一个路由表,前面的数字为路由表编号,后面为路由表名称,例如local、main以及default等。上面的几个路由表为默认路由表,用户不可以修改。用户可以修改该文件,增加新的路由表,但是前面的编号不可以重复。

        默认情况下,所有的路由都会被插入编号为254的main表中。在进行路由查询时,内核只使用路由表  main。

        默认情况下,ip命令会显示出main路由表的路由信息,如下所示:

root@node1:~# ip route show
default via 192.168.6.1 dev ens33 proto dhcp src 192.168.6.101 metric 100 
default via 192.168.8.2 dev ens37 proto static metric 101 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.6.0/24 dev ens33 proto kernel scope link src 192.168.6.101 metric 100 
192.168.8.0/24 dev ens37 proto kernel scope link src 192.168.8.150 metric 101

        从上面的输出可以得知,当前系统的main路由表中一共有5条路由信息。其中第1~2行都为默认路由,使用关键字default表示。第1行为网络接口ens33指定默认网关为192.168.6.1,其跳数为100。第2行为网络接口ens37指默认网关为192.168.8.2,其跳数为101。默认网关是必须要有的路由信息,当系统在发送数据包的时候,查不到相应的路由信息,便直接从默认路由发送。

        如果想要显示其他路由表的路由记录,则可以通过table关键字来指定路由表,如下所示:

root@node1:~# ip route show table local
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 
local 172.17.0.1 dev docker0 proto kernel scope host src 172.17.0.1 
broadcast 172.17.255.255 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
local 192.168.6.101 dev ens33 proto kernel scope host src 192.168.6.101 
broadcast 192.168.6.255 dev ens33 proto kernel scope link src 192.168.6.101 
local 192.168.8.150 dev ens37 proto kernel scope host src 192.168.8.150 
broadcast 192.168.8.255 dev ens37 proto kernel scope link src 192.168.8.150 

        上面的命令显示了local路由表的路由信息。

        注意:如果没有指定table关键字,则默认为main路由表。

        下面的例子删除一条默认路由:

root@node1:~# ip route del default

        执行完以上命令之后,再次显示路由表信息,结果如下:

root@node1:~# ip route list 
default via 192.168.8.2 dev ens37 proto static metric 101 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.6.0/24 dev ens33 proto kernel scope link src 192.168.6.101 metric 100 
192.168.8.0/24 dev ens37 proto kernel scope link src 192.168.8.150 metric 101 

        可以得知,网络接口  ens37的默认路由已经被删除了。由于当前系统还有一条通过网络接口ens37的默认路由,因此该系统仍然可以访问其他所有的网络。如果再执行一次上面的命令,把网络接口ens37的默认路由也删除,则该系统便不能访问其他的网络了,如下所示:

root@node1:~# ip route del default 
root@node1:~# ping 8.8.8.8
ping: connect: 网络不可达

        但是由于通向网络192.168.6.0/24和192.168.8.0/24的路由还存在,因此这两个网络仍然可以访问,如下所示:

root@node1:~# ping 192.168.8.2
PING 192.168.8.2 (192.168.8.2) 56(84) bytes of data.
64 bytes from 192.168.8.2: icmp_seq=1 ttl=128 time=0.232 ms
64 bytes from 192.168.8.2: icmp_seq=2 ttl=128 time=0.085 ms

        为了使得系统能够访问其他的网络,使用以下命令添加一条默认路由:

root@node1:~# ip route add default via 192.168.6.1 dev ens33
root@node1:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=3 ttl=114 time=10.3 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=114 time=10.6 ms

        ip  route  get命令可以获取通向某个IP地址的路由信息,如下所示:

root@node1:~# ip route get 8.8.8.8
8.8.8.8 via 192.168.6.1 dev ens33 src 192.168.6.101 uid 0 cache 

        上面的命令告诉我们,发送到8.8.8.8的数据包经过网络接口ens37,并且通过网关192.168.6.1。

4. 管理策略路由

        在某些情况下,我们不只是需要通过数据包的目的地址决定路由,可能还需要通过其他一些信息,例如源地址、IP协议、传输层端口甚至数据包的负载。这叫作策略路由。策略路由是Linux提供的一种比较高级的路由功能。策略路由由路由规则来表示,在IP命令中,其对象为rule。同样,

相关文章:

Ubuntu 第11章 网络管理_常用的网络配置命令

为了管理网络&#xff0c;Linux提供了许多非常有用的网络管理命令。利用这些命令&#xff0c;一方面可以有效地管理网络&#xff0c;另一方面出现网络故障时&#xff0c;可以快速进行诊断。本节将对Ubuntu提供的网络管理命令进行介绍。 11.2.1 ifconfig命令 关于ifconfig命令&…...

C++ 观察者模式详解

观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了对象间的一对多依赖关系&#xff0c;当一个对象&#xff08;主题&#xff09;状态改变时&#xff0c;所有依赖它的对象&#xff08;观察者&#xff09;都会自动得到通知并更新。 核…...

不止是UI库:React如何重塑前端开发范式?

React&#xff1a;引领现代前端开发的声明式UI库 在当今快速发展的前端世界&#xff0c;React以其声明式、组件化和高效的特性&#xff0c;稳坐头把交椅&#xff0c;成为构建交互式用户界面的首选JavaScript库。本文将带你快速了解React的核心魅力、主要优势以及生态发展&…...

MapReduce报错 HADOOP_HOME and hadoop.home.dir are unset.

运行课程讲解内容出现这个报错&#xff1a; 1、在电脑里解压之前发过的Hadoop安装包 2、配置用户变量 3、配置系统变量 4、配置系统Path变量 5、下载链接的两个文件&#xff1a; 链接: https://pan.baidu.com/s/1aCcpGGR1EE4hEZW624rFmQ?pwd56tv 提取码: 56tv –来自百度…...

深入探索Laravel框架中的Blade模板引擎

Laravel是一个广泛使用的PHP框架&#xff0c;以其简洁、优雅和强大的功能著称。Blade是Laravel内置的模板引擎&#xff0c;提供了一套简洁而强大的模板语法&#xff0c;帮助开发者轻松构建视图层。本文将深入探讨Blade模板引擎的特性、使用方法和最佳实践。 1. Blade模板引擎简…...

分析NVIDIA的股价和业绩暴涨的原因

NVIDIA自2016年以来股价与业绩的持续高增长&#xff0c;是多重因素共同作用的结果。作为芯片行业的领军企业&#xff0c;NVIDIA抓住了技术、战略、市场与行业趋势的机遇。以下从技术创新、战略布局、市场需求、财务表现及外部环境等维度&#xff0c;深入分析其成功原因&#xf…...

P2572 [SCOI2010] 序列操作 Solution

Description 给定 01 01 01 序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c;并定义 f ( l , r ) [ ( ∑ i l r a i ) r − l 1 ] f(l,r)[(\sum\limits_{il}^r a_i)r-l1] f(l,r)[(il∑r​ai​)r−l1]. 执行 m m m 个操作&am…...

初等数论--欧拉函数积性的证明

文章目录 1. 简介2. 证明一&#xff1a;唯一分解定理容斥原理3. 证明二&#xff1a;中国剩余定理4. 引理证明5. 参考 1. 简介 欧拉函数 ϕ ( n ) \phi(n) ϕ(n)表示在小于等于 n n n的正整数中与 n n n互质的个数。 如 ϕ ( 6 ) 2 ( 1 5 ) ϕ ( 12 ) 4 ( 1 5 7 11 ) \phi(…...

MCP(Model Context Protocol)是专为LLM(大语言模型)应用设计的标准化协议

核心定义 MCP&#xff08;Model Context Protocol&#xff09;是专为LLM&#xff08;大语言模型&#xff09;应用设计的标准化协议&#xff0c;通过安全可控的方式向AI应用暴露数据和功能。主要提供以下能力&#xff1a; 标准化的上下文管理安全的功能调用接口跨平台的数据交…...

Midscene.js Chrome 插件实战:AI 驱动的 UI 自动化测试「喂饭教程」

Midscene.js Chrome 插件实战:AI 驱动的 UI 自动化测试「喂饭教程」 前言一、Midscene.js 简介二、环境准备与插件安装1. 安装 Chrome 插件2. 配置模型与 API Key三、插件界面与功能总览四、实战演练:用自然语言驱动网页自动化1. 典型场景一(Action):账号登录步骤一:打开…...

Python在大数据机器学习模型的多模态融合:深入探索与实践指南

一、多模态融合的全面概述 1.1 多模态融合的核心概念 多模态融合(Multimodal Fusion)是指将来自不同传感器或数据源(如图像、文本、音频、视频、传感器数据等)的信息进行有效整合,以提升机器学习模型的性能和鲁棒性。在大数据环境下,多模态融合面临着独特的挑战和机遇: 数…...

C++ 访问者模式详解

访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为设计模式&#xff0c;它允许你将算法与对象结构分离&#xff0c;使得可以在不修改现有对象结构的情况下定义新的操作。 核心概念 设计原则 访问者模式遵循以下设计原则&#xff1a; 开闭原则&#xff1a;可以添…...

实验-有限状态机2(数字逻辑)

目录 一、实验内容 1.1 介绍 1.2 内容 二、实验步骤 2.1 电路原理图 2.2 步骤 2.3 状态图 4.4 状态转换表和输出表 2.5 具体应用场景 三、调试 四、实验使用环境 五、实验小结与思考 5.1 遇到的问题及解决方法 5.2 实验收获 一、实验内容 1.1 介绍 在解决更复…...

IC解析之TPS92682-Q1(汽车LED灯控制IC)

目录 1 IC特性介绍2 主要参数3 接口定义4 工作原理分析TPS92682-Q1架构工作模式典型应用通讯协议 控制帧应答帧协议5 总结 1 IC特性介绍 TPS92682 - Q1 是德州仪器&#xff08;TI&#xff09;推出的一款双通道恒压横流控制器&#xff0c;同时还具有各种电器故障保护&#xff0c…...

数据结构-堆

目录 heapq 导入 初始化 插入元素 返回最小值 PriorityQueue 导入 初始化 入队 出队 堆是一颗树&#xff0c;其每个节点都有一个值&#xff0c;且&#xff08;小根堆&#xff1a;每个父节点都小于等于其子节点 &#xff08;在进树时不断进行比较 STL中的 priority…...

提升编程效率的利器:Zed高性能多人协作代码编辑器

在当今这个快节奏的开发环境中&#xff0c;一个高效、灵活的代码编辑器无疑对开发者们起着至关重要的支持作用。Zed&#xff0c;作为来自知名编辑器Atom和语法解析器Tree-sitter的创造者的心血之作&#xff0c;正是这样一款高性能支持多人合作的编辑神器。本文将带领大家深入探…...

【25软考网工】第六章 网络安全(1)网络安全基础

博客主页&#xff1a; christine-rr-CSDN博客 专栏主页&#xff1a; 软考中级网络工程师笔记 大家好&#xff0c;我是christine-rr !目前《软考中级网络工程师》专栏已经更新二十多篇文章了&#xff0c;每篇笔记都包含详细的知识点&#xff0c;希望能帮助到你&#xff01; 今日…...

Java中的包装类

目录 为什么要有包装类 包装类的作用 基本数据类型和包装类的对应关系 包装类的核心功能 装箱&#xff08;Boxing&#xff09;和拆箱&#xff08;Unboxing&#xff09; 装箱&#xff1a; 拆箱&#xff1a; 类型转换 字符串<----->基本类型 进制转换 自动装箱与…...

催缴机器人如何实现停车费追缴“零遗漏”?

面对高达35%的停车欠费率&#xff0c;传统人工催缴模式因效率低、成本高、覆盖有限等问题&#xff0c;难以应对海量欠费订单的挑战。本文带大家探究“催缴机器人”如何实现停车费追缴“零遗漏”&#xff0c;实现从“被动催缴”到“主动管理”的跨越。 智慧停车欠费自动化追缴系…...

Oracle 执行计划中的 ACCESS 和 FILTER 详解

Oracle 执行计划中的 ACCESS 和 FILTER 详解 在 Oracle 执行计划中&#xff0c;ACCESS 和 FILTER 是两个关键的操作类型&#xff0c;它们描述了 Oracle 如何检索和处理数据。理解这两个概念对于 SQL 性能调优至关重要。 ACCESS&#xff08;访问&#xff09; ACCESS 表示 Ora…...

使用FastAPI微服务在AWS EKS中构建上下文增强型AI问答系统

系统概述 本文介绍如何使用FastAPI在AWS Elastic Kubernetes Service (EKS)上构建一个由多个微服务组成的AI问答系统。该系统能够接收用户输入的提示(prompt)&#xff0c;通过调用其他微服务从AWS ElastiCache on Redis和Amazon DynamoDB获取相关上下文&#xff0c;然后利用AW…...

oracle dblink varchar类型查询报错记录

在使用Oracle DBLink&#xff08;数据库链接&#xff09;查询VARCHAR类型数据时&#xff0c;有时会遇到报错问题。这些错误可能与数据类型转换、字符集设置、数据库版本兼容性等因素有关。本文将详细分析常见的报错原因及其解决方法。 一、常见报错及其原因 1. ORA-01722: in…...

计算人声录音后电平的大小(dB SPL->dBFS)

计算人声录音后电平的大小 这里笔记记录一下&#xff0c;怎么计算已知大小的声音&#xff0c;经过麦克风、声卡录制后软件内录得的音量电平值。&#xff08;文章最后将计算过程整理为Python代码&#xff0c;方便复用&#xff09; 假设用正常说话的声音大小65dB&#xff08;SP…...

Android kernel日志中healthd关键词意义

Android kernel日志中healthd关键词意义 在kernel的healthd日志中会打印电池信息。通常比较关心的是电池温度&#xff0c;剩余电量&#xff0c;电压&#xff0c;电池健康&#xff0c;电池状况等。 level&#xff1a;剩余电量。 voltage&#xff1a;电压。 temperature&#xff…...

操作系统面试问题(4)

32.什么是操作系统 操作系统是一种管理硬件和软件的应用程序。也是运行在计算机中最重要的软件。它为硬件和软件提供了一种中间层&#xff0c;让我们无需关注硬件的实现&#xff0c;把心思花在软件应用上。 通常情况下&#xff0c;计算机上会运行着许多应用程序&#xff0c;它…...

【nestjs】一般学习路线

nestjs中文文档 其实几个月前也对nestjs进行了学习&#xff0c;前前后后看了很多文档、博客&#xff0c;另外也找了相应的代码看了&#xff0c;但最后也还是一知半解&#xff0c;只是知道大概怎么写&#xff0c;怎么用。 这次下定决心再次看一遍&#xff0c;从代码学习到文档…...

多线程面试题总结

基础概念 进程与线程的区别 进程:操作系统资源分配的基本单位,有独立内存空间线程:CPU调度的基本单位,共享进程资源对比: 创建开销:进程 > 线程通信方式:进程(IPC)、线程(共享内存)安全性:进程更安全(隔离),线程需要同步线程的生命周期与状态转换 NEW → RUNNABLE …...

面试常考算法2(核心+acm模式)

15. 三数之和 核心代码模式 class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> ansnew ArrayList<>();Arrays.sort(nums);int lennums.length;int pre2000000;for(int i0;i<len-2;i){while(i<len-…...

虚拟文件系统

虚拟文件系统&#xff08;Virtual File System&#xff0c;VFS&#xff09;是操作系统内核中的一个抽象层&#xff0c;它为不同的文件系统&#xff08;如ext4、NTFS、FAT32等&#xff09;提供统一的访问接口。通过VFS&#xff0c;用户和应用程序无需关心底层文件系统的具体差异…...

机器学习与深度学习的区别与联系:多角度详细分析

机器学习与深度学习的区别与联系&#xff1a;多角度详细分析 引言 随着人工智能技术的快速发展&#xff0c;机器学习和深度学习已成为当今科技领域的核心驱动力。尽管这两个术语经常被一起提及&#xff0c;甚至有时被互换使用&#xff0c;但它们之间存在着明显的区别和紧密的…...

c++:迭代器(Iterator)

目录 &#x1f6aa;什么是迭代器&#xff1f; &#x1f527; 迭代器的本质 为什么不用普通数组或下标&#xff1f; STL容器的迭代器并不是共用一个类型&#xff01; 迭代器的类型&#xff08;Iterator Categories&#xff09; &#x1f4e6; 常见容器的迭代器类型 ✅ 迭…...

MindSpore框架学习项目-ResNet药物分类-数据增强

目录 1.数据增强 1.1设置运行环境 1.1.1数据预处理 数据预处理代码解析 1.1.2数据集划分 数据集划分代码说明 1.2数据增强 1.2.1创建带标签的可迭代对象 1.2.2数据预处理与格式化&#xff08;ms的data格式&#xff09; 从原始图像数据到 MindSpore 可训练 / 评估的数…...

python打卡day20

特征降维------特征组合&#xff08;以SVD为例&#xff09; 知识点回顾&#xff1a; 奇异值的应用&#xff1a; 特征降维&#xff1a;对高维数据减小计算量、可视化数据重构&#xff1a;比如重构信号、重构图像&#xff08;可以实现有损压缩&#xff0c;k 越小压缩率越高&#…...

2025数维杯数学建模B题完整限量论文:马拉松经济的高质量发展思路探索

2025数维杯数学建模B题完整限量论文&#xff1a;马拉松经济的高质量发展思路探索&#xff0c;先到先得 B题完整论文https://www.jdmm.cc/file/2712066/ 近年来&#xff0c;我国马拉松赛事数量呈现 “ 先井喷、后调整、再复苏 ” 的显著 变化。据中国田径协会数据&#xff0c; …...

深入解析WPF中的3D图形编程:材质与光照

引言 在Windows Presentation Foundation (WPF) 中创建三维(3D)图形是一项既有趣又具有挑战性的任务。为了帮助开发者更好地理解如何使用WPF进行3D图形的渲染&#xff0c;本文将深入探讨GeometryModel3D类及其相关的材质和光源设置。 1、GeometryModel3D类简介 GeometryMode…...

python格式化小数加不加f的区别

一直好奇这个f是必须加的吗&#xff0c;但是不论是搜索还是ai都给不出准确的回复&#xff0c;就自己测试了一下 结论是不带f指定的是总的数字个数&#xff0c;包含小数点前的数字 带f的就是仅指小数点后数字个数 需要注意的是不带f的话数字是会用科学计数法表示的&#xff…...

【MySQL】存储引擎 - FEDERATED详解

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

window 显示驱动开发-线性内存空间段

线性内存空间段是显示硬件使用的经典段类型。 线性内存空间段符合以下模型&#xff1a; 它虚拟化位于图形适配器上的视频内存。GPU 直接访问它;也就是说&#xff0c;无需通过页面映射进行重定向。它在一维地址空间中以线性方式进行管理。 驱动程序将DXGK_SEGMENTDESCRIPTOR结…...

uniapp-商城-46-创建schema并新增到数据库

在后台页面中&#xff0c;数据管理是关键。最初&#xff0c;数据可能是通过代码硬编码在页面中&#xff0c;但这种方式缺乏灵活性和扩展性。为了适应实际需求&#xff0c;应使用数据库来存储数据&#xff0c;允许用户自行添加和更新信息。通过数据库&#xff0c;后台页面可以动…...

Go语言的宕机恢复,如何防止程序奔溃

Go语言中的panic机制用于处理程序中无法继续执行的严重错误。当程序触发panic时&#xff0c;当前函数的执行会立即停止&#xff0c;程序开始逐层向上回溯调用栈&#xff0c;执行每个函数的defer语句&#xff0c;直到到达recover函数或者程序崩溃退出。通过recover函数&#xff…...

阅文集团C++面试题及参考答案

能否不使用锁保证多线程安全&#xff1f; 在多线程编程中&#xff0c;锁&#xff08;如互斥锁、信号量&#xff09;是实现线程同步的传统方式&#xff0c;但并非唯一方式。不使用锁保证多线程安全的核心思路是避免共享状态、使用原子操作或采用线程本地存储。以下从几个方面详…...

三款实用电脑工具

今天为大家精心推荐三款实用软件&#xff0c;分别是人声伴奏分离软件、文件夹迁移软件和文字转拼音软件。 第一款&#xff1a;NovaMSS NovaMSS是一款功能强大的人声伴奏分离软件&#xff0c;它提供社区版和专业版&#xff0c;社区版永久免费。 该软件能够一键提取人声、伴奏、…...

【图片识别内容改名】图片指定区域OCR识别并自动重命名,批量提取图片指定内容并重命名,基于WPF和阿里云OCR识别的解决

基于WPF和阿里云OCR的图片区域识别与自动重命名解决方案 应用场景 ​​电商商品管理​​:批量处理商品图片,从固定区域识别商品名称、型号、价格等信息,重命名为"商品名称_型号_价格.jpg"格式​​档案数字化​​:扫描后的合同、文件等图片,从固定位置识别合同编…...

可再生能源中的隔离栅极驱动器:光伏逆变器的游戏规则改变者

在迈向可持续未来的征程中&#xff0c;可再生能源已成为全球发展的基石。在可再生能源中&#xff0c;太阳能以其可及性和潜力脱颖而出。光伏(PV)逆变器是太阳能系统的核心&#xff0c;它严重依赖先进技术将太阳能电池板的直流电转换为可用的交流电。隔离栅极驱动器就是这样一种…...

解决:EnvironmentNameNotFound: Could not find conda environment?

明明创建了环境却找不到&#xff1f; conda env list 查看所有环境 使用绝对路径激活 conda activate /home/guokaiyin/miniconda3/envs/synthocc...

Java SE(10)——抽象类接口

1.抽象类 1.1 概念 在之前讲Java SE(6)——类和对象&#xff08;一&#xff09;的时候说过&#xff0c;所有的对象都可以通过类来抽象。但是反过来&#xff0c;并不是说所有的类都是用来抽象一个具体的对象。如果一个类本身没有足够的信息来描述一个具体的对象&#xff0c;而…...

数据结构与算法—顺序表和链表(1)

数据结构与算法—顺序表&#xff08;1&#xff09; 线性表顺序表概念与结构分类静态顺序表动态顺序表 动态顺序表的实现 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使⽤的数据结构&#xff0c;常⻅的…...

软件测试的概念

需求的概念 开发模型 测试模型 1. 什么是需求 在多数软件公司&#xff0c;会有两部分需求&#xff0c;⼀部分是⽤⼾需求&#xff0c;⼀部分是软件需求。 1.1 ⽤⼾需求 ⽤⼾需求&#xff1a;可以简单理解为甲⽅提出的需求&#xff0c;如果没有甲⽅&#xff0c;那么就是终端⽤⼾…...

基于Qwen-14b的基础RAG实现及反思

1、概览 本文主要介绍RAG的基础实现过程&#xff0c;给初学者提供一些帮助&#xff0c;RAG即检索增强生成&#xff0c;主要是两个步骤&#xff1a;检索、生成&#xff0c;下面将基于这两部分进行介绍。 2、检索 检索的主要目的是在自定义的知识库kb中查询到与问题query相关的候…...

TikTok广告投放优化指南

1. 广告账户时区设置 在创建广告账户时&#xff0c;建议优先选择美国太平洋时区(UTC-8洛杉矶时间)&#xff0c;这有助于与国际投放节奏保持一致。 2. 达人视频授权问题解答 当在广告后台选择"Affiliate post"却找不到已授权的达人视频时&#xff0c;这种情况确实会…...