OpenStack(3)--vxlan网络实战

目录

一、ML2配置文件

二、上传cirros镜像

三、创建vxlan10网络

四、创建实例/同vxlan通信测试

五、不同vxlan通信测试

5.1 新建vxlan11

5.2 新建路由/添加路由接口

5.3 不同vxlan通信测试

5.4 qemu-vnc报错

六、深度剖析vxlan

七、认识 Bridge br-ex、Bridge br-int、Bridge br-tun


一、ML2配置文件

我使用的是packstack默认安装,不同安装方式配置文件会有所不同。

packstack安装:

[root@localhost ~(keystone_admin)]# cat /etc/neutron/plugins/ml2/ml2_conf.ini | grep -Ev '^$|#'
[DEFAULT]
[l2pop]
[ml2]
type_drivers=vxlan,flat
tenant_network_types=vxlan
mechanism_drivers=openvswitch
extension_drivers=port_security,qos
path_mtu=0
[ml2_type_flat]
flat_networks=*
[ml2_type_geneve]
[ml2_type_gre]
[ml2_type_vlan]
[ml2_type_vxlan]
vni_ranges=10:100
vxlan_group=224.0.0.1
[securitygroup]
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group=True

二、上传cirros镜像

source /root/keystonerc_adminmkdir /opt/images
cd /opt/images
wget https://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.imgglance image-create --name cirros-0.3.4-x86_64 --disk-format qcow2 --container-format bare --file /opt/images/cirros-0.3.4-x86_64-disk.img  --visibility public --progressglance image-list

三、创建vxlan10网络

子网名称填subnet172_16_10_0,网络地址172.16.10.0/24,网关不填,默认是172.16.10.1。

四、创建实例/同vxlan通信测试

创建cirros-vm1和cirros-vm2

选择m1.tiny实例类型、网络选择vxlan10、选择admin的密钥对

获取秘钥对

[root@localhost images(keystone_admin)]# source /root/keystonerc_admin
[root@localhost images(keystone_admin)]# nova keypair-add admin-key
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAqc2lh8gIDfHxGm7nd6NG4eKCLtOtAC9aEfKCkeN4W0UegHoG
N5thYnZJQhM7hKcwV/pME5e6NlvT/hj0vCVUutGmuSn8YSxD3Z3qyS+OArtichrk
kzDanPy0CLri18HpjGaSmH8BdKrq0KK0JwkXgKXvLR2e30olyigb8fz/v+q1KC7f
ab+trF/TNZwWUauN6qUjItcRGfQB308b81acXEy9e3DI8aO9Jj7egfkv2DDv+5PZ
K62i+raXJewysNWRM0PgHNXty+FVnjOBeAOMmBIw+G4QGFpckHgF3e7oobHcH/Ou
NXc+EL/kLerhI+4OCQnJHQO/Bgd9JJU7Px9KCQIDAQABAoIBADv8Wi3NjIrgnbwo
0byCAdhqnHLOdJ9MGxWcBmRjZ3FWyZ+5e9jJG24dO2QMR0plhb6OvbFuOGpbplht
mIee6H/W8H8ZRf9OE+uGjhrkodZ1PCHzPiyBZblvzGoJG3n9FvRyh/c3ZtxARRPP
ZrUjkRnxhLz7adSX7SGtabHjHrY9MJS//8Z9Lg0mQvnTDIAMyH9DPp9ZwwTlBsNz
BNeY4QDk7HF88IkbfwN4+zMaPga68WXPfDoJ1aw8zkbwjTdHUuVtas4/kfbIhdKX
M0+W3ImJm3KaLrpq7Pc9Ku3pkHoURHzonGb9LyJcQver70hPIagMwT29GQrdS4oC
pQ5BacECgYEA3M+MGHLpdu59Bbh3O8tN9v2AheMr9SWZkMu9NXC2lcCNlhv9VNwh
HsHpV2rRfcy21xHBAS0MfHvW0xw97YD+ehXADH9Ha1rywSAxkHxpxC8tIAU6BCsP
frXcBdKFVYzHQ2lH9MItH02hURRY7IhKYyZMPJM3cln0rs5lnIbLI+MCgYEAxN0k
DdYkAefx1t1SExqyamMEcEhr7GDkTwO3ULhu7Kuaj6710ciYSjDDOzxsrlGdNs3c
X/Bot4BDE8lLrl3J4siXSPW5Uj/PTZoroPDfiAHcV5UFU1nQLlPc568wRV/ghy+J
pzt0VfcvJV4MqNcZ6lHcwrxqNkrgIv/ex2aytiMCgYAF1sMonllIGNRbg147yYt9
PYTZhYFTETR3XLvbHujlGttjncfcJ5oEmzIVarCxd+lZ1JFa+5r567hpirSkhCW2
ir6yVedIknYa30QQQwn08x5pW1oGZDEbs6lmygNWmMtoH++ULFJPIplicHxNfOki
qA+aBnaP4osS2EhdlD7o6wKBgF4hw8Cd+V+z8a6k6z7ZUCCQsimiZ4CCoAisJTaC
yf9+2owDw+UIvtES2fd0IB+GRN9UtiBlyxybRveqE/cPP56h/bzUSkXq3wwjQONW
6fuVsC9swTwmwOW2EfXyjelOPAVIFNETG8CTTkbW3sTI/cpOVHoFL+BAE0aJBJRi
JefzAoGASyHgMuTolmxLThCZCHNTXwp7oekmVKgTbAnfOFDbVjsGIVPb+7DnooAz
YOouO4DpJcO0Z1cKe/bt6x7bojhzKLTsPN+oXoC7sda1cW0DMnAvq49xXNeRe7za
aBBse+WtBlQJ54k7WfEmXogvrkGfLibpX7KJwg6k6F6gvMmfXzo=
-----END RSA PRIVATE KEY-----[root@localhost images(keystone_admin)]# openstack keypair list
+-----------+-------------------------------------------------+
| Name      | Fingerprint                                     |
+-----------+-------------------------------------------------+
| admin-key | fd:83:bb:58:f0:c5:3e:d6:c7:f1:d8:59:06:39:2c:d2 |
+-----------+-------------------------------------------------+
[root@localhost images(keystone_admin)]# 

获取实例控制url

[root@localhost /(keystone_admin)]# nova list
+--------------------------------------+------------+--------+------------+-------------+-------------------------+
| ID                                   | Name       | Status | Task State | Power State | Networks                |
+--------------------------------------+------------+--------+------------+-------------+-------------------------+
| d91db9db-c7ee-4023-880d-d21ab224ec08 | cirros-vm1 | ACTIVE | -          | Running     | vxlan10_net=172.16.10.6 |
+--------------------------------------+------------+--------+------------+-------------+-------------------------+
[root@localhost /(keystone_admin)]# nova get-vnc-console cirros-vm1 novnc
+-------+-------------------------------------------------------------------------------------+
| Type  | Url                                                                                 |
+-------+-------------------------------------------------------------------------------------+
| novnc | http://192.168.136.66:6080/vnc_auto.html?token=947808c4-4c69-4ac0-9da2-e88712e99fed |
+-------+-------------------------------------------------------------------------------------+

进入控制台查看IP,cirros-vm1分配到的ip为172.16.10.6

创建实例报错,查看日志,第二条报错直接说出原因,运行内存不足,使用free -g查看,确实不足,关闭宿主机,从原来的6G加到10G,问题解决。

[root@localhost /(keystone_admin)]# nova list
+--------------------------------------+------------+--------+------------+-------------+-------------------------+
| ID                                   | Name       | Status | Task State | Power State | Networks                |
+--------------------------------------+------------+--------+------------+-------------+-------------------------+
| d91db9db-c7ee-4023-880d-d21ab224ec08 | cirros-vm1 | ACTIVE | -          | Running     | vxlan10_net=172.16.10.6 |
| b76eae8e-1bd1-4d77-9cb2-ea7d4ea96b29 | cirros-vm2 | ERROR  | -          | NOSTATE     |                         |
+--------------------------------------+------------+--------+------------+-------------+-------------------------+[root@localhost /(keystone_admin)]# tail -30 /var/log/nova/nova-compute.log | grep ERROR
2023-06-18 16:39:26.704 2572 ERROR nova.compute.manager [instance: c28af1d5-9794-40d2-b886-07e1c3a02ec8] libvirtError: internal error: process exited while connecting to monitor: 2023-06-18T08:39:26.173407Z qemu-kvm: -drive file=/dev/sdc,format=raw,if=none,id=drive-virtio-disk0,serial=c27f61a5-dd02-4cf9-a491-991cbe70a72e,cache=none,aio=native: 'serial' is deprecated, please use the corresponding option of '-device' instead
2023-06-18 16:39:26.704 2572 ERROR nova.compute.manager [instance: c28af1d5-9794-40d2-b886-07e1c3a02ec8] 2023-06-18T08:39:26.182871Z qemu-kvm: cannot set up guest memory 'pc.ram': Cannot allocate memory

同样的方法新建cirros-vm2,cirros-vm2分配到的ip地址是172.16.10.3 

属于在同个vxlan的cirros-vm1和cirros-vm2成功通信。

那么不同vxlan下可以通信吗?如果不能该使用什么方法才是不同vxlan通信呢?

五、不同vxlan通信测试

5.1 新建vxlan11

新建vxlan11,与新建vxlan10步骤相同,子网为172.16.11.0/24,并创建cirros-vm3划入到vxlan11。

cirros-vm3分配到的ip为172.16.11.5,测试vm1和vm3通信,失败,原因是两实例处在不同的vxaln。

5.2 新建路由/添加路由接口

新建路由router10_11 ,并将vxlan10、vxlan11加入到路由。

 并将vxlan10、vxlan11加入接口

172.24.4.14是路由router_10_11对外通信的网关,新建每个路由默认自带一个对外网关。

cirros-vm1 172.106.10.6

cirros-vm3 172.106.11.5

5.3 不同vxlan通信测试

再次测试,cirros-vm1与cirros-vm3两个位于不同vxlan的主机成功通过路由进行通信

5.4 qemu-vnc报错

关机后VMware警告提示,虚拟磁盘的水平过错,影响罗虚拟机性能。请对虚拟磁盘进行新惠普整理。scsi0:0。关闭虚拟机。在“虚拟机设置”中选择虚拟磁盘,然后单击“碎片整理”。没有理会。

第二天虚拟机直接无法启动,VMware提示“客户机操作系统已禁用CPU。请关闭或处置虚拟机。”,其它虚拟机可正常开机。

尝试“碎片整理”,用时7分钟,无法解决仍然报错。

重启宿主机后,三个实例无法启动,无法新建实例,查看日志, Could not read keymap file: 'en-us',报错表示无法读取键盘信息,查了很多资料无法解决,但可以确定是qemu的VNC有问题。

[root@localhost ~(keystone_admin)]# tail -30 /var/log/nova/nova-compute.log | grep ERROR2023-06-18 22:31:36.527 2434 ERROR nova.compute.manager [instance: fe42fb2d-a995-4408-bcf5-5e1550b9f80e] libvirtError: internal error: process exited while connecting to monitor: 2023-06-18T14:31:36.049183Z qemu-kvm: -drive file=/dev/sdb,format=raw,if=none,id=drive-virtio-disk0,serial=2fe0fa25-5505-4707-981d-e32755524149,cache=none,aio=native: 'serial' is deprecated, please use the corresponding option of '-device' instead
2023-06-18 22:31:36.527 2434 ERROR nova.compute.manager [instance: fe42fb2d-a995-4408-bcf5-5e1550b9f80e] Could not read keymap file: 'en-us'

解决方法:无法解决,只能恢复快照,用时8分钟。

原文解释:

-vnc :5,表示VNC的连接端口为5905,IP是主机的IP地址;
-k /opt/xuantie-qemu/share/qemu/keymaps/en-us这个不加的话会提示找不到键盘布局en-us,could not read keymap file: 'en-us'。
原文链接:https://blog.csdn.net/qq_37858281/article/details/123728267

                  Android emulator + QEMU VNC - Stack Overflow


 

六、深度剖析vxlan

把所有网络、实例、路由全部删除,重新剖析。

查看网络状态

[root@localhost ~(keystone_admin)]# brctl show
bridge name     bridge id               STP enabled     interfaces

添加vxlan10_net后 ,brctl show 仍然没有返回任何网络信息

新建cirros-vm1并加入vxlan10_net

[root@localhost images(keystone_admin)]# brctl show
bridge name     bridge id               STP enabled     interfaces
qbr2c798bf4-8e          8000.6a4a85d10584       no              qvb2c798bf4-8etap2c798bf4-8e

 使用virsh list查看实例的instanceID,使用virsh dumpxml instanceID或者virsh dumpxml 实例ID(不是实例名称),可查看详细信息,其中就包括网卡信息。

virsh dumpxml instanceIDvirsh dumpxml 实例ID
[root@localhost ~(keystone_admin)]# virsh listId    Name                           State
----------------------------------------------------1     instance-00000001              running[root@localhost images(keystone_admin)]# virsh dumpxml instance-00000001 | grep bridge<interface type='bridge'><source bridge='qbr2c798bf4-8e'/>
[root@localhost images(keystone_admin)]# virsh dumpxml instance-00000001 | grep inter<interface type='bridge'></interface>
[root@localhost images(keystone_admin)]# virsh dumpxml instance-00000001 | grep 8e<source bridge='qbr2c798bf4-8e'/><target dev='tap2c798bf4-8e'/>

每新建一个实例,会相应生产对应的qbr(网桥)、qvb、tap、qvo(接口),图片中的具体信息对不上没关系,我们只关注拓扑关系。

[root@localhost images(keystone_admin)]# brctl show
bridge name     bridge id               STP enabled     interfaces
qbr2c798bf4-8e          8000.6a4a85d10584       no              qvb2c798bf4-8etap2c798bf4-8e###ifconfig qbrID/qvbID/tapID/qvoID 可查询相应信息,都会以网卡的形式体现在宿主机上。###qbr
[root@localhost ~(keystone_admin)]# ifconfig qbr2c798bf4-8e
qbr2c798bf4-8e: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450ether ca:a3:e7:b2:31:cd  txqueuelen 1000  (Ethernet)RX packets 163  bytes 6452 (6.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0###qvb
[root@localhost ~(keystone_admin)]# ifconfig qvb2c798bf4-8e
qvb2c798bf4-8e: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1450inet6 fe80::c8a3:e7ff:feb2:31cd  prefixlen 64  scopeid 0x20<link>ether ca:a3:e7:b2:31:cd  txqueuelen 1000  (Ethernet)RX packets 95  bytes 6041 (5.8 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 92  bytes 5272 (5.1 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0###tap
[root@localhost ~(keystone_admin)]# ifconfig tap2c798bf4-8e
tap2c798bf4-8e: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450inet6 fe80::fc16:3eff:feee:1305  prefixlen 64  scopeid 0x20<link>ether fe:16:3e:ee:13:05  txqueuelen 1000  (Ethernet)RX packets 84  bytes 4616 (4.5 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 88  bytes 4975 (4.8 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0###查看Bridge br-ex、Bridge br-int、Bridge br-tun的接口
[root@localhost ~(keystone_admin)]# ovs-vsctl show | grep 8ePort "qvo2c798bf4-8e"Interface "qvo2c798bf4-8e"###qvo
[root@localhost ~(keystone_admin)]# ifconfig qvo2c798bf4-8e
qvo2c798bf4-8e: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1450inet6 fe80::2859:28ff:fe9f:2a11  prefixlen 64  scopeid 0x20<link>ether 2a:59:28:9f:2a:11  txqueuelen 1000  (Ethernet)RX packets 92  bytes 5272 (5.1 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 95  bytes 6041 (5.8 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ovs-vsctl show 可以查看Bridge br-ex、Bridge br-int、Bridge br-tun上的接口,ovs_version版本号。

qvo接口信息,tag相当于VLAN号,tag为2

新建cirros-vm2,同样划入vxlan10_net网路,再次查看brctl show

[root@localhost ~(keystone_admin)]# brctl show
bridge name     bridge id               STP enabled     interfaces
qbr2c798bf4-8e          8000.caa3e7b231cd       no              qvb2c798bf4-8etap2c798bf4-8e
qbr881bb899-a1          8000.42ff2956387e       no              qvb881bb899-a1tap881bb899-a1

跟cirros-vm1在同一个vxlan10,tag号同为2。

[root@localhost ~(keystone_admin)]# virsh listId    Name                           State
----------------------------------------------------1     instance-00000001              running2     instance-00000003              running[root@localhost ~(keystone_admin)]# virsh dumpxml instance-00000003 | grep bridge<interface type='bridge'><source bridge='qbr881bb899-a1'/>
[root@localhost ~(keystone_admin)]# virsh dumpxml instance-00000003 | grep inter<interface type='bridge'></interface>
[root@localhost ~(keystone_admin)]# virsh dumpxml instance-00000003 | grep a1<nova:project uuid="26f0265d7ca347239ea13ed32279ff7a">admin</nova:project><source bridge='qbr881bb899-a1'/><target dev='tap881bb899-a1'/>

新建cirros-vm3划入vxlan11_net,新增网桥为bqr00515be6-9e,查询网桥位于br-int的接口和tag号。

[root@localhost ~(keystone_admin)]# nova list
+--------------------------------------+------------+--------+------------+-------------+--------------------------+
| ID                                   | Name       | Status | Task State | Power State | Networks                 |
+--------------------------------------+------------+--------+------------+-------------+--------------------------+
| 791556ab-6231-4370-8a81-972862da200f | cirros-vm1 | ACTIVE | -          | Running     | vxlan10_net=172.16.10.11 |
| 6173f9bf-bbed-4d71-96d3-f7ae660dc21c | cirros-vm2 | ACTIVE | -          | Running     | vxlan10_net=172.16.10.9  |
| ea42b670-c084-4e76-ae84-23d6617eb420 | cirros-vm3 | ACTIVE | -          | Running     | vxlan11_net=172.16.11.4  |
+--------------------------------------+------------+--------+------------+-------------+--------------------------+
[root@localhost ~(keystone_admin)]# virsh dumpxml ea42b670-c084-4e76-ae84-23d6617eb420 | grep bridge<interface type='bridge'><source bridge='qbr00515be6-9e'/>

位于vxlan11_net的cirros-vm3实例的tag号为5,由此可见tag号与vxlan网络绑定。 

七、认识 Bridge br-ex、Bridge br-int、Bridge br-tun

这里以双节点(非单节点packstack部署)的部署方式讲解三个网卡

br-int 负责节点内的网络通信

数据网络,虚拟机之间的数据传输通过这个网络来进行,比如一个虚拟机要连接到另一个虚拟机,虚拟机要连接虚拟路由都是通过这个网络来进行。

br-tun 负责节点之间的网络通信

OpenStack各个模块(节点)之间的交互,连接数据库,连接Message Queue都是通过这个网络来进行。

br-ex 负责外网通信

场景:户调用OpenStack的API,还是创建出来的虚拟机要访问外网,或者外网要ssh到虚拟机

计算节点:集成网桥(br-int)的网络
刚才说到D(这也是一个TAP设备)在br-int上面,现在轮到br-int出场了,br-int是由OpenvSwitch虚拟化出来的网桥,但事实上它已经充当了一个虚拟交换机的功能了。br-int的主要职责就是把它所在的计算节点上的VM都连接到它这个虚拟交换机上面,然后利用下面要介绍的br-tun的穿透功能,实现了不同计算节点上的VM连接在同一个逻辑上的虚拟交换机上面的功能。这个似乎有点拗口,其实就是在管理员看来,所有的VM都是连接在一个虚拟交换机上面的,但事实上这些VM又都是分布在不同的物理主机上面。OK,回到D上面,D通常以qvo开头。在上面还有另一个端口E,它总是以patch-tun的形式出现,从字面就可以看出它是用来连接br-tun的。

计算节点:通道网桥(br-tun)的网络
br-tun在上面已经提及了,这同样是OpenvSwitch虚拟化出来的网桥,但是它不是用来充当虚拟交换机的,它的存在只是用来充当一个通道层,通过它上面的设备G与其他物理机上的br-tun通信,构成一个统一的通信层。这样的话,网络节点和计算节点、计算节点和计算节点这样就会点对点的形成一个以GRE为基础的通信网络,互相之间通过这个网络进行大量的数据交换。这样,网络节点和计算节点之间的通信就此打通了。而图中的G、H正是描画这一通信。

网络节点:通道网桥(br-tun)的网络
正如前面所说,网络节点上也是存在一个br-tun,它的作用同计算节点上的br-tun如出一辙,都是为了在整个系统中构建一个统一的通信层而存在的。所以,这一部分的网络同计算节点上的网络的功能是一致的,因此,也就没有必要多说了。

网络节点:集成网桥(br-int)的网络
网络节点上的br-int也是起了交换机的作用,它通过I、J与br-tun连接在一起。最终的要的是,在这个虚拟交换机上,还有其他两个重要的tap设备M、O,它们分别同N、P相连,而N、P作为tap设备则是分别归属两个namespacerouter和dhcp,没错,正如这两个namespace的名称所示,它们承担的就是router和dhcp的功能。这个router是由l3-agent根据网络管理的需要而创建的,然后,该router就与特定一个子网绑定到一起,管理这个子网的路由功能。router实现路由功能,则是依靠在该namespace中的iptables实现的。dhcp则也是l3-agent根据需要针对特定的子网创建的,在这个namespace中,l3-agent会启动一个dnsmasq的进程,由它来实际掌管该子网的dhcp功能。由于这个两个namespace都是针对特定的子网创建的,因而在现有的OpenStack系统中,它们常常是成对出现的。

网络节点:外部网桥(br-ex)的网络
当数据从router中路由出来后,就会通过L、K传送到br-ex这个虚拟网桥上,而br-ex实际上是混杂模式加载在物理网卡上,实时接收着网络上的数据包。至此,我们的计算节点上的VM就可以与外部的网络进行自由的通信了。当然,前提是我们要给这个VM已经分配了float-ip。


原文链接:https://blog.csdn.net/tantexian/article/details/45395075


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

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

相关文章

基于matlab基于预训练的膨胀双流卷积神经网络的视频分类器执行活动识别(附源码)

一、前言 此示例首先展示了如何使用基于预训练的膨胀 3-D &#xff08;I3D&#xff09; 双流卷积神经网络的视频分类器执行活动识别&#xff0c;然后展示了如何使用迁移学习来训练此类视频分类器使用 RGB 和来自视频的光流数据 [1]。 基于视觉的活动识别涉及使用一组视频帧预…

PHY芯片的使用(一)之基本概念讲解(MII相关)2

今天想和大家交流一下MAC和PHY之间的接口MII。 MII(Media Independent Interface )是介质无关接口。MII接口定义了在MAC层和物理层之间传送数据和控制状态等信息的接口&#xff0c;它是10M和100M兼容的接口&#xff0c;经过扩展后还可以用于1000M的MAC层与物理层的接口&#x…

【国产复旦微FMQL45教程】-小试牛刀之LED

本教程采用 FMQL7045 FPGA开发板来完成整个试验&#xff0c;板卡照片如下&#xff1a; 具有丰富的接口资源&#xff0c;系统框图如下&#xff1a; 本教程用于完成基于Vivado的FMQL45的LED实验&#xff0c;目标是能够将这款开发板PL端先跑起来。 对于纯 PL 设计&#xff0c;我们…

计算机网络—局域网

文章目录 ARP协议以太网以太网帧结构交换机交换机的端口划分 PPP协议 MAC地址 封装在链路帧中的地址&#xff0c;作为每一个接口的地址。&#xff08;一般是48bit大小&#xff09; MAC地址是刻画到我们物理接口上的&#xff0c;我们的网卡一旦出厂之后就会携带一个唯一的物理地…

SAP 后台配置之FM基金管理篇

SAP FM基金管理后台配置及应用 1 二话不说先上后台配置&#xff0c;能跑通为先1.1 基础设置1.1.1 维护财务管理区1.1.2 分配财务管理区1.1.3 激活全局基金管理功能1.1.4 定义全局参数1.1.5 定义编号区间编号并分配1.1.6 创建更改层次变式1.1.3 激活科目分配元素1.1.4 设置允许空…

微信小程序 rich-text富文本框 怎么设置里面节点的样式

1、在JS中我们获取数据&#xff0c;在没有类名的情况下 使用正则匹配你想要添加演示的节点 res[1].data[0].f_content为rich-text里面的节点 如图 代码&#xff1a;让获取的节点中的图片的最大宽度为100%,高度为auto this.content res[1].data[0].f_content.replace(/\<…

Java泛型详解:为什么使用泛型?如何使用泛型?

Java泛型详解&#xff1a;为什么使用泛型&#xff1f;如何使用泛型&#xff1f; &#x1f498;一、为什么使用泛型&#xff1f;&#x1f498;二、如何使用泛型&#xff1f;&#x1f496;1. 泛型类的使用&#xff1a;&#x1f496;2. 泛型方法的使用&#xff1a;&#x1f496;3.…

Python高级教程:简单爬虫实践案例

学习目标 能够知道Web开发流程 能够掌握FastAPI实现访问多个指定网页 知道通过requests模块爬取图片 知道通过requests模块爬取GDP数据 能够用pyecharts实现饼图 能够知道logging日志的使用 一、基于FastAPI之Web站点开发 FastAPI是一个高性能、易于使用、快速编写API的…

java实现布隆过滤器(手写和Guava库提供的)

目录 前言 布隆过滤器的原理 插入​编辑 查询 删除 布隆过滤器优缺点 优点&#xff1a; 缺点&#xff1a; 代码实现 方式一&#xff1a; Google Guava 提供的 BloomFilter 类来实现布隆过滤器 到底经过几次哈希计算 解决缓存穿透 方式二&#xff1a;手写 前言 在学…

Springboot 核心注解和基本配置解读

目录 1. Springboot 入门与原理 1.1 Springboot 简介 1.1.1 什么是Springboot 1.1.2 Springboot 主要优点 1.2 Springboot 相关注解 1.2.1 元注解 1.2.1.1 Target 1.2.1.2 Retention 1.2.2 Configuration 1.2.3 Import 1.2.3.1 直接注入 1.2.3.2 实现 ImportSelector…

基于Java+Vue前后端分离开放式教学评价管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

关于u(x,t)=f(x)*g(t)形式证明的思考

突然想起来&#xff0c;二维高斯函数是可以拆分成两个一维高斯函数相乘的&#xff1a; 原来在学概率论的时候&#xff0c;证明过&#xff0c;这只能说高斯函数可以&#xff0c;这是一个思路。 一维波动函数应该也是这个套路。 那么还有没有其他函数可以如此&#xff0c;有如此…