OpenStack(3)--vxlan网络实战

news2024/12/25 9:27:49

目录

一、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_admin

mkdir /opt/images
cd /opt/images
wget https://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

glance 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 --progress

glance 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 ERROR

2023-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-8e
                                                        tap2c798bf4-8e

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

virsh dumpxml instanceID

virsh dumpxml 实例ID
[root@localhost ~(keystone_admin)]# virsh list
 Id    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-8e
                                                        tap2c798bf4-8e

###ifconfig qbrID/qvbID/tapID/qvoID 可查询相应信息,都会以网卡的形式体现在宿主机上。

###qbr
[root@localhost ~(keystone_admin)]# ifconfig qbr2c798bf4-8e
qbr2c798bf4-8e: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        ether 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 0
        TX 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 1450
        inet6 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 0
        TX 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 1450
        inet6 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 0
        TX 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 8e
        Port "qvo2c798bf4-8e"
            Interface "qvo2c798bf4-8e"

###qvo
[root@localhost ~(keystone_admin)]# ifconfig qvo2c798bf4-8e
qvo2c798bf4-8e: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1450
        inet6 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 0
        TX 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-8e
                                                        tap2c798bf4-8e
qbr881bb899-a1          8000.42ff2956387e       no              qvb881bb899-a1
                                                        tap881bb899-a1

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

[root@localhost ~(keystone_admin)]# virsh list
 Id    Name                           State
----------------------------------------------------
 1     instance-00000001              running
 2     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.coloradmin.cn/o/686825.html

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

相关文章

「一本通 3.2 练习 6」汽车加油行驶

目录 第一步&#xff0c;二维转一维&#xff08;此步仅为方便&#xff0c;可以省略&#xff09; 第二步&#xff0c;建边&#xff08;啥都行&#xff0c;只要死不了&#xff09; 第三部&#xff0c;bfs&#xff08;你要dfs也行&#xff09; 第一步 第二步 第三步 可CA呢…

蓝桥杯专题-试题版-【01字符串】【2n皇后问题】【A+B问题】【Fibonacci数列】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

ECS 简略版说明一:Entities and components

目录 Entities and components Worlds and EntityManagers Archetypes Chunks Queries Entity IDs IComponentData Managed IComponentData components DynamicBuffer components Aspects Allocator overview Allocator.Temp Allocator.TempJob Allocator.Persis…

MySQL性能测试及调优中的死锁处理方法

目录 前言&#xff1a; 1、死锁检测 2、死锁避免 3、死锁解决 前言&#xff1a; MySQL死锁是指多个会话同时请求相同资源时发生的一种资源争用现象&#xff0c;导致会话无法继续执行。死锁的发生会导致事务无法提交或者回滚&#xff0c;影响应用程序的正常运行。因此&#xff0…

consul简介与安装

一、Consul简介 Consul 是 HashiCorp 公司推出的开源产品&#xff0c;用于实现分布式系统的服务发现、服务隔离、服务配置&#xff0c;这些功能中的每一个都可以根据需要单独使用&#xff0c;也可以同时使用所有功能。Consul 官网目前主要推 Consul 在服务网格中的使用。 与其…

【人工智能】教你如何让 AI 赢得贪吃蛇游戏----强化学习(初探)

人工智能--AI贪吃蛇&#xff0c;每一个代码都有详细的注释&#xff0c;希望多多收藏&#xff0c;点赞&#xff0c;评论 1.前言&#xff1a;训练ai玩游戏的可行性2.代码实现思路&#xff1a;3.代码完整实现3.1 Game Game.py 完整实现3.1.1 安装pygame库3.1.2 编写游戏逻辑代码 3…

Sangfor华东天勇战队:某咖啡还原密钥

最近学习了密钥还原&#xff0c;复现下并记录思路 function wbaes_encrypt_ecb(){var module_base Module.findBaseAddress("libcryptoDD.so")var func_base module_base.add(0x17BD41)Interceptor.attach(func_base,{onEnter:function (args){console.log("E…

风控引擎如何快速接入不同的数据源?

目录 数据是风控引擎的重要组成 风控引擎的数据接入 风控引擎是一种基于数据分析和机器学习算法的系统&#xff0c;能够实时识别和处理各种风险问题&#xff0c;适用于金融、电商、智能制造、交通运输等各领域&#xff0c;能够提高企业的风险管理水平和业务效率。 风控引擎主…

我心中的TOP1编程语言—JavaScript

作为一名研发工程师&#xff08;程序员&#xff09;&#xff0c;平时工作中肯定会接触或了解很多编程语言。每个人都会有自己工作中常用的语言&#xff0c;也会有偏爱的一些编程语言。而我心中的最爱&#xff0c;毫无疑问&#xff0c;就是 JavaScript。 JavaScript 是一门编程…

23. 数据结构之位图

前言 之前在讲散列表的时候&#xff0c;提到过位图的概念。位图&#xff08;Bitmap&#xff09;作为一种特殊的数据结构&#xff0c;它使用一系列位来表示数据&#xff0c;每个位只有两个状态&#xff08;0或1&#xff09;。由于它的高效性和节省空间的特性&#xff0c;位图在…

SpringBoot的配置环境属性

SpringBoot的配置环境属性 在本文中&#xff0c;我们将讨论SpringBoot的配置环境属性。我们将了解如何使用这些属性来配置我们的应用程序&#xff0c;以便在不同的环境中运行。我们还将了解如何使用SpringBoot的配置文件来管理这些属性。最后&#xff0c;我们将介绍一些最佳实…

java的嵌套类(nested class)、内部类(inner class)的区别

嵌套类即nested class&#xff0c;内部类即Inner class。 概括来说&#xff0c;嵌套类的概念比内部类概念大。嵌套类包含内部类和非内部类。一个内部类一定是一个嵌套类&#xff0c;但一个嵌套类不一定是一个内部类。 在一个类内部或者接口内部声明的类是嵌套类。 下面这些类是…

《Java面向对象程序设计教程》课后编程题

文章目录 第 1 章 Java 概述第 2 章 Java 语言基础第 3 章 Java 面向对象编程第 4 章 Java 图形用户界面程序设计第 5 章 Applet 设计第 6 章 Java 输入输出流与文件操作第 7 章 Java 的多线程机制第 9 章 常用工具类与集合框架 第 1 章 Java 概述 试编写 Java 程序&#xff0…

Android studio新建项目运行遇到的问题

文章目录 The emulator process for AVD xxx has terminated原因&#xff08;环境变量问题&#xff09;解决其他原因 新建的练习项目更改SDK默认位置更改方法 The emulator process for AVD xxx has terminated 运行虚拟机时报此错误 原因&#xff08;环境变量问题&#xff0…

555 timer circuit

#1, Block & principle 1.1&#xff0c; The threshold and trigger levels normally are two- thirds and one-third, respectively, of VCC.(分压&#xff09; 1.2&#xff0c;These levels can be altered by use of the control-voltage terminal. When the trigger in…

生成式 AI:通信服务提供商云转型的下一阶段

【本文由Cloud Ace 整理发布。Cloud Ace 是谷歌云全球战略合作伙伴&#xff0c;拥有 300 多名工程师&#xff0c;也是谷歌最高级别合作伙伴&#xff0c;多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商&#xff0c;我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培…

spring boot引入swagger报错处理

目录 1. 报错说明 2. 查找原因 2.1 此前笔者的代码 3. 问题解决说明 4. 解决方案 4.1 在pom.xml引入springdoc包 4.2 创建配置文件&#xff08;可省略&#xff09; 4.3 在controller加入注解 4.4 查看接口文档 4.5 常用注解 1. 报错说明 在java项目中引入swagger 2.9.2…

Linux设置进程名称(标题) ( 7) -【Linux通信架构系列 】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the…

技术管理三板斧之第一板斧拿结果-定目标

一、现状&#xff1a; 去年年底今年年初&#xff0c;帮助一家公司做了一次大的系统重构&#xff0c;30多小伙伴&#xff0c;经历一次洗礼&#xff0c;对产品定位&#xff0c;技术选型&#xff0c;目标制定&#xff0c;任务分配&#xff0c;协同开发&#xff0c;测试上线&#x…

JS 启动一个计时器来跟踪某一个操作的占用时长

文章目录 需求分析代码 需求 JS 中想要记录一个操作的占用时长 分析 可以启动一个计时器console.time(name:string)来跟踪某一个操作的占用时长。每一个计时器必须拥有唯一的名字&#xff0c;页面中最多能同时运行 10,000 个计时器。 当以此计时器名字为参数调用 console.timeE…