使用Devstack部署neutron网络节点
本文为minxihou的翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou
JmilkFan:minxihou的技术博文方向是 算法&Openstack自动化 ,写得很好,值得推荐。 : )
目录
译者在自动化部署的时候遇到了很多问题,这个时候不得不求向devstack官档。所以翻译出来以备以后查询。翻译中很多不足之处还望指教。写这个的老外用词有点抽象和狂野….
本文为博主翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou
本指南将会引导你如何配置openstack网络节点,网络节点会使用到ML2插件和OpenvSwitch机制。
1 单网卡的网络节点配置
在有些开发者实验环境中,主机有且只有一个可用的网卡可用的情况。这种情况下物理网卡加入到Open vSwitch中,然后IP地址配在网桥中。这样这个接口充当着三个角色,为自己网络节点服务传输数据,为OpenStack API传输数据,为管理节点传输数据。
警告:当配置单网卡模式的网络节点时,有可能会出现一个临时故障,有可能你的IP地址从你的机器的物理网卡中移除,然后配置在了OVS网桥上。如果你从其他机器用SSH链接到这台机器,可能有一定的风险导致你的SSH会话session中断(因为的arp缓存失效),这样的话将可能中断stack.sh脚本的运行,使整个部署处于一个未完成的状态。为了解决这种情况可以为stack.sh单独的开一个session这样能让stack.sh脚本继续运行。
1.1 物理网卡设置
在大多数使用Devstack部署单网络接口的情况下,网卡一般有自己的路由用于连接外部网络和DHCP服务器。因为网络节点开放了一个外网连接端口,其他想要连接到网络节点的机器(例如想做调试)可以通过这个共享的外网子网段来连接到neutron。在local.conf配置文件中对这个外网设定了一个合理的MTU值,该值为1500(MTU Maximun Transmission Unit: 最大传输单元,一般设置默认值也就是1500)。下面给出了实验的网络拓扑图:
1.2 Devstack配置
以下是对主机名为devstack-1完整的local.conf配置文件。配置文件会运行所有的API和服务,也提供虚拟化服务用于创建实例。
[[local|localrc]]
HOST_IP=172.18.161.6
SERVICE_HOST=172.18.161.6
MYSQL_HOST=172.18.161.6
RABBIT_HOST=172.18.161.6
GLANCE_HOSTPORT=172.18.161.6:9292
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
# Do not use Nova-Network
disable_service n-net
# Enable Neutron
ENABLED_SERVICES+=,q-svc,q-dhcp,q-meta,q-agt,q-l3
## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE="172.18.161.0/24"
FIXED_RANGE="10.0.0.0/24"
Q_FLOATING_ALLOCATION_POOL=start=172.18.161.250,end=172.18.161.254
PUBLIC_NETWORK_GATEWAY="172.18.161.1"
PUBLIC_INTERFACE=eth0
# Open vSwitch provider networking configuration
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
1.3 多计算节点
我们假设你按照以上的步骤部署完了第一个节点之后你想做多节点测试和多节点之间的网络。
1.3.1 物理网络设置
当我们用Devstack安装部署完Neutron节点之后(从上配置文件可以看出keystone和glance也做了配置),客户在devstack-2上创建实例(devstack-2作为计算机节点)的时候,L3代理服务会把devstack1和devstack2的通讯(nova与keystone节点的通讯访问)压缩封装在VXLAN隧道进行传输。
stack@devstack-2:~/devstack$ sudo ovs-vsctl show
8992d965-0ba0-42fd-90e9-20ecc528bc29
Bridge br-int
fail_mode: secure
Port br-int
Interface br-int
type: internal
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
Bridge br-tun
fail_mode: secure
Port "vxlan-c0a801f6"
Interface "vxlan-c0a801f6"
type: vxlan
options: {df_default="true", in_key=flow, local_ip="172.18.161.7", out_key=flow, remote_ip="172.18.161.6"}
Port patch-int
Interface patch-int
type: patch
options: {peer=patch-tun}
Port br-tun
Interface br-tun
type: internal
ovs_version: "2.0.2"
L3代理运行在控制节点devstack-1上,Open vSwitch同样配置在控制节点上。Open vSwitch会把从网络节点发过来的包解封装,然后转发到eth0链接的br-ex网桥上。
stack@devstack-1:~/devstack$ sudo ovs-vsctl show
422adeea-48d1-4a1f-98b1-8e7239077964
Bridge br-tun
fail_mode: secure
Port br-tun
Interface br-tun
type: internal
Port patch-int
Interface patch-int
type: patch
options: {peer=patch-tun}
Port "vxlan-c0a801d8"
Interface "vxlan-c0a801d8"
type: vxlan
options: {df_default="true", in_key=flow, local_ip="172.18.161.6", out_key=flow, remote_ip="172.18.161.7"}
Bridge br-ex
Port phy-br-ex
Interface phy-br-ex
type: patch
options: {peer=int-br-ex}
Port "eth0"
Interface "eth0"
Port br-ex
Interface br-ex
type: internal
Bridge br-int
fail_mode: secure
Port "tapce66332d-ea"
tag: 1
Interface "tapce66332d-ea"
type: internal
Port "qg-65e5a4b9-15"
tag: 2
Interface "qg-65e5a4b9-15"
type: internal
Port "qr-33e5e471-88"
tag: 1
Interface "qr-33e5e471-88"
type: internal
Port "qr-acbe9951-70"
tag: 1
Interface "qr-acbe9951-70"
type: internal
Port br-int
Interface br-int
type: internal
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
Port int-br-ex
Interface int-br-ex
type: patch
options: {peer=phy-br-ex}
ovs_version: "2.0.2"
br-int是Open vSwitch驱动机制创建的一个网桥。br-int可以看做是一个集成网桥,在这个网桥内创建对实例的各个端口,也可以在这个网桥中创建虚拟交换机。br-ex是一个OVS网桥用于链接物理网卡接口(例如eth0)。各个节点向控制节点发送的消息可以通过这个br-ex来接收,然后br-ex会把包转发到devstack-1上各自服务的网络端口上。br-ex同样接收外网ip向devstack-1上发送的包。br-tun隧道是用来链接openstack的计算节点的,这个网桥隧道主要用于计算节点和网络节点间的通讯,使用的是VXLAN协议。计算节点上的实例与网络节点链接同样使用这个br-tun网桥隧道(例如devstack-1和devstack-2的通讯)。
译者注:
什么是网桥:网桥工作在数据链路层,将两个局域网(LAN)连起来,根据MAC地址(物理地址)来转发,可以看作一个“低层的路由器”(路由器工作在网络层,根据网路地址比如IP地址进行转发)。它可以有效地链接两个LAN,使本地通信限制在本网段内,并转发相应的信号至另一网段,网桥通常用于链接数量不多的,同一类型的网段。
什么是VXLAN介绍:
VXLAN全称Virtual eXtensible LAN,是一种覆盖网络技术或隧道技术。VXLAN将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP/MAC作为outer-header进行封装,然后在物理IP网上传输,到达目的地后由隧道终结点解封并将数据发送给目标虚拟机。
什么是隧道技术:
隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。新的帧头提供路由信息,以便通过互联网传递被封装的负载数据。
这里所说的隧道类似于点到点的连接,这种方式能够使来自许多信息源的网络业务在同一个基础设施中通过不同的隧道进行传输。隧道技术使用点对点通信协议代替了交换连接,通过路由网络来连接数据地址。隧道技术允许授权移动用户或已授权的用户在任何时间、任何地点访问企业网络。
通过隧道的建立,可实现:
* 将数据流强制送到特定的地址
* 隐藏私有的网络地址
* 在IP网上传递非IP数据包
* 提供数据安全支持。
如果难以理解说什么的看以下拓扑图:
1.4 Devstack计算节点配置
使用最小化配置文件来配置主机devstack-2。
[[local|localrc]]
HOST_IP=172.18.161.7
SERVICE_HOST=172.18.161.6
MYSQL_HOST=172.18.161.6
RABBIT_HOST=172.18.161.6
GLANCE_HOSTPORT=172.18.161.6:9292
ADMIN_PASSWORD=secret
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
## Neutron options
PUBLIC_INTERFACE=eth0
ENABLED_SERVICES=n-cpu,rabbit,q-agt
传输流程:计算节点向网络节点发起任何数据链接时,先由计算节点eth0网卡发出通过计算节点的NAT转换指向了neutron的l3代理,之后由l3代理提保证算节点和网络节点通讯。
2 配置Open vSwith 和 networks
译者注:Open vSwitch为开放虚拟交换标准,虚拟交换就是利用虚拟平台,通过软件的方式形成交换机部件。
在有些情况下需要使用neutron组件来提供网络的拓展服务,这样可以利用neutron来配置网络上的一个外部路由器,通过nova创建的实例可以连接到由neutron管理的外部路由器。
在有些实验环境中,物理网络的路由已经被预先配置了,openstack的开发人员仅仅只被给了一个vlan标签和一个IP地址段范围。这样的话通过devstack创建的虚拟机实例通过三层网络来连接到外网路由器。(译者认为这里是没有使用neutron的L3-agent,而是使用了nova-network使创建的实例与外网通讯),这种模式与neutron L3服务原理截然不同。
2.1 物理网络设置
在计算节点上,第一个网卡接口eth0是用来与openstack管理节点来通讯的,可以通过ssh使用root权限来登录该机器。
stack@compute:~$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr bc:16:65:20:af:fc
inet addr:10.0.0.3
eth1网卡是手动配置的在开机引导的时没有IP地址。如何配置网卡请参阅你所使用操作系统相对应技术文档。对于Ubuntu,网卡配置文件/etc/network/interfaces包含以下信息:
auto eth1
iface eth1 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE 0.0.0.0 down
第二个物理接口,eth1需要添加到br-ex网桥中用于实例虚机访问外部网络。
stack@compute:~$ sudo ovs-vsctl add-br br-ex
stack@compute:~$ sudo ovs-vsctl add-port br-ex eth1
stack@compute:~$ sudo ovs-vsctl show
9a25c837-32ab-45f6-b9f2-1dd888abcf0f
Bridge br-ex
Port br-ex
Interface br-ex
type: internal
Port phy-br-ex
Interface phy-br-ex
type: patch
options: {peer=int-br-ex}
Port "eth1"
Interface "eth1"
2.2 配置服务
控制节点
在这个例子中,控制节点将会运行绝大部分openstack的API和管理服务(keystone,glance,nova,neutron).
计算节点
在这个例子中,计算节点负责运行实例,同时运行neutron-openvswitch-agent服务来提供网络访问,运行nova-cpmpute服务提供计算服务。
2.3 Devstack配置
下面的代码片是使用devstack配置controller节点:
HOST_IP=10.0.0.2
SERVICE_HOST=10.0.0.2
MYSQL_HOST=10.0.0.2
RABBIT_HOST=10.0.0.2
GLANCE_HOSTPORT=10.0.0.2:9292
PUBLIC_INTERFACE=eth1
ADMIN_PASSWORD=secret
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
## Neutron options
Q_USE_SECGROUP=True
ENABLE_PROJECT_VLANS=True
PROJECT_VLAN_RANGE=3001:4000
PHYSICAL_NETWORK=default
OVS_PHYSICAL_BRIDGE=br-ex
Q_USE_PROVIDER_NETWORKING=True
# Do not use Nova-Network
disable_service n-net
# Neutron
ENABLED_SERVICES+=,q-svc,q-dhcp,q-meta,q-agt
## Neutron Networking options used to create Neutron Subnets
FIXED_RANGE="203.0.113.0/24"
NETWORK_GATEWAY=203.0.113.1
PROVIDER_SUBNET_NAME="provider_net"
PROVIDER_NETWORK_TYPE="vlan"
SEGMENTATION_ID=2010
在这个配置参考中,我们定义FIXED_RANGE为一个IPV4的公网网段。对于特殊实例来说我们使用RFC5737中定义的特殊TEST-NET-3子网。在你设置你的devstack时,FIXED_RANGE配置的是你或者你组织分配给你的公网IP段,这样的话你可以通过外网来连接你的虚机实例。
通过devstack配置计算节点node1.
HOST_IP=10.0.0.3
SERVICE_HOST=10.0.0.2
MYSQL_HOST=10.0.0.2
RABBIT_HOST=10.0.0.2
GLANCE_HOSTPORT=10.0.0.2:9292
ADMIN_PASSWORD=secret
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
# Services that a compute node runs
ENABLED_SERVICES=n-cpu,rabbit,q-agt
## Open vSwitch provider networking options
PHYSICAL_NETWORK=default
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_INTERFACE=eth1
Q_USE_PROVIDER_NETWORKING=True
在配置node2节点的时候大部分配置项目都和node1一样除开HOST_IP需要改成10.0.0.4。
Devstack会配置提供网络选项(通过将Q_USE_PROVIDER_NETWORKING置成True)。Devstack会为OVS_PHYSICAL_BRIDGE配置项里定义的br-ex网桥自动加入你在PUBLIC_INTERFACE里定义的接口。
例如使用上面的配置,创建了一个网桥,网桥名为br-ex并由Open vSwitch管理。计算节点中第二个网卡接口eth1会加入到这个网桥为虚机提供网络访问。
3 注意事项
3.1 配置非标准MTU的物理网络
neutron规定的MTU值是默认Ethernet标准的1500bytes。
如果想要设置不同的MTU值可以在部署neutron节点时在local.conf配置文件的neutron小节中加入如下参数。如果你有网络设备支持超大帧,你同样可以按照如下方法将MTU值置成9000。
[[post-config|/$Q_PLUGIN_CONF_FILE]]
global_physnet_mtu = 9000
3.2 禁用除iptables之外的防火墙
如果加载使用了其他的防火墙devstack可能不能正常工作。可能会出现虚机实例可以通过ICMP来访问外部网络,但是实例与外部通讯的TCP和UDP的包将不会通过防火墙。这个问题的根本原因是其他的防火墙被应用并且适用了在了所有端口(意思就是全部deny掉了)。解决这种问题的方法是只保留iptables防火墙,以避免多防火墙设置冲突。
在Fedora操作系统中配置防火墙如下:(译者注:在RHEL和Centos 7以上版本需要关闭firewall,ebtables,ip6tables,开启iptables防火墙)
sudo service iptables save
sudo systemctl disable firewalld
sudo systemctl enable iptables
sudo systemctl stop firewalld
sudo systemctl start iptables
在发行版的Linux操作系统中包含配置防火墙和禁用防火墙功能。注意,在Ubuntu操作系统中默认是不会开启ufw防火墙的。如果发现ufw防火墙是enabled状态需要将它禁用掉可以执行以下指令:
sudo service iptables save
sudo ufw disable
3.3 配置ML2拓展插件
拓展插件ML2的参数为Q_ML2_PLUGIN_EXT_DRIVERS,默认包括了端口安全。如果你想不使用任何拓展驱动(包括端口安全),那么可以在Q_ML2_PLUGIN_EXT_DRIVERS后面什么都不写。
3.4 使用自带网桥替代Open vSwitch
配置使用自带网桥的二层驱动非常直接了当。配置Linux系统自带网桥与配置Open vSwitch单网卡模式是非常类似的,只是在接口映射那有微小的不同。
[[local|localrc]]
HOST_IP=172.18.161.6
SERVICE_HOST=172.18.161.6
MYSQL_HOST=172.18.161.6
RABBIT_HOST=172.18.161.6
GLANCE_HOSTPORT=172.18.161.6:9292
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
# Do not use Nova-Network
disable_service n-net
# Enable Neutron
ENABLED_SERVICES+=,q-svc,q-dhcp,q-meta,q-agt,q-l3
## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE="172.18.161.0/24"
FIXED_RANGE="10.0.0.0/24"
Q_FLOATING_ALLOCATION_POOL=start=172.18.161.250,end=172.18.161.254
PUBLIC_NETWORK_GATEWAY="172.18.161.1"
PUBLIC_INTERFACE=eth0
Q_USE_PROVIDERNET_FOR_PUBLIC=True
# Linuxbridge Settings
Q_AGENT=linuxbridge
LB_PHYSICAL_INTERFACE=eth0
PUBLIC_PHYSICAL_NETWORK=default
LB_INTERFACE_MAPPINGS=default:eth0
3.5 使用MacVTap来取代Open vSwitch
( 译者注: Macvtap是一个新的设备驱动程序,旨在简化虚拟化的桥接网络。它取代基于macvlan设备驱动模块的TUN / TAP和桥驱动器的组合。一个macvtap终点(endpoint)是一个字符设备,主要遵循的TUN/ TAP ioctl接口,可以直接使用KVM/qemu和其他支持TUN / TAP接口的虚拟机管理程序。终点(endpoint)扩展了现有的网络接口,较低的设备,在同一个以太网段上的,拥有自己的MAC地址。通常情况下,这是用来使双方的客户机和主机直接显示的主机连接到交换机上的。)
安全组现在不支持MacVTap代理。因为这样,devstack在计算节点上配置NoopFirewall驱动。
MacVTap代理不支持L3,dhcp和元数据代理。因为这样你可以选择如下的部署方案。
3.5.1 使用配置驱动,外部L3,dhcp来提供网络服务的单节点模型
如果L3和dhcp服务是由其他服务器提供的,或者你不想使用它们,那么以下情况适用这种配置:
[[local|localrc]]
HOST_IP=10.0.0.2
SERVICE_HOST=10.0.0.2
MYSQL_HOST=10.0.0.2
RABBIT_HOST=10.0.0.2
ADMIN_PASSWORD=secret
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
Q_ML2_PLUGIN_MECHANISM_DRIVERS=macvtap
Q_USE_PROVIDER_NETWORKING=True
#Enable Neutron services
disable_service n-net
enable_plugin neutron git://git.openstack.org/openstack/neutron
ENABLED_SERVICES+=,q-agt,q-svc
## MacVTap agent options
Q_AGENT=macvtap
PHYSICAL_NETWORK=default
FIXED_RANGE="203.0.113.0/24"
NETWORK_GATEWAY=203.0.113.1
PROVIDER_SUBNET_NAME="provider_net"
PROVIDER_NETWORK_TYPE="vlan"
SEGMENTATION_ID=2010
[[post-config|/$Q_PLUGIN_CONF_FILE]]
[macvtap]
physical_interface_mappings = $PHYSICAL_NETWORK:eth1
[[post-config|$NOVA_CONF]]
force_config_drive = True
3.5.2 配置了MacVTap计算节点的多节点模式
这种情况适用于你想让openstack提供L3,dhcp和元数据服务。这些服务运行在网络节点上,控制节点上有相对应的网络服务来服务与之通讯,网络节点上还跑着其他L2代理(这个例子使用的是Open vSwitch)。网络节点需要配置VLAN租户网络。
对于OVS,配置与之前2.2中讲述的配置大致一致,只需要将下列配置项加入local.conf文件中,这样就能加载MacVTap驱动机制。
[[local|localrc]]
...
Q_ML2_PLUGIN_MECHANISM_DRIVERS=openvswitch,linuxbridge,macvtap
...
对于使用MacVTap的计算节点,用以后配置项来配置local.conf。
HOST_IP=10.0.0.3
SERVICE_HOST=10.0.0.2
MYSQL_HOST=10.0.0.2
RABBIT_HOST=10.0.0.2
ADMIN_PASSWORD=secret
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
# Services that a compute node runs
disable_all_services
enable_plugin neutron git://git.openstack.org/openstack/neutron
ENABLED_SERVICES+=n-cpu,q-agt
## MacVTap agent options
Q_AGENT=macvtap
PHYSICAL_NETWORK=default
[[post-config|/$Q_PLUGIN_CONF_FILE]]
[macvtap]
physical_interface_mappings = $PHYSICAL_NETWORK:eth1
官方原文地址:
http://docs.openstack.org/developer/devstack/guides/neutron.html#ovs-provider-network-controller
使用Devstack部署neutron网络节点的更多相关文章
- openstack (5)-- 部署 Neutron 网络服务
Neutron 概念: 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建.修改和删除网络,网络的连 ...
- OpenStack IceHouse 部署 - 5 - 网络节点部署
Neutron网络服务(网络节点) 目录 [隐藏] 1 参考 2 前置工作 2.1 调整内核参数 3 安装 4 配置 4.1 keystone对接 4.2 rabbitmq对接 4.3 me ...
- Neutron网络学习
学习 Neutron 系列文章: 转http://www.cnblogs.com/sammyliu/p/4622563.html (1)Neutron 所实现的网络虚拟化 (2)Neutron Ope ...
- Neutron网络性能测试与分析(一) CVR
测试环境:网络节点运行在Intel(R) Xeon(R) CPU E5-2630 v3服务器上,网卡使用intel的万兆卡82599ES 测试仪使用本人基于dpdk编写的程序,基本上可以打满万兆卡,小 ...
- Openstack 网络服务 Neutron计算节点部署(十)
Neutron计算节点部署 安装组件,安装的服务器是192.168.137.12 1.安装软件包 yum install -y openstack-neutron-linuxbridge ebtabl ...
- Openstack 网络服务 Neutron计算节点部署 (十一)
一) Neutron计算节点部署 1.安装软件包 # yum install -y openstack-neutron-linuxbridge ebtables ipset 2.配置文件neutron ...
- OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(二)——网络节点的安装
序:OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE] 网络节点: 1.安装前更新系统 安装好ubuntu 12.04 Server 64bits后,进 ...
- CentOS7安装OpenStack(Rocky版)-06.安装Neutron网络服务(控制节点)
上一章介绍了独立的nova计算节点的安装方法,本章分享openstack的网络服务neutron的安装配制方法 ------------------- 完美的分割线 ----------------- ...
- Openstack实践(1)部署使用实例及neutron网络
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 如何快速部署使用openstack,使用kolla吧,o ...
随机推荐
- 每天一个Linux命令:pwd(3)
pwd pwd是Print Working Directory的缩写,其功能是显示当前所在工作目录的全路径.主要用在当不确定当前所在位置时,通过pwd来查看当前目录的绝对路径 格式 pwd [选项] ...
- css选择器的分类及优先级计算方法总结
首先声明一下CSS三大特性—— 继承. 优先级和层叠.继承即子类元素继承父类的样式;优先级是指不同类别样式的权重比较;层叠是说当数量相同时,通过层叠(后者覆盖前者)的样式. css选择符分类 首先来看 ...
- I/O复用 poll简介
1.基本概念 poll起源于SVR3,开始时局限于流设备,在SVR4时取消了此限制,允许poll工作在任何描述符上,但涉及到流设备时,它还提供了附加信息. poll的机制与select类似,与sele ...
- BOM 3.1 location对象 | history对象 | navigator对象 | 定时器 | 三大系列
JavaScript分三个部分: 1. ECMAScript标准---基本语法 2. DOM--->Document Object Model 文档对象模型,操作页面元素的 3. BOM---& ...
- 屏幕操作录制成gif图的技巧
我呢,在记录一些做过得实例的时候,总需要上一两张效果图,截静态图太浪费时间了,于是就找了一些录制git图的软件 一.Gif动画录制工具 这是我在360软件中心下载的,用了一下,不好用,录制出来的图是黑 ...
- hdu 6437 /// 最小费用最大流 负花费 SPFA模板
题目大意: 给定n,m,K,W 表示n个小时 m场电影(分为类型A.B) K个人 若某个人连续看了两场相同类型的电影则失去W 电影时间不能重叠 接下来给定m场电影的 s t w op 表示电影的 开始 ...
- 使用lombok时@Setter @Getter无效
原文链接 : https://blog.csdn.net/marion158/article/details/87893480 lombok是一个帮助简化代码的工具,通过注解的形式例如@Setter ...
- 2018-6-17-win10-UWP-全屏
title author date CreateTime categories win10 UWP 全屏 lindexi 2018-06-17 17:51:19 +0800 2018-2-13 17: ...
- boost 大小端转换
boost 中有一个edmian 里面有转换函数模板 native_to_little<T> 本地转换为小端 native_to_bit<T> 本地转换为大端
- Dubbo支持的注册中心有哪些?
1.Dubbo协议(官方推荐协议) 优点: 采用NIO复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用) 缺点: 大文件上传时,可能出现问题(不使用Dubbo文件上 ...