场景6:具有OpenvSwitch的提供商网络
此场景描述了使用带有Open vSwitch(OVS)的ML2插件的OpenStack网络服务的提供者网络实现。
在OpenStack网络引入分布式虚拟路由器之前,所有网络通信都通过一个或多个专门的网络节点,这些节点的性能和可靠性都很有限。物理网络基础设施通常比在软件中处理各种网络操作的通用主机提供更好的性能和可靠性。
总的来说,OpenStack网络软件组件最能处理三层操作的影响性能和可靠性。为了提高性能和可靠性,提供商网络将第3层操作转移到物理网络基础设施上。
在一个特定的用例中,OpenStack部署驻留在一个混合环境中,其中使用了大量的物理网络基础设施。在OpenStack部署中运行的应用程序可能需要直接的2层访问,通常使用VLANs来访问部署之外的应用程序。
示例配置创建了一个VLAN提供者网络。然而,它也支持Flat(未标记的或本地的)提供者网络。
先决条件
这些先决条件定义了部署此场景所需的最小物理基础设施和立即的OpenStack服务依赖关系。
例如,网络服务直接依赖于身份服务,而计算服务直接依赖于网络服务。而像镜像服务没有依赖性的服务,是因为网络服务没有直接依赖它。
然而,计算服务依赖于镜像服务来启动一个实例。本场景中的示例配置假定了网络服务组件的基本配置知识。
为了便于说明,管理网络使用10.0.0 / 24,供应商网络使用192.0.2.0 / 24,198.51.100.24,和203.0.113.0 / 24。
基础设施
1.一个具有两个网络接口的控制节点:管理和provider。provider接口连接到物理网络基础设施交换机/路由到外部网络(通常是Internet)的通用网络。Open vSwitch网桥br-provider必须在provider网络接口上包含一个端口。
2.至少两个计算节点有两个网络接口:管理和供应商。
提供商接口连接到物理网络基础设施切换到外部网络(通常是因特网)的通用网络。Open vSwitch网桥br-provider必须在供应商网络含一个接口。
硬件要求
网络布局
服务布局
控制节点的OpenStack服务
在neutron.conf文件中具有数据库服务器的合适配置
在neutron.conf文件中具有消息队列服务的合适配置。
在neutron.conf文件中具有openstack keystone服务的合适配置
在nova.conf文件中具有openstack计算 控制/管理服务的合适配置去使用neutron
neutron服务器服务、Open vSwitch服务、ML2插件、Open vSwitch代理、DHCP代理和任何依赖关系。
计算节点的Openstack服务
在neutron.conf文件中具有openstack keystone服务的合适配置
在nova.conf文件中具有openstack计算 控制/管理服务的合适配置去使用neutron
Open vSwitch服务,ML2插件,Open vSwitch代理,以及任何依赖项。
架构
一般的供应商网络架构使用物理网络基础设施来处理网络流量的交换和路由。
一般的体系架构
控制节点包含以下网络组件:
1.OpenvSwitch代理管理虚拟交换机之间的连接,以及通过虚拟端口与其他网络组件(如名称空间和底层接口)进行交互。
2.管理qdhcp名称空间的DHCP代理。qdhcp名称空间为使用提供者网络的实例提供DHCP服务。
控制节点组件回顾
控制节点组件连接
注意:为了便于说明,该图包含两个不同的供应商网络。
计算节点包含以下网络组件:
1.Open vSwitch代理管理虚拟交换机之间的连接,以及通过虚拟端口与其他网络组件(如Linux网桥接和底层接口)进行交互。
2.Linux网桥处理安全组。
注意:由于Open vSwitch和iptables的限制,网络服务使用Linux桥来管理实例的安全组。
计算节点组件回顾
计算节点组件连接
为了便于说明,该图包含两个不同的提供者网络。
Packet flow
南北网络流量在一个实例和外部网络之间传输,通常是互联网。东西网络流量在实例之间传播。
Open vSwitch在内部使用vlan来隔离网桥的网络。VLAN ID通常与虚拟网络的分割ID不同。
案例1:南北向流量
物理网络基础架构处理供应商和外部网络之间的路由和潜在的其他服务
在这种情况下,提供商和外部简单地区分可用于实例的网络和仅可经由路由器访问的网络,以说明物理网络基础设施处理路由
然而,供应商网络支持直接连接到外部网络,如因特网。
外部网络
网络203.0.113./
供应商网络(VLAN)
网络192.0.2./ 带有MAC地址TG网关192.0.2.
计算节点1
带有MAC地址I1和192.0.2.11的实例1
实例1驻留在计算节点1上,并使用供应商网络。
实例向外部网络的主机发送一个包。
下面的步骤涉及计算节点1。
1.实例1的tap接口(1)将包转发到Linux网桥qbr。该包包含目标MAC地址TG,因为目的地驻留在另一个网络上。
2.安全组规则(2)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
3.Linux桥qbr将数据包转发到Open vSwitch集成网桥br-int。
4.Open vSwitch集成网桥为供应商网络添加了内部标记。
5.Open vSwitch集成网桥br-int将包转发给Open vSwitch供应商网桥br-provider。
6.Open vSwitch供应商网桥br-provider将使用提供者网络的实际VLAN标记(分段ID)替换内部标记。
7.Open vSwitch供应商网桥br-provider通过提供者网络接口将数据包转发到物理网络。
以下步骤涉及物理网络基础设施:
1.交换机(3)处理供应商网络1与路由器(4)之间的任何VLAN标记操作。
2.路由器(4)将数据包从供应商网络1路由到外部网络。
3.交换机(3)处理路由器(4)和外部网络之间的任何VLAN标记操作。
4.交换机(3)将数据包转发到外部网络。
注意:返回的流量也遵循类似的步骤。
南北网络流量流向
案例2:在不同网络上的实例的东西向流量
物理网络基础设施处理提供者网络之间的路由。
供应商网络1
网络:192.0.2.0/ 带有MAC地址TG1的网关:192.0.2.1
供应商网络2
网络:198.51.100.0/ 网关:带MAC地址TG2的198.51..1
计算节点1
带有192.0.2.11 和MAC地址为I1的实例1
计算节点2
带有MAC地址为I2和198.51.100.11 的实例2
实例1驻留在计算节点1上,并使用提供者网络1。
实例2驻留在计算节点2上,并使用提供者网络2。
实例1发送一个包到实例2。
以下步骤涉及计算节点1:
1.实例1的tap接口(1)将包转发到Linux网桥qbr。该包包含目标MAC地址TG1,因为目的地驻留在另一个网络上。
2.安全组规则(2)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
3.Linux网桥qbr将数据包转发到Open vSwitch集成网桥br-int。
4.Open vSwitch集成网桥br-int为提供商网络1添加了内部标记。
5.Open vSwitch集成网桥br-int将包转发给Open vSwitch提供商网桥br-provider
6.Open vSwitch提供商bridge br-provider将内部标记替换为供应商网络1的实际VLAN标记(分段ID)。
7.Open vSwitch VLAN bridge br-provider通过提供者网络接口将数据包转发到物理网络基础设施。
以下步骤涉及物理网络基础设施:
1.交换机(3)处理供应商网络1与路由器(4)之间的任何VLAN标记操作。
2.路由器(4)将数据包从提供者网络1路由到提供者网络2。
3.交换机(3)处理路由器(4)和提供者网络2之间的任何VLAN标记操作。
4.交换机(3)将数据包转发到计算节点2。
以下步骤涉及计算节点2:
1.提供者网络接口将包转发给Open vSwitch供应商网桥br-provider.。
2.Open vSwitch供应商网桥br-provider将数据包转发到Open vSwitch集成网桥br-int。
3.Open vSwitch集成网桥br-int使用内部标记替换了提供者网络2的实际VLAN标记(分段ID)
4.Open vSwitch集成网桥br-int将包转发到Linux网桥qbr。
5.安全组规则(5)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
6.Linux网桥qbr将数据包转发到实例2上的tap接口(6)。
注意:返回的流量也遵循类似的步骤。
在不同网络上的实例的东西向流量流向
案例3:在同一网络中实例的东西向流量
物理网络基础结构处理提供者网络中的交换。
供应商网络
网络:192.0.2.0/
计算节点1
带有MAC地址为I1和192.0.2.11 的实例1
计算节点2
带有MAC地址为I2和192.0.2.12实例2
实例1驻留在compute节点1中。
实例2驻留在compute节点2中。
两个实例都使用相同的提供者网络。
实例1发送一个包到实例2。
以下步骤涉及计算节点1:
1.实例1的tap接口(1)将包转发到Linux网桥qbr。该包包含目标MAC地址I2,因为目的地位于同一网络。
2.安全组规则(2)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
3.Linux网桥qbr将数据包转发到Open vSwitch集成网桥br-int。
4.Open vSwitch集成网桥br-int为提供者网络添加了内部标记。
5.Open vSwitch集成网桥br-int将包转发给Open vSwitch提供商网桥br-provider。
6.Open vSwitch提供者网桥br-provider将使用提供者网络的实际VLAN标记(分段ID)替换内部标记。
7.Open vSwitch VLAN bridge br-provider通过提供者网络接口将数据包转发到物理网络基础设施。
以下步骤涉及物理网络基础设施:
1.交换机(3)将数据包从计算节点1转发到计算节点2。
以下步骤涉及计算节点2:
1.提供者网络接口将包转发给Open vSwitch供应商网桥br-provider。
2.Open vSwitch供应商网桥br-provider将数据包转发到OpenvSwitch集成网桥br-int。
3.Open vSwitch集成桥br-int使用内部标记替换了提供者网络1的实际VLAN标记(分段ID)
4.Open vSwitch集成网桥br-int将包转发到Linux网桥qbr。
5.安全组规则(4)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
6.Linux网桥qbr将数据包转发到实例2的tap接口(5)。
注意:返回的流量也遵循类似的步骤
在同一网络中实例的东西向流量流向
示例配置
使用下面的示例配置作为在您的环境中部署该场景的模板。
请注意:在此场景中缺少L3代理将阻止常规元数据代理的操作。您必须使用配置驱动来提供实例元数据。
控制器节点
1.配置内核以禁用反向路径过滤。编辑/etc/sysctl.配置文件:
net.ipv4.conf.default.rp_filter=
net.ipv4.conf.all.rp_filter=
2.加载新内核配置:
$ sysctl -p
3.配置常见的选项。编辑/etc/neutron/neutron.配置文件:
[DEFAULT]
verbose = True
core_plugin = ml2
service_plugins =
注意:service_plugins选项不包含任何值,因为网络服务不提供像路由这样3层服务。
4.配置ML2插件和Open vSwitch代理。编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件:
[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = openvswitch [ml2_type_flat]
flat_networks = provider [ml2_type_vlan]
network_vlan_ranges = provider [ovs]
bridge_mappings = provider:br-provider [securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group = True
enable_ipset = True
注意:
tenant_network_types选项不包含任何值,因为架构不支持项目(私有)网络。
network_vlan_range选项中的provider值缺乏VLAN ID范围,以支持使用任意VLAN ID。
5.配置DHCP代理。编辑/etc/neutron/dhcp_agent.ini文件:
[DEFAULT]
verbose = True
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
dhcp_delete_namespaces = True
6.启动以下服务:
Open vSwitch
7.创建Open vSwitch供应商网桥br-provider:
$ ovs-vsctl add-br br-provider
8.将提供者网络接口添加为Open vSwitch供应商网桥br-provider的端口:
$ ovs-vsctl add-port br-provider PROVIDER_INTERFACE
将PROVIDER_INTERFACE替换为处理供应商网络的底层接口的名称。例如,eth1。
9.启动以下服务:
Server
Open vSwitch agent
DHCP agent
计算节点
1.配置内核以禁用反向路径过滤。编辑/etc/sysctl.配置文件:
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
2.加载新内核配置:
$ sysctl -p
3.配置常见的选项。编辑/etc/neutron/neutron.配置文件:
[DEFAULT]
verbose = True
4.配置Open vSwitch代理。编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件:
[ovs]
bridge_mappings = provider:br-provider [securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group = True
enable_ipset = True
5.启动以下服务:
Open vSwitch
6.创建Open vSwitch provider bridge br-provider:
$ ovs-vsctl add-br br-provider
7.将提供者网络接口添加为Open vSwitch供应商网桥br-provider的端口:
ovs-vsctl add-port br-provider PROVIDER_INTERFACE
将PROVIDER_INTERFACE替换为处理提供者网络的底层接口的名称。例如,eth1。
8.启动以下服务:
Open vSwitch agent
验证服务操作
1.提供管理项目凭据。
2.验证代理的存在和操作:
$ neutron agent-list
+--------------------------------------+--------------------+------------+-------+----------------+---------------------------+
| id | agent_type | host | alive | admin_state_up | binary |
+--------------------------------------+--------------------+------------+-------+----------------+---------------------------+
| 09de6af6-c5f1--8b09-18801f068c57 | Open vSwitch agent | controller | :-) | True | neutron-openvswitch-agent |
| 1c5eca1c--40ae-93f1-6bde214fa303 | DHCP agent | controller | :-) | True | neutron-dhcp-agent |
| 6129b1ec--4ec5-a4bd-460ca83a40cb | Open vSwitch agent | compute1 | :-) | True | neutron-openvswitch-agent |
| 8a3fc26a--416d-9d29-6d44f0e4a24f | Open vSwitch agent | compute2 | :-) | True | neutron-openvswitch-agent |
+--------------------------------------+--------------------+------------+-------+----------------+---------------------------+
创建初始网络
这个例子创建了一个VLAN提供者网络。将VLAN ID和IP地址范围更改为适合您的环境的值。
1.提供管理项目凭据。
2.创建一个提供者网络:
$ neutron net-create provider- --shared \
--provider:physical_network provider --provider:network_type vlan \
--provider:segmentation_id
Created a new network:
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | True |
| id | 8b868082-e312---298109d4401c |
| name | provider- |
| provider:network_type | vlan |
| provider:physical_network | provider |
| provider:segmentation_id | |
| router:external | False |
| shared | True |
| status | ACTIVE |
| subnets | |
| tenant_id | e0bddbc9210d409795887175341b7098 |
+---------------------------+--------------------------------------+
注意:share选项允许任何项目使用此网络。
3.在供应商网络上创建子网:
$ neutron subnet-create provider- 203.0.113.0/ \
--name provider--subnet --gateway 203.0.113.1
Created a new subnet:
+-------------------+--------------------------------------------------+
| Field | Value |
+-------------------+--------------------------------------------------+
| allocation_pools | {"start": "203.0.113.2", "end": "203.0.113.254"} |
| cidr | 203.0.113.0/ |
| dns_nameservers | |
| enable_dhcp | True |
| gateway_ip | 203.0.113.1 |
| host_routes | |
| id | 0443aeb0-1c6b-4d95-a464-c551c47a0a80 |
| ip_version | |
| ipv6_address_mode | |
| ipv6_ra_mode | |
| name | provider--subnet |
| network_id | 8b868082-e312---298109d4401c |
| tenant_id | e0bddbc9210d409795887175341b7098 |
+-------------------+--------------------------------------------------+
验证网络操作
1.在控制节点上,验证qdhcp名称空间的创建:
$ ip netns
qdhcp-8b868082-e312---298109d4401c
注意:在启动实例之前,qdhcp名称空间可能不存在。
2.提供常规项目凭证。下面的步骤使用demo项目。
3.创建适当的安全组规则,允许ping和SSH访问实例。例如:
$ nova secgroup-add-rule default icmp - - 0.0.0.0/
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp | - | - | 0.0.0.0/ | |
+-------------+-----------+---------+-----------+--------------+ $ nova secgroup-add-rule default tcp 0.0.0.0/
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| tcp | | | 0.0.0.0/ | |
+-------------+-----------+---------+-----------+--------------+
4.在供应商网络上启动一个具有接口的实例。
$ nova boot --flavor m1.tiny --image cirros-0.3.-x86_64-disk test_server
+--------------------------------------+-----------------------------------------------------------------+
| Property | Value |
+--------------------------------------+-----------------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | - |
| OS-EXT-SRV-ATTR:hypervisor_hostname | - |
| OS-EXT-SRV-ATTR:instance_name | instance- |
| OS-EXT-STS:power_state | |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | h7CkMdkRXuuh |
| config_drive | |
| created | --22T20::16Z |
| flavor | m1.tiny () |
| hostId | |
| id | dee2a9f4-e24c-444d-8c94-386f11f74af5 |
| image | cirros-0.3.-x86_64-disk (2b6bb38f-f69f-493c-a1c0-264dfd4188d8) |
| key_name | - |
| metadata | {} |
| name | test_server |
| os-extended-volumes:volumes_attached | [] |
| progress | |
| security_groups | default |
| status | BUILD |
| tenant_id | 5f2db133e98e4bc2999ac2850ce2acd1 |
| updated | --22T20::16Z |
| user_id | ea417ebfa86741af86f84a5dbcc97cd2 |
+--------------------------------------+-----------------------------------------------------------------+
5.确定实例的IP地址。下面的步骤使用203.0.113.3。
$ nova list
+--------------------------------------+-------------+--------+------------+-------------+--------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+-------------+--------+------------+-------------+--------------------------+
| dee2a9f4-e24c-444d-8c94-386f11f74af5 | test_server | ACTIVE | - | Running | provider-=203.0.113.3 |
+--------------------------------------+-------------+--------+------------+-------------+--------------------------+
6.在控制节点或任何访问提供者网络的主机上,ping IP地址:
$ ping -c 203.0.113.3
PING 203.0.113.3 (203.0.113.3) () bytes of data.
bytes from 203.0.113.3: icmp_req= ttl= time=3.18 ms
bytes from 203.0.113.3: icmp_req= ttl= time=0.981 ms
bytes from 203.0.113.3: icmp_req= ttl= time=1.06 ms
bytes from 203.0.113.3: icmp_req= ttl= time=0.929 ms --- 203.0.113.3 ping statistics ---
packets transmitted, received, % packet loss, time 3002ms
rtt min/avg/max/mdev = 0.929/1.539/3.183/0.951 ms
7.获取对实例的访问。
8.测试连接到互联网:
$ ping -c openstack.org
PING openstack.org (174.143.194.225) () bytes of data.
bytes from 174.143.194.225: icmp_req= ttl= time=17.4 ms
bytes from 174.143.194.225: icmp_req= ttl= time=17.5 ms
bytes from 174.143.194.225: icmp_req= ttl= time=17.7 ms
bytes from 174.143.194.225: icmp_req= ttl= time=17.5 ms --- openstack.org ping statistics ---
packets transmitted, received, % packet loss, time 3003ms
rtt min/avg/max/mdev = 17.431/17.575/17.734/0.143 ms
场景6:具有OpenvSwitch的提供商网络的更多相关文章
- 场景7:带有Linux网桥的提供商网络
此场景描述了使用带有Linux网桥的ML2插件的OpenStack网络服务的供应商网络实现. 供应商网络通常以灵活性为代价提供简单性.性能和可靠性.与其他场景不同,只有管理员可以管理提供者网络,因为它 ...
- 什么原因?全球许多网络提供商推迟部署IPv6
全球许多网络提供商推迟部署IPv6,指出升级路由器和交换机的成本以及NAT为扩展IPv4地址所取得的令人印象深刻的成就. 这并没有阻止像澳门CTM这样的互联网服务供应商不要冒险,以此为榜样,并且满足终 ...
- Cloud Native Weekly | 华为云抢先发布Redis5.0,红帽宣布收购混合云提供商 NooBaa
1——华为云抢先发布Redis5.0 2——DigitalOcean K8s服务正式上线 3——红帽宣布收购混合云提供商 NooBaa 4——微软发布多项 Azure Kubernetes 服务更新 ...
- 新动能 · 新机遇:SaaS软件提供商 Zoho 25 周年战略再升级
25年,在历史的长河中不过转眼一瞬:但是对于创造者来说,25年足以颠覆一个时代...... 作为世界级云应用服务商,Zoho已经走过了25年的砥砺岁月.从ManageEngine到Zoho云服务,从工 ...
- 十家国内知名的EDM服务提供商
国内的EDM服务商多若繁星.下面博主为大家介绍十家国内知名的EDM服务提供商. 一.Webpower 威勃庞尔. 官方网站是:www.webpower.asia.作为全球领先的邮件营销解决方案提供商, ...
- Spring Security构建Rest服务-1201-Spring Security OAuth开发APP认证框架之实现服务提供商
实现服务提供商,就是要实现认证服务器.资源服务器. 现在做的都是app的东西,所以在app项目写代码 认证服务器: 新建 ImoocAuthenticationServerConfig 类,@Ena ...
- SPC软控件提供商NWA的产品在各行业的应用(包装行业)
Northwest Analytical (NWA)是全球领先的“工业4.0”制造分析SPC软件控件提供商.产品(包含: NWA Quality Analyst , NWA Focus EMI 和 N ...
- SPC软控件提供商NWA的产品在各行业的应用(生命科学行业)
在上一篇文章中,我们提到了NWA软件产品在各行业都有广泛的应用,并且就化工行业的应用展开了详细介绍.而在本文中,您将看到NWA产品在生命科学行业也扮演着不可替代的角色. Northwest Analy ...
- 为什么有线宽带提供商获得ASN非常重要?
光纤和同轴电缆的组合(数据有线电视服务接口规范),由此产生的网络在世界引入了高速互联网接入.我们能够从网络运营中心向家庭用户提供10Mbps的下载速度. 拥有自己的自治系统编号(ASN)和IP块意味着 ...
随机推荐
- Windows远程桌面管理--功能强大的远程批量管理工具【转】
曾经,我想着要是有一款绿色小巧,功能实用的远程桌面管理工具,其界面简洁,操作便捷,能够同时远程操作多台服务器,并且多台服务器间可以自由切换,适用于网站管理人员使用的工具该有多好,苍天不负有心人,终于出 ...
- js绑定下拉框数据源
··· buildRule:function (ruleId) { var ruleList = internal.ruleList; if(ruleList){ var programme_sel= ...
- Springboot Jackson配置根本方案, 日期格式化, 时区设置生效
当项目集成配置的功能越来越多, 说不准哪个配置就影响到了什么. 比如你启用了EnableMvC, 默认配置文件配置的一些文件就失效了. 虽然约定大于配置,让springboot可以极简化构建, 但不熟 ...
- Lincode刷题No.8
8.Rotate String lintcode 题解1: class Solution { public: /** * @param str: An array of char * @param o ...
- 低副瓣阵列天线综合2 matlab HFSS
接着继续研究阵列天线设计,得到了电流幅度分布或功率分布之后,就可以进行阵列设计或馈电网络设计了,之前利用HFSS仿真过单列的串馈天线,后面会继续复习熟悉一下,本次我找了一篇硕士论文利用威尔金森功分器来 ...
- 【笔试/面试题】中科创达——9.28(持续更新ing)
1. 线程与进程的区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独 ...
- 记录一次mybatis genertor使用以及mapper扫描遇见的问题
本记录适用初次接触mybatis,大神忽略... 整体上分两个部分: 1.使用mybatis genertor自动生成代码 2.mapper的扫描 1.使用mybatis genertor自动生成代码 ...
- vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多
一.思路分析和效果图 用vue来实现一个瀑布流效果,加载网络图片,同时有下拉刷新和上拉加载更多功能效果.然后针对这几个效果的实现,捋下思路: 根据加载数据的顺序,依次追加标签展示效果: 选择哪种方式实 ...
- TensorFlow——批量归一化操作
批量归一化 在对神经网络的优化方法中,有一种使用十分广泛的方法——批量归一化,使得神经网络的识别准确度得到了极大的提升. 在网络的前向计算过程中,当输出的数据不再同一分布时,可能会使得loss的值非常 ...
- Scala与Mongodb实践3-----运算环境的搭建
目的:使的在IDEA中编辑代码,令代码实现mongodb运算,且转换较为便捷 由实验2可知,运算环境的搭建亦需要对数据进行存储和计算,故需要实现类型转换,所以在实验2的基础上搭建环境. 由菜鸟教程可得 ...